本示例演示如何解码IEEE®802.11™MAC帧。
一般的MAC帧格式由报头、帧体和帧检查序列(FCS)组成。报头包含关于帧的信息。帧体承载着需要传输的数据。发射机计算报头和帧体上的FCS。接收端使用FCS确认报头和帧体被正确接收。下图展示了一个通用MAC帧的结构。
该标准指定了四种类型的框架:管理、数据、控制和扩展。每个帧类型都有多个子类型。这些是由类型而且子类型MAC报头中的帧控制字段。
管理框架:
用于连接建立和维护的帧。
这些帧携带信息字段和元素,指示在802.11网络中运行的设备的功能和配置。在建立连接时,这些信息字段和元素在设备之间进行通信,以匹配两个设备的功能。
MAC层将报头和FCS添加到承载信息的帧体上,形成MAC协议数据单元(MPDU)。
数据帧:
控制帧:
用于支持数据、管理和扩展框架交付的框架。金宝app
每个控制框架都有特定的功能。例如,像请求发送(RTS)和清除发送(CTS)这样的控制帧有助于保留通道以避免冲突,而Ack帧有助于识别成功的传输。
扩展帧:
这个帧类型是上面定义的三种帧类型的扩展。
DMG信标是当前在此帧类型下指定的唯一帧。1]。
本例显示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可以是数据帧、控制帧或管理帧类型。wlanMPDUDecode
可以用来解码MPDU。这个函数处理给定的MPDU和物理层配置对象以输出解码后的MAC参数。
为了说明MPDU解码,使用wlanMACFrame
.创建的MPDU被传递给wlanMPDUDecode
观察函数和输出。
创建MPDU
为本例创建QoS数据帧使用wlanMACFrame
.要形成包含40字节有效负载的非ht格式QoS数据帧,需要以下输入:
txFrameCfg
:类型的MAC帧配置对象wlanMACFrameConfig
.
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配置对象wlanNonHTConfig
,wlanHTConfig
,wlanVHTConfig
,或wlanHESUConfig
和(名称,值)对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,...“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是多个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字节的有效负载:
txFrameCfg
:类型的MAC帧配置对象wlanMACFrameConfig
.
txMSDUList
:包含5个mpdu的有效载荷(MSDU)的5元单元阵列。自MSDUAggregation
中设置为falsetxFrameCfg
,为每个MSDU创建一个单独的MPDU。
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配置对象wlanHTConfig
,wlanVHTConfig
,或wlanHESUConfig
和(名称,值)对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 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帧。你也可以探索802.11 OFDM信标接收机与捕获数据而且802.11ac报文的恢复过程解码从捕获波形检索的MAC帧的示例。
IEEE信息技术标准。系统间的电信和信息交换。局域网和城域网。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范
IEEE P802.11ax™/D4.1信息技术标准草案。系统间的电信和信息交换。局域网和城域网。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范。修改件6:高效WLAN的增强