В этом примере показано, как создавать кадры IEEE ® 802.11™ MAC.
В этом примере показано, как кадры MAC WLAN, указанные в разделе 9 [1] и [2], могут быть сгенерированы и экспортированы в файл захвата пакетов (PCAP) для анализа с помощью сторонних средств анализа пакетов. В этом примере для проверки того, что содержимое кадров MAC соответствует ожидаемому значению, используется параметр Wireshark [3].

Общий формат кадра MAC состоит из заголовка, тела кадра и последовательности проверки кадра (FCS). Заголовок содержит информацию о кадре. Тело кадра несет данные, которые необходимо передать. Передатчик вычисляет FCS по заголовку и корпусу кадра. Приемник использует FCS для подтверждения того, что заголовок и тело кадра приняты правильно. На следующей схеме показана структура общего кадра MAC.

Стандарт определяет четыре типа кадров: «Управление», «Данные», «Управление» и «Расширение». Существует несколько подтипов каждого типа кадра. Они идентифицируются полями Тип и Подтип поля управления кадром в заголовке MAC.
Кадры управления:
Кадры, используемые для установления и обслуживания соединений.
Эти кадры содержат информационные поля и элементы, которые указывают возможности и конфигурацию устройства, работающего в сети 802.11. При установлении соединения эти информационные поля и элементы передаются между устройствами для согласования возможностей обоих устройств.
Уровень MAC добавляет заголовок и FCS в тело кадра, несущее информацию, для формирования блока данных протокола MAC (MPDU).
Кадры данных:
Кадры, используемые для передачи данных более высокого уровня.
Полезная нагрузка, передаваемая на уровень MAC, называется блоком данных службы MAC (MSDU). Уровень MAC добавляет заголовок и FCS в MSDU для формирования блока данных протокола MAC (MPDU).
Для повышения пропускной способности WLAN поддерживает агрегированные MSDU (A-MSDU) и агрегированные MPDU (A-MPDU), как указано в разделах 9.3.2.2, 9.7 из [1] и [2].
Если агрегация MSDU включена, несколько MSDU агрегируются для формирования A-MSDU, а затем заголовок MAC и FCS добавляются к A-MSDU для формирования MPDU.
Если агрегация MPDU активизирована, несколько MPDU агрегируются для формирования A-MPDU.
Управляющие кадры:
Кадры, которые используются для поддержки доставки данных, управления и кадров расширения.
Каждый кадр управления имеет определенную функциональность. Например, управляющие кадры, такие как request-to-send (RTS) и clear-to-send (CTS), помогают в резервировании канала, чтобы избежать конфликтов, в то время как кадры Ack помогают в распознавании успешной передачи.
Рамки расширения:
Этот тип кадра является расширением трех типов кадров, определенных выше.
DMG Beacon является единственным кадром, в настоящее время указанным для этого типа кадра в [1].
Вы можете использовать wlanMACFrame для формирования кадров MAC. Эта функция принимает объект конфигурации кадра MAC wlanMACFrameConfig в качестве входных данных. Этот объект настраивает поля в заголовке MAC. Установите FrameType для требуемого описания подтипа в таблице 9-1 [1] для установки соответствующих полей Type и Subtype в заголовке MAC. wlanMACFrame поддерживает генерацию следующих MPDU.
Кадры управления: Маяк
Кадры данных: данные, Null, данные QoS, QoS Null
Кадры управления: RTS, CTS, Ack, Block Ack
В дополнение к вышеуказанным блокам MPDU, wlanMACFrame также поддерживает генерацию A-MPDU, содержащих MPDU типа QoS Data.
Чтобы создать кадр RTS, создайте объект конфигурации кадра MAC с помощью FrameType установить в значение 'RTS'.
rtsCfg = wlanMACFrameConfig('FrameType', 'RTS'); disp(rtsCfg);
wlanMACFrameConfig with properties:
FrameType: 'RTS'
PowerManagement: 0
MoreData: 0
Duration: 0
Address1: 'FFFFFFFFFFFF'
Address2: '00123456789B'
Read-only properties:
Decoded: 0
Сконфигурируйте поля заголовка кадра.
% Duration rtsCfg.Duration = 500; % Receiver address rtsCfg.Address1 = 'FCF8B0102001'; % Transmitter address rtsCfg.Address2 = 'FCF8B0102002';
Создайте кадр RTS с помощью конфигурации.
% Generate octets for an RTS frame
rtsFrame = wlanMACFrame(rtsCfg);
По умолчанию выходные данные wlanMACFrame - последовательность шестнадцатеричных октетов. Если требуется создать кадр MAC в виде последовательности битов, установите OutputFormat параметр для bits.
% Generate bits for an RTS frame rtsFrameBits = wlanMACFrame(rtsCfg, 'OutputFormat', 'bits');
Чтобы создать кадр данных QoS, создайте объект конфигурации кадра MAC с помощью FrameType установить в значение 'QoS Data'.
qosDataCfg = wlanMACFrameConfig('FrameType', 'QoS Data'); 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
Read-only properties:
Decoded: 0
Сконфигурируйте поля заголовка кадра.
% From DS flag qosDataCfg.FromDS = 1; % To DS flag qosDataCfg.ToDS = 0; % Acknowledgment Policy qosDataCfg.AckPolicy = 'Normal Ack'; % Receiver address qosDataCfg.Address1 = 'FCF8B0102001'; % Transmitter address qosDataCfg.Address2 = 'FCF8B0102002';
Кадр данных QoS используется для передачи полезной нагрузки с более высокого уровня. В этом примере используется 20-байтовая полезная нагрузка, содержащая повторяющуюся последовательность шестнадцатеричного значения «11».
payload = repmat('11', 1, 20);
Создание кадра данных QoS с использованием полезной нагрузки и конфигурации.
% Generate octets for a QoS Data frame
qosDataFrame = wlanMACFrame(payload, qosDataCfg);
По умолчанию выходные данные wlanMACFrame - последовательность шестнадцатеричных октетов. Если требуется создать кадр MAC в виде последовательности битов, установите OutputFormat параметр для bits.
% Generate bits for a QoS Data frame qosDataFrameBits = wlanMACFrame(payload, qosDataCfg, 'OutputFormat', 'bits');
Выходной кадр MAC представляет собой MPDU с одним MSDU. См. пример генерации сигнала 802.11ac с кадрами MAC для генерации A-MSDU и A-MPDU.
Чтобы создать кадр маяка, создайте объект конфигурации кадра MAC с помощью FrameType установить в значение 'Beacon'.
beaconCfg = wlanMACFrameConfig('FrameType', 'Beacon'); 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.
% Create a management frame-body configuration object
frameBodyCfg = wlanMACManagementConfig;
disp(frameBodyCfg);
wlanMACManagementConfig with properties:
FrameType: 'Beacon'
Timestamp: 0
BeaconInterval: 100
ESSCapability: 1
IBSSCapability: 0
Privacy: 0
ShortPreamble: 0
SpectrumManagement: 0
QoSSupport: 1
ShortSlotTimeUsed: 0
APSDSupport: 0
RadioMeasurement: 0
DelayedBlockAckSupport: 0
ImmediateBlockAckSupport: 0
SSID: 'default SSID'
BasicRates: {'6 Mbps' '12 Mbps' '24 Mbps'}
AdditionalRates: {}
Read-only properties:
InformationElements: {511x2 cell}
Сконфигурируйте информационные поля и элементы в конфигурации frame-body. Добавить информационные элементы можно с помощью addIE(elementID, information) как показано ниже. Перечень информационных полей и элементов информации приведен в разделе 9.4 в [1].
% Beacon Interval frameBodyCfg.BeaconInterval = 100; % Timestamp frameBodyCfg.Timestamp = 123456; % SSID frameBodyCfg.SSID = 'TEST_BEACON'; % Add DS Parameter IE (element ID - 3) with channel number 11 (0x0b) frameBodyCfg = frameBodyCfg.addIE(3, '0b');
Назначение обновленного объекта конфигурации «кадр-тело» ManagementConfig в конфигурации кадра MAC.
% Update management frame-body configuration
beaconCfg.ManagementConfig = frameBodyCfg;
Создайте кадр маяка с обновленной конфигурацией кадра.
% Generate octets for a Beacon frame
beaconFrame = wlanMACFrame(beaconCfg);
По умолчанию выходные данные wlanMACFrame - последовательность шестнадцатеричных октетов. Если требуется создать кадр MAC в виде последовательности битов, установите OutputFormat параметр для bits.
% Generate bits for a Beacon frame beaconFrameBits = wlanMACFrame(beaconCfg, 'OutputFormat', 'bits');
В этом примере используется pcapWriter объект для экспорта созданных кадров MAC в файл с расширением .pcap. Для анализа и визуализации этого файла используйте сторонний анализатор пакетов, такой как Wireshark. Чтобы экспортировать созданные кадры MAC в файл с расширением .pcapng, используйте pcapngWriter объект.
Создание объекта типа pcapWriter и укажите имя файла захвата пакетов. Константы wlanLinkType и timestamp определяет тип заголовка канального уровня [4] и время захвата кадра WLAN соответственно. В этом примере время захвата одинаково для всех кадров. Перед записью пакетов в файл с расширением .pcap или .pcapng используйте writeGlobalHeader для записи глобального заголовка в файл.
timestamp = 124800; % Timestamp (in microseconds) wlanLinkType = 105; % Link-layer header type fileName = 'macFrames'; % Delete if a file with the same name already exists in the current % directory if isfile([fileName, '.pcap']) delete([fileName, '.pcap']); end pcap = pcapWriter('FileName', 'macFrames'); writeGlobalHeader(pcap, wlanLinkType); % Global header in pcap file
Используйте write функция для записи всех кадров MAC в файл PCAP
% MAC frames to be exported to a PCAP file frames = {rtsFrame, qosDataFrame, beaconFrame}; % Write all the packets to the PCAP file for idx = 1:numel(frames) write(pcap, frames{idx}, timestamp); end % Clear the object clear pcap;
Файлы PCAP, содержащие сгенерированные кадры MAC, можно открыть в анализаторе пакетов. Кадры, декодированные с помощью программы Wireshark, совпадают со стандартными совместимыми кадрами MAC, сгенерированными с помощью WLAN Toolbox. На этом рисунке показан анализ захваченных кадров MAC в Wireshark.
Кадр RTS

Кадр данных QoS

Кадр маяка
![]()
В этом примере показано формирование MAC-кадров для стандарта IEEE 802.11. Для просмотра сгенерированных кадров MAC можно использовать анализатор пакетов. Для передачи сформированных кадров УДС по эфиру см. примеры генерации кадров маяка OFDM 802.11 и генерации сигнала 802.11ac с кадрами УДС.
Стандарт IEEE Std 802.11™-2016 IEEE для информационных технологий - Телекоммуникации и обмен информацией между системами - Локальные и городские сети - Особые требования - Часть 11: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического уровня (PHY)
IEEE P802.11ax™/D4.1 Проект стандарта для информационных технологий - Телекоммуникации и обмен информацией между системами Локальные и городские сети - Особые требования Часть 11: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического уровня (PHY) - Поправка 6: Усовершенствования для высокой эффективности WLAN
Wireshark· Углублённый переход. https://www.wireshark.org/. Доступ 30 июня 2020 г.
Группа, Tcpdump. Открытый репозиторий Tcpdump/Libpcap. https://www.tcpdump.org. Доступ 30 июня 2020 г.