802.11 AMPDU

目录

背景

AMPDU

块确认

帧格式

EOF

MPUD Length

CRC

Delimiter Signature

AMPDU健壮性

前导码中的AMPDU参数

HT-SIG

HT Capabilities中的AMPDU参数

Maximum A-MPDU Length Exponent

Minimum MPDU Start Spacing

参数协商

VHT AMPDU长度

BA

Starting Sequence Number

Block Ack Bitmap


背景

AMPDU是从802.11n开始引入的一项高级特性,目的是提升无线网络的吞吐量。在传统的802.11网络中,每个MAC协议数据单元(MPDU)都独立地进行传输和确认,每次传输都需要进行无线信道的抢占,每个MPDU都需要携带MAC头和FCS(帧校验序列),因此增加了网络开销和延迟。而AMPDU则将一系列连续的MPDU合并成一个大的数据块进行传输,多个MPDU共享一个公共的MAC头和FCS,这可以大大减少帧头的开销,同时也只需要抢占一次信道,大大提升了传输效率且提升了吞吐量。

AMPDU

块确认

802.11e引入了块确认(Block Ack),目的是降低开销提升无线网络的效率,但是这个协议在后面逐渐就被取代了。

下面是802.11-2012的Capability Information字段,可以看出B14和B15是跟块确认协议相关

到了802.11-2020这个版本,Capability Information字段就发生了变化,原来的B14和B15两个块确认相关的字段就被抛弃了,如下图所示

802.11n引入AMPDU之后,块确认就逐渐演变成了AMPDU和BA的形式。

帧格式

MPDU的分隔符长度为4字节(32bits)如下:

EOF

当EOF位设为1时,接收设备会知道这是A-MPDU中的最后一个MPDU,从而可以开始处理整个A-MPDU。当EOF位设为0时,接收设备会知道后面还有其他的MPDU,因此需要继续接收数据。

MPUD Length

MPDU的长度,单位是字节,0代表不包含数据。

CRC

前面16bits数据的CRC校验,用于校验分隔符是否正确。

Delimiter Signature

签名数据为ASCII ‘N’,主要目的是增强AMPDU的健壮性。

AMPDU健壮性

AMPDU的最大长度是65535字节,通常由于芯片内存的限制都达不到这么长。每个AMPDU子帧都由MPDU分隔符、MPDU和0~3字节的填充组成。AMPDU的长度是4字节对齐,最后的填充填充也是为了确保能够做到4字节对齐。MPDU分隔符也是4字节长度。

AMPDU这种帧结构设计使得AMPDU更加健壮。当接收端收到一个AMPDU之后,通过分隔符中的长度字段可以解析出随后的MPDU数据帧。当传输出现突发干扰这种异常导致中间某一段数据损坏了(比如分隔符CRC校验失败),接收端可以持续向前扫描去寻找下一个能够正常解析的分隔符。一般来说,分隔符长度固定是4字节且有一个固定的签名字段,那么接收端通常都能够找到一个真实的分隔符,从而就可以解析出该分隔符对应的MPDU以及后面的MPDU。因此当AMPDU的中间数据出现损坏依然不影响后面数据的正常解析。

前导码中的AMPDU参数

HT PHY前导码如下图所示

HT-mixed format是一种特定的帧格式,用于向后兼容旧的802.11a/b/g设备。

在HT-mixed格式中,帧被分为两个部分:一部分是Legacy format,另一部分是HT format。Legacy format部分包含了802.11a/b/g设备需要的所有信息,而HT format部分则包含了802.11n设备所需的额外信息。这种设计使得802.11n设备和旧的802.11a/b/g设备可以同时在同一网络中工作。

HT-mixed格式的主要优点是兼容性好,可以支持各种不同的设备。然而,这种格式的缺点是效率较低,因为每个帧都需要包含额外的信息以支持旧的设备。因此,如果网络中只有802.11n设备,通常会使用更高效的HT-greenfield格式。

HT-SIG

HT-SIG包含了关于传输的一些重要信息,例如数据速率,长度,调制类型等,HT-SIG字段的主要作用是告诉接收设备如何解析接下来的数据帧。在一个802.11n的帧中,HT-SIG位于L-SIG(Legacy Signal Field)之后,包括两个部分,HT-SIG1和HT-SIG2,每个部分都由8个比特组成。

HT-SIG1包括以下信息:

  • MCS(Modulation and Coding Scheme):用于定义数据速率和调制类型。
  • CBW(Channel Bandwidth):用于指示信道带宽是20MHz还是40MHz。
  • HT LENGTH:用于指示MAC帧有效载荷的长度。

HT-SIG2中包含了一个关键位Aggregation,该bit为1代表PPDU包含了一个AMPDU,那么接收端就要按照聚合帧的格式来进行解析。

HT Capabilities中的AMPDU参数

Maximum A-MPDU Length Exponent

表示当前设备能接收的最大AMPDU长度,单位是字节,计算公式如下:

2^{13+Maximum A-MPDU Length Exponent}-1

在实际应用中,发送方和接收方需要协商这个参数的值,以确保它们能够正确处理和传输A-MPDU。通常,设备会选择一个较大的值,以便尽可能地提高网络的吞吐量。但是如果A-MPDU的长度过长,可能会导致网络的延迟增加,因此在选择这个参数的值时需要做出权衡。

该字段代表的最大AMPDU长度是65535字节。

Minimum MPDU Start Spacing

最小MPDU启动间隔。它指定了发送两个连续A-MPDU单元之间的最小间隔时间。

这个参数的目的是为了防止发送方过快地发送数据,从而导致接收方无法及时处理。通过设置一个最小的间隔时间,可以确保接收方有足够的时间来处理每个A-MPDU。MMSS的具体值取决于设备的硬件性能和网络环境。

取值如下:

0无限制
11/4us
21/2us
31us
42us
54us
68us
716us

参数协商

AMPDU的相关参数是设备连接的时候就协商好的,以便能够正确处理传输的数据以及达到最大吞吐量。如下所示:

从上面两图可以看出两个设备的AMPDU参数都一样。

VHT AMPDU长度

VHT在AMPDU有一个不一样的地方,也就是所有的数据帧都使用聚合,那怕是只发一个数据帧也使用AMPDU。最大AMPDU长度字段由HT的两位增加到了三位,可聚合的AMPDU长度大大增加了。

BA

AMPDU在设计上就比较健壮,中间某一个MPDU出现传输异常的时候通常不会影响后面正常传输的MPDU的接收,再配合BA就可以做到对聚合的每个MPDU进行确认应答,这样大大提升了系统效率。BA帧如下图所示:

Starting Sequence Number

用于指示位图中的第一个MPDU的序列号,比如上图中Starting Sequence Number是1944,那么位图中的第一个位对应序列号为1944的数据帧,第二个位对应序列号为1945的数据帧,以此类推。这样,发送方就可以通过检查块确认帧,来确定哪些数据帧需要重新发送。

Block Ack Bitmap

用于指示哪些数据帧已经被接收。这个位图中的每一位对应一个数据帧,如果某个数据帧已经被正确接收,那么相应的位就会被设置为1,否则为0。发送方可以通过检查这个位图,来确定哪些数据帧没有被接收,然后重新发送这些数据帧。这种机制可以大大提高无线网络的数据传输效率和可靠性。

如上图所示Blokc Ack Bitmap是全f,那么说明从序号为1944开始的64帧已经全部接收到了。

以上内容如果有误或者不详细的地方,欢迎到评论区留言讨论!

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值