【802.11协议】MAC层学习笔记1:DCF协议

概述

在初始802.11的MAC层中,分成了两种基本工作模式:

  • DCF(Distributed Coordination Function)
  • PCF(Point Coordination Function)

其中,由于DCF具有良好的分布式特性,从而应用更加广泛,而PCF模式则较为少用。在802.11e协议中,DCF被扩展为EDCA模式,PCF模式被扩展为HCCA模式。

CSMA/CA机制

DCF模式的核心是CSMA/CA机制。

简介

由于无线信道只有一个冲突域的特性,所以需要设置一种随机接入机制,以避免多个节点同时访问网络所带来的冲突问题,在WiFi协议中,该随机接入机制即是CSMA/CA。CSMA/CA的全称是Carrier Sense Multiple Access with Collision Avoidance,即载波侦听多路访问/冲突避免。如果熟悉有线网络的可以知道,在集线器与中继器中也会采用一种CSMA/CD的机制,从协议设计的大思路上,两者是类似的。

概念

DIFS与SIFS
该两种都是属于Inter-frame Spacing(IFS),即 帧间间隙。DIFS全称为Distributed Inter-frame Spacing,即分布式帧间间隙,SIFS称为Short inter-frame space,即短帧间间隔。在CSMA/CA中,发一个帧之前,都需要 “等待” 一个相应的帧间间隔,比如发送数据之前至少要等待DIFS时间,发送ACK之前需要等待SIFS时间。
CSMA/CA中需要用到以下三种帧间间隔:
SIFS=用于分隔一次对话的各帧
PIFS=SIFS+一个时隙时间长度
DIFS=PIFS+一个时隙时间长度
Slot Time
时隙是指的一个时间片段,在CSMA/CA中,节点竞争接入信道之前需要经过相应的 随机回退(backoff)过程,其中backoff过程就是由很多个时隙所组成的。
Contention window
竞争窗口是用来让节点选择随机回退计数值(backoff counter)的范围。
Backoff
随机回退过程是指每一个节点在竞争信道时,所经历的随机退避过程。在这一过程开始时,节点首先在竞争窗口中选择一个随机数为基准的随机回退计数值,同时每一个时隙,节点为 “监听” 信道是否空闲,若信道空闲,那么进行一次倒数,即计数值减1,若信道忙,则不进行相应倒数。当该随机回退计数值回退到0时,节点可以发送数据。

例子

在这里插入图片描述
在该拓扑中,存在一个AP,与两个节点(STA 1与STA 2)。由于无线环境下的广播特性,若STA 1STA 2同时向AP发送数据,那么就会在AP处发生冲突,从而两者都无法正确接收,最终传输失败。CSMA/CA就是提供一种避免冲突发生的接入规则。
在这里插入图片描述

  1. STA 1STA 2相继存在数据,需要在竞争信道进行发送时,其首先需要 “等待” DIFS时间,若DIFS时间内,信道保持空闲状态,那么就可以进行backoff过程。
  2. STA 1STA 2进入backoff过程时,其首先需要从竞争窗口(Contention window)选择一个随机数,在802.11协议中,默认的初始竞争窗口为31,即随机回退计数值的范围即是[0,31] 。
  3. 在backoff过程中,每经过一个slot time,节点会 “监听” 一次信道,若信道空闲,则相应的随机回退计数器的值减1。如上图中,经过3个slot time后,STA 1的随机倒数计数器从8递减至5,而STA 2相应从2递减至0。
  4. 当节点的随机倒数计数器倒数至0时,节点竞争获得信道,从而可以发送数据。如上图,STA 获得信道后,发送PACKET AAP。在AP接收到数据后,会采用CRC机制对数据进行校验,若校验通过,AP会在SIFS后,反馈ACK确认帧。
  5. STA 2成功发送完数据, “等待” 了SIFS的时间之后,AP会反馈ACK确认帧。当STA 2成功接收到ACK帧之后,这一次传输完成。
  6. 当这一次传输完成后,节点需要再次 “等待” DIFS的时间后,重新开始backoff过程。若节点刚刚发送完数据,那么在backoff过程开始时,需要重新从竞争窗口中选择一个随机数进行倒数。若节点没有发送数据,那么直接从上一次的倒数结果继续倒数。如上图中,STA 1没有竞争到信道,那么其在第二次的backoff过程中,直接基于上次的5直接进行倒数至4。这样的设计目的是为了保证网络传输的公平性。
    在这里插入图片描述
    若在上述的第5步中,AP没有成功接收节点的数据,或者AP对数据进行CRC校验错误,那么其不会反馈相应的ACK给节点。节点在ACK timeout之后,则知道对方没有成功接收数据,该ACK timeout时间在理论分析时,一般与ACK接收时间相等,在具体工程设计中,可能会大一点点。那么发送错误的节点,需要等待EIFS时间才可以再次接入信道,EIFS>DIFS,这样是为了避免一些较差的节点持续争抢信道资源。比如图中STA 2即需要在等待EIFS之后,节点首先进行BEB,然后重新开始backoff过程,而STA 1则直接在DIFS之后进行backoff。

BEB机制

BEB机制的全称为Binary Exponential Back off,即二进制指数退避算法。在CSMA/CA的机制中,还是存在发生冲突的可能性,从而为了避免在CSMA/CA机制下再次冲突,故引入了BEB机制。
在这里插入图片描述
在 “等待” DIFS后,STA 1STA 2从各自的竞争窗口CW中选择一个随机数,不过碰巧的是,两者随机到了一样的数值。在经过3个slot time之后,由于两者同时倒数至0,那么意味着两者会同时发送数据,如图中的红色虚线框表示,在AP处由于两者信号互相干扰,从而都无法正确解码,从而CRC校验错误,即发生冲突。在冲突之后,即若AP处CRC校验失败,则不会给任意节点反馈ACK数据包,故两节点在ACK timeout之后(即总共等待EIFS之后,图中的EIFS起始点应为STA2中SIFS的起始点,即EIFS=SIFS+ACK+DIFS),准备进入下一次竞争。

而在正式进入下一次竞争之前,节点需要对竞争窗口(CW)采用BEB机制。在初始竞争时,节点的默认CW范围是[0,31] (假设初始窗口是802.11b机制下,即最大31,在802.11a这种,初始窗口就是15)。而如果在节点数较多的情况下,那么就有可能引发之前我们所述的冲突问题,从而我们需要扩大竞争窗口CW。具体在CSMA/CA中,我们则是采用二进制指数退避的方法对竞争窗口CW进行扩展,即发生一次冲突后,那么CW范围就会从[0,31]变化到[0,63] ,如图中,在冲突之后,STA 1重新随机选择50,STA 2重新随机选择32。在802.11中,一共允许回退6次,第7次不倍增窗口,再次尝试重发,若再次失败,则丢包。

参考CWNA教材,有给出具体每一次回退的CW窗口大小,如下:
在这里插入图片描述

RTS/CTS模式

在DCF模式下存在两种子模式:

  • Basic模式
  • RTS/CTS模式
    RTS/CTS模式可以很好的应对隐藏终端问题。

参考内容

802.11协议精读2:DCF与CSMA/CA
802.11信道接入 – DCF

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值