exponenta event banner

Формирование кадров MAC 802.11

В этом примере показано, как создавать кадры 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');

Экспорт в файл PCAP

В этом примере используется 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;

Визуализация сгенерированных кадров MAC

Файлы PCAP, содержащие сгенерированные кадры MAC, можно открыть в анализаторе пакетов. Кадры, декодированные с помощью программы Wireshark, совпадают со стандартными совместимыми кадрами MAC, сгенерированными с помощью WLAN Toolbox. На этом рисунке показан анализ захваченных кадров MAC в Wireshark.

  • Кадр RTS

  • Кадр данных QoS

  • Кадр маяка

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

В этом примере показано формирование MAC-кадров для стандарта IEEE 802.11. Для просмотра сгенерированных кадров MAC можно использовать анализатор пакетов. Для передачи сформированных кадров УДС по эфиру см. примеры генерации кадров маяка OFDM 802.11 и генерации сигнала 802.11ac с кадрами УДС.

Избранная библиография

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

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

  3. Wireshark· Углублённый переход. https://www.wireshark.org/. Доступ 30 июня 2020 г.

  4. Группа, Tcpdump. Открытый репозиторий Tcpdump/Libpcap. https://www.tcpdump.org. Доступ 30 июня 2020 г.