802.11MAC层技术

802.11帧格式

image.png

无线的 802.11 MAC 格式和有线 802.3 MAC 格式存在显著差异,这主要源于无线传输链路的特殊情况,如信号衰减、干扰、隐藏节点等,以及多 BSS 漫游切换、安全、节电功能等,都需要802.11 考虑和解决。帧头中有很多的字段直接与 802.11 功能相关

Frame Control

image.png

title: Frame Control字段含义表
collapse: close

![image.png](https://picgo-1304285457.cos.ap-guangzhou.myqcloud.com/images/20240109162307.png)

![image.png](https://picgo-1304285457.cos.ap-guangzhou.myqcloud.com/images/20240109162353.png)
![image.png](https://picgo-1304285457.cos.ap-guangzhou.myqcloud.com/images/20240109162405.png)
![image.png](https://picgo-1304285457.cos.ap-guangzhou.myqcloud.com/images/20240109162421.png)
![image.png](https://picgo-1304285457.cos.ap-guangzhou.myqcloud.com/images/20240109163206.png)

![image.png](https://picgo-1304285457.cos.ap-guangzhou.myqcloud.com/images/20240109163543.png)

![image.png](https://picgo-1304285457.cos.ap-guangzhou.myqcloud.com/images/20240109163752.png)
![image.png](https://picgo-1304285457.cos.ap-guangzhou.myqcloud.com/images/20240109163800.png)

帧类型

分为三大类:管理帧、数据帧和控制帧 image.png

  • Beacon:AP不断向外界发送Beacon报文,以告诉环境中的终端自身的存在
  • probe request/response:探测报文,又分为广播probe和单播probe,终端会发送一个广播probe,捕获当前环境所有无线信号,单播probe则是指定了SSID、无线能力的探测报文,resoponse则是AP回应STA的报文。
  • authentication:认证报文,和无线的加密认证方式有关,如WPA/WPA2-PSK
  • association request/response:关联报文,用于链路服务协商过程 ,协商支持的速率、信道等内容,也就是终端关联的过程
  • reassociation:漫游时产生的报文
  • Disassociation:取消关联报文。
  • Null 数据帧:一般终端发送给AP,告知AP终端仍连接着AP,当终端无数据报文发送时,准备进入节点状态,则可以在Null报文中将Pwr mgmt置位,否则则定期发送Null报文保活。
  • RTS和CTS:请求发送和确认发送,用于报文发送前的判断,AP发送CTS允许终端发送报文。
  • ACK:用于确定终端和AP间是否完整交互报文。
  • PS-Poll:节电相关报文

Duration / ID

image.png

image.png

四个Address

image.png

  • RA (Receiver Address): 接收端地址,代表负责处理该帧的无线接口。可能为AP Radio 或者用户的无线网卡。
  • TA (Transmitter Address): 发送端地址,代表将帧传送至无线介质的无线接口。
  • DA (Destination Address):目的地址,代表最后的接收端,即负责将帧交付上层协议处理的接口。可能为无线 STA,也可能为 DS 有线接口。
  • SA (Source Address): 源地址,代表帧的初始来源地。
  • BSSID:无线接口所使用的 MAC 地址,用来标识 AP 的 radio
  • 一个 802.11 帧头中最多可以有 4 个地址位: Address 1、Address 2、Address 3、Address 4。随着帧类型的不同,这些字段的含义也有差异。大部分的帧都用到其中二个地址位,其中一个是接收端 RA 地址,一个是发送端 TA 地址,另外一个 BSSID 被用来过滤来自其他 BSS 的帧。某些类型的帧,比如 ACK 控制顿只有 1个地址位。这些地址位的格式仍遵循其它 IEEE 802 网络所使用的格式,即 48 位的 MAC 标识符

帧均在AP和STA之间交互,只是可能发送主体和接收主体并不是真正的最终用户。简单理解一下Address填充规则:

  • 管理帧:To DS和 From DS均置位0,接收端地址和目的地址相同,发送端地址和源地址相同,再附带一个BSSID作为第三个地址。
  • 数据帧(DS–>STA):To DS为0,From DS为1,代表从DS发送出来,发送端地址为BSSID,接收端地址为目的地址。
  • 数据帧(STA–>DS):To DS为1,From DS为0,代表要发送给DS,发送端地址为源地址,接收端地址为BSSID。
  • 数据帧(WDS桥接):TO DS为1,From DS为1,发送端地址、接收端地址、源地址和目的地址各不相同,代表AP和STA均作为桥接,例如STA下仍有设备,与上层网关进行通信。

管理帧信息单元

image.png

注意信息单元是位于 管理帧 的Frame-Body,并不在帧头内。

  • Beacon interval:Beacon 信标倾周期发送间隔,缺省设置为 100TU。TU 为 802.11定义的系统时间单元 Time Unit, 1TU=1024 微秒。
  • Listen interval:为了节省电池的电能,移动工作站可以定期休眠。当 STA 休眠时AP 必须为之缓存顿。休眠中的工作站会定期醒来监听 Beacon 消息,以判断是否有帧缓存于 AP 处。Listen interval,就是以 Beacon interval 为单位计算出的定期唤醒的时间间隔。Listen interval 越长,STA 每次唤醒等待的时间就越长,虽然能节省更多的电能,但 AP 就必须使用越多的内存来缓存帧,同时带来的帧传送延迟也会越大,语音、视频等实时通信的效果可能也会越差。缺省的 Listen interval为 1,即休眠 STA 必须定期唤醒监听每个 Beacon 帧。
  • Association ID:STA 的关联标识符,简称 AID。当 STA 关联 AP 时,就会被赋子一个关联标识符来协助控制与管理。在 PS-Poll帧中,它被用于让 AP 识别属于某 STA 的缓存数据。
  • SSID:Service Set ldentity。802.11 网络服务的名称标识。由多个 BSS 共同组成的扩展服务区域 (ESS) 会使用相同的 SSID。要注意和 BSSID 概念 的区别(AP的链路层地址)。
  • Supported Rate:无线局域网支持多种标准速率。802.11 网络可以使用 SupportedRate 信息元素来指定其所支持的速率。当 STA 试图加入网络时,会先查看该网络所支持的数据速率。有些速率是强制性的 (mandatory rate),每个 STA 都必须支持;有些速率是选择性的 (supported rate),可供 AP 和STA 协商。
  • TIM:Traffic Indication Map,数据待传指示。AP 会为处于休眠状态的 STA 缓存数据帧。同时,每隔 Listen interval 设定的时间,AP 就会通过 TIM 通告 STA 是否有缓存数据待传。TIM 是通过比特位映射 (bitmap) 来实现的,它由 2008 个 bit 位所组成,每个 bit 位映射到一个关联标识符(AID)。当某个 AID 对应的 STA 有数据缓存时,相应的位就会被设定为 1,否则为 0。

信道共享和介质竞争

同一基本服务单元(BSS) 下的 AP 和所有 STA 通信时共享一个信道介质。也即BSS 内的 AP 和 STA 都在同一个信道内发送和接收电磁波。这表明无线的下行数据通信(AP>STA) 和上行数据通信 (STAAP) 使用一个共同的信道工作。为了避免相互扰,它们采用分时传输的策略。就像两个人对话,甲说完了,乙再说,这就是 802.11的半双工方式。半双工也是 WLAN 区别于 3G/4G 特点之一,比如 GSM 手机通信的双工方式其上、下行分别采用的是不同的频段,可以在不同的频段内同时进行上行、下行数据的传输。

在无线通信中,一个信道所能承载的带宽有限,比如我们 11g 协议速率最高为54Mbps,也即一个信道所能承载的极限物理带宽为 54Mbps(除开空口竞争开销和协议开销,实际吞吐可能只有 50%左右)。如果 54Mbps 仍无法满足区域内所有终端的通讯需求,我们必须采用多信道部署的方案。让不同的 STA 群组使用不同的信道通信,这样就能增加带宽和吞吐量,这就是多 BSS 部署的思路。但是,我们还面临着一个问题,即无线的信道数量是有限的,比如 11g 互不重叠的工作信道只有 3 个。在这种情况下,如果 STA 数量进一步扩大,导致带宽和容量需求进一步提升,则可以使用蜂窝覆盖技术,即尽量让相邻的蜂窝不使用同一信道

image.png

而对于介质竞争,如何理解呢? WLAN 是一种借助电磁波传播数据的无线通信技术。电磁波具有能在自由空间传播和扩散的特征,且速度为光速。也就是说,在一个 BSS 所属区域内,只要有任何一个通信节点发送某特定频段电磁波,则整个空间都会立刻充斥该频段的电磁能量。而如果有两个通信节点在同一时刻发送相同频段的电磁波,则两个电磁信号会相互叠加,彼此干扰对方的信号接收,形成碰撞冲突。

要理解 802.11 的介质竞争原理,先理清 WLAN 通信所需要的资源要素,即空间、信道和时间片。我们先看看一次成功的 802.11 帧传送所需要的资源。首先,我们在发送一个 802.11 数据帧的时候,必须要使用一个特定的信道来承载无线数据,该信道收发双方必须协商一致。其次,我们需要一个干净的电磁环境来发送电磁波,也就是物理空间中不能存在同频道的干扰信号,这样才能保证接收方能成功解调数据信号。最后,BSS中可能存在多个需要发送数据的 STA,必须要为本次 802.11 传送找到一个专属的时间片资源。只有空间、信道和时间片资源同时准备齐全,一次成功的帧传送才有“可能发生。

空间和信道通过合理的AP部署和信道规划进行解决,而时间片资源的分配,则是需要类似以太网中的CSMA/CD技术,进行载波侦听、冲突检测,由于无线产品的适配器不易检测信道是否存在冲突,因此重新定义了CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance),该机制以DCF(Distributed Coordination Function,分布式协调功能)为基础。

image.png

DCF 模式下,STA/AP 在试图传送任何数据之前,必须检查空口介质是否处于空闲状态。若介质仍处于忙碌状态,则退避不发送报文。如图所示,在 STA1 传送数据时,其它 STA2、STA3、STA4 都保持静默直到 STA1 完成数据顿传输。待 STA1 完成数据传输,空口恢复空闲后,所有的 STA 需要通过一个随机过程决定下一个数据帧的传送顺序随机过程的实现如下。STA 在发送报文之前需要启动一个“Backof”随机长度的定时器,该定时器尺寸为竞争窗口 (CW,Contention Window)。运气好的 STA 会挑到个最小的随机数,比如图中的 STA3 在等待 CW 的时间窗后,发现空口仍然处于空闲状态,于是立即传送数据。而一旦 STA3 开始数据传送,空口介质就会“立刻”变为忙状态,从而“抑制”其它 STA 的数据传送,保证 STA3 的传递过程不被干扰。这之后开始下一轮介质竞争循环。

那么这里有个问题,前面提到的OFDMA支持同一时间片中,信道频谱资源给多个用户使用,那么是否和CSMA/CA的工作机制冲突了呢?

802.11ax uses OFDMA to support multiple users simultaneously, but the underlying multiple access mechanism continues to be CSMA-CA with backoff. Users are scheduled simultaneously, but only when CSMA-CA determines that the medium is available for transmission.

可以这么理解,OFDMA底层多路访问机制实际上还是使用了CSMA/CA,只不过由于OFDMA将信道资源划分为了一些“子信道”,此时CSMA/CA监听的就不是原来的信道资源了。

更多有关CSMA/CA在OFDMA中的应用,可见 paper

帧交换和重传机制

image.png

受噪声和干扰的影响,无线传输过程无法保障每个发送出去的数据帧都能被成功接收。相较有线的 Ethernet 中,信号借助有线线缆传播,受电磁干扰小,在有线传输中可以假设对方必然会成功接收帧。无线链路则不然,特别是使用无需授权的ISM 频带时,我们必须假设干扰存在并提供克服干扰的办法。除了要考虑微波炉以及其他申磁设备带来的干扰外,无线链路的信号质量也具有不稳定的特征,比如多径衰落导致的信号波动也可能导致帧接收错误。

总之,帧传输丢失在无线链路中应该作为常规现象予以考虑,所以 802.11 在链路层引入了 ACK 确认的机制。即所有已传送出去的单播顿都必须得到接收端的 ACK 响应确认,否则该顿视为传输失败而需要重传。Frame 传送与 ACK 应答作为一个整体称为顿本换 ( Frame Exchange)。

特别说明的是,只有单播帧才有 ACK 确认,广播和组播帧没有确认机制。

image.png

在 802.11 中,数据帧的传送者必须收到 ACK 确认,否者该顿视为已经丢失而需要重传。从发送端的角度而言,究竟是一开始的数据帧未送达接收端还是接收端返回的ACK 丢失已不再重要,因为规则是: 不论如何,只要未收到 ACK 确认的数据必须予以重传。但这种规则可能导致接收到重复帧,所以 802.11 还定义了一种剔除重复帧的机制。

重传帧帧头的 Retry 位会置 1,以协助接收端剔除可能重复的帧。当然,重传最大次数是有上限的,H3C 无线产品缺省的最大链路重传次数为 7。

事实上,无线链路的丢帧率确实非常高,一般情况下 10%的丢帧率都算是比较常见。因为有帧重传机制,真正的协议层丢包概率并不高。我们以重传 3 次为例说明:即便链路丢帧概率 10%,重传 3 次仍丢失的概率为 10%X 10%X 10%=0.1%。

但重传也是有代价的,最直接的代价就是会增大时延。特别的,在一个比较繁忙的网络中,一旦传输质量因干扰原因恶化到需要频繁重传的程度,就会导致一系列连锁反应: 频繁的重传会导致介质占空比进一步提高,同时导致物理层降速传递,进一步加重空口负荷。这又反过来导致传输质量的进一步恶化。重传也不能杜绝无线丢包的发生。

参考文章

https://ieeexplore.ieee.org/document/5200978

https://www.h3c.com/cn/BizPortal/TrainingPartner/TeachingMaterial/web/viewer.html?file=https://www.h3c.com/cn/BizPortal/TrainingPartner/TeachingMaterial/Encrypt/%e6%9e%84%e5%bb%baH3C%e6%97%a0%e7%ba%bf%e7%bd%91%e7%bb%9c_%e7%ac%ac4%e7%ab%a0_%e5%b8%a7%e6%a0%bc%e5%bc%8f%e4%b8%8e%e4%bb%8b%e8%b4%a8%e8%ae%bf%e9%97%ae%e8%a7%84%e5%88%99V8-w32145.pdf#pagemode=bookmarks

https://www.h3c.com/cn/BizPortal/TrainingPartner/TeachingMaterial/web/viewer.html?file=https://www.h3c.com/cn/BizPortal/TrainingPartner/TeachingMaterial/Encrypt/%e6%9e%84%e5%bb%baH3C%e6%97%a0%e7%ba%bf%e7%bd%91%e7%bb%9c_%e7%ac%ac5%e7%ab%a0_MAC%e5%b1%82%e5%8d%8f%e8%ae%ae%e5%8f%8a%e6%a6%82%e5%bf%b5%e4%bb%8b%e7%bb%8dV8-w32145.pdf#pagemode=bookmarks

https://wifihelp.arista.com/post/802-11ax-enhancements