初探802.11协议(3)——RTS/CTS控制帧

目录

一. Frame Format

1.1 RTS Duration

1.2 CTS Duration

二. 隐藏节点问题与RTS/CTS

2.1 RTS/CTS流程

三. 暴露节点问题

3.1 载波监听

3.2 物理载波监听引起的“暴露节点”问题

3.3 虚拟载波引起的“暴露节点”问题


一. Frame Format

  • RTS:Request To Send,即请求发送,是一个单播帧,没有加密。
  • CTS:Clear To Send,即信道清除,也是一个单播帧。节点在收到CTS后,确认信道是空闲的,可以发送,没有加密。

RTS和CTS这两个控制帧的格式很简单,主要就是Duration字段,后面会介绍,然后就是RTS比CTS多了一个TA字段。

1.1 RTS Duration

RTS 帧会试图预定介质使用权,供帧交换程序使用,因此 RTS 帧发送者必须计算 RTS 帧 结束后还需要多少时间(单位us)。总共需要3个 SIFS 、1个 CTS、1个ACK,加上发送第一个帧或帧片段所需要的时间。如果计算的结果不是整数,就会被修正为下一个整数微秒。

1.2 CTS Duration

用来应答 RTS 时,CTS 帧的发送端会以 RTS 帧的 duration 值作为持续时间的计算基准。CTS帧发送端会将 RTS 帧的 duration 值减去发送CTS帧及其后短帧间隔所需的时间,然后将计算结果置于 CTS Duration 位。

二. 隐藏节点问题与RTS/CTS

节点2可以跟节点1和节点3通信,不过某些因素(例如距离远)导致节点1与节点3无法直接通信,节点1和3就互为隐藏节点如果使用简单的transmit-and-pray协议,节点1与节点3有可能在同一时间传送数据,这会造成节点2无法正确接收数据,但是节点1与节点3也无从得知错误发生,只有节点2知道有冲突发生,节点2不会反馈ACK,最终这一轮传输失败。这一轮失败之后,节点1与节点3采用BEB算法重新选择随机数进行回退,但是由于两者没有办法互相监听,所以很容易再次出现同时传输的现象。所以在隐藏终端的情况下,网络性能最差时是无法传递数据包的,换言之,节点1与节点3的吞吐量都趋近于0。

在DCF中,引入了RTS/CTS机制来解决“隐藏节点”的问题。

2.1 RTS/CTS流程

1. 节点1已经breakoff至0,其首先发送RTS数据帧给节点2;

2. 若在节点2处没有冲突,即节点2成功解调出节点1的RTS,节点2会在等待SIFS之后发送CTS帧给节点1。由于无线信道是一个广播信道,要是帧没有加密的话,那么所有节点都是可以解析其信息的,所以这里节点2虽然是发送CTS给节点1,但其他节点也是也可以解析CTS信息:

(1) 当节点1接收到CTS后,其发现该CTS是之前自己发送RTS的反馈,即节点1知道信道空闲。再等待SIFS后,节点1发送数据frame,当数据传输完成之后,节点2向节点1反馈ACK,从而最终完成一次传输。

(2) 当其他节点接收到CTS之后,会发现该CTS不是我请求获得。它们会将CTS数据帧的duration给提出,并设置在自己本地的NAV(Network Allocation Vector)上。若NAV没有倒数到0,那么其会主动暂停其随机回退计数值。

两个节点发RTS也是会出现冲突的,所以RTS/CTS的思维就是 "采用小的数据包碰撞,来避免大的数据包碰撞" 。因此如果数据包太小,则不需要采用RTS/CTS机制了。

RTS Threadshold

如果802.11 网卡的驱动程序支持,用户可通过调整 RTS阈值 (RTS threshold) 来控制RTS/CTS 交换过程。只要大于此阈值,RTS/CTS 交换过程就会进行,小于此阈值则会直接传送帧。此阈值一般应该设定为2347 byte ,如果网络吞吐相当低或重传比例偏高,可以降低 RTS 阈值值以启动 RTS 清空机制。

Fragmentation Threshold

相匹配的还有个分片阈值(fragmentation threshold),用来进行MAC 层级的帧分片,该阈值默认值是2346,或物理层所容许的 MAC最大长度,如果帧超过这个阈值则会进行分片。RF物理层所使用的MAC长度通常是4096个字节,因此这个参数通常默认为2346 byte。这个分片阈值通常与RTS/CTS经常一并运行。这个参数设得太低,有效吞吐量反而会下降,因为确认每个片段必须用掉额外的时间,同样地,设得太高也会降低有效吞吐量,因为较大帧一旦损毁,便会增加无线信道重传的负担。

Retry Limit
1. 长帧重传限制 (long retry limit) :适合大于RTS阈值的帧,默认值为4。需要用到RTS/CTS 清空机制的有4 次重传机会,如果该遭丢弃,就会通知较上层的协议。

2. 短帧重传限制(short retry limit):适合小于RTS阈值的帧,默认值为7。

RTS Threadshold、Fragmentation Threshold、Retry Limit的默认值说明均来自《OReilly-802.11_Definitive Guide》,可以调整。

三. 暴露节点问题

3.1 载波监听

如上图(《CWNA》)所示,物理载波监听和虚拟载波监听是同时执行判断的,其中只要有一个是出于Busy状态,那么就不会触发随机回退计数值减1的过程。虚拟载波监听就是对应的NAV机制,而物理载波监听则是对应到了CCA(Clear Channel Assessment)机制。

在CSMA/CA中,CCA由能量检测和载波检测一起完成:

  • 能量检测(Energy Detection):是直接用物理层接收的能量来判断是否有信号进行接入,若信号强度大于ED_threshold,则认为信道是忙,若小于ED_threshold,则认为信道是闲。同时该ED_threshold的设置与发送功率有关,比如发送功率大于100mW,那么ED_threhold约为-80dBm,发送功率在50mW至100mW之间,那么ED_threshold应该为-76dBm。不过至于具体的数值,需要查看其具体所对应版本的802.11协议。
  • 载波侦听(Carrier Sense):载波监听的方法指的是用来识别802.11数据帧的物理层头部(PLCP header)中的preamble部分。简单的说,802.11中的preamble部分采用特定的序列所构造,该序列对于发送方和接收方都是已知的,其用来做帧同步以及符号同步。在实际监听过程中,节点会不断采样信道信号,用其做自相关或者互相关运算,其中自相关在基于OFDM的802.11技术中常用,比如802.11a,而互相关在基于DSSS技术中常用,比如802.11b。与能量检测类似,相关计算值需要与一个阈值进行判断,若大于,则认为检测到了一个信号,若小于则没有检测到。

3.2 物理载波监听引起的“暴露节点”问题

如上图,STA 1和STA 2互相覆盖,即两者可以互相监听到对方的传输。但AP1仅仅能接收到STA1的信号,其不会受到其他传输的干扰;AP2也仅仅能收到STA 2的信号,不会受到其他传输的干扰扰。

如果基于LBT(Listen Before Transmission)机制,比如典型的CSMA协议。如果STA 1向AP 1进行传输的同时,STA 2因为监听到信道忙就不能向AP 2进行传输。反之亦然。

这个拓扑看起来是可以执行一个并行传输的(即STA 1→AP 1和STA 2→ AP2并行传输,互hub),但是由于LBT机制的影响,其不能够同时进行传输。这种由于LBT,也就是监听信道忙造成无法传输的示例,就是我们一般意义上的“暴露节点”问题。也属于物理载波监听引发的。

3.3 虚拟载波引起的“暴露节点”问题

而对于虚拟载波监听,即NAV机制,实际上也会引起暴露终端问题

NAV是一个计时器,按照us进行倒数。在Wi-Fi中,节点和AP可以设置发送帧中的duration字段,来对NAV进行设置。当NAV大于0的时候,节点或者AP的虚拟载波监听都会显示忙的状态,进而让节点认为信道就一直是忙,无法进行传输。只有当NAV等于0的时候,虚拟载波监听的结果才是空闲,此时才可以根据物理载波监听的结果判断信道是忙还是闲。因此,在很多时候,我们也会看到一些由NAV的设置,导致本身能传的场景被禁止传输(NAV>0导致),这种情况其实我们也可以认为是一种暴露终端。只不过以前把这点叫做暴露终端的比较少,更多的可能是把这种NAV的错误设置当做一种DDOS攻击

其实Wi-Fi 6里面的BSS Color,SRP,Adaptive-CCA,Dueling NAVs都是为了解决暴露终端这一件事情

REF

1.《IEEE 802.11-2016
IEEE Standard for Information technology–Telecommunications and information exchange between systems Local and metropolitan area networks–Specific requirements - Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications》
2. 《 CWNA®Certified Wireless Network Administrator Official Study Guide Third Edition》
3. 《OReilly-802.11_Definitive Guide》802.11无线权威指南
4. https://www.zhihu.com/people/edward_xu

  • 8
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值