Compressed Block ACK
Anatomy of the 802.11 Block ACK Mechanism
Block acknowledgment was added in 802.11e to let a transmitter send a contiguous block of QoS data frames and receive one consolidated acknowledgment instead of an immediate ACK after every frame. The original variant used a 128-byte bitmap with 16 bits per MPDU, reserving room to acknowledge each fragment of a fragmented frame. When 802.11n coupled Block ACK with A-MPDU aggregation, fragmentation became irrelevant, so the Compressed Block ACK collapsed the bitmap to a single bit per MPDU. The result is a 64-bit field where bit n reports the status of the MPDU at Starting Sequence Number plus n, evaluated modulo 4096 because the 802.11 sequence number space is 12 bits wide.
The session is created through the ADDBA (Add Block Acknowledgment) handshake, in which the originator proposes a buffer size and a reordering window (WinSize, up to 64) and the recipient confirms. During the session the originator may end an A-MPDU with a Block Ack Request (BlockAckReq) to explicitly poll for a BlockAck, or rely on implicit Block Ack solicited by the aggregate itself. The recipient maintains a scoreboard indexed by sequence number, sets the corresponding bit for every sub-frame that passes its FCS check, and returns the bitmap. The originator then retransmits only the MPDUs that were not acknowledged, advancing the window as the lowest outstanding sequence number is confirmed.
Because each A-MPDU sub-frame is wrapped in its own delimiter with a CRC and a length field, a receiver can deaggregate the burst and validate each MPDU independently even when an earlier sub-frame is corrupted. This per-MPDU integrity is what makes selective retransmission practical and is why a single radio glitch no longer forces the whole aggregate to be resent. The mechanism is fundamental to the throughput of 802.11n, 802.11ac, and 802.11ax devices.
Bitmap Mapping and Overhead Equations
SN(n) = (SSN + n) mod 4096, n = 0 … 63
BlockAck frame size (MAC frame, with FCS):
Compressed ≈ 32 bytes vs. Uncompressed ≈ 152 bytes
Aggregation MAC efficiency:
ηMAC ≈ Tdata / (Tdata + SIFS + TBA + DIFS), Tdata = N × TMPDU
Where SSN = Starting Sequence Number, N = number of MPDUs in the A-MPDU (≤ 64), TMPDU = on-air time per MPDU, Tdata = aggregate transmit time, TBA = BlockAck transmit time. Aggregating N MPDUs amortizes the fixed SIFS, BlockAck, and DIFS overhead across one exchange instead of N, so ηMAC climbs toward 1 as N grows. Example: 64 × 1500-byte MSDUs at MCS 9, 80 MHz, where one 32-byte BlockAck replaces 64 separate immediate ACKs and their SIFS gaps, lifting ηMAC from roughly 0.45 for single-frame exchanges to above 0.85.
Block Acknowledgment Variants Compared
| Variant | Standard | Bitmap Size | Bits / MPDU | Max MPDUs | Typical Use |
|---|---|---|---|---|---|
| Basic (immediate ACK) | 802.11 (legacy) | none | n/a | 1 | Per-frame acknowledgment |
| Uncompressed Block ACK | 802.11e | 128 bytes | 16 | 64 | Fragmented QoS bursts |
| Compressed Block ACK | 802.11n / ac | 8 bytes | 1 | 64 | A-MPDU aggregation |
| Multi-STA Block ACK | 802.11ax | variable per-STA | 1 | 64 per STA | OFDMA / MU-MIMO uplink |
| Multi-TID Block ACK | 802.11n / ax | per-TID 8 bytes | 1 | 64 per TID | Mixed access categories |
Frequently Asked Questions
How does the Compressed Block ACK differ from the original uncompressed Block ACK?
The 802.11e Block ACK carried a 128-byte bitmap with 16 bits per MPDU to acknowledge each fragment. Since aggregation rarely uses fragmentation, the Compressed Block ACK in 802.11n cut the bitmap to 8 bytes (64 bits), one bit per MPDU, shrinking the BlockAck frame from about 152 bytes to 32 bytes and saving roughly 40 µs of air time at a 24 Mbps control rate. The Starting Sequence Number anchors bit 0; each later bit maps to the next sequence number modulo 4096.
How many MPDUs can a single Compressed Block ACK acknowledge?
The 64-bit bitmap acknowledges up to 64 MPDUs, matching the WinSize = 64 reordering window negotiated in the ADDBA handshake. The count is also bounded by A-MPDU length limits: 65,535 bytes in 802.11n and 1,048,575 bytes in 802.11ac and 802.11ax. With 1,500-byte MSDUs a full 64-MPDU aggregate is about 96 KB, so the larger 802.11ax limit lets the entire window fill at high MCS. 802.11ax also adds a Multi-STA Block ACK for OFDMA and MU-MIMO.
How does a receiver signal which frames in an A-MPDU were lost?
Each bitmap bit maps to one MPDU sequence number from the Starting Sequence Number: a 1 means the MPDU passed its FCS check, a 0 means it was missing or corrupted. The transmitter resends only the MPDUs whose bits are 0, which is selective retransmission, instead of resending the whole aggregate. Because each A-MPDU sub-frame carries its own delimiter and CRC, the receiver can deaggregate and FCS-check sub-frames individually even when earlier ones fail.