Block Acknowledgement (BA)

Categories : 802.11n , WLAN

♣ What is Block Acknowledge ment (BA)?

Block Acknowledgement is a mechanism to acknowledge one or more Data frame(s) present within A-MPDU.

♣ From which IEEE standard BA was introduced?

BA was introduced in 802.11n standard. 802.11ac also supports BA because if it’s advantages were proven in 802.11n.

♣ Which layer feature is BA?

BA is MAC layer feature not PHY layer feature.

♣ Which Data Rate BA is sent?

BA is sent at highest basic data rate. Generally we have observed that BA is sent at 24Mbps. This may vary depending upon test configurations.

Let’s understand from where we get this 24Mbps.

Follow below screenshot for STA and AP connection and then observe the BA data rate.

♦ Step1:

“Check for highest basic data rate declared at AP’s Beacon or Association Response”


Assoc Response:

So we have observed that highest basic rate is 24Mbps mentioned in Beacon and Association response.

♦ Step2:

“See BA Data Rate”

Now let’s see one BA’s data rate where receiver is AP.

So we can see BA data rate is 24Mbps.

To understand Basic Rate and Supported rate follow different post.

♣ Normal ACK verses BA:

♠ ACK ♠  ♠ BA ♠
All Spec supports this.  802.11n and 802.11ac support this.  
Normal ACK data rate is lowest basic data rate like Beacon.  BA data rate is highest basic data rate.  
Normal ACK works with single MPDU.  BA works with A-MPDU even there is single data inside A-MPDU.  
Overhead is more to give acknowledge for multiple data. So network efficiency is less.    Improves network efficiency significantly for multiple data ack scenario.  

Below diagram is to explain the frame exchange differences for Normal ACK and BA

♣ BA frame analysis:

Here is the basic frame format for a BA.

Let’s see the below screenshot for understanding each field of BA.

♦♦ BA policy is always set to “No Acknowledgement” for BA because BA does not any further ACK. BA itself is the ACK for A-MPDU.

♦♦ Why Compressed BA is used instead of Normal BA?

It is an enhanced version of BA defined in 802.11n. In compressed BA, Fragmented MSDUs cannot be transmitted and hence the bitmap size is reduced from 1024 (64*16) bits to 64 (64*1) bits = 8Bytes.

Remember Aggregation (Here A-MPDU) and Fragmentation is reserve scenario. Aggregation means bundle more data together where as fragmentation means breaking data into pieces. As A-MPDU is used with BA, there is no fragmented data present inside A-MPDU.

♣ What is BAR (Block ACK Request)?

In general, BA is sent immediately after A-MPDU is received. But we may see some device send BAR to ask acknowledgement for some MSDU with one starting sequence number.

Let’s see one sniffer capture where BAR is sent.

In simple sentence:

Sender sends BAR asking the acknowledgement status for MPDU where starting sequence number is X. It’s possible that sender of A-MPDU did not get BA for those data frame where starting sequence number is X. That’s why sender of A-MPDU is sending BAR for lost MPDUs.

♣ BA bitmap deep analysis in Wireshark:

First of all, there may be slight different BA Bitmap mechanism used by different Wi-Fi devices. Here we are going to see the simple method used to indicate whether receiver has received MPDU or not.

We will take one example from capture and explain. Let’s follow screenshot and explanation.

♦ Step1:

We can see one A-MPDU where 8 MPDUs are there.

MPDU sequence numbers are 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685.

Now BA is sent from receiver where

♦ “Block Ack Bitmap: bf00000000000000”

♦ Starting sequence number is 1678

So BA is telling

“I am acknowledging MPDUs with starting sequence number is 1678.

Bitmap is indicating which packet is received and which packet is not received “

Let’s try to understand the meaning of Bitmap (8Bytes [Compressed Bitmap])

Bitmap Hex value is: 0xbf00000000000000 and only 8bytes is used to give MPDU ACK.

Converting 0xbf into binary as 1011 1111. Read from right to left.

Sequence number16851684168316821681168016791678

This means receiver has received sequence number:  1678, 1679, 1680, 1681, 1682, 1683, 1685.

Not received: 1684

♦ Step2:

As sequence number 1684 is not received so transmitter has to resend it.

We can see in screenshot that 1684 is included in next A-MPDU.

And BA starting sequence number is 1684.

Bitmap is 0xfd00000000000000

0xfd = 11111101

If we use Step1 calculation then we get this

Sequence number16911690168916881687168616851684

1684 is received and 1685 is mentioned as missing because it was already received in last A-MPDU.

Using this method we can try to calculate BA compressed Bitmap for received or not received MPDUs.

♣ Is MPDU retry bit set to indicate if that MPDU is retried or not? If answer is not, then why is that?

Maximum scenario, I have observed MPDU retry bit is not set for retransmitted MPDU. Using BA compressed bit map calculation we can find out. So, retry bit set is not helpful here.

But, I have observed some vendor set retry bit for MPDU if it’s retransmitted. So, its implementation depended.

Here is the screenshot for our scenario. Retried bit is not set.

♣ Conclusion:

Block Acknowledgement is a strong feature for 802.11n and 802.11ac and newer IEEE standards to improve wireless throughput significantly. I hope this article helps to debug BA and A-MPDU throughput related issues.

♥♥If you have any doubts or query please let me know in comment section or send mail at feedback@wifisharks.com.♥♥

4 comments on “Block Acknowledgement (BA)


    • September 11, 2023 at 6:05 pm

    I have a question. What happens if an 802.11ac/ax client tries to use/sends a-mpdu but It’s not enabled on the AP radio? Will the client keep trying to send the same a-mpdu packets? Will the AP refused the packets until client tries to use a different phy or will the client try to send mpdu and expect acknowledgment from each mpdu? I hope my question makes sense.

    Back story: we have multiple APs with 802.11ax enabled. One of the APs didn’t have a-mpdu enabled for some reason (I enabled it) and we noticed the clients were experiencing high latency when associated to this AP. It wouldn’t happen immediately but over time.
    I think this is the issue but I want to know how I can tell a-mpdu was the issue?


      • September 30, 2023 at 11:58 pm

      Hi Fred,
      If i understand your question/scenario correctly, then here is my explanation.
      Upto association response or 4way handshake CLIENT or AP does not know if A-MPDU is enabled on the other side.
      Thats why, if client wants to use A-MPDU then [after assoc respknse or 4 way handshake..] client sends ADDBA request ACTION frame [for one TID] to AP and if AP sends ADDBA response with success then client is allowed to send A-MPDU frames to AP.
      Same way AP also sends ADDBA request to client so that AP can A-MPDU frames to client.

      So in you case, if A-MPDU is not enabled in any AP then that AP should reject the ADDBA request ent by client prior sending A-MPDU data. Client can not send A-MPDU data directly without negocoation.

      I hope this clarifies some doubt.



    • April 20, 2022 at 11:06 pm


    I have one doubt. Could you please respond with answer. Thanks in advance.

    > When STA1 [Tx] > STA2 [Rx]
    I’m seeing that block ack beeing sent at different pkt intervals i mean

    1. After RTS/CTS first 9 MSDU pkts are transmitted and STA2 sent block ACk.
    2. Again in subsequent i’m seeing sta1 sending 12 pkts and sta2 sending ACk.

    Question is how sta2 knows when to send block ack and where is is negotiated


      • April 23, 2022 at 11:36 am

      Hi Bhanu,

      I think this question is based on some sniffer analysis.

      I can understand partially but not completely. If i can see sniffer capture, it would very easy to answer it.

      Could you share the sniffer capture either from your gdrive share or mail me at feedback@wifisharks.com ?

      And then mention the packet numbers for your observation.

Leave a Reply

Your email address will not be published. Required fields are marked *

error: Content is protected !!
%d bloggers like this: