官方淘宝店 易迪拓培训 旧站入口
首页 > 无线通信 > 通信技术学习讨论 > 对802.11/wifi的RTS-CTS机制一直有个疑问

对802.11/wifi的RTS-CTS机制一直有个疑问

01-03
在802.11/wifi下,传输数据之前sender会先发一个叫做RTS的帧,receiver收到后发CTS,周围听到RTS和CTS的设备就暂时不用这个信道进行传输以免发生干扰。
以上是现行的802.11 CSMA/CA机制,已经沿用多年,能很好的解决hidden terminal问题,却带来了exposed terminal问题,稍稍解释一下这两个问题。
hidden terminal:
    假设有ABC三个节点直线排开,相邻节点距离等于最大传输距离,假设干扰半径为最大传输距离的1.5倍。那么A给B传输的时候,C就听不到消息,所以C就什么都不知道,如果此时C也给B传东西,那B就会同时从A和C收到相互干扰的信号。这时A和C互为hidden terminal。CSMA/CA机制解决了这个问题,A给B传的时候,C会听到B的CTS从而不传输。
exposed terminal:
    假设ABCD四个节点直线排开,同上,相邻节点距离等于最大传输距离,干扰半径为这个的1.5倍。这时如果使用CSMA/CA机制,假设B给A发数据时,C要给D发。此时因为C听到了B的RTS,所以就会等A<--B这个传输先传完。但实际上A<--B与C-->D这两个传输可以同时进行,不会干扰。此为exposed terminal问题,会造成网络总throughput的下降。
    我想问的是,CSMA/CA机制为什么要让节点在听到RTS或者CTS都要回避呢?如果只是在听到CTS时才回避,那hidden terminal问题能解决,exposed terminal问题也不存在了。比如上面的例子,A<--B与C-->D这两个传输就能同时进行了。
    CSMA/CA机制这么多年了,听到RTS也回避肯定有原因,但我不清楚,有谁能帮我分析分析么?谢谢了。

考察一个正三角形分布的ABC,A->B发送RTS时C如果不回避,那么C可能在B->A发送CTS前也会向C发送RTS,干扰了

在你上面的例子中,如果D在B发射信号的干扰范围内会如何?

实际上基本没有真实wifi设备使用RTS/CTS机制,都是科研工作传输消息的一个工具。

RTS/CTS报文是有的,不过完全不是为了这个用的,我们当时看也很晕

什么隐蔽站问题 暴露站问题 都是浮云,学术界自娱自乐的东西,主要用于灌水发
paper。
实际的WLAN产品虽然支持这个功能,但默认的都不开启,实际运行中也几乎不会被开
启。算是一个典型的花瓶。

好不好,完全是以是否实用为评价标准。具体到这个机制,无法实用的问题是啥,模型过于理想远离实际环境还是效果根本不明显?谁知道吗

因为那在实际情况下很复杂,PHY的capture,信道的复杂影响都很大。RTS,CTS本身就会影响throughput,而其带来的收益很大程度上决定于个例情况,统计上说,个例的改善远远赶不上throughput的消耗。所以很少用。

你连我想问的都说了,呵呵,,

不过相对其他学术研究,RTS,CTS算是相当不错的了,至少确实能解决实际问题,尤其如果在一个规划很好,topo环境非常清楚的情况下,还是有作用的。

此言差矣
对于早期的802.11b而言 RTS, CTS的确很大程度上能改善contention loss, 早期的时候,  Phy rate 就是1, 2,5.5 和11Mbps. 数据包很大,而RTS/CTS比较小。
后来802.11的data rate都很大,比如a,g,以及n。为了保证rts和cts的接收范围, 他们必须以较低的基本速率传输 (参见cisco的802.11g标准)。结果overhead传输时间比data rate 都低不了太多。当然不用RTS和CTS了。
而且RTS和CTS针对于节点过多或者hidden terminal造成的collision loss。而现在高速wlan的loss可能来自于信号的衰落。rts/cts帮不上忙。

RTS/CTS算是很实用的东西了
在Ad Hoc里面是基础
就是在WLAN里面,采用了packet aggregation以后,RTS/CTS也是很必要的

节点会接收所有在信道上传播的帧,然后解出里面的NAV域,这个值对应着信道占用时间。节点维持一个定时器,根据NAV值更新定时器的超时时间。当定时器超时后,节点进行随机回退,在回退时间内如果没有其他帧在信道上传输,节点就发起自己的数据传输。

只要是WLAN里的帧都会有。

如果解不出来这个帧怎么办?这个节点就变成隐藏节点了吗?
这样看来是不是侦听到带内有干扰就不发送更好呢?

标准规定了能量检测及帧检测两种机制,但是商用芯片主要采用帧检测方案,这样实现简单成本低。

谢谢!
不过还是想问一下不用RTS/CTS的话隐藏节点问题怎么办呢?
特别是帧检测对信号强度要求高,只采用帧检测时出现隐藏节点的可能会大大增加。

实际系统里隐藏站问题的确无法解决,但是隐藏站问题在现有的系统里似乎并不是很突出。

是因为上行数据少而下行数据多,所以多个用户同时发送情况少吗?

实际系统通常都比较小,没有多跳的情况,单跳情况基本就没有隐藏站的问题。

原来如此,多谢多谢!

Top