В этом примере показано, как настроить и сгенерировать кадры MAC WLAN, а затем восстановить полезную нагрузку MSDU путем анализа кадра MAC.
Семейство стандартов IEEE ® 802.11™ поддерживает четыре типа кадров MAC: управление, данные, управление и расширение. В рамках каждого из этих типов стандарт определяет диапазон подтипов, каждый из которых служит определенной цели в сети 802.11™.
В этом примере показано, как конфигурировать, генерировать и анализировать MPDU и A-MPDU с помощью объектов и функций конфигурации WLAN Toolbox™.
Создайте объект конфигурации кадра MAC для кадра Data, указав конфигурацию физического уровня (PHY) высокоэффективного однопользовательского (HE SU).
cfgMPDU = wlanMACFrameConfig('FrameType','Data','FrameFormat','HE-SU');
Укажите MSDU как числовой вектор октетов в битовом формате. Можно также указать MSDU в качестве символьного вектора или строки октетов в шестнадцатеричном формате.
msdu = randi([0 255],32,1);
Создайте MPDU путем вызова wlanMACFrame , указывая биты в качестве выходного формата.
[mpdu,mpduLength] = wlanMACFrame(msdu,cfgMPDU,'OutputFormat','bits');
Восстановление MSDU путем вызова wlanMPDUDecode функция. Функция также возвращает объект конфигурации кадра MAC и состояние декодирования. Проверьте, что операция декодирования возвращает правильный формат кадра и отображает состояние.
[rxCfgMPDU,payload,status] = wlanMPDUDecode(mpdu,wlanHESUConfig); disp(isequal(cfgMPDU.FrameFormat,rxCfgMPDU.FrameFormat))
1
disp(status)
Success
Создайте объект конфигурации для MAC-кадра данных QoS, указав конфигурацию PHY HE SU. Включите агрегирование MPDU и отключите агрегирование MSDU.
cfgAMPDU = wlanMACFrameConfig('FrameType','QoS Data','FrameFormat','HE-SU',... 'MPDUAggregation',true,'MSDUAggregation',false);
Укажите массив ячеек MSDU, указав каждый MSDU как числовой вектор октетов в битовом формате. Можно также указать MSDU в качестве символьного вектора или строки октетов в шестнадцатеричном формате.
msduList = repmat({randi([0 255],32,1)},1,4);Создайте MPDU для конфигурации PHY HE SU путем вызова wlanMACFrame функция.
cfgPHY = wlanHESUConfig('MCS',5); [ampdu,ampduLength] = wlanMACFrame(msduList,cfgAMPDU,cfgPHY,'OutputFormat','bits');
Деагрегация A-MPDU для возврата списка MPDU путем вызова wlanAMPDUDeaggregate функция. Функция также возвращает результат проверки циклическим избыточным кодом (CRC) разделителя и состояние деагрегации A-MPDU.
[mpduList,delimiterCRCFailure,status] = wlanAMPDUDeaggregate(ampdu,cfgPHY);
Отображение количества сбоев CRC разделителя и состояния деагрегации.
disp(nnz(delimiterCRCFailure))
0
disp(status)
Success
Получение MSDU путем декодирования деагрегированных MPDU с помощью wlanMPDUDecode и отображение состояния процесса декодирования.
if strcmp(status,'Success') for i = 1:numel(mpduList) if ~delimiterCRCFailure(i) [cfg,msdu,decodeStatus] = wlanMPDUDecode(mpduList{i},cfgPHY,'DataFormat','octets'); disp(['MPDU ' num2str(i) ' decoding status: ' char(decodeStatus)]) end end end
MPDU 1 decoding status: Success MPDU 2 decoding status: Success MPDU 3 decoding status: Success MPDU 4 decoding status: Success