Frame Aggregation - A-MSDU & A-MPDU
Introduced in 802.11n (2009), frame aggregation is the single largest contributor to 802.11 throughput improvement. Without it, per-frame overhead (MAC headers, PHY preamble, IFS, ACK) would consume 60–80% of airtime at high MCS rates. A-MPDU + Block ACK is mandatory in 802.11ac and the dominant mode in ax and be.
Without aggregation, a modern Wi-Fi 7 link wastes the majority of its capacity on interframe gaps. The first time I measured A-MPDU on versus off on an 802.11ac AP, the throughput difference was 3.4x. The spec limit on A-MPDU size doubled four times between 802.11n and 802.11be.
wlan.fc.type_subtype == 0x19Block ACK frames - check the 64-bit or 256-bit bitmap for missing MPDUs.wlan.fc.type_subtype == 0x18Block ACK Request (BAR) - triggers Block ACK from receiver.wlan.flags.moredata == 1More Data bit set - AP has additional buffered frames for sleeping STA.wlan_aggregateA-MPDU aggregated frames in Wireshark. Expands individual MPDU sub-frames.wlan.fc.retry == 1 && wlan.fc.type == 2Retransmitted data frames. Under Block ACK: individual MPDUs selectively retransmitted.The Overhead Problem
Each individually-transmitted frame carries significant fixed overhead regardless of payload size. At MCS 7 (150 Mbps nominal) on a 20 MHz 802.11n channel, sending 100 × 100-byte frames without aggregation yields roughly 25 Mbps actual throughput - the rest is overhead.
Aggregation solves this by batching multiple frames into a single PHY transmission unit - one preamble, one DIFS+backoff, one Block ACK covers all subframes. At MCS 9 on 80 MHz 802.11ac with A-MPDU and 64 subframes, actual throughput can reach 80–90% of nominal PHY rate.
A-MSDU vs A-MPDU - The Core Distinction
Many small frames to the same destination (VoIP packets, DNS queries, TCP ACKs). Single MAC header reduces overhead per byte. Caveat: one corrupt byte means retransmitting the entire aggregate. Not suitable for large transfers or lossy channels.
Large data transfers (file downloads, video streaming). Selective retransmission via Block ACK - only failed MPDUs are resent, not the entire burst. Dominant mode in 802.11n/ac/ax. In 802.11ac, A-MPDU is mandatory - even single frames are wrapped in A-MPDU format.
A-MPDU Subframe Delimiter - 4-Byte Format
Every A-MPDU subframe is preceded by a 4-byte MPDU delimiter. This delimiter allows the receiver to locate subframe boundaries within the received PSDU - critical because subframes may have different lengths and some may be corrupted.
The MPDU length field (12 bits) limits individual MPDU size to 4,095 bytes in the delimiter - this is why 802.11n A-MPDU max MPDU size is 7,935 bytes using A-MSDU within A-MPDU (two-level aggregation). 802.11ac extended this by using a separate Max MPDU Length field in the VHT Capabilities IE, allowing up to 11,454 bytes per MPDU. The delimiter CRC protects the length field from bit errors - if the CRC fails, the receiver skips ahead looking for the next 0x4E signature byte.
Max Sizes Per Standard
| Standard | Max MPDU | Max A-MPDU | Max A-MSDU | Max subframes | Notes |
|---|---|---|---|---|---|
| 802.11n (HT) | 7,935 B | 65,535 B (64 KB) | 7,935 B | 64 | A-MPDU length exponent 0–3 in HT Capabilities IE |
| 802.11ac (VHT) | 11,454 B | 1,048,575 B (1 MB) | 11,454 B | 64 | A-MPDU mandatory for all transmissions; extended A-MSDU |
| 802.11ax (HE) | 11,454 B | 4,194,304 B (4 MB) | 11,454 B | 256 | A-MPDU exponent 0–7 in HE Capabilities IE; UORA support |
| 802.11be (EHT) | 11,454 B | 4,194,304 B (4 MB) | 11,454 B | 256+ | MLO: A-MPDU per link; multi-link aggregation scheduling |
Max A-MPDU size = 2^(13 + exponent) bytes - 1 802.11ax exponent 0–7: values of 8,191 / 16,383 / 32,767 / 65,535 / 131,071 / 262,143 / 524,287 / 1,048,575 bytes. The negotiated exponent is the minimum of what AP and client advertise in their respective Capabilities IEs.
Block ACK - 4 Variants
Block ACK replaces per-frame ACK with a single acknowledgement covering an entire A-MPDU burst. A 64-bit bitmap (one bit per MPDU sequence number) tells the sender which subframes were received successfully - enabling selective retransmission of only the failed ones.
BAR sent after A-MPDU burst; BA returned after SIFS. Most common mode. 64-bit scoreboard bitmap. Requires Block ACK agreement (ADDBA exchange).
BA returned in next TXOP, not immediately after SIFS. Allows AP to process before responding. Rarely used in practice - latency impact.
Single BA Request/Response covers multiple Traffic IDs (TIDs) simultaneously. Reduces management frame overhead when multiple QoS streams are active.
Introduced in 802.11aa. One BA frame acknowledges frames from multiple stations in a GCR (Group Cast with Retries) group. Used for multicast reliability improvement.
8 × 1500-byte frames without aggregation: 8 × (preamble + DIFS + frame + SIFS + ACK) ≈ 8 × 200 µs = 1,600 µs airtime for 12,000 bytes = 60 Mbps effective at 150 Mbps PHY rate (40% efficiency). Same 8 frames as A-MPDU: one preamble + one DIFS + burst + one SIFS + one Block ACK ≈ 380 µs for 12,000 bytes = 252 Mbps effective (significantly above 150 Mbps nominal - the accounting shows why aggregation is transformative).
Two-Level Aggregation - A-MSDU inside A-MPDU
802.11n introduced the ability to nest A-MSDU inside each MPDU of an A-MPDU - combining both aggregation methods. Each MPDU contains an A-MSDU (multiple MSDUs, single MAC header) and multiple such MPDUs are packed into the A-MPDU burst. This maximises airtime efficiency for workloads with many small frames to the same destination.
Constraint: each MPDU containing an A-MSDU must not exceed 4,095 bytes (the delimiter's 12-bit length field limit) unless the peer has signalled extended A-MSDU capability in its VHT/HE capabilities. The A-MSDU flag is bit 7 of the QoS Control field in the MPDU's MAC header - if this bit is set, the MPDU body is an A-MSDU rather than a single MSDU.
Identifying Aggregation in a PCAP
wlan.fc.type_subtype == 40 wlan_mgt.fixed.action_code == 0 && wlan_mgt.fixed.category_code == 3 wlan.fc.type == 1 && wlan.fc.subtype == 9