原文地址:http://ergodicthoughts.blogspot.com/2012/02/difference-between-mpdu-msdu-ampdu-and.html
Difference in implementation:
If we see the packet being handed from the IP layer to the MAC layer the following sequence of processing is seen. The packet goes from the IP layer to the MAC-llc (logical link control layer) or the upper MAC. This is also called as the MAC service access point (MAC-SAP).
MSDU: Is the MAC service data unit. This is the unit of transmission used at the MAC layer which is received from the upper layer.
AMSDU: Aggregation of the MSDUs directly performed at the MAC layer is called an AMSDU. Such AMSDU's are now passed to the lower PHY layer, where they are dealt with as MPDUs. Multiple MSDUs are aggregated at the MAC layer and pushed into a single MPDU (which is pushed to the PHY). They have a single frame header with multiple frames, and they are destined for the same client and the same service class. (Basically they all have the same TiD).
* The main motivation for aggregation at the MSDU layer is that: (1) Ethernet is the native frame format for most clients, (2) since the ethernet header is much smaller than the 802.11 header, we can combine multiple ethernet frames to form a single A-MSDU.
MPDU: MAC protocol data units are the frames passed from the MAC layers into the PHY layer.
AMPDU: These are are the aggregated MPDU units which are pushed into a single PPDU (physical protocol data unit). All frames will have a single PLCP header and preamble.
** The 802.11n system was designed so that either AMPDU, AMSDU or both aggregation algorithms could be used.
When do we want to use an A-MPDU and when do we want to use an A-MSDU:
Rather , the topic of this discussion should be why is AMPDU aggregation preferred over AMSDU aggregation most of the time. Or why most systems use AMPDU aggregation and not AMSDU aggregation.
A-MSDU increases the maximum frame transmission size from 2,304 bytes to almost 8k bytes (7935 to be exact) while A-MPDU allows up to 64k bytes.
However, the main problem with AMSDUs is that the entire blob becomes one MAC frame (or protocol data unit - PDU) and hence has only one CRC check. So as the frame size increase the probability of error increases. Since we have a single CRC check, we cannot retransmit a part of the AMSDU and in most cases this leads to re-transmission at lower rates which nullifies the benefit of aggregation. An AMPDU on the other hand consists of multiple PDUs each with their own CRCs. Hence, in the event of a failure, part of these can be retransmitted resulting in higher efficiency. However, this performance gain comes at a cost since now with every aggregate AMPDU we are sending MAC headers for all of the subframes.
Hence decision of using AMSDU versus AMPDU is a tradeoff between probability of error and retransmission costs in an AMSDU versus MAC frame header overheads in an aggregate with AMPDU. In most real world systems, the later wins, and hence most systems implement AMPDUs.