BA的流程是什么:
1. 建立BA Session
2. 数据收发
3. BA请求和回复
4. 结束BA Session
1.其中BA Session的建立需要用到ADDBA request 管理帧。该帧的结构如下:
分为Category code: 3(Block Ack)
Action code: 0(ADDBA request)
Dialog token
Block Ack Parameters:
Block Ack Policy: 指定3中的policy
1 - immediate ack
0- delayed ack
Block Ack Timeout: 用来设定隐式的结束BA session(非teardown方式)
Block Ack Starting Sequence Control(SSC):
用来指定接下来进行BA 交互的开始的SN
Buffer Size指定可以接收的MSDU数量或者AMSDU数量(如果A-MSDU支持的话)。
2. 进行MPDU的传输。无ACK
3. 按何时回复BA以及是否需要BAR,分为三种。
如果block ack policy为0:
BAR -> ACK -> BA --> ACK
如果block ack policy为1:
BAR -> BA
如果block ack policy为1,且ack policy(在最后一个MPDU的Qos control field中指定)是implicit ACK:
BA。
按BA的格式,可以分为四种,这是在BAR中指定的:
其中Compreseed BlockAck指的是按MPDU回复(802.11n),BITMAP有8 octets, BASIC的方式是按MSDU回复,总计16 octets(128bits).
4.结束。 teardown或者timeout
Ref: https://wirelessonthego.postach.io/post/802-11n-block-acknowledgement