初探802.11协议——帧聚合(Frame Aggregation)/BA(Block Ack)
Posted Chris_166
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初探802.11协议——帧聚合(Frame Aggregation)/BA(Block Ack)相关的知识,希望对你有一定的参考价值。
帧聚合(Frame Aggregation)机制是一种增益传输效率的机制,从802.11n开始就引入了,11ax做了进一步的增强(Frame Aggregation Enhancements)。
一、帧聚合的方式
先来了解两个概念:MSDU和MPDU。M表示MAC层。
- MSDU(MAC Service Data Unit),即MAC服务数据单元,MSDU仅仅是数据帧的Payload部分,没有Header,可以把MSDU理解成Ethernet报文;
- MPDU(MAC Protocol Data Unit ),即MAC协议数据单元,是Payload+MAC层的数据包头部,也可以大致理解为MDPU = MAC层头部 + MSDU。
802.11n定义了两种帧聚合方法:
- A-MSDU:将多个MSDU组合成一个数据帧,共享一个MAC头部
- A-MPDU:将多个MPDU组合
(上述两张图片摘自:
https://blog.csdn.net/Lu_string/article/details/89027281)
两种帧聚合的差异:
- A-MPDU聚合的是经过802.11封装过的数据帧,A-MPDU是需要结合Block Acknowledgement机制的。
- A-MSDU聚合的MSDU可以理解为聚合了一堆Ethernet报文(当然这里准确来说是MSDU),这些Ethernet报文在踢到空中前是需要一一转换成802.11格式的帧的。
也就是说A-MPDU聚合的帧已经是802.11格式的了,而A-MSDU聚合的是需要进一步转换成802.11格式的帧。
二、帧聚合的增益原理简介
帧聚合是将多个无线帧组合成单个更长的无线帧传输,然后一次进行传输。
- 减少竞争开销。如果单独一个帧一个帧的发,每次发之前都要进行信道竞争,然后还有等待传输时间等这些都是损耗;
- 在MAC层的竞争开销不变的情况下,帧聚合可以增加传输的内容。
当然帧聚合也有如下一些局限性:
- 所有的聚合帧都必须有同一个目的地址;
- 所有的聚合帧都必须有相同的QoS等级;
- 可能存在延迟,因为需要等所有相关的帧都“到齐”聚合了才能发;
当然可传输的最大帧长度受信道相干时间影响,信道相干时间由传输环境的发送端、接收端或者其他物体移动速度决定,物体移动越快,可传输的帧长度越小,毕竟传输时间是要小于信道相干时间的。
三、BA
1. TXOP
TXOP:Transmission Opportunity,竞争传输机会。
transmission opportunity (TXOP): An interval of time during which a particular quality-of-service (QoS) station (STA) has the right to initiate frame exchange sequences onto the wireless medium (WM).
NOTE—A TXOP is defined by a starting time and a maximum duration.
在802.11e之前的协议中,都是“竞争一次,传输一个数据帧”;
在802.11e中引入的TXOP,“竞争一次,获得一段传输时间”,即节点竞争成功后,其获得了一段信道使用时间,在这段时间内,其可以传输多个数据帧。
在TXOP模式中经常以RTS/CTS开启一段TXOP时间,然后再开始发送数据帧。“Burst Transmission(突发式传输)-Block ACK”,就是一种比较常见的TXOP传输方式。在TXOP传输过程中,不一定要在本TXOP时间内获取ACK的反馈,也可以在在第二个传输时间结束后,在通过BAR申请ACK的反馈。
关于TXOP冲突:对于上面所的Burst Transmission,如果有冲突的话,将会冲突整个TXOP时间,所以起始时会用RTS/CTS保护。当然如果不用RTS/CTS,也可以在第一个数据帧时候做DATA_ACK的交换。
2. ADDBA
ADDBA :add block acknowledgment 参见spec: 第10.24节《10.24 Block
acknowledgment (block ack)》
一个数据帧一个ACK,我们称之为normal ACK;多个数据帧一个ACK,我们称之为Block Ack。
如上图所示分为三步:
- Setup:传输初始化。
由ADDBA Request和ADDBA Response帧的握手,发起一个会话。ADDBA Request和Response在协议中都是管理帧(Action帧),因此需要通过ACK确认的,而且每一个管理帧发送前都需要经过Backoff竞争信道。 - Data & Block Ack:数据传输。【上图中的multiple times表示多轮,即数据传输的这个过程在Setup后可以是多轮的】
- Teardown:传输结束,关闭。
接下来分析下这三步中的关键帧。
参见Spec 第9.6.5小结《9.6.5 Block Ack Action frame details》
2.1 Setup
-
Dialog token:The Dialog Token field is set to a nonzero value chosen by the STA.表示该会话的ID;
-
Block Ack Parameter Set:
(1) A-MSDU Supported:表示是否支持帧聚合。
(2) Block Ack Policy:表示ACK反馈是立即反馈,还是延迟反馈。
(3) TID:标识会话对应流量的TID。
(4) Buffer Size:帧缓存区的大小,用来做帧重组用的。 -
Block Ack Timeout:会话的超时设置,如果该位有设置时间,表示如果多少时间没有数据交换,则该会话失效。该参数Request和Response里面都有,以Response的为准。
-
Staring Sequence Number:表示会话起始数据帧的序列号或者是重新协商的下一个序列号。
注意:ADDBA的request和response这两个Action帧中间是没有别的帧抢占信道的。可能是按照最高优先级或者在ADDBA Request中设置的Duration参数进行保证的不让其他帧抢占吧。
另外,ADDBA如果要重传就直接重传,中间不会有二进制指数退避的。
2.2 Data & Block Ack
在最后一个QoS Data传输后,会话发起的节点会发送BAR(Block ACK Request),此时节点会立刻反馈Block ACK(BA)。
当然在11n后还有一种Implicit BAR(隐式的BAR),即在发送方发送完最后一个QoS Data后,节点直接可以反馈BA,而不需要BAR的请求。不过这种隐式BAR是应用在帧聚合模式下的。
BAR和BA帧都是作为控制帧存在的,所以其可以直接构成一个握手。也就是BAR之后,接收方会在SIFS时间后反馈BA
-
BAR Frame
-
BA Frame
2.3 Teardown
待续
以上是关于初探802.11协议——帧聚合(Frame Aggregation)/BA(Block Ack)的主要内容,如果未能解决你的问题,请参考以下文章