Роуминг в сетях WiFi — 802.11i-r-k-v-OKC, что нам действительно нужно и как это распознать

в 16:17, , рубрики: 802.11, 802.11k, 802.11r, roaming, wifi, Беспроводные технологии, Стандарты связи

Когда речь заходит о роуминге, под этим понятием обычно скрывается два различных процесса. В мире сотовых сетей, который пришёл к нам раньше, под роумингом подразумевается способность работать в «чужой» сети, а вовсе не бесшовная миграция между базовыми станциями (handover). Незаметное перемещение между БС сотовой сети настолько естественно, что о нём вообще мало вспоминают.

В мире WiFi дела обстоят иначе, и под роумингом обычно подразумевают незаметное для пользователя перемещение между точками доступа одной сети — BSS transition, хотя повсеместное введение SMS-авторизации в ближайшем будущем должно подтолкнуть операторов к внедрению стандарта роуминга между чужими сетями WiFi в стиле сотовой инфраструктуры и на базе её идентификации.

Далее следует описание существующих технологий роуминга и способы их выявления на незнакомом оборудовании, предполагается, что читатель знаком с базовыми принципами работы WiFi.

Если оценивать роуминг переключения (который handover) в сети WiFi с позиции сотовых сетей, самым верным описанием будет такое – его НЕТ, не предусмотрен стандартом, и за много лет ситуация не изменилась. В сотовых сетях переключение абонента инициирует база на основе информационных сообщений от клиента, оценивая сигнал на клиенте от соседних баз, в WiFi решение о переключении клиент всегда принимает сам – база может только подсказать, как это сделать быстрее. Зато в WiFi есть множество стандартизированных «костылей», вполне успешно позволяющих уложить процесс смены точки доступа в 50 мс и сохранить абоненту голосовой звонок поверх IP, а также не стандартизированных разработок каждого производителя, которые могут как помочь, так и усугубить и без того грустный процесс (Ubiquity Zero HandOff – пример когда костыль сделал хуже, чем было до него). Тут можно легко кинуть в автора камень, а как же 802.11r/v – но они вовсе не обязательны в рамках WiFi, поддерживаются не всеми устройствами, и не предполагают ничего вроде принудительного перевода с резервированием полосы. Выбор куда и КОГДА переключиться — всё равно остаётся за клиентом. Более того, включение 802.11r приведёт к невозможности подключения к сети для старых клиентов, т.к. это обязательная опция в кадре 802.11! В некоторых случаях он вам не то что не нужен, а вреден (старые драйвера, принтеры сканеры и т.п. устройства).

Теория

Имея общие вводные, стоит коротко описать, что и для чего может пригодиться в WiFi для роуминга (будем называть его так).

802.11i

Поправка 2004 года, внесенная в стандарт в 2007, нацелена на безопасность и описывает аутентификацию и шифрование (WPA2). Нам интересна, т.к. процедура обмена ключами и взаимодействие с внешними ресурсами (RADIUS) вместе сильно замедляют переключение клиента между ТД. Описан первый принцип быстрого переподключения – хранения ключа PMK, правда только для тех точек где клиент один раз уже прошёл полную процедуру – т.е. быстрый возврат в сеть.

OKC (Opportunistic Key Caching)

Первые известные костыли, в процессе аутентификации 802.1x точка доступа сохраняет ключ pairwise master key (PMK) для каждого клиента, идея состояла в том чтобы этот ключ через контроллер передавался соседним точкам — за счёт чего исключалось новое обращение к RADIUS и упрощался обмен, значительно снижалось время переключения на новую точку. Не является частью стандарта, отсюда все вытекающие, однако поддерживается всеми серьёзными производителями WiFi-железа и некоторыми клиентами. Без поддержки со стороны клиента функция бесполезна, для WPA2-PSK впрочем тоже. Некоторые вендоры принудительно пытаются задействовать метод, видя сохранённый ключ, даже если клиент его не запросил в Request, иногда срабатывает.

802.11k

Radio Resource Management, поправка 2008 года, с 2012 года в стандарте, опция. Точка доступа флагом указывает в Beacon поддержку опции, при запросе со стороны клиента отправляет ему список соседних точек, клиент не тратит время на сканирование всех доступных каналов и сразу переходит на нужный и выбирает новую точку. Экономится батарейка, в High-Load также улучшается общее состояние эфира. Вместе с 802.11v может сделать жизнь клиентов достаточно комфортной, чтобы не думать об остальных технологиях (ведь точку-кандидата клиент всё равно выбирает сам) — если конечно вам не важен VoIP и магия 50 мс для WPA2-Enterprise. Без поддержки со стороны клиента бесполезна.

802.11v

Wireless Network Management (WNM) поправки опубликованы в 2011 году и в 2012 вошли в стандарт, большое количество опций. Основное назначение – эффективное управление беспроводной средой – обмен данными о среде между станциями, энергосбережение клиента, улучшение процесса роуминга и балансировки – клиенту отправляются сообщения с подходящими ТД, что адресует проблемы перегрузки точек (Load-Balancing) и “прилипших” клиентов со слабым сигналом, и некоторые другие функции. Assisted Power Saving устанавливает максимальный тайм-аут для клиента, не требуя от него частых сообщений keep-alive, Direct Milticast Service позволяет получать мультикаст-кадры на скорости подключения клиента, а не скорости соты – что освобождает эфир и сохраняет батарею (к роумингу данные функции не относятся). А вот BSS Transition очень даже относится – в её рамках существует 3 типа сообщений, это запрос от клиента на указание подходящих точек, и два сообщения от точки – Load Balancing Request в случае если точка перегружена, и просит клиента перейти на другую и Optimized Roaming Request если параметры RSSI и Data Rate не удовлетворяют минимальным требованиям ТД. Важно отметить, что это рекомендательные сообщения, и действия остаются на усмотрение клиента. Принудительное отключение возможно только в рамках проприетарных технологий Band/Load Steering/Balancing, и может быть некорректно отработано клиентом, или вовсе проигнорировано (его отключают кадрами Disassociate).

Совместное использование 802.11k/v даёт хороший результат, и в большинстве случаев домашних и малоофисных сетей достаточно для клиентов, не создавая проблем в работе различных устройств. Дальше уже идёт тяжелая артиллерия – она радикально решает основную проблему, но может вызвать побочные действия – это 802.11r.

802.11r/FT

Fast Roaming/Fast BSS Transition – 802.11r обязательна для клиента при использовании на точке, т.е. те кто его не поддерживают, не могут подключиться – это флаг в управляющих кадрах и измененный механизм обмена ключами, если абонент старый и не знает о его существовании, у него проблема (на новых устройствах даже при отсутствии поддержки функции иногда добавляют понимание данного флага, хотя по стандарту нужно полностью реализовать протокол). Может также обрушить некорректные драйвера старых клиентских адаптеров — дело в использовании при первоначальном подключении FT 4-Way Handshake для распространения общего ключа, вот что об этом говорит стандарт: «A STA shall not use any authentication algorithm except the FT authentication algorithm when using the FT Protocol».

Fast BSS Transition работает с сетями RSNA (Robust Security Network Association – WPA2) и полностью открытыми сетями. Для WPA2-PSK теряется смысл быстрого роуминга, т.к. клиент и точка всё равно обмениваются 4 пакетами, ускорять тут нечего. В расчётах не учитывается время на поиск подходящей точки, а для диапазона 5 ГГц оно может быть изрядным – необходимо отсканировать 16 каналов и найти подходящую ТД, поэтому общая стратегия как раз заключается в совместном использовании протоколов k/v и r.

Если вы используете для авторизации RADIUS и хотите очень быстрый роуминг — выбора у вас нет, только 802.11r!

Кроме самого роуминга в 802.11r потенциально есть возможность опрашивать точку о наличии необходимых клиенту ресурсах и резервировать их (QoS). Соответственно, существует два подвида протоколов — FT Protocol и FT Resource Request Protocol. Общение между клиентом и точками может происходить как напрямую через воздух (Over-the-Air), так и через используемую точку и контроллеры ( Over-the-DS) – второй способ чуть дольше. Запрос QoS от точки на клиентах пока практически нигде не реализован и не используется.

Самый важный элемент кадра – MDE, Mobility Domain Element, он необходим для успешного роуминга, который возможен только в пределах одного домена.

Затрачиваемое на переключение клиента время в зависимости от стандарта (“Performance Study of Fast BS Transition using IEEE 802.11r” by Sangeetha Bangolae, Carol Bell and Emily Qi):

Роуминг в сетях WiFi — 802.11i-r-k-v-OKC, что нам действительно нужно и как это распознать - 1

Необходимо учитывать, что это «чистое» время переключения, когда клиент уже решил что связь ухудшается, и нашёл новую точку!

Практика работы роуминга 802.11r отлично изложена в статье antonvn , не вижу смысла повторяться.

А вот работу других дополнений можно рассмотреть на примере. Добавить строчку в datasheet не сложно, сложнее заставить эту строчку работать. У меня в распоряжении есть пара точек Adtran Bluesocket (BSAP 1925), это нижний средний диапазон, сильно недотягивающий по объему функционала до лидеров рынка, но предоставляющий неплохие возможности по интеграции в операторскую сеть и хорошую стабильность и производительность. Если у вас всего 2-3 точки в одной компании, смысла для вас в них мало (только если аренда с облачным контроллером), а вот для распределенных или масштабных сетей (15-25+) – уже становится интересно. Рядом с ними идут Cambium – их сейчас для тестов под рукой нет, но коллеги хвалят. По описанию Cambium располагает чуть большим функционалом чем Bluesocket (есть 802.11r, больше типов туннелей для пользовательского трафика, возможность работы до 24 точек без внешнего контроллера и т.д. по мелочам), у Bluesocket пока только 802.11k/v/OKC – полный роуминг r обещают в следующем софте. Aruba/Cisco/Ruckus предсказуемо умеют всё из доступного на рынке – правда вопрос, будете ли вы реально это использовать. Тестировать дешевое оборудование часто неблагодарная задача, около года назад нам приносили Edimax, стабильность работы управляющего портала тогда вызвала большие вопросы, на чём тестирование завершили не вдаваясь в глубину функций. Возникают сомнения, что в такой ценовой категории смогли организовать полноценный мониторинг эфира и оповещение о соседях клиента, интересно если кто-то сможет это проверить в деле. Ubiquiti роуминг пока не поддерживает, так же как и Mikrotik (а жаль!).

Нужно ещё заметить, что наличие функции оповещения о соседях не имеет большого смысла, если точка о них не знает – т.е. необходим режим фонового сканирования каналов и поиск на них соседей. Дело в том, что в обычном режиме точки работают только на своём канале, и знать о соседях на других просто не могут! Решение с установкой всех точек на один канал опробовали Ubiquiti, доказав на практике что это плохая идея (в этом никто не сомневался) – драматично падает ёмкость.

Используемое оборудование

Используются две точки доступа Bluesocket BSAP 1925, трафик снимается двумя ноутбуками – на одном софт AirMagnet WiFi Analyzer PRO в паре с карточкой AirMagnet PCI Express Card 3 Х 3, второй ноутбкук для ловли трафика на другом канале – MacBook 2016 года с адаптером 802.11ac. Судя по дампу, со своей задачей он справился, использовалась программа Airtool version 1.6. Почему не с одного ноута? У нас есть ещё 3 USB-адаптера Proxim Orinoco a/b/g/n как раз для целей одновременного съема с 3 каналов, но они, как выяснилось, не работают с большей частью трафика современных сетей. Как только в эфире появляется любой свежий клиент или точка, анализатор перестаёт видеть большую часть трафика. Почему так происходит мы пытались разобраться, в итоге не докопавшись до глубинных деталей плюнули, что-то меняется во фрейме, вероятно виноват и 802.11ac. Вендор сообщает, что это физическая особенность адаптеров, и фикса для них не будет, имейте в виду! В итоге буквально недавно Airmagnet выпустили обновление софта и новые USB-адаптеры под него, но у нас их пока нет. А у вас скорее всего и не будет, как и анализатора Airmagnet, но так ли он вам нужен? Всё описанное ниже можно увидеть на любом устройстве, способном перейти в режим монитора и разобрать весь трафик в 5 ГГц диапазоне. Для понимания реального времени перехода необходимо запускать дамп на одном компьютере для 2 каналов с двумя независтимыми адаптерами, т.к. при использовании 2 разных машин крайне сложно точно синхронизировать время (я не уверен в точности, а речь идёт о миллисекундах), а при переходе одного адаптера по двум каналам будет теряться половина трафика.

Тестирование делали дома у друзей, одна точка стояла на кухне, другая в комнате, отделены капитальной стеной и видели друг друга с минимальным сигналом. Обстановка и наличие соседних сетей аналогичны небольшим офисам. Телефон практически сразу при попадании в помещение переключался на стоявшую в нём точку. Для усложнения задачи переход делался быстро, а сигнал стремительно падал сразу при выходе из помещения за угол – такая схема больше проверяла работу клиента, точки не успевали задействовать систему балансировки.

Работа с дампами

Дампы рассматривались в бесплатном и доступном каждому Wireshark.

802.11k
Точка анонсирует возможность отправки списка соседей в кадрах Beacon:

Роуминг в сетях WiFi — 802.11i-r-k-v-OKC, что нам действительно нужно и как это распознать - 2

Клиент при желании получить список точек по своему SSID, отправляет Action Frame. В моём случае клиент запрашивает список соседей после подключения к SSID (фильтр Wireshark по типу кадров wlan.fc.type_subtype eq 13):

Роуминг в сетях WiFi — 802.11i-r-k-v-OKC, что нам действительно нужно и как это распознать - 3

Ответ со списком соседних точек клиенту Neighbor List Report от текущей ТД, с указанием на каком канале и какую точку искать клиенту:

Роуминг в сетях WiFi — 802.11i-r-k-v-OKC, что нам действительно нужно и как это распознать - 4

802.11v
Отыскать следы работы 802.11v не получилось – для активации работы балансировки необходимо хорошо нагрузить точку, и ждать что произойдёт в эфире, в этот раз не удалось этого сделать. Bluesocket заявляет адаптивную систему балансировки, которая всегда позволяет подключиться клиенту к желаемому радио, а дальше уже при необходимости его переключает. Нет смысла выдавливать всех по умолчанию в 5 ГГц, когда 2,4 пуст, также у клиента не всегда достаточный уровень сигнала для использования пятёрки, а ему мешают подключиться к двойке. По опыту, балансировка работает, но вот поймать её работу в дамп полностью я пока не сумел – в этот раз попались только сообщения Disassociate после падения сигнала и отсутствия ответа от клиента, но клиент в это время уже переподключился самостоятельно. Свежие аппараты, как мой Xperia Z5, сразу подключаются в 5 ГГц, аналогично поступают все новые устройства Apple. Ограничился проверкой предоставления соседей, и дампом роуминга на двух каналах одновременно. В процессе разбора переключения увидел достаточно интересное – задержку передачи определенных пакетов устройством, когда канал уже установлен и работает, но трафика приложения долгое время нет. Так что при реальном тестировании определенного приложения необходимо учитывать особенности работы его и сетевого стека вашего устройства – вполне возможно, что в задержке виноват не WiFi, а ваш софт!

Особенности стэка клиента

Далее — самое интересное. Дамп с 44 канала, куда переключился клиент. По дампу видно, что с момента первого запроса до успешного обмена ключами проходит 46 миллисекунд – никакой 802.11r при использовании WPA2 preshared key просто не нужен. Всё упирается в то, насколько быстро клиент поймет необходимость переключения и найдёт нужную точку. Но самое интересное не в этом, интересное кроется в том, что трафик тестового приложения отсутствовал ещё 3 секунды! Для наглядности был запущен ping с интервалом 15мс, интервал не всегда соблюдался из-за особенностей работы WiFi и отсутствия приоритета на трафике (Best Effort). В идеале конечно нужно тестировать чем-то более разумным, но программа для запуска пинга уже была на аппарате, поэтому довольствовались ей.

Аутентификация и успешное подключение:

Роуминг в сетях WiFi — 802.11i-r-k-v-OKC, что нам действительно нужно и как это распознать - 5

После подключения появляется сетевой трафик, однако это не ICMP, а какие-то другие пакеты! И только спустя 3 секунды появляются ICMP запросы:

Роуминг в сетях WiFi — 802.11i-r-k-v-OKC, что нам действительно нужно и как это распознать - 6

Вот что в это время происходит на исходной точке доступа, сложно сказать, начал ли клиент процедуру подключения на новую точку ранее полного отключения от исходной, как это следует из дампа, т.к. время может быть не точным:

Роуминг в сетях WiFi — 802.11i-r-k-v-OKC, что нам действительно нужно и как это распознать - 7

После того как точка доступа получает последние пакеты от клиента с уровнем сигнала -80 dBm, и далее клиент не подтверждает несколько пакетов, точка отправляет ему сообщения Disassociate. Вероятно, клиент в это время уже ведёт успешную передачу на новом канале, т.к. никто не мешает ему переключаться на него для сканирования доступных точек не отключаясь от текущей, а в данном случае для этого не нужно тратить много времени.

Визуально, некоторая задержка переключения присутствует, пинги подвисают – но как показал дамп, это не проблема WiFi. Полного отключения от сети на устройстве не происходило, сигнал при переходе между помещениями падает, а потом быстро возвращается к высоким значениям.

В случае поддержки функционала BSS Transition, его наличие в дампе выявляется по указанному флагу — 802.11r, кадр Probe Request от клиента:

Роуминг в сетях WiFi — 802.11i-r-k-v-OKC, что нам действительно нужно и как это распознать - 8

Выводы?

Не стоит гоняться за технологиями ради технологий, они не всегда играют решающую роль. Даже с самыми модными WiFi-точками, последнее слово за клиентом. Ориентируясь на представленную информацию, вы сами сможете проверить ваши точки на соответствие потребностям и заявленному в описании функционалу, и выбрать технологии, которые вам необходимы.

Грамотная расстановка точек по помещению и планирование сети позволят получить хорошие результаты даже с недорогим оборудованием, точно так же используя топовое железо можно легко угробить проект необдуманным монтажом.

Автор: Skliffi

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js