主要内容

802.11 MAC帧生成

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

介绍

这个例子显示了WLAN MAC帧是如何在[1]和[2可以生成PCAP (packet capture)文件,由第三方包分析工具进行分析。在这个例子中,Wireshark [3.用来验证MAC帧的内容是否符合预期。

一般MAC帧格式由报头、帧体和帧检查序列(FCS)组成。报头保存着帧的信息。帧体携带需要传输的数据。发射机通过报头和帧体计算FCS。接收器使用FCS来确认报头和帧体被正确接收。下图显示了通用MAC帧的结构。

该标准指定了四种类型的帧:管理帧、数据帧、控制帧和扩展帧。每个帧类型有多个子类型。这些是由类型子类型MAC报头中的帧控制字段。

管理框架:

  • 用于连接建立和维护的框架。

  • 这些帧携带信息字段和元素,指示802.11网络中运行的设备的能力和配置。在建立连接时,这些信息字段和元素在设备之间进行通信,以匹配两个设备的功能。

  • MAC层将报头和FCS添加到承载信息的帧体中,形成一个MAC协议数据单元(MPDU)。

数据帧:

  • 用于传输上层数据的帧。

  • 给MAC层的有效载荷称为MAC服务数据单元(MSDU)。MAC层将报头和FCS添加到MSDU中,形成MAC协议数据单元(MPDU)。

  • 为了提高吞吐量,WLAN支持聚合的MSDUs (A-MSDUs)金宝app和聚合的MPDUs (A-MPDUs),具体参见[9.3.2.2,9.7]。1]和[2].

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

  • 如果使能MPDU聚合功能,则多个MPDU聚合成一个A-MPDU。

控制帧:

  • 用于支持数据传输、管理和扩展的帧。金宝app

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

扩展帧:

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

  • DMG信标是目前在[1].

你可以使用wlanMACFrame函数生成MAC帧。这个函数接受一个MAC帧配置对象wlanMACFrameConfig作为输入。该节点用于配置MAC头中的字段。设置FrameType属性为所需的子类型描述的表9-1。1设置适当的类型子类型字段在MAC报头中。的wlanMACFrame功能支持生成以下m金宝apppdu。

  • 管理框架:灯塔

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

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

除上述MPDUs外,wlanMACFrame还支持生成金宝app包含类型mpdu的a - mpduQoS数据

控制帧的一代

控件创建一个MAC帧配置对象来生成一个RTS帧FrameType设置为“即时战略”

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

配置帧报头字段。

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

使用配置生成RTS帧。

%生成一个RTS帧的字节rtsFrame = wlanMACFrame (rtsCfg);

缺省情况下,输出wlanMACFrame是一个十六进制的八位元序列。如果你想生成一个比特序列的MAC帧,设置OutputFormat参数

%生成一个RTS帧的位rtsFrameBits = wlanMACFrame (rtsCfg,“OutputFormat”“位”);

数据帧的一代

要生成QoS数据帧,需要使用FrameType设置为“QoS数据”

qosDataCfg = wlanMACFrameConfig (“FrameType”“QoS数据”);disp (qosDataCfg);
wlanMACFrameConfig属性:FrameType:“QoS数据”FrameFormat:“Non-HT”托德:0 FromDS: 1重传:0电源管理:0 MoreData: 0时间:0 Address1:“FFFFFFFFFFFF”Address2:“00123456789 b”Address3:“00123456789 b”SequenceNumber: 0 TID: 0 AckPolicy:“没有Ack”MSDUAggregation: 0只读属性:解码:0

配置帧报头字段。

% From DS标志qosDataCfg。FromDS = 1;%到DS标志qosDataCfg。托德= 0;%承认政策qosDataCfg。AckPolicy =“正常的消%接收地址qosDataCfg。Address1 =“FCF8B0102001”%发射机地址qosDataCfg。Address2 =“FCF8B0102002”

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

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

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

%生成QoS数据帧的字节数qosDataFrame = wlanMACFrame(payload, qosDataCfg);

缺省情况下,输出wlanMACFrame是一个十六进制的八位元序列。如果你想生成一个比特序列的MAC帧,设置OutputFormat参数

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

输出MAC帧是一个带有单个MSDU的MPDU。请参阅示例802.11ac波形生成与MAC帧用于A-MSDU和A-MPDU的生成。

管理框架代

要生成信标帧,请使用FrameType设置为“灯塔”

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

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

%创建管理框架体配置对象frameBodyCfg = wlanMACManagementConfig;disp (frameBodyCfg);
wlanMACManagementConfig属性:FrameType:‘灯塔’时间戳:0 BeaconInterval: 100 ESSCapability: 1 IBSSCapability: 0隐私:0 ShortPreamble: 0 SpectrumManagement: 0 QoSSupport: 1 ShortSlotTimeUsed: 0 APS金宝appDSupport: 0 RadioMeasurement: 0 DelayedBlockAckSupport: 0 ImmediateBlockAckSupport: 0名称:“默认名称”BasicRates:{'6 Mbps' '12 Mbps' '24 Mbps'} AdditionalRates:{}只读属性:InformationElements: {511x2 cell}

在框架主体配置中配置信息字段和元素。您可以使用艾迪(elementID信息)方法如下所示。请参阅[1查询信息字段和信息元素的列表。

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

将更新的帧体配置对象赋给ManagementConfig属性。

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

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

%生成信标帧的字节数beaconFrame = wlanMACFrame (beaconCfg);

缺省情况下,输出wlanMACFrame是一个十六进制的八位元序列。如果你想生成一个比特序列的MAC帧,设置OutputFormat参数

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

导出WLAN MAC帧到PCAP或PCAPNG文件

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

为了捕获报文的特征,可以将生成的WLAN MAC帧导出到PCAP或PCAPNG文件中wlanPCAPWriter对象。您可以使用Wireshark等第三方包分析工具对PCAP或PCAPNG文件进行可视化分析。3.].

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

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

如果文件中有文件名名称已存在于当前目录中,删除现有文件。

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

设置报文到达时间,单位为POSIX®微秒。

时间戳= 124800;

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

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

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

帧= {rtsFrame, qosDataFrame, beaconFrame};

将MAC帧写入PCAP文件。

Idx = 1:numel(frames) write(pcap, frames{Idx}, timestamp);结束

删除PCAP文件写入器对象。

删除(pcap);

生成的MAC帧的可视化

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

  • RTS框架

  • QoS数据帧

  • 信标帧

结论与进一步探索

这个例子演示了为IEEE 802.11标准生成MAC帧。通过报文分析器可以查看生成的MAC帧。要通过空中传输生成的MAC帧,请参考802.11 OFDM信标帧生成802.11ac波形生成与MAC帧的例子。

选定的参考书目

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

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

  3. ·深入挖掘。https://www.wireshark.org/.2020年6月30日

  4. 集团Tcpdump。Tcpdump / Libpcap公共存储库。https://www.tcpdump.org.2020年6月30日