The Block Ack mechanism improves channel efficiency by aggregating several acknowledgments into one frame. There are two types of Block Ack mechanisms, immediate and delayed. Immediate Block Ack is suitable for high-bandwidth, low-latency traffic while the delayed Block Ack is suitable for applications that tolerate moderate latency.
The Block Ack mechanism is initialized by an exchange of ADDBA Request/Response frames. After initialization, blocks of QoS data frames may be transmitted from the originator to the recipient. A block may be started within a polled TXOP or by winning EDCA contention. The MPDUs within the block of frames are acknowledged by a BlockAck frame, which is requested by a BlockAckReq frame.
Below diagram (source IEEE 802.11-2012) shows message sequence chart for the setup, data and Block Ack transfer, and the teardown of the Block Ack mechanism.
Tx STA (originator) first check whether the intended recipient STA is capable of participating in BlockAck mechanism by discovering and examining its Delayed Block Ack and Immediate Block Ack capability bits. If the intended recipient STA is capable of participating, the originator sends an ADDBA Request frame indicating the TID for which the Block Ack is being set up.
The recipient STA shall respond by an ADDBA Response frame. The recipient STA has the option of accepting or rejecting the request. When the recipient STA accepts, then a Block Ack agreement exists between the originator and recipient.
Data & BlockAck
Originator may transmit a block of QoS data frames separated by SIFS period, with the total number of frames not exceeding the Buffer Size subfield value in the associated ADDBA Response frame and subject to any additional duration limitations based on the channel access mechanism. Each of the frames shall have the Ack Policy subfield in the QoS Control field set to Block Ack.
The originator requests acknowledgment of outstanding QoS data frames by sending a Basic BlockAckReq frame. The recipient shall maintain a Block Ack record for the block.
When the originator has no data to send and the final Block Ack exchange has completed, it shall signal the end of its use of the Block Ack mechanism by sending the DELBA frame to its recipient. There is no management response frame from the recipient. The recipient of the DELBA frame shall release all resources allocated for the Block Ack transfer.
The Block Ack agreement may be torn down if there are no BlockAck, BlockAckReq, or QoS data frames (sent under Block Ack policy) for the Block Ack’s TID received from the peer within a duration of Block Ack timeout value.
Here is a frame capture shown this BlockAck frame exchange.Here is the Add Block Ack Request (ADDBA Request) frame detail (frame 284). It is an management action frame (action category 3 & action code 0). You can find these frame using following wireshark display filter.
(wlan_mgt.fixed.category_code == 3)&&(wlan_mgt.fixed.action_code == 0)
Block Ack Parameter
The Block Ack Parameter Set field is used in ADDBA frames to signal the parameters for setting up a Block Ack. The length of the Block Ack Parameter Set field is 2 bytes. The Block Ack Parameter Set field is shown in below.
A-MSDU Supported: determines whether an A-MSDU may be carried in a QoS data MPDU sent under this Block Ack agreement. When equal to 1, use of A-MSDU is permitted. When equal to 0, use of A-MSDU is not permitted.
Block Ack Policy: set to 1 for immediate Block Ack and 0 for delayed Block Ack.
TID: contains the value of the TC or TS for which the BlockAck is being requested.
Buffer Size: indicates the number of buffers available for this particular TID.When the AMSDU Supported field is equal to 0 as indicated by the STA transmitting the Block Ack Parameter Set field, each buffer is capable of holding a number of octets equal to the maximum size of an MSDU. A-MSDU Supported field is equal to 1 as indicated by the STA, each buffer is capable of holding a number of octets equal to the maximum size of an A-MSDU that is supported by the STA.
Block Ack Timeout
The Block Ack Timeout Value field (2 byte) is used in the ADDBA Request and Response frames to indicate the timeout value for Block Ack.
Here is the ADDBA Response frame detail. It is Management Action frame (Category 3 & action code 1). Status code 0 mean it is ADDBA request accepted by recipient STA. Dialog Token value is copied from the ADDBA Request frame.
(wlan_mgt.fixed.category_code == 3)&&(wlan_mgt.fixed.action_code == 1)
Once Originator send block of frames it is requesting recipient to acknowledge them. This request is done by sending a BlockAck Request frame which is a control frame.Here is the frame format of this BlockAck Request frame.
For BlockAckReq frames sent under Delayed and HT-Delayed agreements, the BAR Ack Policy subfield of the BAR Control field has the meaning shown in Table 8-15. For BlockAckReq frames sent under other types of agreement, the BAR Ack Policy subfield is reserved.Here is the BlockAck frame sent by the recipient STA.
For BlockAck frames sent under Delayed and HT-Delayed agreements, the BA Ack Policy subfield of the BA Control field has the meaning shown in Table 8-17. For BlockAck frames sent under other types of agreement, the BA Ack Policy subfield is reserved. The DELBA frame is sent by either the originator of the traffic or the recipient to terminate the Block Ack participation. The Action field of a DELBA frame format contains the information shown below.References
1. IEEE 802.11-2012 Standard
2. CWAP Official Study Guide – Chapter 5