Когда речь заходит о роуминге, под этим понятием обычно скрывается два различных процесса. В мире сотовых сетей, который пришёл к нам раньше, под роумингом подразумевается способность работать в «чужой» сети, а вовсе не бесшовная миграция между базовыми станциями (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):



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

Практика работы роуминга 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:



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



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



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). В идеале конечно нужно тестировать чем-то более разумным, но программа для запуска пинга уже была на аппарате, поэтому довольствовались ей.

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



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



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



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

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

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



Выводы?


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

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

Комментарии (18)


  1. habarov
    15.10.2017 20:45

    Интересную Вы проблему подняли, сам борюсь с этим не первый год, правда, в квартире. Как-то так вышло, что одна точка доступа, поставленная жадным провайдером у входа, конечно же, не покрывает всей площади. В свое время стояли уже и D-Link, и Netgear, но в какой-то момент тех или иных начинало глючить, и их без моего ведома заменили на TP-Link. Те вроде тоже поработали недолго, а теперь при включении первой же дополнительной точки доступа пользовательские устройства заново запрашивают пароль и потом сообщают, что введен неверный.

    Честно говоря, я вообще не понимаю, что за глюки в алгоритме к этому приводят, но мой вопрос скорее такой — что бы такого поставить в квартиру, чтобы был wi-fi роутер плюс две доп. точки доступа или роутер плюс три AP и оно не умирало от странных глюков каждый месяц? Буду благодарен за совет.

    P.S. Я ненастоящий сварщик, просто особая кривизна рук монтеров от провайдеров заставила минимально разобраться в вопросе домашних сетей за 10-12 лет, но сейчас я нуждаюсь в помощи старших товарищей.


    1. Meklon
      16.10.2017 00:41

      Что-то вроде условно бюджетных Ubiquiti UniFi AP, контроллер там софтовый, насколько я помню. Лучше Ubiquiti UniFi AP AC Lite (два диапазона). 5 ГГц на загаженном диапазоне сейчас очень привлекателен. Еще можно посмотреть в сторону Mikrotik — тоже очень гибко конфигурируются.


      1. ABATAPA
        16.10.2017 16:12

        В Mikrotik не поддерживает 802.11k/r, только анонсировали и обещали. Об этом уже много раз говорилось.


      1. dimatl
        17.10.2017 10:35

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


        1. Meklon
          17.10.2017 10:46

          При наличии домашнего сервера вообще не проблема с виртуалками. Но это конкретный кейс смотреть надо. Обычному человеку бесшовность не нужна. Важнее просто переключение на станцию с хорошим сигналом, пусть и с обрывом. Люди редко бегают по квартире со стримингом чего-то.


          1. dimatl
            17.10.2017 11:03

            При наличии домашнего сервера не иметь возможность вайфаить бесшовно, это как с этим спать? Юнифай сами по себе просто обычные точки, ни чего особенного, не дешёвые, вылетать и виснуть тоже умеют, по моему мнению слишком раздут хайп вокруг домашнего использования ubiquiti.


            1. Skliffi Автор
              17.10.2017 11:16

              А как вы определяете бесшовность WiFi? У вас дома RADIUS авторизация? Иначе для вас не должно быть особой разницы, стоит два зухеля по 2к каждый, или два Ubiquiti по 8к, функционал у них в плане бесшовности одинаковый. Ubiquiti имеет смысл если нужно автоматизировать управление для большого числа точек и организовать гостевой доступ, 802.1х, т.е. такие офисные задачи. Никакого роуминга у них нет, производительность и стабильность не сильно отличается от хороших домашних устройств (можно глянуть где какие чипы, вполне возможно будут одинаковые).
              Мы один раз использовали схему, где по помещению висело 11 хороших точек, а в одной из комнат стоял обычный LTE-роутер и тоже раздавал аналогичный SSID. Телефон спокойно переключался между ними по мере необходимости, как будто точки принадлежат одному контроллеру


        1. DaemonGloom
          17.10.2017 13:06

          Для них можно один раз поставить аппаратный контроллер и радоваться жизни (UniFi Cloud Key). Или запустить контроллер на чём-нибудь типа Raspberry Pi.


    1. Skliffi Автор
      16.10.2017 12:30

      По моему опыту, в обычных 2-3 комнатных квартирах достаточно одной точки, если расположить её в правильном месте. Одну несущую стену в панельке WiFi пробивает без проблем, при тестах для статьи выставлял мощность на 2 мВт для поддержания разницы сигнала, иначе телефону не было необходимости переключаться. Может быть вам лучше вынести одну свою точку доступа по кабелю, и использовать только её, расположив скажем посередине квартиры, если комнат много и конфигурация сложная — поставить пару точек, а провайдерское устройство использовать только как маршрутизатор.
      Мы работаем с enterprise-оборудованием, нижняя граница — Bluesocket и Juniper, с Ubiquity и Mikrotik встречаюсь эпизодически, так что по домашним устройствам не подскажу, нужно смотреть в чём именно дело, знаний для удаленного диагноза у меня пока недостаточно.

      И да, посмотрите что в эфире с соседями, и уходите в пятёрку если их много


  1. Foxcool
    15.10.2017 21:40

    А стоит ли копать в эту сторону? Наверняка вайфай лучше развивать в сторону semi-mesh сетей.


  1. satandyh
    15.10.2017 22:49

    «В сотовых сетях переключение абонента инициирует база на основе информационных сообщений от клиента, оценивая сигнал на клиенте от соседних баз...» — а не наоборот ли? На сколько я помню именно UE говорит, что хочет перейти в такую-то соту и ждёт, когда новая БС подготовит ресурсы. Через старую же после получает сообщение «усё готово шеф, ресурсы выделены, можно переходить». И собственно, после удачного перехода старая БС будет уведомлена, что её ресурсы можно освобождать. Так, что тут везде «главный» — это UE, а не базовая станция.


    1. Skliffi Автор
      16.10.2017 16:41

      Судя по блогу Билайн habrahabr.ru/company/beeline/blog/202498 и другим источникам, решение о переключении принимает контроллер, руководствуясь измерениями уровней сигналов от соседних базовых станций клиентским аппаратом.


      1. satandyh
        16.10.2017 21:09

        Оу, таки да. Вы оказались правы. У меня, видать, смешались вместе HO и процедура reselection. Коллеги вместе с беглым просмотром 3GPP помогли вспомнить нюансы работы на радио.


  1. NightFlight
    16.10.2017 01:08

    Proxim Orinoco a/b/g/n не поддерживает LDPC coding, только BCC. Это модель 2007 года, так что неудивительно. А все новое оборудование почти поголовно живет на LDPC.


    1. Skliffi Автор
      17.10.2017 11:27

      Огромное спасибо, теперь знаю какой флаг смотреть. На сайте Tamos даже есть отдельный топик по этому вопросу


      1. NightFlight
        17.10.2017 12:17

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


  1. b1ora
    16.10.2017 14:05

    Всегда говорил — Wi-Fi роуминг дело клиентских устройств. У меня на CAPsMAN работает голос без провалов при проходе от точки к точке, а на старом телефоне рвется связь.


    1. Skliffi Автор
      16.10.2017 18:12

      Однако хорошие точки доступа могут помочь даже старому аппарату, вовремя заставив его инициировать переподключение, при котором он уже выберет точку с хорошим сигналом. Это интересная тема, нужно будет попробовать поймать такой процесс и описать, насколько это вообще работоспособно и нужно.
      Для новых аппаратов польза безусловна — узнал где искать новую точку, и быстро переключился. Сам по себе процесс сканирования не быстрый, особенно если добавить все каналы из DFS