Wi-Fi 提速魔法:深度解析 802.11n 的帧聚合技术(A-MSDU vs A-MPDU)

如果你用过从单天线WiFi到双天线WiFi的升级,应该能明显感觉到网速变快了。但你知道吗?802.11n(也就是大家常说的WiFi 4)除了MIMO多天线技术之外,还有一项”隐藏功臣”对吞吐量提升贡献巨大——那就是帧聚合(Frame Aggregation)

今天我们就来好好聊聊这个话题,拆解一下802.11n引入的两种聚合机制:A-MSDU和A-MPDU,看看它们是怎么工作的,各自适合什么场景。

为什么需要帧聚合?

在讲聚合技术之前,我们得先想明白一个问题:WiFi为什么需要聚合?

传统802.11a/b/g时代,每个数据帧都要走一遍完整流程:竞争信道 → 发送帧头 → 发送数据 → 等待ACK。每个帧都有固定的开销(PHY头、MAC头、帧间间隔IFS等)。如果你的上层数据被分成很多小帧发送,这些开销就会吃掉大量的无线带宽,实际吞吐量惨不忍睹。

给大家算笔账:假设一个PHY头需要20μs发送,数据速率600Mbps,20μs就是1500bit ≈ 188字节。如果我发一个100字节的TCP包,光是头就比数据还大,效率能高到哪去?

帧聚合的核心思想很简单:把多个小帧打包成一个大帧发送,共用一次头部开销和一次信道竞争。这样单位数据的平均开销就降下来了,吞吐量自然就上去了。

802.11n定义了两种不同层次的聚合:在MAC层服务数据单元层面聚合的A-MSDU,和在MAC协议数据单元层面聚合的A-MPDU。我们一个一个来看。


A-MSDU:把多个Payload揉在一起

原理与目的

A-MSDU(Aggregated MAC Service Data Unit)是在MSDU层面进行聚合。简单来说,就是把来自同一个业务流的多个上层数据包(MSDU)拼接起来,只封装一个共同的MAC头和PHY头,作为一个整体发送出去。

它的目的很直接:减少MAC头和PHY头的重复开销,提高信道利用率。

A-MSDU 帧结构

A-MSDU的帧结构很简洁:

1
2
3
4
5
6
7
8
9
+------------------+-------------------+-------------------+-----+------+
| PHY Header | MAC Header | 子MSDU1 | ... | FCS |
+------------------+-------------------+-------------------+-----+------+

每个子MSDU格式:
+----------+----------------+--------+
| 长度(2B) | 数据载荷 | 填充* |
+----------+----------------+--------+
*填充:可选,保证4字节对齐

每个子MSDU都有自己的长度字段和数据承载,但是所有子MSDU共用一个PHY头、MAC头和帧校验序列(FCS)。标准规定A-MSDU最大长度是4095字节,所以一个A-MSDU最多只能聚合几千字节的数据。

A-MSDU 工作流程

A-MSDU的工作流程非常简单:

整个过程就是一次发送、一次确认,操作非常简单,额外处理开销很小。

A-MSDU 的优缺点

优点 缺点
处理简单,额外开销极小 只要一个子MSDU出错,整个A-MSDU都要重传
头部开销压缩到极致 对误码率敏感,差信道下性能反而下降
接收端处理简单,延迟低 最大长度限制(4K),聚合度有限
不需要额外协议交互 只能聚合同一个接收地址的包

因为整个A-MSDU只有一个FCS校验,如果传输过程中任何一个bit出错,整个大帧都得扔掉重传。所以A-MSDU更适合信号质量好、误码率低的环境。


A-MPDU:灵活聚合,选择性重传

A-MPDU(Aggregated MAC Protocol Data Unit)是另一种聚合方式,它聚合的是已经封装好MAC头的完整MPDU。换句话说,每个子帧都有自己独立的头部和校验,错哪个就重传哪个,不用全盘重来。

原理与目的

A-MPDU的设计目标就是解决A-MSDU的痛点:它允许在一个聚合帧里包含多个独立的MPDU,每个MPDU都能独立校验、独立确认、独立重传。这样即使信道质量不好,也只需要重传出错的个别子帧,大大提高了恶劣环境下的传输效率。

A-MPDU 帧结构

A-MPDU的结构比A-MSDU稍微复杂一点:

关键点:

  1. 每个子MPDU都有自己独立的MAC头和FCS
  2. 每个子MPDU前面都有一个4字节的分隔符(delimiter),标记长度信息
  3. 整个A-MPDU共用一个PHY头(外面那个MAC头其实是聚合帧的头,主要用来寻址)
  4. A-MPDU最大长度可以达到65535字节,比A-MSDU大得多

Block Ack 交互机制

传统的802.11每个MPDU都需要一个单独的ACK,如果你聚合了几十个MPDU,还要一个个回ACK那不就又浪费带宽了吗?所以A-MPDU配合了块确认(Block Ack, BA)机制,一次传输完成后,接收方用一个Block Ack帧一次性确认所有收到的子帧。

Block Ack的核心就是那个比特位图(Bitmap)。例如,BA会话窗口大小是64,位图就有64个bit,每个bit对应一个序列号,bit为1表示对应帧收到了,0表示没收到。发送方看到0就知道这个要重传。

这样一次传输、一次确认就搞定了几十个帧的确认工作,既享受了聚合带来的开销节省,又保留了单个重传的灵活性。

A-MPDU 完整工作流程

A-MPDU 的优缺点

优点 缺点
每个子帧独立校验,错哪个重传哪个 每个子MPDU都要保留自己的MAC头,冗余比A-MSDU大
适应信道质量变化,坏环境下也能保持高效 需要Block Ack协议交互,逻辑更复杂
支持最大64KB聚合,聚合度更高 接收端需要缓存,处理复杂度更高
可以聚合不同业务流到同一接收端 头部分隔符还是有一定开销

A-MSDU vs A-MPDU:到底谁更好?

我们来做个全面对比:

开销占比对比(小数据包场景)

重传开销对比(误码率1%场景,10个帧)

更完整的对比表格:

对比维度 A-MSDU A-MPDU
聚合层次 MSDU(Payload层) MPDU(完整帧层)
最大长度 4095 字节 65535 字节
头部开销 极低(所有子帧共用一个MAC头) 较高(每个子帧都有MAC头 + 分隔符)
错误处理 一个出错,全部重传 仅重传出错帧
是否需要Block Ack 不需要 需要
处理复杂度 简单 复杂
对误码率敏感度

你可以把A-MSDU想象成用快递袋打包多个小包裹,只贴一张快递单——省包装钱,但只要其中一个包裹破了,整袋都得退回重发。

而A-MPDU就像用一个大箱子装多个已经打包好的小盒子,每个小盒子都有自己的包装——包装费贵一点,但哪个盒子坏了只需要重发那个盒子就行。

性能提升到底有多大?

帧聚合技术对802.11n的吞吐量提升到底有多明显?我们来看看实测大致范围:

场景 无聚合 A-MSDU A-MPDU
小包(100字节) ~30% 效率 ~75% 效率 ~65% 效率
大包(1500字节) ~85% 效率 ~92% 效率 ~88% 效率
信噪比高(SNR > 30dB) 基线 +80~100% +60~80%
信噪比低(SNR < 20dB) 基线 不稳定,常下降 +40~60%

在最好的情况下,配合HT40和MIMO,802.11n可以把实际TCP吞吐量从原来的~30Mbps(802.11g)提升到~300Mbps以上,这里帧聚合功不可没。

适用场景分析

两种聚合技术并不是互相取代的关系,而是互补的关系。实际上很多WiFi芯片同时支持两种聚合,甚至可以嵌套使用(A-MSDU封装后再放到A-MPDU里聚合)。

A-MSDU 最适合:

  1. 信号质量非常好的近距离传输:AP和STA隔得近,信噪比高,误码率几乎为零,这时候A-MSDU的低开销优势就能完全发挥出来
  2. 大量小包传输:比如网页浏览、物联网传感器数据上报,很多小包在一起,A-MSDU能最大程度压缩头部开销
  3. 低延迟要求场景:处理简单,不需要复杂的块确认和重排,延迟更低

A-MPDU 最适合:

  1. 一般环境下的大容量传输:下载大文件、视频流,不管信道质量如何,A-MPDU都能稳定给出好性能
  2. 信道环境波动大:有墙壁遮挡、移动场景,误码率不可预测,选择性重传优势明显
  3. 吞吐量优先场景:追求最大净吞吐率,即使增加一点处理复杂度也值得

实际应用中的组合拳

现在很多设备实际采用的方案是:A-MSDU + A-MPDU 嵌套,先把几个小包聚合成A-MSDU,然后把多个A-MSDU作为子帧放到A-MPDU里。这样既享受了A-MSDU的低开销,又保留了A-MPDU的选择性重传优势,一举两得。


笔者思考:从聚合技术看WiFi设计哲学

作为一名通信芯片设计工程师,我觉得802.11n的帧聚合设计非常有意思。它反映了WiFi协议一路走来的设计思路:没有普适的设计,只看应用的场景

A-MSDU追求极致的效率,但对错误零容忍;A-MPDU付出一点额外开销换来了鲁棒性,适应性更广。设计者没有强行二选一,而是把两种方案都放出来,让设备根据实际场景动态选择。这种”留给实现者决定”的思路在WiFi协议中非常常见。

另外有意思的一点是,帧聚合其实是对TCP/IP协议栈”分包过大”问题的一种弥补。IP协议的MTU是1500字节,TCP还会进一步分段,如果没有聚合,每个小段都单独发送,效率真的很低。WiFi在链路层把它们重新拼起来,相当于在底层做了一次”批量传输”优化——这个思路现在也被用到了很多其他协议中。

从技术演进来看,后续的WiFi 5(802.11ac)、WiFi 6(802.11ax)都延续了帧聚合的设计,并且进一步扩大了A-MPDU的最大长度,可见这个设计思路经受住了时间的考验。

总结

帧聚合是802.11n时代引入的关键技术,通过将多个小帧打包成大帧发送,显著降低了协议开销,提升了实际吞吐量。A-MSDU在链路层聚合Payload,开销极低但抗误码差;A-MPDU聚合完整帧,开销稍大但支持选择性重传,适应复杂环境。根据不同场景选择合适的聚合方式,或者组合使用两者,可以最大限度发挥无线信道的潜力。

下次你连接WiFi刷网页下电影的时候,如果想起”哦原来这里还有这么个提速魔法在工作”,那这篇文章就值了。


参考资料