802.11 PROTOCOL INTELLIGENCE

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.

IEEE 802.11n-2009 MAC Layer Efficiency CWAP / CWNA Domain

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.

// quick wireshark filters - A-MPDU and Block ACK
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.
Full filter reference → /wireshark-filters

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.

PHY Preamble (HT-MF)
32 µs (HT-LTF × 2 + HT-SIG)
MAC Header
28–36 bytes (base + QoS)
FCS
4 bytes per frame
SIFS
16 µs before ACK
ACK frame + preamble
~28 µs
DIFS + backoff
34 µs + random slots

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

A-MSDU - Aggregate MAC Service Data Unit
Single MAC Header + QoS Control (28-30 bytes)
DA/SA/Len (14B)
MSDU 1 payload + padding to 4B boundary
DA/SA/Len (14B)
MSDU 2 payload + padding to 4B boundary
DA/SA/Len (14B)
MSDU 3 payload + padding to 4B boundary
Single FCS - covers entire A-MSDU (4 bytes)
Max size (basic/extended) 3,839 / 7,935 bytes
Subframe destination All must be same RA/TA/TID
Error handling All-or-nothing - one FCS error discards all
Block ACK required No - single normal ACK
Overhead saving One MAC header for all MSDUs
A-MPDU - Aggregate MAC Protocol Data Unit
Delimiter (4B) Full MPDU 1 (own MAC hdr + payload) FCS
Delimiter (4B) Full MPDU 2 (own MAC hdr + payload) FCS
Delimiter (4B) Full MPDU 3 (own MAC hdr + payload) FCS
→ padding to 4-byte boundary between subframes
Max size (n / ac / ax) 65,535 / 1,048,575 / 4,194,304 bytes
Subframe destination Can differ per MPDU
Error handling Selective - Block ACK bitmap per MPDU
Block ACK required Yes - mandatory for A-MPDU
Delimiter 4 bytes: length (12b) + CRC (8b) + signature (8b)
A-MSDU Best For

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.

A-MPDU Best For

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.

Reserved
4 bits
Always 0
MPDU Length
12 bits
Length of MPDU in bytes (0–4095)
CRC
8 bits
CRC-8 over bits 0–15
Delimiter Signature
8 bits
Always 0x4E - marks start
SPEC NOTE - IEEE 802.11-2020

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
A-MPDU LENGTH EXPONENT FORMULA
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.

Immediate Block ACK

BAR sent after A-MPDU burst; BA returned after SIFS. Most common mode. 64-bit scoreboard bitmap. Requires Block ACK agreement (ADDBA exchange).

Delayed Block ACK

BA returned in next TXOP, not immediately after SIFS. Allows AP to process before responding. Rarely used in practice - latency impact.

Multi-TID Block ACK

Single BA Request/Response covers multiple Traffic IDs (TIDs) simultaneously. Reduces management frame overhead when multiple QoS streams are active.

Multi-STA Block ACK (GCR)

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.

ADDBA EXCHANGE (Block ACK Setup)
ADDBA Request
Initiator → Recipient: proposes TID, buffer size (64), timeout, starting seq number
ADDBA Response
Recipient → Initiator: accepts/rejects, confirms buffer size, timeout
A-MPDU burst begins
Block ACK policy now active for this TID
THROUGHPUT IMPACT - CONCRETE NUMBERS

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.

A-MPDU (outer - multiple MPDUs)
Delimiter
MAC Header (A-MSDU flag set in QoS Control)
DA/SA/Len + MSDU 1
DA/SA/Len + MSDU 2
DA/SA/Len + MSDU 3
FCS
Delimiter
MAC Header (A-MSDU flag set in QoS Control)
DA/SA/Len + MSDU 1
DA/SA/Len + MSDU 2
DA/SA/Len + MSDU 3
FCS

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

FC QoS Data subtype with A-MSDU bit (QoS Control bit 7) = 1
Frame body is an A-MSDU. Parse as DA/SA/Len/MSDU subframes.
Radiotap header: A-MPDU status field present
Frame was received as part of an A-MPDU burst. Subframe number and ref number fields identify position within burst.
Block ACK Action frame (category 3)
ADDBA Request (action 0), ADDBA Response (action 1), or DELBA (action 2). Marks Block ACK session lifecycle.
Compressed Block ACK frame
FC type=1 (control), subtype=9 (Block ACK). 8-byte bitmap in immediate BA. Look for this after A-MPDU burst.
Multiple frames with identical sequence numbers
Wireshark may show subframes of the same A-MPDU with sequential sequence numbers - this is normal Block ACK window progression.
WIRESHARK FILTERS
wlan.fc.type_subtype == 40
QoS Data frames (type 2 subtype 8) - most aggregated data
wlan_mgt.fixed.action_code == 0 && wlan_mgt.fixed.category_code == 3
ADDBA Request frames - marks Block ACK session setup
wlan.fc.type == 1 && wlan.fc.subtype == 9
Block ACK frames - follows A-MPDU burst
// related reference
Channel Access (EDCA) →Interframe Spacing →Power Save Modes →MCS Rate Calculator →Frame Types Reference →