主要内容

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)和金宝app聚合MPDUs (A-MPDUs),详见[1]和[2]。

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

  • 如果启用了MPDU聚合,则会聚合多个MPDU以形成A-MPDU。

控制帧:

  • 用于支持数据、管理和扩展框架的交付的框架。金宝app

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

扩展框架:

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

  • dmg beacon是当前在此帧类型下指定的唯一帧[1]。

介绍

这个例子展示了如何在[1]或[2可以被解码。它还显示了聚合MAC帧是如何在[1]或[2]可以进行分析。

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

  • 管理框架:灯架

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

  • 控制帧:RTS,CTS,ACK,块ACK

除了MPDU解码之外,WLAN工具箱还支持DEAGGREGATION A-MPDU。金宝app

MPDU解码

MPDU可以是数据,控制或管理框类型。wlanmpdudecode.可用于解码MPDU。该函数处理给定的MPDU和物理层配置对象以输出解码的MAC参数。

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

创建一个MPDU

一个QoS数据帧被创建为这个例子使用wlanMACFrame。以下输入需要形成一个包含40字节有效负载的非ht格式QoS数据帧:

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

  2. txMSDU:包含在QoS数据帧中的40八位八分比有效载荷(MSDU)。

%创建MAC帧配置对象txFrameCfg = wlanMACFrameConfig ('frameType'“QoS数据”......'frameformat''非HT');% 40字节的有效负载为每个'QoS数据'帧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.:一个单元阵列,其中每个元素是表示解码的MSDU的n×2字符阵列。当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:numel(rxsdu)disp([“MSDU的大小”num2str(i)':'num2str(大小(rxMSDU {}, 1))'八位字节'])结束结束
Status of the MPDU decoding: Success MPDU解码类型:QoS Data Number of msdu in the MPDU: 1 Size of MSDU-1: 40 octets

A-MPDU Deaggregation

A-MPDU是多个MPDU的聚合。A-MPDU中的MPDU的类型受到[中的第9.7.3节中规定的限制1]。

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

为了说明A-MPDU的分析,使用包含五个MPDU的有效A-MPDUwlanMACFrame。将创建的A-MPDU传递给Wlanampdudeagggregge函数和输出被观察。

创建一个A-MPDU

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

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

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

  3. phycfg.:物理层配置对象wlanHESUConfig

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

Deaggrege GDU

Wlanampdudeagggregge消耗一个a - mpdu,一个PHY配置对象的类型wlanHTConfigwlanvhtconfig, 或者wlanHESUConfig可选的(名称,值)对dataformat.指定A-MPDU的输入格式。它查找并验证MPDU分隔符,提取MPDU并输出以下信息,这些信息可用于进一步处理MPDU:

  1. mpduList:包含从A-MPDU提取的MPDU列表的单元格数组。

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

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

%deagregge a-mpdu[MPDulist,delimcrcfails,ampdustatus] = wlanampdudeaggregate(Ampdu,phycfg,......“DataFormat”'八位字节');%观察输出DISP([A-MPDU解聚合状态:char (ampduStatus)]) disp (['从A-MPDU提取的MPDU数:'num2str(numel(mpdulist))] disp([带分隔符CRC的mpdu数量失败:num2str (nnz (delimCRCFails))))
a-mpdu deaggregation的状态:从A-MPDU提取的MPDU的成功数:5带分隔CRC的MPDU数失败:0

解码MPDU列表

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

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

结论和进一步的探索

这个例子演示了如何分解和解码IEEE 802.11 MAC帧。你也可以探索802.11具有捕获数据的OFDM信标接收器802.11ac包的恢复过程用于解码从捕获的波形检索的MAC帧的示例。

选定的参考书目

  1. IEEE STD 802.11™-2016信息技术的IEEE标准 - 系统之间的电信和信息交流 - 本地和大都市区域网络 - 特定要求 - 第11部分:无线LAN介质访问控制(MAC)和物理层(PHY)规格

  2. 局域网和城域网。特殊要求第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范。修改件6:高效WLAN的增强