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.♥♥

Leave a Reply

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

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