amsdu和ampdu

Zss 发表于:

两种包聚合技术

 

一.为什么不使用包聚合系统吞吐量会受到很大的限制?

1.IEEE 802.1l系列标准使用了复杂的MAC协议和相当复杂的MAC帧

MAC字段如下:

Frame Control(帧控制字段)

Duration/ID(持续时间字段)

Addressl—Ad.aress4(地址字段)

可选的Secluence Control(序列控制字段)

QoS Control(Qos控制字段)

HTcontrol(高吞吐量控制字段)

  • 使用MAC协议是为了确保各个站都能公平地取得媒质使用机会,在信道的竞争中所产生的冲突所以引入了退避机制,但这样会带来固定开销,从而导致系统吞吐量受到限制

固定开销如下:

MAC头

各种类型IFS、RTS/CTS、ACK、Backoff等等

  • MSDU 、AMSDU-Subframe、AMSDU    MPDU、AMPDU-Subframe、AMPDU   PSDU、PPDU

1.MSDU (MAC Service Data Unit:MAC服务数据单元) 由IP层下发到MAC层

  • AMSDU-Subframe:需要被聚合的AMSDU子帧,当AP或无线客户端从协议栈收到报文(MSDU)时,会打上Ethernet报文头,称之为AMSDU-Subframe

AMSDU-Subframe结构:

  • AMSPDU:由多个AMSDU-Subframe聚合而成

AMSPDU帧结构:

  • MPDU:(MAC Protocol Data Unit:MAC协议数据单元):由MAC header和一个MSDU或者一个AMSDU构成,MPDU=(MAC header + MSDU/AMSDU+ FCS)由MAC层下发到PHY层

MPDU帧结构:

  • AMPDU-Subframe:需要被聚合的AMPDU子帧,由MPDU Delinmiter (MPDU分界符)+ MPDU + PAD构成,MPDU Delimiter是为了A-MPDU而专门定义

AMPDU-Subframe帧结构:

  • AMPDU:由多个AMPDU-Subframe构成

AMPDU帧结构:

  • PSDU:PLCP Service Data Unit,PLCP子层业务数据单元。实际就是从MAC层传来的MPDU或者AMPDU信息
  • PPDU:PLCP header preamble和一个MPDU或者一个AMPDU构成

PPDU=(PLCP header preamble + MPDU/AMPDU)

PPDU:PLCP Protocol Data Unit,PLCP子层协议数据单元。将PSDU按照特定的帧格式进行数据封装后的数据包,这也是最终将经由物理介质发送出去的数据封装。

 

MPDU的大小有上限值,且整个聚合帧只有一个FCS,所以A—MSDU只适合用于较小的MSDU的聚合。由于聚合帧较长,只有一个FCS,所以A—MSDU的传输可靠性较差。聚合A—MSDU的缺点在高误码率的信道中表现明显。所有的MSDU被聚合为一个MPDU,只被分配一个MAC的序列号,若有一个MSDU在传输过程中出现错误,整个A—MSDU将会被重传

 

  • 为什么使用AMSDU和AMPDU能够提升系统吞吐量?

802.11的任何一个报文在物理发送时会被作为一个MDPU发送,每一次发送都必然需要信道竞争和避让,从而消耗信道资源。

 

而报文聚合A-MPDU通过将多个MPDU聚合为一个物理层报文,只需要进行一次信道竞争或避让,就可完成多个MPDU的同时发送,从而减少单独发送每个MPDU报文所带来的信道资源消耗。

 

帧聚合机制的本质为多个单个帧共用一个MAC头部,简化了帧的结构,去除了以往协议帧之间的帧间间隔和竞争时间,从而提高了MAC层的吞吐量

 

  • 测试点
  • 单独开启AMSDU,吞吐量不受影响
  • 单独开启AMPDU,吞吐量受到影响
  • AMPDU Limit参数大小使吞吐量受到影响

 

  • 测试环境

  • 测试步骤
  • AP开启5G vap,设置SSID,无线模式为na HT40+,关闭HT20/HT40 Auto Switch,信道为157,使用无线网卡关联
  • AP的高级配置开启AMPDU和AMSDU,AMPDU limit为64,在PC->STA之间跑Chariot
  • AP的高级配置开启AMPDU和AMSDU,AMPDU limit为32,在PC->STA之间跑Chariot;
  • AP的高级配置开启AMPDU和AMSDU,AMPDU limit为1,在PC->STA之间跑Chariot;
  • AP的高级配置关闭AMPDU和AMSDU,AMPDU limit为64,在PC->STA之间跑Chariot;
  • AP的高级配置开启AMPDU、关闭AMSDU,AMPDU limit为64,在PC->STA之间跑Chariot;
  • AP的高级配置关闭AMPDU、开启AMSDU,AMPDU limit为64,在PC->STA之间跑Chariot;
  • 使用4Gradio重复以上步骤

9.单独开启A-MSDU功能,使用客户端关联该vap,使用omnipeek抓取该客户端关联的过程中由ap发送给sta的action报文

10.单独关闭A-MSDU功能,使用客户端关联该vap,使用omnipeek抓取该客户端关联的过程中由ap发送给sta的action报文

 

七.预期结果(信号干扰对于吞吐量影响很大,结果看对比的差值)

 

  • 步骤2,3,4结果约为(196mbps,160mbps,113mbps),步骤2,3,4结果对比呈50mbps左右速率递减,设置不同数值吞吐量差别明显
  • 步骤6,5结果约为(170mbps,55mbps),步骤6,5对比,两者之间吞吐量差别很大
  • 步骤7,5结果约为(52mbps,55mbps),步骤7,5对比,两者之间吞吐量差别很小
  • 步骤8与5G结果一致
  • 步骤9 action报文中BlockAck Param Set信息中的AMSDU字段显示为1,A-MSDU: Permitted
  • 步骤10 action报文中BlockAck Param Set信息中的AMSDU字段显示为0,A-MSDU: not Permitted

备注:开启ampdu跑流的时候,使用omnipeek抓包能够看到数据包前带有一个特殊的ack为绿色的BA报文(block ack),若关闭ampdu跑流时候只会看到普通的黄色ack报文

附件:IEEE 802.11n MAC层帧聚合机制的研究