802,11 декодирования кадра MAC

Этот пример показывает, как декодировать кадры IEEE® 802.11™ MAC.

Фон

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

Стандарт задает четыре типа кадров: управление, Данные, Управление и Расширение. Существует несколько подтипов каждого типа кадра. Они идентифицированы полями Type и Subtype поля управления кадром в заголовке MAC.

Кадры управления:

  • Кадры, которые используются для установления связи и обслуживания.

  • Эти кадры несут информационные поля и элементы, которые указывают на возможности и настройку устройства, действующего в 802,11 сетях. При установлении связи эти информационные поля и элементы передаются между устройствами, чтобы совпадать с возможностями обоих устройств.

  • Слой MAC добавляет заголовок и FCS к телу кадра, несущему информацию, чтобы сформировать Модуль данных о протоколе MAC (MPDU).

Кадры данных:

  • Кадры, которые используются, чтобы передать данные более высокого слоя.

  • Полезную нагрузку, данную слою MAC, называют Модулем эксплуатационных данных MAC (MSDU). Слой MAC добавляет заголовок и FCS к MSDU, чтобы сформировать MPDU.

  • Улучшить пропускную способность, поддержки WLAN агрегированный MSDUs (A-MSDUs) и агрегировало MPDUs (A-MPDUs), как задано в Разделах 9.3.2.2, 9.7 из [1] и [2].

  • Если агрегация MSDU включена, несколько MSDUs агрегированы, чтобы сформировать A-MSDU, и затем заголовок MAC и FCS добавляются к A-MSDU, чтобы сформировать MPDU.

  • Если агрегация MPDU включена, несколько MPDUs агрегированы, чтобы сформировать A-MPDU.

Кадры управления:

  • Кадры, которые используются, чтобы поддержать доставку данных, управления и дополнительных кадров.

  • Каждый кадр управления имеет определенную функциональность. Например, управляйте кадрами как Request To Send (RTS) и ясно отправляемый (CTS) справка в резервировании канала, чтобы избежать столкновений, в то время как Ack структурирует справку в распознавании успешной передачи.

  • Кадры управления не содержат тело кадра. Слой MAC добавляет FCS в заголовок, чтобы сформировать MPDU.

Дополнительные кадры:

  • Этот тип кадра является расширением трех типов кадра, заданных выше.

  • Маяк DMG является единственным кадром, в настоящее время заданным под этим типом кадра в [1].

Введение

Этот пример показывает, как могут декодироваться кадры ВЛАНА МАКА, заданные в Разделе 9.3 из [1] или [2]. Это также показывает, как агрегированные кадры МАКа, заданные в Разделе 9.7 из [1] или [2], могут быть deaggregated.

WLAN Toolbox™ поддерживает MPDU, декодирующий для следующих кадров MAC:

  • Кадры управления: маяк

  • Кадры данных: данные, пустой указатель, данные QoS, пустой указатель QoS

  • Кадры управления: RTS, CTS, Ack, блокирует Ack

В дополнение к декодированию MPDU WLAN Toolbox также поддерживает deaggregation A-MPDU.

Декодирование MPDU

MPDU может быть данными, управлением или типом кадра управления. wlanMPDUDecode может использоваться, чтобы декодировать MPDU. Этот функциональные процессы данный MPDU и настройка физического уровня возражают, чтобы вывести декодируемые параметры MAC.

Чтобы проиллюстрировать декодирование MPDU, допустимый MPDU создается с помощью wlanMACFrame. Созданный MPDU передается функции wlanMPDUDecode, и выходные сигналы наблюдаются.

Создайте MPDU

Кадр Данных QoS создается для этого примера с помощью wlanMACFrame. Следующие входные параметры требуются, чтобы формировать формат Non-HT кадр Данных QoS, содержащий полезную нагрузку с 40 октетами:

  1. txFrameCfg: объект настройки кадра MAC типа wlanMACFrameConfig.

  2. 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 и выводит следующую информацию:

  1. rxFrameCfg: объект настройки кадра MAC типа wlanMACFrameConfig, содержа декодируемые параметры MAC.

  2. rxMSDU: массив ячеек, где каждый элемент является n-2 символьным массивом, представляющим декодируемый MSDU. Несколько MSDUs возвращены, когда MPDU содержит агрегированный MSDU (A-MSDU) как полезная нагрузка.

  3. состояние: перечисление состояния типа, которое указывает, было ли декодирование 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 Deaggregation

A-MPDU является агрегацией нескольких MPDUs. Тип MPDUs в A-MPDU ограничивается, как задано в Разделе 9.7.3 из [1].

wlanAMPDUDeaggregate может использоваться к deaggregate A-MPDU. Этот функциональные процессы данный A-MPDU и соответствующая настройка физического уровня возражают, чтобы вывести deaggregated список MPDUs. wlanAMPDUDeaggregate способен к декодированию HT (Высокая Пропускная способность), VHT (Очень Высокая Пропускная способность), HE-SU (Высокоэффективный Отдельный пользователь) и HE-EXT-SU (Высокая эффективность Расширенный Отдельный пользователь Области значений) формат A-MPDUs, как задано в [1] и [2].

Чтобы проиллюстрировать A-MPDU deaggregation, допустимый A-MPDU, содержащий пять MPDUs, создается с помощью wlanMACFrame. Созданный A-MPDU передается функции wlanAMPDUDeaggregate, и выходные сигналы наблюдаются.

Создайте A-MPDU

Следующие входные параметры требуются, чтобы формировать формат HE-SU A-MPDU, содержащий пять MPDUs (кадры Данных QoS), каждый MPDU, содержащий полезную нагрузку с 40 октетами:

  1. txFrameCfg: объект настройки кадра MAC типа wlanMACFrameConfig.

  2. txMSDUList: пять массивов ячеек элемента, содержащих полезную нагрузку (MSDU) для пяти MPDUs. Поскольку MSDUAggregation установлен в ложь в txFrameCfg, отдельный MPDU создается для каждого MSDU.

  3. 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);

Deaggregate A-MPDU

wlanAMPDUDeaggregate использует A-MPDU, объект настройки PHY типа wlanHTConfig, wlanVHTConfig или wlanHESUConfig и опционально (Имя, Значение) пара для DataFormat, задающего формат ввода A-MPDU. Это находит и подтверждает разделители MPDU, извлекает MPDUs и выводит следующую информацию, которая может использоваться для последующей обработки MPDUs:

  1. mpduList: массив ячеек, содержащий список MPDUs, извлечен от A-MPDU.

  2. delimCRCFails: логический вектор - строка, представляющий валидность CRC разделителя для соответствующего индекса в mpduList. Значение истины представляет это, MPDU, существующий в mpduList в соответствующем индексе, не может быть правильно извлечен.

  3. ampduStatus: перечисление состояния типа, которое указывает, был ли A-MPDU deaggregation успешен.

% 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

Декодируйте список MPDUs

mpduList содержит список MPDUs, извлеченного от A-MPDU. Каждый из MPDUs, существующих в списке, может декодироваться отдельно. Однако, если 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
 

Заключение и дальнейшее исследование

Этот пример продемонстрировал, как к deaggregate и декодируют кадры MAC IEEE 802.11. Можно также исследовать 802.11 Получателя Маяка OFDM с Живыми Данными и Восстановление Сигнала 802.11ac с Преамбулой, Декодирующей примеры для декодирования кадров MAC, полученных из полученных форм волны.

Выбранная библиография

  1. Станд. IEEE 802.11™-2016 Стандарт IEEE для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Спецификации

  2. Черновой Стандарт IEEE P802.11ax™/D3.1 для Информационных технологий - Телекоммуникаций и обмена информацией между системными Локальными сетями и городскими компьютерными сетями - Часть 11 Конкретных требований: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Спецификации - Поправка 6: Улучшения для Высокой эффективности WLAN

Для просмотра документации необходимо авторизоваться на сайте