首页 > 代码库 > WiFi MAC层介绍

WiFi MAC层介绍

1. 访问机制

CSMA/CA:  Carrier Sense Multiple Access with Collision Avoidance
WiFi采用带冲突避免的载波监听多路访问机制来控制对传输媒介的访问

不同于以太网,WiFi没有明确的冲突碰撞检测机制
WiFi MAC层指定了如下规则来检测冲突碰撞

- 使用介质前,speaker必须指示将使用多久,通知其他潜在speakers在使用介质所需要等待的时间
- 直到前一个speaker指示的时间后,其他speaker才能使用介质
- 当收到肯定确认后,speaker才认为数据成功传输
- If two participants happen to start speaking at the same time, they are unaware they are speaking over each other. 
  The speakers determine they are speaking over each other because they do not receive confirmation that their voices were heard.
- 当发送的数据没有收到肯定确认时,speaker会等待一个随机时间然后再次使用介质发送没有成功的数据

当没有收到肯定确认时,WiFi MAC层认为检测到了碰撞

2. MAC子层功能

MAC子层包括DCF和PCF

DCF: Distributed Coordination FunctionPCF: Point Coordination Function

1. 载波监听(Carrier Sense)

STA有两种方法来判断当前介质是否空闲

- 检查PHY层,是否有carrier存在
- 使用虚拟carrier-sense功能,NAV(Network Allocation Vector )

NAV是MAC层提供的一种定时器,保存了其他STA使用介质的持续时间
其他STA发送的数据中带有的Duration大于所保存的时间时,STA就更新自己的NAV
当NAV为0并且PHY层指示当前介质可用时,STA才能发送数据

2. DCF

DCF是基于CSMA/CA的接入方法,尽可能避免冲突,可以自动高效地共享介质

DCF提供基本模式和RTS/CTS模式两种介质访问方式
利用竞争窗口的二进制指数回退机制协调多个STA对共享链路的访问,避免出现因争抢介质而无法通信的情况
其核心思想是利用二进制指数回退机制减轻数据分组的碰撞以及实现发生碰撞后对分组的有限重传控制

STA发送数据帧时,首先检测介质的状态
如果介质空闲且持续一个DIFS时间(DCF InterFrame Space)后
- 在基本模式下立即发送数据帧
- 在RTS/CTS模式下,发送RTS帧
并同时检测有没有发生分组碰撞

如果发生碰撞,STA随机在[0,Wi]之间均匀选取一个值Random()
?Wi被称作竞争窗口,其大小依赖于数据分组重新传输次数
image
CWmin ≤CW≤CWmax
并计算出backoff timer(=Random() * slot time)

随后,当STA探测到介质空闲时间等于一个slot time时,计数器减1
而当检测到介质忙时,计数器值保持不变
并在介质空闲时间等于DIFS时,重新激活延时计数器且STA继续监测介质
直到计数器值减到0时STA才发送MAC帧

另外,为了避免某STA长时间占用信道,STA在两次连续的数据帧发送之间也必须进行随机延迟。

DCF

3. 应答帧

某些帧需要接收STA回应一个应答帧,称为ACK帧
ACK帧的传输不需要等待backoff timer
而是等待SIFS(Short Interframe Space)时间
SIFS通常比DIFS少2个slot time

4. 隐藏节点问题和RTS/CTS

RTS: Request to send
CTS: Clear to send

由于信号的缘故(距离太远),某些STA之间无法直接通信,无法感知彼此的存在,
若此时同时给处于两者之间的STA发送帧,导致中间STA佷尴尬
因为只有中间STA知道发生了冲突
此时,需要使用RTS/CTS来解决该问题

STA发送RTS帧,预约介质的使用权和要求接收STA保持沉默
接收STA以CTS应答,CTS帧要求附近的STA保持沉默直到过程结束
然后开始帧的传输过程

image

RTS/CTS通常用在高用量的环境下以及传输竞争比较显著的场合

5. 帧分片(Frame Fragmentation)

帧分片的作用在于提高无线介质中传输的可靠性
将一个完整帧分为几个更小的帧来分别传输,每个分片帧都需要ACK
这样当某个分片帧出现错误时,只需要重新传输该帧即可
然而这也可能增加MAC层过载问题(Overhead)

注意:
- 帧分片只发生在单播帧中
- 每个分片帧具有相同的帧序列号和递增的帧编号

6. PCF

PCF作为DCF的补充,是一种可选的介质访问机制
提供了不必通过竞争即可使用介质的服务,为了满足实时业务需求
用于Infrastructure模式网络架构中,由AP进行协调

PCF以周期的形式进行帧的传输
每个周期包括一个无竞争阶段和一个竞争阶段
- 无竞争阶段(CFP: Contention-Free Period)
- 竞争阶段(CP: Contention Period)
CFP阶段传输实时业务,PCF起作用
CP阶段传输非实时业务,DCF起作用

~~~好像使用较少,后续再补充

3. MAC帧格式

MAC帧格式

4. MAC层操作集

MAC层操作集: 扫描、认证、关联及省电状态

WiFi MAC层介绍