Высокоскоростной WiFi
Сначала скорость WiFi 1-2 Мб/с
потом 802.11a и b до 11 и 54 мб/с
OFDMA
- и тд до 30 Гб/с
Пути увеличения скорости
- Увелечение ширины полосы
- MIMO
- две антенны на передатчике и 2 на приемнике
- 4 пути
- Сумма двух сигналов
- имеем систему из двух уравнений
- знаем затухание (коэффициенты)
- решаем систему, получаем искомое
- минус в том, что знаем все это с какой-то точностью ( меняются)
- пути не всегда независимы
- Single User MIMO (802.11 ac, ax)
- Пути (стримы) принадлежат одному устройству (на каждом устройстве больше одной антенны, в Multi User мб одна)
- Например, 8 антенн => 4 устройства по 2 стрима
- Новые СКК
- QAM 16, QAM 64, QAM 256, QAM 1024
- QAM 4096 (думают делать или нет)
- Номер соответствует количеству значений одного символа (на одной несущей)
- 64 => 6 бит (можно закодировать)
- 1024 => 10 бит
- Упирается в формулу Шеннона (?)
- Каждый раз нужен в 2 раза меньший SNR
Номинальная скорость передачи данных — скорость передачи payload для пакетов
Пакет еще содержит преамбулу (передается на некоторой фиксированной СКК), состоит из:
- training fields ~ 16мкс (чтобы обозначить факт передачу)
- OFDM символ ~ 4мкс (задает параметры: длительность пакета и алгоритм СКК для payload)
При увелечении номинальной скорости, сильно играют роль накладные расходы на преамбулу и ACK-и.
Пути решения:
- аггрегирование
- блочное подтверждение
Агрегирование
Объяснение отходит от стандарта
TXOP и OFDMA
TXOP
Неясно при чем здесь TXOP
Избавляемся от слотов отсрочки.
К этому можно добавить блочное подтверждение.
A-MPDU и A-MSDU
По сути и есть агрегирование, появилось в 802.11n
A-MPDU — protocol
A-MSDU — service
A-MSDU
есть пакеты с равными src и dst mac, их можно склеить.
Вместо data в payload помещается AMSDU, состоящий из сабфреймов, каждый состоит из:
- 2 адреса (могут быть уникальными для каждого пакета (слачаи 3-х и 4-ч адресов))
- Длина
- MSDU (оригнальная data)
- Padding
Общая контрольная сумма на все сабфреймы
Минусы:
- одна контрольная сумма
A-MPDU
Все похоже, но еще есть delimeter'ы
Состав сабфрейма:
- delimeter
- резерв
- длина
- контрольная сумма (для поля length)
- подпись (ascii код буквы “N” (78))
- Нужно, чтобы восстановиться при нарушении контрольной суммы length
- MPDU (кадр канального уровня со всеми заголовками)
- Padding (чтобы выравнять длины фреймов для железок)
MPDU длиннее чем MSDU
Зато есть контрольная сумма для каждого кадра.
Btw, использование A-MPDU, предполагает наличие block ack.
OFDMA
Посылаем одну преамбулу физического уровня
Дальнейшая передача продолжается независимо в каждом из resource юнитов (поднесущие). Таким образом преамбула передается один раз для всех уровней. Таким образом увеличиваем SNR, идеально для uplink-а.
Передающая станция сообщает получателю ресурс юнит, который нужно слушать.
Блочное подтверждение
Устройства договариваются, что подтверждать будут пачками
Появилось в 802.11e. (будет в тесте)
Вопрос: В каком стандарте появился BlockAck
Ответ: Тогда, когда появился txop (видимо в 802.11e)
Посылаем много пакетов.
Потом block-ack request, указывая стартовый номер пакета
В ответ получаем битовую маску.
Нужно договориться (AddBARequest, AddBAResponse, DelBA — Management кадры, подтверждаются аком):
- Размер окна (в штуках пакетов), ограничивает память на сохранение пакетов
- Таймаут (если не использовали block-ack в течение этого времени, то забываем о соглашениях)
- Начальный seqNumber
Пакеты нумеруются по mod 4096.
Реальное окно не более чем 64 пакета. (зафиксировано в стандарте).
Останавливаем передачу не по retry limit, а по packet lifetime, иначе сложно отслеживать.
Неясно, что за packet lifetime
Размер окна также отслеживается.
- Если получили старый SN, то пакет отбрасывается
- если в пределах окна, то принимаем
- если слишком новый, то сдвигаем окно, а те пакеты, которые выпали мы передаем наверх (тк все равно все остальные мы отбросим).
- Иначе, пакеты не передаются наверх, пока не будут закрыты все дырки.
- Когда приходит Block ACK Request, также сдвигаем окно до указанного в запросе номера.
Есть два режима отправки блочных подтверждений (Immediate, Delayed).
Immediate
Сейчас все стараются использовать его.
Block Ack Response следует за Block Ack Request через SIFS
Delayed
Кроме Immediate и delayed существует:
- Постоянное отслеживание состояний
- Временное (храним не всю битовую маску, отвечаем наугад, хз зачем)
BTW
Sequence control состоит из:
- Sequence number
- Fragment number (для фрагментации)