初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)

帧聚合(Frame Aggregation)机制是一种增益传输效率的机制,从802.11n开始就引入了,11ax做了进一步的增强(Frame Aggregation Enhancements)。

一、帧聚合的方式

先来了解两个概念:MSDU和MPDU。M表示MAC层。

  1. MSDU(MAC Service Data Unit),即MAC服务数据单元,MSDU仅仅是数据帧的Payload部分,没有Header,可以把MSDU理解成Ethernet报文;
  2. MPDU(MAC Protocol Data Unit ),即MAC协议数据单元,是Payload+MAC层的数据包头部,也可以大致理解为MDPU = MAC层头部 + MSDU。

802.11n定义了两种帧聚合方法:

  1. A-MSDU:将多个MSDU组合成一个数据帧,共享一个MAC头部
    初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第1张图片
  2. A-MPDU:将多个MPDU组合
    初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第2张图片

(上述两张图片摘自:
https://blog.csdn.net/Lu_string/article/details/89027281)

两种帧聚合的差异:

  1. A-MPDU聚合的是经过802.11封装过的数据帧,A-MPDU是需要结合Block Acknowledgement机制的。
  2. A-MSDU聚合的MSDU可以理解为聚合了一堆Ethernet报文(当然这里准确来说是MSDU),这些Ethernet报文在踢到空中前是需要一一转换成802.11格式的帧的

也就是说A-MPDU聚合的帧已经是802.11格式的了,而A-MSDU聚合的是需要进一步转换成802.11格式的帧。

二、帧聚合的增益原理简介

帧聚合是将多个无线帧组合成单个更长的无线帧传输,然后一次进行传输。

  1. 减少竞争开销。如果单独一个帧一个帧的发,每次发之前都要进行信道竞争,然后还有等待传输时间等这些都是损耗;
  2. 在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(2016): 第10.24节《10.24 Block
acknowledgment (block ack)》
初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第3张图片
初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第4张图片
ADDBA req/resp、DELBA都是管理帧,action code如上图

一个数据帧一个ACK,我们称之为normal ACK;多个数据帧一个ACK,我们称之为Block Ack。
初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第5张图片初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第6张图片
如上图所示分为三步:

  1. Setup:传输初始化。
    由ADDBA Request和ADDBA Response帧的握手,发起一个会话。ADDBA Request和Response在协议中都是管理帧(Action帧),因此需要通过ACK确认的,而且每一个管理帧发送前都需要经过Backoff竞争信道。
  2. Data & Block Ack:数据传输。【上图中的multiple times表示多轮,即数据传输的这个过程在Setup后可以是多轮的】
  3. Teardown:传输结束,关闭。

接下来分析下这三步中的关键帧。

参见Spec 第9.6.5小结《9.6.5 Block Ack Action frame details》

2.1 Setup

初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第7张图片初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第8张图片
// wireshark解析出来翻译成 Add Block Ack Request/Response
初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第9张图片初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第10张图片
初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第11张图片

  • Dialog token:The Dialog Token field is set to a nonzero value chosen by the STA.表示该会话的ID;
  • Block Ack Parameter Set
    初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第12张图片

(1) A-MSDU Supported:表示是否支持帧聚合。
(2) Block Ack Policy:表示ACK反馈是立即反馈,还是延迟反馈
(3) TID:标识会话对应流量的TID。
(4) Buffer Size:帧缓存区的大小,用来做帧重组用的。

  • Block Ack Timeout:会话的超时设置,如果该位有设置时间,表示如果多少时间没有数据交换,则该会话失效。该参数Request和Response里面都有,以Response的为准。
    初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第13张图片
  • 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是应用在帧聚合模式下的。

初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第14张图片初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第15张图片初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第16张图片

// wireshark的显示
初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第17张图片
初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第18张图片

BAR和BA帧都是作为控制帧存在的,所以其可以直接构成一个握手。也就是BAR之后,接收方会在SIFS时间后反馈BA

2.3 Teardown

数据发送方发现没有数据要发了并且最后的blockack交互完成了,发送方会发送DELBA关闭BA对话。接收方收到后反馈ACK并把该BA对话的资源释放掉。(DELBA的帧比较难抓到)。

另外,BA对话期间任意BA, BAR, or QoS Data frame没有接收到而超时到block ack timeout,也会关闭BA对话。

附录

附一个不完整的STA-AP连接sniff日志。后面还有DHCP的过程没有抓到。
初探802.11协议(2)——帧聚合(Frame Aggregation)/BA(Block Ack)_第19张图片
// DHCP过程的sniff
在这里插入图片描述

你可能感兴趣的:(Wi-Fi,802.11,Wi-Fi,帧聚合)