这个例子展示了如何解码IEEE®802.11™MAC帧。
一般MAC帧格式由报头、帧体和帧检查序列(FCS)组成。报头保存着帧的信息。帧体携带需要传输的数据。发射机通过报头和帧体计算FCS。接收器使用FCS来确认报头和帧体被正确接收。下图显示了通用MAC帧的结构。
该标准规定了四种帧类型:管理、数据、控制和扩展。每种帧类型都有多个子类型。这些子类型由类型和子类型MAC报头中的帧控制字段。
管理框架:
用于连接建立和维护的框架。
这些帧携带指示在802.11网络中操作的设备的能力和配置的信息字段和元素。在建立连接时,这些信息字段和元素在设备之间进行通信,以匹配两个设备的功能。
MAC层将报头和FCS添加到承载信息的帧体中,形成一个MAC协议数据单元(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可以是数据、控制或管理帧类型。wlanMPDUDecode
可以用来解码MPDU。该功能处理给定的MPDU和物理层配置对象,输出解码后的MAC参数。
为了说明MPDU解码,可以使用以下命令创建一个有效的MPDUwlanMACFrame
.将创建的MPDU传递给wlanMPDUDecode
函数和输出被观察。
创建一个MPDU
QoS数据帧是为这个示例创建的wlanMACFrame
.QoS包含40字节有效负载的数据帧需要以下输入:
txFrameCfg
: MAC帧配置对象wlanMACFrameConfig
.
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配置对象的类型wlanNonHTConfig
,wlanHTConfig
,wlanVHTConfig
,或瓦兰赫舒克
和可选的(名称、值)对DataFormat
指定MPDU的输入格式。自MPDU生成使用wlanMACFrame
是用八进制表示的,DataFormat
设置为八位字节
.wlanMPDUDecode
对MPDU进行解码,输出如下信息:
rxFrameCfg
: MAC帧配置对象wlanMACFrameConfig
,包含解码后的MAC参数。
rxMSDU
:单元数组,其中每个元素是一个n乘2的字符数组,表示解码后的MSDU。当MPDU包含一个聚合MSDU (A-MSDU)作为负载时,返回多个MSDU。
状态
:类型的枚举状态,表示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是多个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字节的有效载荷:
txFrameCfg
: MAC帧配置对象wlanMACFrameConfig
.
txMSDUList
:包含有效载荷(MSDU)的五单元单元阵列,用于五个mpdu。自MSDUAggregation
在txFrameCfg
,则为每个MSDU创建一个单独的MPDU。
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配置对象wlanHTConfig
,wlanVHTConfig
,或瓦兰赫舒克
和可选的(名称、值)对DataFormat
指定A-MPDU的输入格式。它查找并验证MPDU分隔符,提取MPDU并输出可用于进一步处理MPDU的以下信息:
mpduList
:包含从A- mpdu中提取的mpdu列表的单元阵列。
delimCRCFails
:表示中对应索引的分隔符CRC有效性的逻辑行向量mpduList
.值为true表示MPDU在mpduList
在相应的索引处可能无法正确提取。
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帧。
IEEE Std 802.11™-2016信息技术IEEE标准。系统间电信和信息交换。局域网和城域网。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范
IEEE P802.11ax™/D4.1信息技术标准草案。系统之间的电信和信息交换。局域网和城域网。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范