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

Стандарт определяет четыре типа кадров: «Управление», «Данные», «Управление» и «Расширение». Существует несколько подтипов каждого типа кадра. Они идентифицируются полями Тип и Подтип поля управления кадром в заголовке MAC.
Кадры управления:
Кадры, используемые для установления и обслуживания соединений.
Эти кадры содержат информационные поля и элементы, которые указывают возможности и конфигурацию устройства, работающего в сети 802.11. При установлении соединения эти информационные поля и элементы передаются между устройствами для согласования возможностей обоих устройств.
Уровень MAC добавляет заголовок и FCS в тело кадра, несущее информацию, для формирования блока данных протокола MAC (MPDU).
Кадры данных:
Кадры, используемые для передачи данных более высокого уровня.
Полезная нагрузка, передаваемая на уровень MAC, называется блоком данных службы MAC (MSDU). Уровень MAC добавляет заголовок и FCS в MSDU для формирования 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].
В этом примере показано, как можно декодировать кадры MAC WLAN, указанные в разделе 9.3 [1] или [2]. Он также показывает, как агрегированные кадры MAC, указанные в разделе 9.7 [1] или [2], могут быть деагрегированы.
WLAN Toolbox™ поддерживает декодирование MPDU для следующих кадров MAC:
Кадры управления: Маяк
Кадры данных: данные, Null, данные QoS, QoS Null
Кадры управления: RTS, CTS, Ack, Block Ack
В дополнение к декодированию MPDU, WLAN Toolbox также поддерживает деагрегацию A-MPDU.
MPDU может быть типа кадров данных, управления или управления. wlanMPDUDecode может использоваться для декодирования MPDU. Эта функция обрабатывает данный MPDU и объект конфигурации физического уровня для вывода декодированных параметров MAC.
Для иллюстрации декодирования MPDU создается допустимый MPDU с использованием wlanMACFrame. Созданный MPDU передается в wlanMPDUDecode наблюдаются функция и выходные сигналы.

Создание MPDU
Кадр данных QoS создается для этого примера с использованием wlanMACFrame. Для формирования кадра данных QoS формата не-HT, содержащего 40-октетную полезную нагрузку, требуются следующие входные данные:
txFrameCfg : Объект конфигурации кадров MAC типа wlanMACFrameConfig.
txMSDU : 40-октетная полезная нагрузка (MSDU), которая должна быть включена в кадр данных QoS.
% Create a MAC frame configuration object txFrameCfg = wlanMACFrameConfig('FrameType', 'QoS Data', ... 'FrameFormat', 'Non-HT'); % 40-octet payload for each 'QoS Data' frame txMSDU = randi([0, 255], 40, 1); % Physical layer configuration phyCfg = wlanNonHTConfig; % Create the MPDU mpdu = wlanMACFrame(txMSDU, txFrameCfg);
Декодирование MPDU
wlanMPDUDecode потребляет MPDU, объект конфигурации PHY типа wlanNonHTConfig, wlanHTConfig, wlanVHTConfig, или wlanHESUConfig и дополнительно пара (Имя, Значение) для DataFormat задание входного формата MPDU. С момента создания MPDU с помощью wlanMACFrame в терминах октетов, DataFormat имеет значение octets. wlanMPDUDecode декодирует MPDU и выводит следующую информацию:
rxFrameCfg : Объект конфигурации кадров MAC типа wlanMACFrameConfig, содержащий декодированные параметры MAC.
rxMSDU : Массив ячеек, где каждый элемент представляет собой массив символов n-by-2, представляющий декодированный MSDU. Несколько MSDU возвращаются, когда MPDU содержит агрегированный MSDU (A-MSDU) в качестве полезной нагрузки.
status : Перечисление состояния типа, указывающее, было ли декодирование MPDU успешным.
% Decode the MPDU. [rxFrameCfg, rxMSDU, status] = wlanMPDUDecode(mpdu, phyCfg, ... 'DataFormat', 'octets'); % Check if the MPDU is decoded successfully disp(['Status of the MPDU decoding: ' char(status)]) % Observe the outputs, if the MPDU is decoded successfully if strcmp(status, 'Success') disp(['Type of the decoded MPDU: ' rxFrameCfg.FrameType]) disp(['Number of MSDUs in the MPDU: ' num2str(numel(rxMSDU))]) for i = 1:numel(rxMSDU) disp(['Size of MSDU-' num2str(i) ': ' num2str(size(rxMSDU{i}, 1)) ' octets']) end end
Status of the MPDU decoding: Success Type of the decoded MPDU: QoS Data Number of MSDUs in the MPDU: 1 Size of MSDU-1: 40 octets
A-MPDU является агрегацией нескольких MPDU. Типы MPDU в A-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, содержащий пять MPDU. wlanMACFrame. Созданный A-MPDU передается в wlanAMPDUDeaggregate наблюдаются функция и выходные сигналы.

Создание A-MPDU
Для формирования формата HE-SU A-MPDU, содержащего пять MPDU (кадров данных QoS), требуются следующие входные данные, причем каждый MPDU содержит 40-октетную полезную нагрузку:
txFrameCfg : Объект конфигурации кадров MAC типа wlanMACFrameConfig.
txMSDUList : Пятиэлементный массив ячеек, содержащий полезную нагрузку (MSDU) для пяти MPDU. С тех пор MSDUAggregation имеет значение false в txFrameCfgдля каждого MSDU создается отдельный MPDU.
phyCfg : Объект конфигурации физического уровня типа wlanHESUConfig.
% Create a MAC frame configuration object txFrameCfg = wlanMACFrameConfig('FrameType', 'QoS Data', ... 'FrameFormat', 'HE-SU', ... 'MPDUAggregation', true, ... 'MSDUAggregation', false); % 40-octet payload for each 'QoS Data' frame txMSDUList = repmat({randi([0, 255], 40, 1)}, 1, 5); % Physical layer configuration phyCfg = wlanHESUConfig('MCS', 3); % Create the A-MPDU containing 5 MPDUs ampdu = wlanMACFrame(txMSDUList, txFrameCfg, phyCfg);
Деагрегация A-MPDU
wlanAMPDUDeaggregate потребляет A-MPDU, объект конфигурации PHY типа wlanHTConfig, wlanVHTConfig, или wlanHESUConfig и дополнительно пара (Имя, Значение) для DataFormat задание входного формата A-MPDU. Он находит и проверяет разделители MPDU, извлекает блоки MPDU и выводит следующую информацию, которая может использоваться для дальнейшей обработки блоков MPDU:
mpduList : Массив ячеек, содержащий список MPDU, извлеченных из A-MPDU.
delimCRCFails : Логический вектор строки, представляющий действительность CRC разделителя для соответствующего индекса в mpduList. Значение true представляет, что MPDU присутствует в mpduList при соответствующем индексе может быть неправильно извлечено.
ampduStatus : Перечисление состояния типа, указывающее на успешность деагрегации A-MPDU.
% Deaggregate the A-MPDU [mpduList, delimCRCFails, ampduStatus] = wlanAMPDUDeaggregate(ampdu, phyCfg, ... 'DataFormat', 'octets'); % Observe the outputs disp(['Status of A-MPDU deaggregation: ' char(ampduStatus)]) disp(['Number of MPDUs extracted from the A-MPDU: ' num2str(numel(mpduList))]) disp(['Number of MPDUs with delimiter CRC fails: ' num2str(nnz(delimCRCFails))])
Status of A-MPDU deaggregation: Success Number of MPDUs extracted from the A-MPDU: 5 Number of MPDUs with delimiter CRC fails: 0
Декодирование списка MPDU
mpduList содержит список MPDU, извлеченных из A-MPDU. Каждый из блоков MPDU, присутствующих в списке, может быть декодирован отдельно. Однако, если delimCRCFails содержит любое true значения, MPDU, присутствующий в mpduList при соответствующем индексе может считаться недопустимым, поскольку он может быть неправильно извлечен из-за ошибки CRC разделителя.
% Decode the list of MPDUs if strcmp(ampduStatus, 'Success') % Number of MPDUs in the list numMPDUs = numel(mpduList); for i = 1:numMPDUs % Decode the MPDU only if the corresponding delimiter CRC is valid if ~delimCRCFails(i) [rxFrameCfg, rxMSDU, mpduStatus] = wlanMPDUDecode(mpduList{i}, phyCfg, ... 'DataFormat', 'octets'); disp(['MPDU-' num2str(i) ' decoding status: ' char(mpduStatus)]) disp(['MPDU-' num2str(i) ' type: ' rxFrameCfg.FrameType]) disp(['MPDU-' num2str(i) ' payload size: ' num2str(size(rxMSDU{1}, 1)) ' octets']) disp(' ') end end end
MPDU-1 decoding status: Success MPDU-1 type: QoS Data MPDU-1 payload size: 40 octets MPDU-2 decoding status: Success MPDU-2 type: QoS Data MPDU-2 payload size: 40 octets MPDU-3 decoding status: Success MPDU-3 type: QoS Data MPDU-3 payload size: 40 octets MPDU-4 decoding status: Success MPDU-4 type: QoS Data MPDU-4 payload size: 40 octets MPDU-5 decoding status: Success MPDU-5 type: QoS Data MPDU-5 payload size: 40 octets
В этом примере показано, как деагрегировать и декодировать кадры IEEE 802.11 MAC. Вы также можете исследовать приемник радиомаяка OFDM 802.11 с захваченными данными и процедурой восстановления для пакета 802.11ac Примеры декодирования кадров MAC, извлеченных из захваченных форм сигнала.
Стандарт IEEE Std 802.11™-2016 IEEE для информационных технологий - Телекоммуникации и обмен информацией между системами - Локальные и городские сети - Особые требования - Часть 11: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического уровня (PHY)
IEEE P802.11ax™/D4.1 Проект стандарта для информационных технологий - Телекоммуникации и обмен информацией между системами Локальные и городские сети - Особые требования Часть 11: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического уровня (PHY) - Поправка 6: Усовершенствования для высокой эффективности WLAN