В этом примере показано, как декодировать кадры IEEE ® 802.11™ MAC.
Общий формат MAC- системы координат состоит из заголовка, тела фрейма и системы координат последовательности проверки (FCS). Заголовок содержит информацию о системе координат. Тело фрейма содержит данные, которые нужно передать. Передатчик вычисляет FCS по заголовку и телу фрейма. Приемник использует FCS, чтобы подтвердить, что заголовок и тело фрейма получены правильно. Следующая схема показывает структуру типового MAC- системы координат.
Стандарт задает четыре типа систем координат: Management, Data, Control и Extension. Существует несколько подтипов каждого типа системы координат. Они идентифицируются полями Type и Subtype поля управления системой координат в заголовке MAC.
Системы координат управления:
Системы координат, которые используются для установления и обслуживания соединения.
Эти системы координат несут информационные поля и элементы, которые указывают на возможности и строение устройства, работающего в сети 802.11. При установлении соединения эти информационные поля и элементы передаются между устройствами, чтобы соответствовать возможностям обоих устройств.
Слой MAC добавляет заголовок и FCS к телу фрейма, несущему информацию, для формирования модуля данных протокола MAC (MPDU).
Системы координат данных:
Системы координат, которые используются для передачи данных более высокого уровня.
Полезная нагрузка, предоставляемая слою MAC, называется модулем данных MAC-услуг (MSDU). Слой добавляет заголовок и 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-маяк является единственной системой координат, заданным для этого типа системы координат в [1].
В этом примере показано, как можно декодировать MAC-кадры WLAN, указанные в разделе 9.3 раздела [1] или [2]. Это также показывает, как агрегированные MAC-системы координат, указанные в разделе 9.7 [1] или [2], могут быть деагрегированы.
WLAN Toolbox™ поддерживает декодирование MPDU для следующих MAC- систем координат:
Системы координат управления: маяк
Системы координат данных: Data, Null, QoS Data, 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 в формате Non-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 на 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 Data систем координат), причем каждый 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
The 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
Этот пример продемонстрировал, как деагрегировать и декодировать MAC- систем координат IEEE 802.11. Можно также исследовать Приемник 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