802.11 MAC帧解码

这个例子展示了如何解码IEEE®802.11™MAC帧。

背景

一般MAC帧格式由报头、帧体和帧检查序列(FCS)组成。报头保存着帧的信息。帧体携带需要传输的数据。发射机通过报头和帧体计算FCS。接收器使用FCS来确认报头和帧体被正确接收。下图显示了通用MAC帧的结构。

该标准规定了四种帧类型:管理、数据、控制和扩展。每种帧类型都有多个子类型。这些子类型由类型子类型MAC报头中的帧控制字段。

管理框架:

  • 用于连接建立和维护的框架。

  • 这些帧携带指示在802.11网络中操作的设备的能力和配置的信息字段和元素。在建立连接时,这些信息字段和元素在设备之间进行通信,以匹配两个设备的功能。

  • MAC层将报头和FCS添加到承载信息的帧体中,形成一个MAC协议数据单元(MPDU)。

数据帧:

  • 用于传输上层数据的帧。

  • 给MAC层的有效载荷称为MAC服务数据单元(MSDU)。MAC层将头部和FCS添加到MSDU中,形成一个MPDU。

  • 为了提高吞吐量,WLAN支持聚合的MSDUs (A-MSDUs)万博1manbetx和聚合的MPDUs (A-MPDUs),具体参见[9.3.2.2,9.7]。1]和[2].

  • 如果使能MSDU聚合功能,将多个MSDU聚合成一个A-MSDU,然后将MAC头和FCS添加到一个A-MSDU中,形成一个MPDU。

  • 如果使能MPDU聚合功能,则多个MPDU聚合成一个A-MPDU。

控制帧:

  • 用于支持数据传递、管理和扩展的帧。万博1manbetx

  • 每个控制帧都有特定的功能。例如,像请求发送(RTS)和清除发送(CTS)这样的控制帧有助于保留通道以避免冲突,而Ack帧有助于识别成功的传输。

扩展帧:

  • 这个帧类型是对上面定义的三种帧类型的扩展。

  • DMG信标是目前在[1].

介绍

这个例子展示了在[1]或[2]可以解码。它还显示了如何在第9.7节中指定聚合MAC帧[1]或[2可以分解。

WLAN工具箱™支持MPDU万博1manbetx解码以下MAC帧:

  • 管理框架:灯塔

  • 数据帧:Data, Null, QoS Data, QoS Null

  • 控制帧:RTS, CTS, Ack, Block Ack

除了MPDU解码外,WLAN工具箱还支持A-MPDU的解聚合。万博1manbetx

MPDU解码

MPDU可以是数据、控制或管理帧类型。wlanMPDUDecode可以用来解码MPDU。该功能处理给定的MPDU和物理层配置对象,输出解码后的MAC参数。

为了说明MPDU解码,可以使用以下命令创建一个有效的MPDUwlanMACFrame.将创建的MPDU传递给wlanMPDUDecode函数和输出被观察。

创建一个MPDU

QoS数据帧是为这个示例创建的wlanMACFrame.QoS包含40字节有效负载的数据帧需要以下输入:

  1. txFrameCfg: MAC帧配置对象wlanMACFrameConfig

  2. txMSDU:包含在QoS数据帧中的40字节的有效负载(MSDU)。

%创建MAC帧配置对象txFrameCfg = wlanMACFrameConfig (“FrameType”“QoS数据”...“FrameFormat”“Non-HT”);每个“QoS数据”帧的% 40-octet有效载荷txMSDU=randi([0,255],40,1);%物理层配置phyCfg=wlanNonHTConfig;%创建MPDUmpdu = wlanMACFrame(txMSDU, txFrameCfg);

解码MPDU

wlanMPDUDecode消耗一个MPDU,一个PHY配置对象的类型wlanNonHTConfigwlanHTConfigwlanVHTConfig,或瓦兰赫舒克和可选的(名称、值)对DataFormat指定MPDU的输入格式。自MPDU生成使用wlanMACFrame是用八进制表示的,DataFormat设置为八位字节wlanMPDUDecode对MPDU进行解码,输出如下信息:

  1. rxFrameCfg: MAC帧配置对象wlanMACFrameConfig,包含解码后的MAC参数。

  2. rxMSDU:单元数组,其中每个元素是一个n乘2的字符数组,表示解码后的MSDU。当MPDU包含一个聚合MSDU (A-MSDU)作为负载时,返回多个MSDU。

  3. 状态:类型的枚举状态,表示MPDU解码是否成功。

% MPDU解码。[rxFrameCfg, rxMSDU, status] = wlanMPDUDecode(mpdu, phyCfg, pdp, pdp)...“DataFormat”“八位位组”);%检查MPDU是否解码成功disp ([MPDU解码状态:char(状态)])% MPDU解码成功,观察输出如果比较字符串(状态,“成功”) disp (['已解码MPDU的类型:'rxFrameCfg.FrameType]) disp ([“MPDU中的MSDUs数量:”num2str(numel(rxMSDU))])i = 1:numel(rxMSDU) disp([“MSDU大小- - -”num2str(我)“:”num2str(大小(rxMSDU{i},1))“八位位组”])结束结束
MPDU解码状态:解码MPDU的成功类型:MPDU中MSDU的QoS数据数量:1 MSDU-1的大小:40个八位字节

A-MPDU Deaggregation

A-MPDU是多个mpdu的聚合。A-MPDU中的mpdu类型受[1].

wlanAMPDUDeaggregate可以用来分解A-MPDU。该功能对给定的A-MPDU和相应的物理层配置对象进行处理,输出mpdu的分解列表。wlanAMPDUDeaggregate能够解码HT (High Throughput)、VHT (Very High Throughput)、HE-SU (High Efficiency Single User)和HE-EXT-SU (High Efficiency Extended Range Single User)格式的A-MPDUs,如[1]和[2].

为了说明a - mpdu的解聚,使用以下方法创建一个包含5个mpdu的有效a - mpduwlanMACFrame.将创建的A-MPDU传递给wlanAMPDUDeaggregate函数和输出被观察。

创建一个A-MPDU

以下输入需要形成HE-SU格式a -MPDU,包含5个MPDU (QoS数据帧),每个MPDU包含40字节的有效载荷:

  1. txFrameCfg: MAC帧配置对象wlanMACFrameConfig

  2. txMSDUList:包含有效载荷(MSDU)的五单元单元阵列,用于五个mpdu。自MSDUAggregationtxFrameCfg,则为每个MSDU创建一个单独的MPDU。

  3. phyCfg:类型为的物理层配置对象瓦兰赫舒克

%创建MAC帧配置对象txFrameCfg = wlanMACFrameConfig (“FrameType”“QoS数据”...“FrameFormat”“和苏”...“MPDUAggregation”符合事实的...“MSDUAggregation”、假);每个“QoS数据”帧的% 40-octet有效载荷txMSDUList=repmat({randi([0255],40,1)},1,5);%物理层配置phyCfg = wlanHESUConfig (“主持人”3);%创建包含5个MPDU的A-MPDUampdu=wlanMACFrame(txMSDUList、txFrameCfg、phyCfg);

Deaggregate A-MPDU的

wlanAMPDUDeaggregate使用A-MPDU,类型为的PHY配置对象wlanHTConfigwlanVHTConfig,或瓦兰赫舒克和可选的(名称、值)对DataFormat指定A-MPDU的输入格式。它查找并验证MPDU分隔符,提取MPDU并输出可用于进一步处理MPDU的以下信息:

  1. mpduList:包含从A- mpdu中提取的mpdu列表的单元阵列。

  2. delimCRCFails:表示中对应索引的分隔符CRC有效性的逻辑行向量mpduList.值为true表示MPDU在mpduList在相应的索引处可能无法正确提取。

  3. ampduStatus:类型的枚举状态,表示A-MPDU解聚合是否成功。

%分解A-MPDU[mpduList, delimCRCFails, ampduStatus] = wlanAMPDUDeaggregate(ampdu, phyCfg,...“DataFormat”“八位位组”);观察输出disp ([A-MPDU解聚集状态:char (ampduStatus)]) disp ([从A-MPDU中提取的mpdu数量:num2str(元素个数(mpduList))) disp (['带分隔符CRC的MPDU数失败:'num2str (nnz (delimCRCFails))))
Status of A-MPDU deaggregation: Success从A-MPDU中提取的mpdu个数:5带分隔符CRC失败的mpdu个数:0

解码MPDUs列表

mpduList包含从A-MPDU中提取的mpdu列表。列表中的每一个mpdu都可以被单独解码。然而,如果delimCRCFails包含任何符合事实的值时,MPDU出现在mpduList可以认为是无效的,因为可能由于分隔符CRC失败而无法正确提取。

%解码mpdu列表如果比较字符串(ampduStatus“成功”%列表中的MPDU数numMPDUs =元素个数(mpduList);我= 1:numMPDUs%仅当相应的分隔符CRC有效时才解码MPDU如果~delimCRCFails(i) [rxFrameCfg, rxMSDU, mpduStatus] = wlanMPDUDecode(mpduList{i}, phyCfg,...“DataFormat”“八位位组”);disp ([“MPDU -”num2str(我)'解码状态:'字符(mpdustStatus)])显示([“MPDU -”num2str(我)的类型:rxFrameCfg.FrameType]) disp ([“MPDU -”num2str(我)“有效载荷大小:”num2str(大小(rxMSDU {1}, 1))“八位位组”]) disp (' '结束结束结束
MPDU-1解码状态:成功MPDU-1类型:QoS数据MPDU-1有效负载大小:40个八位字节MPDU-2解码状态:成功MPDU-2类型:QoS数据MPDU-2有效负载大小:40个八位字节MPDU-3解码状态:成功MPDU-3类型:QoS数据MPDU-3有效负载大小:40个八位字节MPDU-4解码状态:成功MPDU-4类型:QoS数据MPDU-4有效负载大小:40个八位字节MPDU-5解码状态:成功MPDU-5类型:QoS数据MPDU-5有效负载大小:40个八位字节

结论与进一步探索

此示例演示了如何解聚合和解码IEEE 802.11 MAC帧。你也可以探索802.11带捕获数据的OFDM信标接收机802.11ac数据包的恢复过程示例解码从捕获的波形检索到的MAC帧。

选定的参考书目

  1. IEEE Std 802.11™-2016信息技术IEEE标准。系统间电信和信息交换。局域网和城域网。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范

  2. IEEE P802.11ax™/D4.1信息技术标准草案。系统之间的电信和信息交换。局域网和城域网。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范