主要内容

802.11 MAC帧生成

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

简介

此示例显示如何生成WLAN MAC帧,在第9节中指定[1]而且[2],并将这些帧导出为PCAP (packet capture)文件,以便第三方报文分析工具进行分析。

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

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

您可以使用wlanMACFrame函数来生成MAC帧。这个函数接受一个MAC帧配置对象wlanMACFrameConfig作为输入。该节点用于配置MAC头中的字段。设置FrameType属性。子类型描述的表9-1[1]设置适当的类型而且子类型MAC报头中的字段。的wlanMACFrame函数支持这些mpd金宝appu的生成。

  • 管理框架:灯塔

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

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

除了这些mpdu,wlanMACFrame还支持生成金宝app包含类型mpdu的a - mpduQoS数据

控制框生成

属性创建一个MAC帧配置对象以生成RTS帧FrameType设置为“即时战略”

rtsCfg = wlanMACFrameConfig(“FrameType”“即时战略”);disp (rtsCfg);
wlanMACFrameConfig with properties: FrameType: 'RTS' PowerManagement: 0 MoreData: 0 Duration: 0 Address1: 'FFFFFFFFFFFF' Address2: '00123456789B' Read-only属性:解码:0

配置帧报头字段。

%的持续时间rtsCfg。持续时间= 500;接收地址rtsCfg。Address1 =“FCF8B0102001”发射机地址rtsCfg。Address2 =“FCF8B0102002”

使用配置生成RTS帧。

为RTS帧生成字节rtsFrame = wlanMACFrame(rtsCfg);

缺省情况下,输出wlanMACFrame是十六进制八进制序列。如果要将MAC帧生成为位序列,请设置OutputFormat参数

为RTS帧生成比特rtsFrameBits = wlanMACFrame(rtsCfg,“OutputFormat”“位”);

数据帧生成

创建MAC帧配置对象,生成QoS数据帧FrameType设置为“QoS数据”

qosDataCfg = wlanMACFrameConfig(“FrameType”“QoS数据”);disp (qosDataCfg);
wlanMACFrameConfig with properties: FrameType: 'QoS Data' FrameFormat: 'Non-HT' ToDS: 0 FromDS: 1 Retransmission: 0 PowerManagement: 0 MoreData: 0 Duration: 0 Address1: 'FFFFFFFFFFFF' Address2: '00123456789B' Address3: '00123456789B' SequenceNumber: 0 TID: 0 AckPolicy: 'No Ack' MSDUAggregation: 0 EOSP: 0 IsMeshFrame: 0 Read-only properties: Decoded: 0

配置帧报头字段。

%来自DS标志qosDataCfg。FromDS = 1;%到DS标志qosDataCfg。ToDS = 0;%确认策略qosDataCfg。AckPolicy =“正常的消接收地址qosDataCfg。Address1 =“FCF8B0102001”发射机地址qosDataCfg。Address2 =“FCF8B0102002”

QoS数据帧用于传输来自上层的有效载荷。本例中使用了一个20字节的有效负载,其中包含一个十六进制值'11'的重复序列。

有效载荷= repmat(“11”, 1, 20);

使用有效负载和配置生成QoS数据帧。

为QoS数据帧生成字节qosDataFrame = wlanMACFrame(有效载荷,qosDataCfg);

缺省情况下,输出wlanMACFrame是十六进制八进制序列。如果要将MAC帧生成为位序列,请设置OutputFormat参数

为QoS数据帧生成比特qosDataFrameBits = wlanMACFrame(有效载荷,qosDataCfg,“OutputFormat”“位”);

输出MAC帧是一个带有单个MSDU的MPDU。有关A-MSDU和A-MPDU生成的更多信息,请参见802.11ac波形生成与MAC帧

管理框架生成

属性创建MAC帧配置对象,以生成信标帧FrameType设置为“灯塔”

beaconCfg = wlanMACFrameConfig(“FrameType”“灯塔”);disp (beaconCfg);
wlanMACFrameConfig with properties: FrameType: 'Beacon' ToDS: 0 FromDS: 1 Retransmission: 0 PowerManagement: 0 MoreData: 0 Duration: 0 Address1: ' ffffffffff ' Address2: '00123456789B' Address3: '00123456789B' SequenceNumber: 0 ManagementConfig: [1x1 wlanMACManagementConfig] Read-only properties: Decoded: 0

信标帧体由信息字段和信息元素组成,如9.3.3.2节所述[1].您可以使用命令配置这些信息字段和元素wlanMACManagementConfig

创建管理框体配置对象frameBodyCfg = wlanMACManagementConfig;disp (frameBodyCfg);
wlanMACManagementConfig with properties: FrameType: 'Beacon' Timestamp: 0 BeaconInterval: 100 ESSCapability: 1 IBSSCapability: 0 Privacy: 0 ShortPreamble: 0 SpectrumManagement: 0 QoS金宝appSupport: 1 ShortSlotTimeUsed: 0 APSDSupport: 0 radiommeasurement: 0 DelayedBlockAckSupport: 0 ImmediateBlockAckSupport: 0 SSID: 'default SSID' BasicRates: {'6 Mbps' '12 Mbps' '24 Mbps'} AdditionalRates:{}只读属性:InformationElements: {511x2 cell}

配置框体配置中的信息字段和元素。可以使用添加信息元素艾迪(elementID信息)方法,如下所示。第9.4条[1]列出信息字段和信息元素。

%信标间隔frameBodyCfg。灯塔Interval = 100;%的时间戳frameBodyCfg。时间戳= 123456;%名称frameBodyCfg。名称=“TEST_BEACON”添加DS参数IE(元素ID - 3)通道号为11 (0x0b)frameBodyCfg = frameBodyCfg. addie (3,“0 b”);

将更新后的框架主体配置对象分配给ManagementConfig属性在MAC帧配置。

更新管理框体配置beaconCfg。ManagementConfig = frameBodyCfg;

使用更新的帧配置生成信标帧。

为信标帧生成字节beaconFrame = wlanMACFrame(beaconCfg);

缺省情况下,输出wlanMACFrame是十六进制八进制序列。如果要将MAC帧生成为位序列,请设置OutputFormat参数

为信标帧生成比特beaconFrameBits = wlanMACFrame(beaconCfg,“OutputFormat”“位”);

导出WLAN MAC帧到PCAP或PCAPNG文件

PCAP (packet capture next generation)或PCAPNG (packet capture next generation)文件。Pcap或.pcapng,分别)是一种广泛使用的数据包捕获文件格式,用于执行数据包分析。

为了捕获数据包的特征,可以将生成的MAC帧导出到PCAP或PCAPNG文件wlanPCAPWriter对象。您可以使用第三方包分析工具(如Wireshark)对PCAP或PCAPNG文件进行可视化和分析。

指定PCAP文件的名称和扩展名。将MAC帧导出到PCAPNG文件,将文件扩展名设置为“PCAPNG”。

文件名=“macFrames”;fileExtension =“pcap”

的文件文件名名称在当前目录中已存在,请删除现有文件。

如果isfile (strcat(文件名,“。”删除(strcat(文件名,“。”fileExtension));结束

以POSIX®微秒为单位设置数据包到达时间。

时间戳= 124800;

创建具有指定文件名称和扩展名的WLAN PCAP文件写入器对象wlanPCAPWriter对象。

pcap = wlanPCAPWriter(“文件名”文件名,“FileExtension”, fileExtension);

指定导出到PCAP文件的MAC帧。

frames = {rtsFrame, qosDataFrame, beaconFrame};

将MAC帧写入PCAP文件。

Idx = 1:数字(帧)写入(pcap,帧{Idx},时间戳);结束

删除PCAP文件写入器对象。

删除(pcap);

生成的MAC帧的可视化

您可以在包分析器中打开包含生成MAC帧的PCAP文件。Wireshark解码的MAC帧与“WLAN工具箱”生成的符合标准的MAC帧相匹配。该图显示了Wireshark对捕获MAC帧的分析。

  • RTS框架

  • 数据帧

  • 信标帧

结论及进一步探索

这个例子展示了如何为IEEE 802.11标准生成MAC帧。您可以使用包分析器来查看生成的MAC帧。要通过空中传输生成的MAC帧,请参见802.11 OFDM信标帧生成而且802.11ac波形生成与MAC帧

参考文献

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

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

[3] Wireshark·Go Deep。https://www.wireshark.org/.2020年6月30日

[4]组,Tcpdump。Tcpdump/Libpcap公共存储库。https://www.tcpdump.org.2020年6月30日

相关的话题