Whether you’re studying for exams like CWNA or CWAP, or you’re just in the deep ends of your Wi-Fi configuration, you probably come across the topic of frame aggregation – A-MSDU and A-MPDU in particular.
Even though the study guides for above exams and some blogs (mrn-cciew, dot11ap) explain the concepts of frame aggregation in depth, they were very theoretical and hard for me to grasp when I first learned them.
That’s why I want to show the idea of A-MSDU and A-MPDU in some real world examples in Wireshark, so you can easily spot them in future troubleshooting sessions.
No Frame Aggregation
To understand frame aggregation, we need to understand where it all came from. Wi-Fi in its initial form transmitted single data frames that were Ack’d immediately in case of a successful transmission. Those “data frames” are usually Ethernet frames that are transformed from 802.3 to 802.11 (and vice versa) by the AP and clients in order to send them over the wireless medium. In the example below, the 802.11 frames with sequence numbers 99 – 102 were transmitted and got Ack’d immediately. However, the frame with sequence number 103 had to be retransmitted 3 times until it got Ack’d (and even shifted down from a transmission rate of 162mbps to 81mbps).
The biggest downside here is that the transmitter of the data frame has to win a transmit opportunity for every single data frame it wants to transmit. Therefore max. throughput rates are rather low.
With the introduction of 802.11n, it was possible to put multiple of those (Ethernet)-frames into a single 802.11 data frame. Note that the length (size in bytes) of the data frame in the example below is significantly bigger compared to the data frame in the previous example and compared to regular Ethernet frames:
If you look inside the A-MSDU, you can see that in this example, the AP put 2 Ethernet frames as “A-MSDU Subframes” inside the A-MSDU:
The benefit of using A-MSDU is that you reduce overhead. It aggregates multiple 802.3 frames into a single 802.11 frame, therefore the transmitter has to win one transmit opportunity to transmit multiple (in this case 2) 802.3 frames.
However, if only a small portion of an A-MSDU is corrupted and not properly received, the transmitter has to gain another transmit-opportunity to retransmit the whole A-MSDU again.
Therefore, if you have a noisy environment with lots of retries, the cost of the retries might be bigger than the benefit of the aggregated Ethernet frames.
In addition to A-MSDU, 802.11n also introduced a different form of frame aggregation: A-MPDU.
The big difference here is that the transmitter does not merge multiple Ethernet frames into a single 802.11 frame. Every 802.3 frame gets its own 802.11 MAC header and they are aggregated into a single PPDU transmission. Again, the transmitter only has to win one transmit opportunity for the whole A-MPDU.
The frames are not Ack’d individually as in “No Frame Aggregation” – the frames are being Ack’d via the “Block Ack” frame. The Block Ack has the capability to point out individual sequence numbers that were not received, and only those individual frames have to be retransmitted.
In the example below, the AP sends sequence number 1991 – 2000 to a client, but the client did not receive frames 1992 & 1999. Those are the only 2 frames that are retransmitted in the next A-MPDU:
Compared to the A-MSDU, the A-MPDU has more overhead since every frame has its own MAC header. However, it is also much more resilient because in case of frame loss, only the frames not being Ack’d in the Block Ack have to be retransmitted.
A-MSDU & A-MPDU
Finally, there is also the possibility to combine the two aggregation methods A-MSDUs and A-MPDUs. This will look like this:
As you can see in the Length and Payload Type field, the frames are A-MSDU containing 2 Ethernet frames. The A-MSDUs are sent as A-MPDUs with a Block Ack at the end, indicating that frames 596, 611 and 617 were not received. These 3 frames are then retransmitted in the next A-MSDU/A-MPDU transmission.
The combination of A-MSDU and A-MPDU ist the most efficient method and provides the fastest throughputs in clean environments with low retransmissions. However, as with plain A-MSDU, the cost of retries might be bigger than the benefit of aggregated Ethernet frames inside a single 802.11 frame and you could be better off with only A-MPDU enabled.
2 thoughts on “A-MSDU vs. A-MPDU – Real World Examples in Wireshark”
Too much information. Thanks a lot. Can you please write on the Block Ack procedure also?
The article is very easy to read and understand. 🙂