Difference between MPDU, MSDU, AMPDU, and AMSDU in 802.11n
来源:互联网 发布:stm32 pid控制算法 编辑:程序博客网 时间:2024/06/08 10:13
原文地址: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.
MSDU是个以太网帧,由IP层下发到MAC层,MAC层加入MAC header后,再
作为MPDU下发到PHY层。MPDU=(MAC header + MSDU)
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).
MSDU聚合:将多个MSDUs聚合在一起形成AMSDU,AMSDU+MAC headr之后形成MPDU发送到PHY层。
* 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.
AMSDU目的:1、对于大多数client来说原始帧格式是以太网帧,2、以太网帧头比802.11帧头小很多,可以将多个以太网帧结合在一起使用一个802.11帧头封装成一个MPDU。
MPDU: MAC protocol data units are the frames passed from the MAC layers into the PHY layer.
MAC协议数据单元:从MAC层传给PHY层,MPDU=(MAC header + MSDU/AMSDU)
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.
多个MPDU聚合成一个AMPDU,AMPDU=(MPDU1+...+MPDUn)
,PPDU=(PLCP header preamble + MPDU/AMPDU)
** The 802.11n system was designed so that either AMPDU, AMSDU or both aggregation algorithms could be used.
AMSDU和AMPDU可以同时使用
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.
- Difference between MPDU, MSDU, AMPDU, and AMSDU in 802.11n
- Difference between MPDU, MSDU, AMPDU, and AMSDU in 802.11n
- MSDU MPDU AMSDU AMPDU PPDU
- Difference between MSDU, MPDU, A-MSDU, A-MPDU in 802.11n
- MPDU and MSDU
- MPDU and MSDU介绍
- A-MSDU 和 AMPDU
- Difference between STA and MTA in thread
- Difference between Externalizable and Serializable in Java
- Difference between Vector and ArrayList in java?
- Difference between Comparator and Comparable in Java
- Difference between TreeMap and TreeSet in Java
- Difference between RegularEnumSet and JumboEnumSet in Java
- Difference between __str__ and __repr__ in Python
- Difference Between Thread and AsyncTask in Android
- Difference between Comparator and Comparable in java
- Difference between Stack and Heap in Java
- Difference between dialog and session in SIP?
- unix系统下安装64位oracle 10g客户端 以及升级到10.2.0.5(翻译mos文章ID 782923.1)
- c++第二次上机-1
- 生成丶清除指定目录下的HTML文件
- IPC机制
- 第一次上机实验-1
- Difference between MPDU, MSDU, AMPDU, and AMSDU in 802.11n
- CEF编译步骤
- 改变损失函数对模型和训练结果的影响
- 60天备战省赛1——生成函数
- java定时器
- 一步一步实现一个简单的OS(初始化GDT)
- java集合小结(2)
- 什么是项目?项目有哪些特点?
- ios开发者申请流程