主要内容

802.11 MAC帧解码

本示例演示如何解码IEEE®802.11™MAC帧。

背景

一般的MAC帧格式由报头、帧体和帧检查序列(FCS)组成。报头包含关于帧的信息。帧体承载着需要传输的数据。发射机计算报头和帧体上的FCS。接收端使用FCS确认报头和帧体被正确接收。下图展示了一个通用MAC帧的结构。

有关更多信息,请参见WLAN MAC帧结构的话题。

简介

本例显示WLAN MAC帧如何在[1]或[2可以被解码。它还显示了如何聚合MAC帧,在章节9.7中指定[1]或[2]可以被分解。

WLAN工具箱™支持以下MA金宝appC帧的MPDU解码:

  • 管理框架:灯塔

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

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

除了MPDU解码,WLAN工具箱还支持A-MPDU的解聚。金宝app

MPDU解码

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

为了说明MPDU解码,使用wlanMACFrame.创建的MPDU被传递给wlanMPDUDecode观察函数和输出。

创建MPDU

为本例创建QoS数据帧使用wlanMACFrame.要形成包含40字节有效负载的非ht格式QoS数据帧,需要以下输入:

  1. txFrameCfg:类型的MAC帧配置对象wlanMACFrameConfig

  2. txMSDU: QoS Data帧中包含的40字节的MSDU (payload)。

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

解码MPDU

wlanMPDUDecode消耗一个MPDU,一个类型的PHY配置对象wlanNonHTConfigwlanHTConfigwlanVHTConfig,或wlanHESUConfig和(名称,值)对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,...“DataFormat”“八位位组”);检查MPDU是否解码成功disp ([MPDU解码状态:char(状态)])如果MPDU解码成功,观察输出如果比较字符串(状态,“成功”) disp (['解码的MPDU类型:'rxFrameCfg.FrameType]) disp ([MPDU中msdu的数量:num2str(元素个数(rxMSDU))))i = 1: number (rxMSDU) disp([“MSDU的大小-”num2str(我)“:”num2str(大小(rxMSDU {}, 1))“八位位组”])结束结束
Status of the MPDU decoding: Success解码后的MPDU Type: QoS Data MPDU中msdu数量:1 MSDU-1 Size: 40 octet

A-MPDU Deaggregation

A-MPDU是多个mpdu的集合。A-MPDU中mpdu的类型受[章节9.7.3]的限制。1]。

wlanAMPDUDeaggregate可以用来解聚A-MPDU。该函数处理给定的A-MPDU和相应的物理层配置对象,以输出分解的mpdu列表。wlanAMPDUDeaggregate能够解码HT(高通量)、VHT(极高通量)、HE-SU(高效率单用户)及HE-EXT-SU(高效率扩展范围单用户)格式的a - mpdu (1]和[2]。

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

创建A-MPDU

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

  1. txFrameCfg:类型的MAC帧配置对象wlanMACFrameConfig

  2. txMSDUList:包含5个mpdu的有效载荷(MSDU)的5元单元阵列。自MSDUAggregation中设置为falsetxFrameCfg,为每个MSDU创建一个单独的MPDU。

  3. phyCfg: type的物理层配置对象wlanHESUConfig

创建MAC帧配置对象txFrameCfg = wlanMACFrameConfig(“FrameType”“QoS数据”...“FrameFormat”“HE-SU”...“MPDUAggregation”,真的,...“MSDUAggregation”、假);%每个“QoS数据”帧的40字节有效负载txMSDUList = repmat({randi([0,255], 40,1)}, 1,5);物理层配置phyCfg = wlanHESUConfig(“主持人”3);创建包含5个mpdu的A-MPDUampdu = wlanMACFrame(txmsulist, txFrameCfg, phyCfg);

对A-MPDU进行解聚

wlanAMPDUDeaggregate消耗一个a - mpdu,一个类型的PHY配置对象wlanHTConfigwlanVHTConfig,或wlanHESUConfig和(名称,值)对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 Number of MPDUs extract from the A-MPDU: 5 Number of MPDUs with delimiter CRC fails: 0

解码mpdu列表

mpduList包含从A-MPDU中提取的mpdu列表。列表中的每个mpdu都可以单独解码。然而,如果delimCRCFails包含任何真正的值,MPDU呈现在mpduList在相应索引处的语句可能被认为是无效的,因为分隔符CRC失败,可能无法正确提取它。

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

结论及进一步探索

本例演示了如何解聚和解码IEEE 802.11 MAC帧。你也可以探索使用软件定义无线电的OFDM信标接收机而且802.11ac报文的恢复过程解码从捕获波形检索的MAC帧的示例。

选定的参考书目

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

  2. IEEE标准802.11ax™-2021。IEEE信息技术标准。系统间的电信和信息交换。局域网和城域网。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范。修改件1:高效WLAN的增强。