Wi-Fi技术简介(五)-- DCF

原创 无线热心市民 无线技术栈 2024-02-15 16:25 北京
本章节中,小编与大家分享下MAC层架构及DCF技术原理。目前,wifi协议部分的实现细节大部分都下沉到了MAC(medium access control)层和PHY层,因此要想精通wifi模块,对于协议部分的解读也是必须的,废话不多说,我们切换频道,开始解析DCF技术原理。
一、什么是DCF
MAC的架构如下图:

可以说DCF是无线通讯中的一种工作模式,它规范了多设备之间的协商工作,在802.11协议中,MAC层引入了两种工作模式:
DCF(Distributed Coordination Function):分布式协调功能
PCF(Point Coordination Function):点协调功能
DCF更加适用于多设备共存场景,因此目前绝大多数的无线设备都是使用的DCF工作模式,在DCF模式下还包含了两种子工作模式:
(1)CSMA/CA;
(2)RTS/CTS;
说白了,DCF就是一种规范,规范了多设备在一个局域网中协调工作时,如何接入信道,如何避免信道碰撞;

二、为什么要引入DCF工作模式
简单来说,有两个原因:
(1)无线局域网中一般有至少两个甚至多个设备并发工作,无法全方位的检测到信道碰撞,需要一种多设备之间协调工作的规范;

(2)隐藏节点的问题,即一个AP设备A同时与STA1、STA2建立连接,但是STA1与STA2之间不可见,如果二者并发工作时,STA1、STA2都检测不到对方的信号,认为信道始终空闲,就会向AP同时发送数据,存在数据冲突的风险;

2.1 CSMA/CA模式
CSMA/CA全称carrier sense multiple access with collision avoidance,即载波侦听多路访问/冲突避免,如上文描述,它提供了设备接入信道的规范,适用于无线场景,这里科普一下,与其相对的是有线场景下类似的机制被称为是CSMA/CD,二者存在以下不同点:
(1)CSMA/CD是一种检测冲突的机制,CSMA/CA是避免冲突的机制;
(2)CAMA/CD适用于有线网络,CSMA/CA适用于无线网络;
(3)CSMA/CD通过电缆中电压变化检测是否碰撞,CSMA/CA通过能量检测(ED)、载波检测(CS)以及二者混合使用的方式检测是否碰撞;

三、DCF工作模式是什么
在这里先把我们提到的名词关系梳理一下:

如上图,MAC层提供了两种工作模式DCF和PCF,DCF包含了两种工作子模式CSMA/CA以及RTS/CTS机制,可以说所有遵循802.11协议的无线设备都使用了这几种工作模式中的一种或者多种;

3.1 CSMA/CA工作模式
本节具体说一下CSMA/CA是如何来避免多设备间协调工作的,如何避免设备之间发包冲突,在展开说明之后先介绍一下协议中引入的名词:

(1)IFS
IFS全称Inter-frame Spacing,翻译为帧间间隙,在协议中IFS包含了多种帧间间隙并适用于不同的场景,比如RIFS、PIFS、AIFS、EIFS、DIFS、SFIS,在本文中用到了DIFS和SIFS,DIFS全称Distributed inter-frame Spacing,翻译为分布式帧间间隙,在发送数据包之前必须等待DIFS,SIFS全称Short inter-frame space,翻译为短帧间隙,比如发送ack、action之前必须等待一个短帧间隙,EIFS全称Error inter-frame Spacing,在协议中介绍如下,后边小编也会单独拿出来解析,目前不做详细阐述:

(2)Random-Backoff-Time,随机回退时间,每个节点在发送数据之前都需要评选一个随机数作为信道竞争的基数,节点通过物理/虚拟方式监听信道是否空闲,如果空闲,那么这个基数减1,当这个基数变成0之后可以开始发送数据:

(3)backoff counter,回退数值就是为backoff time提供一个选择范围;

扫描二维码关注公众号,回复: 17503424 查看本文章

(4)Slot Time,更小的时间片,backoff time就是由多个slot Time组成;

3.1.1 CSMA/CA模式原理

(1)局域网环境中存在两个STA都需要给终端发送数据包,先等待DIFS间隔;
(2)在DIFS间隔内,信道始终保持空闲状态,STA1、STA2开始backoff过程,各自选一个随机数开始回退,STA2先回退到了0,优先接入信道,开始发送数据;
(3)在STA2发送的同时,STA1监听到信道繁忙,不在backoff,STA2发送数据之后,AP侧采用CRC对数据进行校验,若校验成功,则等待SIFS间隔后,回复ack,如果CRC校验失败则需要等待EIFS间隔之后才可以重新backoff过程接入信道;
(4)在STA2传输完数据之后,如果想再次接入信道则需要重新等待DIFS间隔之后重新进行backoff过程,而STA1重新开始backoff过程,而不需要重新选择backoff counter;

3.1.2 RTS/CTS模式原理
如前文所述,RTS/CTS机制的引入主要是为了避免隐藏节点的问题,RTS/CTS帧结构比较简单,小编为大家展现一下空口内容:

说明如下:
RTS:Request-to-Send,翻译为请求发送,单播帧,duration中填充的字段代表后续发送过程中所有包需要的总时间;
CTS:Clear-to-Send,翻译为信道清除,单播帧,duration中填充的字段代表出去一个RTS+SIFS后剩余包的总时间;
此外还有一种RTS2S的单播帧,广泛应用于单设备共存场景,例如BTC场景,这里不做详细说明,小编将在后续章节分享;

RTS/CTS的工作原理如下:

(1)STA1和STA2在等待了DIFS间隔之后,开始backoff过程,STA2先回退到0,STA2将向AP发送一个RTS帧;
(2)AP收到RTS之后,在等待一个SIFS之后,发出一个CTS;
(3)STA1收到CTS之后,认为不是自己需要接收的CTS,将认为当前信道有其他设备正在通信,将把CTS的duration值设置为自己的NAV,这段时间STA1不在进行backoff过程;
(4)STA2收到CTS之后,认为信达已经空闲,将等待SIFS间隔之后开始向AP发送数据包,并进行后续的过程;

3.1.3 什么时候使用RTS/CTS

RTS/CTS机制也不能完全避免帧碰撞,其主要是为了碰撞小包而避免大的数据包碰撞,一般RTS/CTS什么时候使用都是在芯片平台上配置,以配置项存在,例如:
RTS_threshold=1048576,其代表当数据包大小超过1024*1024 B之后,开始使用RTS/CTS机制。

如果读到这里,你觉得有所收获,就关注下小编的公众号"无线技术栈",未来一起进步~
以上分享内容均是小编个人观点,如果有问题,欢迎各位老板留言纠正~
动图封面
Wi-Fi7关键技术320mHz带宽
Wi-Fi技术简介(四)
答应我!看完这篇后点赞关注,更多干货持续分享!

猜你喜欢

转载自blog.csdn.net/qq_39107198/article/details/136296124