一、概述
帧聚合(Frame Aggregation)是802.11中为了提升传输效率的一种方式,自802.11n开始被引入。帧聚合是将多个无线帧组合成单个更长的无线帧传输,然后一次进行传输,以此来减少竞争开销,提高吞吐量,最终提高整体网络效率。
帧聚合分为A-MSDU和A-MPDU。
A-MSDU(Aggregate MAC Service Data Unit,聚合MAC服务数据单元)。 A-MSDU 聚合,将多个 MAC 级业务数据单元 (MSDU) 聚合到单个 MPDU 中。
A-MPDU(Aggregate MAC Protocol Data Unit ,聚合MAC协议数据单元)。 A-MPDU 聚合,将多个 MAC 级协议数据单元 (MPDU) 聚合到单个 PHY 协议数据单元 (PPDU) 中。
MSDU是Ethernet报文,本质是802.11数据帧的第3-7层有效载荷(即Payload),一般MSDU的最大size是2304(不含加密信息部分)。
MPDU是MSDU经过添加完整性校验MIC、分帧、省电模式下报文缓存、加密、序列号赋值、CRC校验、MAC头之后成为MPDU,MPDU就是指的经过802.11协议封装过的数据帧。
二、聚合细节
A-MSDU聚合技术是指把多个包含有相同TID(流量标识符)和地址等符合A-MSDU聚合规则的MSDU通过一定的方式聚合成一个较大的载荷。旨在将若干个A-MSDU Subframe按照802.11协议格式,封装成一个MPDU报文单元,即A_MPDU Subframe。
将若干个A_MSDU Subframe报文聚合,然后打上PHY标头进行传输。
802.11协议定义了“基本A-MSDU子帧”,“短A-MSDU子帧”和“动态A-MSDU子帧”三种格式。
1、基本A-MSDU子帧格式
2、短A-MSDU子帧格式
3、动态A-MSDU子帧格式
A-MPDU聚合技术是指的按照802.11协议封装后的若干个A_MPDUSubframe报文的聚合,将其聚合后打上PHY标头进行传输。
一个A-MPDU由多个A-MPDU子帧所构成。每个A-MPDU子帧由MPDU Delimiter(MPDU分界符)和MPDU实体组成。对于一个A-MPDU,除了最后一个子帧外,其余子帧都会有0-3个字节的填充字段,使子帧长度变为4字节的整数倍。如下图:
EOF:指示帧的结束。
Reserved:保留位。
MPDU Length:表示MPDU的长度。如为0,表示MPDU不存在,用于填充。
CRC:循环冗余检验算法,对前16bit进行校验。
Delimiter Signature:界定符标记,用于发现确定其是MPDU的界定符。固定填充为“0x4E”。
下面是两层聚合的示意图:
IEEE802系列标准把
数据链路层分成两个子层:LLC(逻辑链路控制,Logical Link Control)和MAC(介质访问控制,Media Access Control)。 上面的LLC子层实现数据链路层与硬件无关的功能,比如流量控制、差错恢复等;较低的MAC子层提供LLC和物理层之间的接口。
物理层也分为两个子层:PLCP(物理层汇聚过程,Physical Layer Convergence Procedure)和PMD(物理媒介相关,Physical Medium Dependent)。上面的子层PLCP负责在传送之前进行与物理层相关的成帧操作;较低的PMD子层负责帧的实际传送。
下图是无线报文发送的基本流程:
注:
对于A-MSDU,如果整帧中有部分子帧出错,则整帧需要重新传。而A-MPDU则只需要重传出错的那部分子帧。
不是所有的帧都能被聚合,广播和多播帧不能被聚合,只有单播帧且接收地址相同和QoS优先级相同的帧才能被聚合。
但在802.11ax之后A-MPDU便不要求QoS优先级相同,802.11ax引入多流量标识符(Multi-Traffic Identifier,Multi-TID)的A-MPDU,其允许来自相同或不同QoS接入类别流量进行聚合,其通过TID进行识别。通过组合不同QoS流量类别的MPDU,其能更有效的让802.11ax终端进行聚合传输,减少竞争开销,提高吞吐量,最终提高整体网络效率。
三、Block ACK
为保证数据传输的可靠性,802.11协议规定每收到一个单播数据帧都必须立即回应ACK。A-MPDU的接收端在收到A-MPDU后,需要对每一个MPDU进行处理,发送应答。
当节点接收到聚合帧后,采用块ACK(Block ACK)的形式进行反馈。Block ACK通过使用一个ACK来完成对多个MPDU的应答,从而减少信道竞争所消耗的时间, 提高了系统吞吐量。
(a)Setup:传输初始化。 通过ADDBA Request/Response帧的握手,协商建立Block ACK协定。
(b)Data & Block Ack:数据传输。 协商完成后,发送方可以发送有限多个QoS数据报文,接收方会保留这些数据报文的接收状态,待收到发送方的BlockAckReq报文后,接收方则回应BlockAck报文来对之前接收到的多个报文一次性回复。
(c)Teardown:传输结束。 通过DELBA Request报文来删除一个已经建立的Block Ack协定。
对于Bock Ack的确认分为即时确认和延时确认。即时确认一般由硬件完成,延时确认一般由协议栈完成,通过Block Ack的确认配合帧聚合的使用可以大大提高无线传输中的吞吐量。
四、参考
FAQ-802.11n的两种帧聚合技术MSDU和MPDU的工作原理是什么- 华为
A-MPDU与A-MSDU各是什么意思_ampdu是什么意思-CSDN博客
802.11协议笔记(一)——基本概念_802.11be协议-CSDN博客
MSDU/MPDU/AMSDU/AMPDU基本概念:pre 11ax-CSDN博客
初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_802.11 block ack-CSDN博客