​802.11协议精读22:CCA (Clear Channel Assessment)

早过忘川 提交于 2019-11-27 03:17:55

序言

在之前介绍802.11中DCF工作模式时,我们讨论过信道检测的部分问题。在802.11中,信道检测包含两个部分,物理载波监听和虚拟载波监听,其中物理载波通常我们所述为CCA (Clear Channel Assessment)机制,本文就关于CCA的机制做一些介绍。

Remark:由于本文部分内容比较细节,建议是先阅读《802.11协议精读2:DCF与CSMA/CA》后,进而理解本文的一些内容。

802.11的需求

我们知道802.11协议是基于半双工的物理层进行设计的,半双工的物理层在设计时会有很多的细节问题需要考量,包含单根天线如何切换,如何识别收发时机等。有了这些基本因素的考量,我们才能够进一步设计802.11的MAC层协议,很多情况下,我们对802.11的MAC层协议理解不够彻底,也是因为对于其物理层的设计以及限制了解的不够多。基于此,我们首先谈谈在半双工情况下,802.11协议有什么需求:

  • 需求1: 监听网络中是否有数据包正在发送,并该数据包的信号进行准确的截取。
    在这里插入图片描述

该需求实际上是从下行的角度考虑的。我们首先考虑一个更简单的场景,一个AP发送,一个节点接收。节点仅仅接收数据包,没有任何的发送功能,从而就不需要引入CSMA/CA的竞争过程。

节点需要接收由AP发送过来的数据包,此时节点仅仅有一根天线接收无线信道,其需要从茫茫信号的海洋中,找到一个数据帧,并且准确的抓取到数据帧的头部以及尾部,然后保存下来进行解调。

  • 需求2:监听信道是否空闲,避免发送数据包的时候发生冲突。
    在这里插入图片描述

该需求的场景是从上行的角度考虑的。假设现在有一个AP负责收数据,有多个节点负责发送数据。此时,我们考虑采用CSMA/CA的机制,也就是所有节点发送之前都需要监听信道,即LBT (Listen Before Transmission)机制。

那么节点就需要先通过天线采集一小段信号,并从这段信号中分辨有没有人正在传输,无论传输的人是正在传输,还是刚刚开始传输,都需要监测到信道忙。

其实以上两点需求是作为发送方和接收方分别提出的,也是由于802.11协议本身是基于半双工的网络,并且是基于分布式的网络进行设计,也就是节点没有一个固定角色,有可能发送,也有可能接收。这样就会导致协议在设计的时候,需要同时考虑以上两个需求,并且引入到协议设计中。

CSMA/CA和半双工

CSMA/CA中很多细节设计,都是考虑到物理层半双工这样的原因。现在基于以上的需求,我们深入理解下。CSMA/CA的基本机制我们已经在《802.11协议精读2:DCF与CSMA/CA》里面介绍过一次。
在这里插入图片描述
简单回顾下,在CSMA/CA过程中,每个节点首先监听DIFS时间,然后选择一个随机数进行倒数,其中倒数的时间的最小间隔我们称为一个slot(即图上的Slot Time)。首先倒数到0的节点可以发送数据包,而其他的节点会检测到信道是Busy的,所以就悬挂倒数计数器。当发送完数据帧后,等待SIFS时间后,接收AP反馈来的ACK。如果接收ACK成功,那么本轮传输完成,如果失败,那么重来一次竞争,然后再次发送。

展开这个过程:

  • DIFS(Distributed Inter-frame Spacing):其翻译成分布式时间间隙,实际上关于几种IFS的命名并不是特别好,没有从其物理意义上命名,而是从概念上命名了。其本质上实际上都是最基本的SIFS和Slot的一个组合。一个DIFS由一个SIFS时间,和两个Slot时间组成。
  • SIFS(Short inter-frame space):短时间间隙,在802.11n之前,这个是最短的时间间隙,其包含了aRXRFDelay(射频延迟)+aRXPLCPDelay(物理层头部接收延迟)+aMACProcessingDelay(MAC层处理延迟)+ aRxTxTurnaroundTime(发送接收天线转换时间)。
  • Slot:可以理解成竞争过程Backoff的最小时间间隔,其包含aCCATime(CCA时间)+aRxTxTurnaroundTime(发送接收天线转换时间)+aAirPropagationTime(传播延迟)+aMACProcessingDelay(MAC层处理延迟)。

我们用下图具体描述上述三个时间间隙之间的关系,
在这里插入图片描述
上图出自于802.11协议中的DCF timing relations一节 ,其中D1=aRXRFDelay(射频延迟)+aRXPLCPDelay(物理层头部接收延迟),D2=D1+aAirPropagationTime(传播延迟),M1=aMACProcessingDelay(MAC层处理延迟),Rx/Tx=aRxTxTurnaroundTime(发送接收天线转换时间),CCAdel=aCCATime(CCA时间)-D1。

SIFS通常两种用法,一种是用作RTS/CTS或者DATA/ACK之间的,另外一种是用在DIFS内的。上图我们仅仅关注的是DIFS内的用法。参考上图,SIFS时间内经过了D1,M1后,进行Rx/Tx的转化,这个Rx/Tx的转化从时间上是属于SIFS的一部分,从工作顺序上,已经属于Slot Time的一部分,在Slot Time部分中,节点首先是工作在接收状态,然后经过了D2的延迟后,开始监听信道,也就是CCA过程(即图上的CCAdel),在每一个Slot Time中,节点都会做一次CCA的检测,判断信道中有没有数据帧正在传输。在一个DIFS中,需要连续做两次Slot Time,也就是连续检测两次信道,如果都空闲的话,那么才可以进入backoff过程。若在Slot的CCA过程中,发现有数据正在传输,那么节点转入接收状态。当DIFS结束后,节点进行第一次的Backoff,此时,节点在做完CCA之后,如果信道是空闲的,那么backoff counter-1,如果此时恰好倒数到0,那么此次天线从Rx切换为Tx之后,那么直接进行数据发送了。

若SIFS用于DATA/ACK之间的话,那么在SIFS时间之前,节点是处于发送状态,其现在需要“等待”SIFS时间来接收对方反馈过来的ACK帧。当其经过D1和M1两个处理时间后,其需要切换为接收状态。当切换为接收状态后,其开始接收ACK。

在整个802.11的backoff和IFS中,实际上是不停的进行收发状态的切换,因此来实现我们前面所述的一些802.11中的需求。以上讨论中,已经出现了本文要讨论的主要目标CCA (Clear Channel Assessment),以下我们具体展开CCA的具体内容。

CCA (Clear Channel Assessment)机制

前面我们讨论了,半双工的机制下802.11中的需求,因此在整个802.11过程中,就一直存在收发过程的切换,而且在Slot过程中的每一次切换,实际上都包含了一次信道检测CCA的机制。在协议中,CCA主要分成了两种方法,Energy Detection(能量检测)和Carrier sense(载波侦听)。

  • 载波侦听(Carrier Sense)载波侦听用作检测数据包的Preamble,可以识别一个数据包的起始边界。简单的说,802.11中的preamble部分采用特定的序列所构造,该序列对于发送方和接收方都是已知的,监听的节点会不断采样信道信号,用其做相关运算,其计算值需要与一个阈值进行判断。若大于,则认为检测到了一个信号,若小于则没有检测到。节点在识别到数据包头部以后,对数据包进行接收并进行解调,并通过解调出数据包内部的Length字段来识别数据包的终止边界。
  • 能量检测(Energy Detection)能量检测采用硬件积分能量,其无法识别数据包的边界,但是能够识别数据体中的能量,已经来自其他异构网络的能量(比如蓝牙设备,微波炉之类)。是直接用物理层接收的能量来判断是否有信号进行接入,若信号强度大于ED_threshold,则认为信道是忙,若小于ED_threshold,则认为信道是闲。

能量检测的阈值要大于载波监听,按照协议规定要大于20dBm。协议中规定,两种检测方式同时采用,且只要两者检测方式中,有一种判断信道是busy的话,那么就认为信道是busy的,只有两者都认为信道空闲时,那么再判断虚拟载波监听机制是否为0,以上条件都满足时,那么才可以进行backoff倒数。

在802.11中(以802.11a/g为例),载波侦听阈值为-82 dBm,能量检测阈值为-62 dBm。协议原文(参考2007第17.3.10.5 CCA sensitivity节)如下。

在这里插入图片描述

Remark:由于关联到primary channel和secondary channel的问题,本文不对802.11n以后的CCA进行展开,故只引用2007版本的协议。

在802.11协议中,并没有直接给出-82 dBm和-62 dBm阈值的计算方法,我们所知-82 dBm实际上和最小的MCS灵敏度(minimum modulation and coding rate sensitivity)是相等的。以笔者目前所知,可以有以下几种理解方式:

关于-62 dBm实际上是从RLAN时期开始就存在的了,这个是一个能量阈值,是根据发送功率所设定的,目前802.11协议中,关于能量检测的阈值默认是设置在-62 dBm,相比笔者在上一篇《802.11协议精读2:DCF与CSMA/CA》所提的要大一些。这个阈值是假设区域内,干扰的发送功率是在100 mW以下或者EIRP是在 200mW 以下时,能量检测的一个阈值,该阈值可以被用作Energy detection的threshold以外,还可以用作DFS的threshold,在主动回避雷达干扰上也有所用到。

参考《TV White Space Spectrum Technologies: Regulations, Standards, and Applications》,第294页
参考《New Rules for Unlicensed National Information Infrastructure (U-NII) Bands KDB 789033, KDB 644545》

  • 关于-82 dBm是基于识别Preamble的检测阈值,在802.11a中,检测preamble是通过数据帧的STF字段,参考之前一篇《802.11协议精读7:802.11a/g的发送过程与接收过程》

在这里插入图片描述
其中STF的t1-t7这个部分是用作载波侦听检测的,采用相关计算的方式,通常采用自相关。我们可以从-62 dBm是单个能量检测的阈值,又因为我们知道相关检测实际上是可以带来信号单位能量的增益的,这里一共相当于16*7=112个采样点,所以大约能提供20dB左右的增益,所以我们可以通过-62 dBm-20 dB=-82dBm这种方式来理解,也就是说载波侦听检测可以在更低的信号强度下识别出目标。

还有一种关于-82 dBm的理解方式,参考IEEE 802.11-17/1479r1《CCA sensitivity》一文,其中给出了如下的计算方法:

在这里插入图片描述
第一部分是Noise floor,也就是本底噪声,这个数值的计算我们在《802.11协议精读15:链路模型(基于Free-Space Path Loss)》介绍过,这里是采用通常16.25MHz下的本底噪声-102.1 dBm,这个和CWNA书中第3.4节以及第3.6节指出,一般2.4G信道的本地噪声为-110dBm 至-100dBm是相符合的。第二个部分是在最小MCS的接收灵敏度上所带来的一个信号的增益,然后是Noise figure (噪声指数),这里是通常表述为RF接收放大所带来的增益,然后最后是Implementation marigin,实际上是实施中的一些裕度所带来的增益,这一块理解不多。最终计算出大约是-82.4 dBm,约等于-82 dBm。

在这里插入图片描述

其中关于Noise Figure(NF)和Implementation margins是早期802.11a协议中所指定的,目前我们就直接延续使用-82 dBm这个阈值了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!