信道接入协议

存在基于竞争机制的信道接入协议和基于预留机制的信道接入协议
CSMA/CA属于基于竞争机制的信道接入协议

CSMA/CA协议

目前唯一能够支持Ad Hoc模式的商用标准是802.11x 系列,包括802.11b、802.11a、802.11g(注意802.11n并不支持Ad Hoc模式)。
国内外学者在研究无线自组网时,通常也以802.11x系列为基础,搭建实验系统。
802.11x系列所采用的接入协议就是CSMA/CA协议。
DCF是CSMA/CA接人控制的基础,它允许网络中的节点无须通过中心控制节点实现彼此交互,从而支持了无中心的自组网工作模式。
尽管CSMA/CA定义了基于中心节点控制的、无竞争的PCF模式,但PCF模式在商用芯片中的应用并不常见。

在介绍CSMA/CA的工作流程之前,我们首先需要了解一下CSMA/CA协议的帧间间隔(Interframe Space,IFS)。
为了避免传送的数据发生碰撞,CSMA/CA协议规定,所有节点在发送完一帧后,必须等待一个很短的时间才能发送下一个帧,这段很短的时间就是帧间间隔。

帧间间隔

CSMA/CA定义了四种不同的帧间间隔,其中三种用于信道接入控制。

  1. 短帧间间隔(Short Interframe Space,SIFS)。
    1. SIFS 是长度最短的帧间间隔,用于高优先级的传输场合,通常用来分隔一次会话内的各个帧,例如RTS帧、CTS帧、ACK帧,以及过长的MAC帧分片后的各帧。
    2. SIFS之后可以传送的帧的优先级较高,例如AP的探询帧和PCF模式下AP发送的各帧。
    3. 不同标准中规定的SIFS的长度不同,在802.11b和802.11g中,SIFS的长度为10 μs;在802.11a中,SIFS的长度为16 μS。
  2. 点协调功能帧间间隔(PCF Interframe Space,PIFS)。
    1. PIFS 主要用于PCF工作模式,实现无竞争的信道接入。
    2. 有数据发送的节点必须等待一个PIFS以后才可以传送。
    3. PIFS 的长度是一个SIFS加一个时隙时间(SLOT Time)长度。
    4. 时隙时间长度在802.11b中定义为20μs,802.11a中定义为9 μs,802.11g中定义为20 μs或9μS。
  3. 分布式协调功能帧间间隔(DCF Interframe Space,DIFS)。
    1. DIFS 主要用于DCF工作模式,当信道空闲时间超过DIFS时,节点就可以发送下一帧。
    2. DIFS 的长度为一个SIFS加两个时隙时间(SLOT Time)长度。
  4. 扩展帧间间隔( Extended Interframe Space, EIFS)。

    1. EIFS 不是固定的时间间隔,只有在帧传输出现错误时才会用到EIFS.

      接入流程

      CSMA/CA协议的信道接入流程如下。
  5. 当某个节点有数据帧需要发送时,如果信道是空闲的,且上一次发送的帧正确接收,则等待一个DIFS之后,节点获得信道控制权,准备发送数据。

  6. 如果上一帧的传输出现错误,则等待一个EIFS之后,节点获得信道控制权,开始发送数据。
  7. 如果节点准备发送的数据帧是广播帧,就直接发送,并不用等待收到ACK确认帧
  8. 如果节点发送的是单播帧,则开始RTS/CTS握手过程,并在收到CTS帧后开始发送单播数据帧。

具体过程如图所示:
image.png
发送节点和接收节点的邻居节点在收到RTS/CTS帧后,设置NAV ,表明信道被占用,不能发送数据。
NAV指出了信道被占用的时间长度,由RTS或CTS帧首部中的持续时间字段指定。
NAV也被称为虚拟载波侦听(Virtual Carrier Sense)技术。
接收节点在正确接收单播数据帧后,等待一个SIFS后,发送ACK确认帧,同时NAV结束。

如果节点要发送数据时,信道是被占用的,则节点需要继续监听信道,直到信道空闲,即要等待如图中ACK帧发送结束。
这时,节点需要执行退避算法。
在经过一个DIFS后,进入争用窗口(ContentionWindow)期或称退避窗口(BackoffWindow)期。
争用窗口期由若干个SLOT组成,SLOT的个数通常是2的指数倍数减1。
以直序列扩频的802.11协议为例,初始的争用窗口由31个SLOT组成。
每当出现一次重传,争用窗口的竞争期间就移至下一个2的指数倍数,即以[31、63、127、255、511、1023]的顺序递增。
注意直序列扩频的802.11协议限制争用窗口最大长度为1 023个SLOT,即增加到1 023个SLOT,也就是第6次重传后不再增加。

发送节点会在当前争用窗口中随机选择一个时隙,这相当于设定了一个退避定时器。
发送节点每经历一个SLOT就检测一次信道,如果退避定时器到零,即已选择的时隙到来时信道是空闲的,则节点可以将数据帧发送出去,退避定时器复位。
如果已选择的时隙到来时信道是被占用的,则冻结退避定时器,等到信道再次空闲后,再经过一个DIFS继续计时,直到退避定时器到零。

目前,大多数无线自组网验证系统基本都是采用802.11 的MAC协议。
但在实际应用中该协议存在诸多问题。
例如,该协议并没有完全解决隐藏终端和暴露终端问题,造成暴露终端不能发送,严重影响了多跳转发条件下的网络利用率。我们搭建了一个采用静态路由的五跳语音传输实验,根据我们做的实测结果,五跳时传输时延最大可以达到1min,这样的性能指标完全不能应用于实战。