Say hello to my little friends!By CWNP On 08/09/2007 - 11 Comments
Now we have two new 802.11 friends called A-MSDU and A-MPDU. Their job: to make the protocol analyst's job more difficult.
A-MSDU = Aggregate MSDU
A-MPDU = Aggregate MPDU
Both can be used together, with restrictions (of course, because it's not as much fun unless you have extra rules to follow).
You can string MSDUs together - called subframes when aggregated - in the payload of a single QoS MPDU. An A-MSDU subframe structure consists of:
DA (6), SA (6), Length (2), MSDU (0-2304), Padding (0-3) -- all of the numbers are in octets
The padding is there to make sure that each subframe is a multiple of 4 octets. The last subframe is never padded.
These subframes are crammed into an MPDU payload and encrypted with the appropriate cipher suite (WEP, TKIP, or CCMP).
All subframes must be going to the same receiver (Address 1), but are not required to all carry the same source address.
Once you're ready to transmit, then you have to decide whether you're going to stick a pile of MPDUs into a single PSDU. Woohoo! If you do, then you get some extra rules that may hose your A-MSDU aggregation.
The maximum individual MPDU length that can be transported using A-MPDU aggregation is 4095 octets, and the maximum A-MPDU size is 65,535 octets (yes, that's right!). Fragments of an MSDU, A-MSDU, or MMPDU cannot be included in an A-MPDU. So, an A-MSDU of length that exceeds 4065 octets (4095 minus (-) QoS Data MPDU overhead) cannot be transported in an A-MPDU. What the 802.11n amendment is eluding to here is that you can have REALLY big A-MPDU frames, but each MPDU subframe must be moderately-sized, which in turn means that you can't pack lots of MSDUs into an A-MSDU and then expect to pack lots of really big MPDUs made up of big A-MSDUs into an A-MDPU. Did you get all that?
Frame aggregation is particularly helpful when dealing with protection mechanisms in 802.11n because the throughput degradation and added latency experienced when using protection mechanisms are offset by the higher throughput and lower latency caused by frame aggregation. Unfortunately, the Wi-Fi Alliance's testing for draft-2.0 compliance only includes verification that the receiver can receive aggregate MSDUs and MPDUs. Transmission testing is optional, and of course that means that many vendors might decide to opt out.
An A-MPDU is a sequence of MPDUs carried in a single PPDU with the TXVECTOR/RXVECTOR AGGREGATION parameter set to 1. All the MPDUs within an A-MPDU are addressed to the same receiver address. The Duration/ID fields in the MAC Headers of all MPDUs in an A-MPDU carry the same value.
Each A-MPDU subframe consists of an MPDU delimiter (which looks much like a header) followed by an MPDU. Except when it is the last subframe in an A-MPDU, padding octets are appended to make each subframe a multiple of 4 octets in length. The length of an A-MPDU addressed to a particular station may be limited by the receiving station. An HT station indicates a value of "Maximum Rx A-MPDU Factor field" in its HT Capabilities element that defines the maximum A-MPDU length that it can receive. The station must be capable of receiving A-MPDUs of length up to the indicated limit. When it receives an A-MPDU of length greater than the limit, it must receive the first octets and discard any remainder.
The MPDU delimiter is 4 octets in length. The purpose of the MPDU delimiter is to delimit the MPDUs within the A-MPDU such that the structure of the A-MPDU can usually be recovered when one or more MPDU delimiters are received with errors. See the two graphics below to visualize an A-MPDU frame format and an A-MPDU subframe format.
Please, somebody kill me now before I have to memorize any more of this stuff. I'm really glad I'm not an 802.11n chipset.