初探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头部。
    在这里插入图片描述
    Subframe header (Ethernet Header)、一个MSDU和0-3字节的填充组成。

  2. A-MPDU:将多个MPDU组合
    在这里插入图片描述

(上述两张图片摘自:
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格式的帧。

在进入MAC处理过程之前,所有的报文都以MSDU形式存在,经过MAC层处理之后,MSDU转换成MPDU。A-MSDU在进入MAC层之前完成聚合,而A-MPDU在MAC层之后完成聚合。

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

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

  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)》
在这里插入图片描述
在这里插入图片描述
ADDBA req/resp、DELBA都是管理帧,action code如上图

一个数据帧一个ACK,我们称之为normal ACK;多个数据帧一个ACK,我们称之为Block Ack。
在这里插入图片描述在这里插入图片描述
如上图所示分为三步:

  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

在这里插入图片描述在这里插入图片描述
// wireshark解析出来翻译成 Add Block Ack Request/Response
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  • 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是应用在帧聚合模式下的。

在这里插入图片描述在这里插入图片描述在这里插入图片描述

// wireshark的显示
在这里插入图片描述
在这里插入图片描述

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的过程没有抓到。
在这里插入图片描述
// DHCP过程的sniff
在这里插入图片描述

REF

https://aojunhu.github.io/2019/02/23/mac-11n-frame-aggregation/

  • 10
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值