主要内容

802.11 MAC帧生成

此示例显示如何生成IEEE®802.11™MAC帧。

介绍

此示例显示了[中的第9节中的WLAN MAC帧如何1] 和 [2可以生成并导出到数据包捕获(PCAP)文件以进行分析,用于分析第三方数据包分析工具。在这个例子中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-MSDU)和聚万博1manbetx合的MPDU(A-MPDU),如第9.3.2.2,9.7节中所指定的[1] 和 [2]。

  • 如果启用了MSDU聚合,则会聚合多个MSDU以形成A-MSDU,然后将MAC报头和FC添加到A-MSDU以形成MPDU。

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

控制帧:

  • 用于支持数据,管理和扩展帧的传递的帧。万博1manbetx

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

扩展框架:

  • 此帧类型是上面定义的三种帧类型的扩展。

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

你可以使用wlanmacframe.生成MAC帧的功能。此函数接受MAC帧配置对象wlanmacframeconfig.作为一个输入。此对象在MAC标头中配置字段。设定弗拉米妥.财产到所需亚型描述在表9-1的[1]设定适当的类型亚型MAC标题中的字段。这wlanmacframe.功能支持以下MPD万博1manbetxU的生成。

  • 管理框架:灯架

  • 数据帧:数据,null,QoS数据,qos null

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

除了上述mpdus,wlanmacframe.还支持生成万博1manbetx包含MPDU的A-MPDUQoS数据

控制帧生成

要生成RTS帧,请使用“创建MAC帧配置对象”弗拉米妥.调成'rts'

rtscfg = wlanmacframeconfig('frameType''rts');DISP(RTSCFG);
WLANMACFRAMECONFIG具有属性:FRAMETYPE:'RTS'PowerManagement:0 Moredata:0持续时间:0地址1:'FFFFFFFFFFFFF'地址2:'00123456789B'只读属性:解码:0

配置帧头字段。

% 期间rtscfg.duration = 500;%接收器地址rtscfg.address1 ='fcf8b0102001';%发射器地址rtscfg.address2 ='fcf8b0102002';

使用配置生成RTS帧。

%为RTS帧生成八位字节rtsframe = wlanmacframe(rtscfg);

默认情况下,输出wlanmacframe.是一系列十六进制八位字节。如果要将MAC帧生成为一系列位,请设置输出格式参数到比特

%生成RTS帧的比特rtsframebits = wlanmacframe(rtscfg,'输出格式''贝特');

数据帧生成

要生成QoS数据帧,请使用该QoS数据帧创建MAC帧配置对象弗拉米妥.调成'QoS数据'

qosdatacfg = wlanmacframeconfig('frameType''QoS数据');DISP(QoSDATACFG);
wlanmacframeconfig具有属性:frameType:'QoS数据'FrameFormat:'非HT'TOD:0 ROMDS:1重传:0 PowerManagement:0 MoreData:0持续时间:0地址1:'FFFFFFFFFFFFF'地址2:'00123456789B'00123456789B'Sequencenumber:0 TID:0 Ackpolicy:'No Ack'MSDuaggregation:0只读属性:解码:0

配置帧头字段。

来自DS标志的%Qosdatacfg.fromds = 1;%到DS标志qosdatacfg.tods = 0;%确认政策Qosdatacfg.ackpolicy =.'正常ACK';%接收器地址QoSdatacfg.Address1 ='fcf8b0102001';%发射器地址QoSdatacfg.Address2 ='fcf8b0102002';

QoS数据帧用于从高层传输有效载荷。在此示例中使用包含重复序列的20字节有效载荷。

payload = repmat('11',1,20);

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

%生成QoS数据帧的八位字节qosdataframe = wlanmacframe(有效载荷,qosdatacfg);

默认情况下,输出wlanmacframe.是一系列十六进制八位字节。如果要将MAC帧生成为一系列位,请设置输出格式参数到比特

%生成QoS数据帧的比特qosdataframebits = wlanmacframe(有效载荷,qosdatacfg,'输出格式''贝特');

输出MAC帧是具有单个MSDU的MPDU。参考这个例子802.11AC波形生成带MAC帧对于A-MSDU和A-MPDU生成。

管理框架生成

要生成信标框,请使用“创建MAC帧配置对象”弗拉米妥.调成'灯架'

beaconcfg = wlanmacframeconfig('frameType''灯架');DISP(BEACONCFG);
wlanmacframeconfig具有属性:frameType:'beacon'tods:0 fromds:1重传:0 powermanagement:0 moredata:0持续时间:0地址1:'ffffffffffff'地址2:'00123456789b'00123456789b'00123456789b'00123456789b'semencenumber:0 managemenconfig:[1x1 wlanmacmanagementconfig]只读属性:解码:0

信标框架 - 身体由信息字段和信息元素组成,如[的第9.3.3.3节)所述1]。您可以使用这些信息字段和元素使用wlanmacmanagementconfig

%创建管理框架 - 正文配置对象FrameBodyCFG = WLANMACMANAGEMENCONFIG;DISP(FrameBodyCFG);
wlanmacmanagementconfig具有属性:frameType:'信标'时间戳:0 BeaConInterval:100 Esscapability:1 IBSScapability:0隐私:0 Shortemmanage:0 SpectrumManagement:0 Qossupport:1 ShortsUpport:0 APSDSupport:0万博1manbetx addiateDblockachsupport:0 impediateBlockackSupport:0 SSID:“默认SSID”碱标:{'6 Mbps'的'12 Mbps''24 Mbps'}额外的rates:{}只读属性:信息单元:{511x2 cell}

配置帧主体配置中的信息字段和元素。您可以使用信息元素使用addie(元素,信息)方法如下所示。参考[1]有关信息字段和信息元素列表。

%信标间隔FrameBodyCFG.BeaconInterval = 100;%时间戳FrameBodyCfg.timestamp = 123456;%SSID.FrameBodyCfg.ssid ='test_beacon';%添加DS参数IE(元素ID-3)与频道号11(0x0b)FrameBodyCFG = FrameBodyCfg.addie(3,'0b');

将更新的帧主体配置对象分配给ManagementConfig.MAC帧配置中的属性。

%更新管理框架正文配置beaconcfg.managementconfig = framebodycfg;

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

%为信标帧生成八位字节beaconframe = wlanmacframe(beaconcfg);

默认情况下,输出wlanmacframe.是一系列十六进制八位字节。如果要将MAC帧生成为一系列位,请设置输出格式参数到比特

%生成信标帧的比特beaconframebits = wlanmacframe(beaconcfg,'输出格式''贝特');

导出到PCAP文件

这个例子用途PCApWriter.对象将生成的MAC帧导出到具有.pcap扩展的文件。要分析和可视化此文件,请使用Wireshark等第三方数据包分析器。将生成的MAC帧导出到带有.pcapng扩展的文件,使用PCAPNGWRITER.目的。

创建类型的对象PCApWriter.并指定数据包捕获文件名。常数wlanlinktype.时间戳指定链路层标头类型[4.[分别是WLAN帧的捕获时间。在此示例中,捕获时间对于所有帧相同。在使用.pcap或.pcapng扩展,使用中将数据包写入文件之前WriteGlobalheader.函数为文件写入全局标题。

时间戳= 124800;%时间戳(以微秒为单位)wlanlinktype = 105;%链接层标题类型filename =.'macframes';%删除如果当前已存在具有相同名称的文件% 目录如果iSfile([filename,'.pcap'])删除([filename,'.pcap']);结尾PCAP = PCApWriter('文件名''macframes');WriteGlobalheader(PCAP,WLANLINKTYPE);PCAP文件中的%全局标题

使用将所有MAC帧写入PCAP文件的功能

%MAC帧将导出到PCAP文件框架= {rtsframe,qosdataframe,beaconframe};%将所有数据包写入PCAP文件为了IDX = 1:NUMER(帧)写(PCAP,FRAMES {IDX},TIMESTAMP);结尾%清除对象清除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部分:无线LAN介质访问控制(MAC)和物理层(PHY)规格

  2. IEEE P802.11AX™/ D4.1信息技术标准标准草案 - 系统本地和大都市区域网络之间的电信和信息交流 - 特定要求第11部分:无线LAN介质访问控制(MAC)和物理层(PHY)规格 - 修正6:高效WLAN的增强功能

  3. Wireshark·深入。https://www.wireshark.org/。访问2020年6月30日

  4. 小组,tcpdump。tcpdump / libpcap公共存储库。https://www.tcpdump.org.。访问2020年6月30日