A-MSDU和A-MPDU——整理总结

 一、概述

帧聚合(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博客

WLAN帧聚合 - sudochen - 博客园

A-MPDU 碎碎念

第二十五节:通信之WLAN(WiFi聚合)-CSDN博客

### 802.11 A-MSDU Header Length Specification In the context of IEEE 802.11 standards, an Aggregated MAC Service Data Unit (A-MSDU) allows multiple MSDUs to be encapsulated within a single MPDU, thereby improving efficiency and reducing overhead[^1]. The structure of an A-MSDU subframe consists of: - **Subframe Header**: This is 14 bytes long. - Protocol Control Field (2 bytes) - Address 4 (6 bytes), which may or may not appear based on certain conditions - Padding (if necessary) - **Payload**: Contains the actual data from one MSDU. - **Pad**: Ensures that each payload starts at an octet boundary aligned with the start of the next Subframe Header; this can vary but typically adds minimal length. For clarity, here's how these components fit together in code form when constructing such headers programmatically: ```python class AMSDUSubFrameHeader: def __init__(self): self.protocol_control_field = b'\x00\x00' # Example value, 2 bytes self.address_4 = None # Optional field, 6 bytes if present self.padding = b'' # Variable length padding @property def total_length(self): base_length = len(self.protocol_control_field) if self.address_4: base_length += len(self.address_4) return base_length + len(self.padding) ``` Each individual A-MSDU subframe has its own header as described above. When considering the entire aggregated unit, there will also be standard 802.11 frame control fields surrounding all contained frames, adding additional fixed-length elements outside what’s covered specifically under "A-MSDU".
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值