Роуминг в Wi-Fi сетях без использования контроллера

На днях попалась мне в новостной рассылке такая новость от компании D-Link: www.dlink.ru/ru/news/1/2198.html. Собственно краткое изложение новости таково. Компания D-Link для некоторых своих Wi-Fi маршрутизаторов выпустила прошивку с функционалом который непритязательно назвали «Интеллектуальное распределение Wi-Fi клиентов». Суть в том, что в сети из нескольких маршрутизаторов, соединенных и настроенных определенным образом, Wi-Fi клиента вынуждают подключаться к маршрутизатору с наилучшим уровнем сигнала.
Ничего не понятно, скажете вы.

Представим ситуацию, когда вы решили сделать у себя в квартире небольшую беспроводную сеть. Купили несколько дешевых маршрутизаторов (будем называть их далее для краткости ТД — точка доступа), назначили им одинаковый SSID (имя сети) и установили для них одинаковый пароль. Теперь вы подключаетесь к любой ТД с одним паролем. При подключении, клиент выбирает ТД с наиболее сильным сигналом и цепляется к ней. Рано или поздно, у вас к одной ТД подключатся несколько клиентов (например телевизор, компьютер, планшет, пара телефонов). Один из них однажды окажется на границе охвата этой ТД и уровень его сигнала составит, например 10% (например вы ушли в «офис» в тишине полистать хабр). В этом случае есть два варианта развития событий:
1. ТД снижает скорость передачи, чтобы подстроиться под самого слабого клиента.
2. ТД не снижает скорость передачи, клиент и ТД продолжают вещать, часть пакетов теряется, идет повторная передача, возникает огромное количество служебного трафика, который забивает эфир.
В любом случае, снижается скорость передачи для всех клиентов этой ТД. Если другие клиенты пытаются в это время поболтать по скайпу, то им это вряд-ли удастся.
Единственный выход — отключить этого слабого клиента, либо перевести его на другую ТД, с более сильным сигналом. Но проблема в том, что решение о подключении к ТД принимает только клиент, а никак не точка доступа. Поэтому нужен механизм принудительного отключения этого клиента и переключения его на другую ТД (если таковая имеется). И, исходя из текста новости, именно этот механизм D-Link нам и предлагает. Точка доступа, которая держит клиента, опрашивает точки в своей сети на предмет более высокого уровня сигнала от «слабого» клиента. И в случае, если таковые точки имеются, сбрасывает соединение со «слабым» клиентом, вынуждая того переключиться.

По невероятному совпадению у меня в наличии оказалось два устройства из списка поддерживаемых: DIR-300 (который валялся в шкафу с подозрением на нерабочее состояние) и DIR-615A почти новый, небитый, некрашеный. Оба в гугл-дизайне (цилиндрической формы, один черный, другой белый).
Нужно обновить прошивку до последней. Где взять последнюю версию прошивки? Можно пойти на ftp.dlink.ru и попробовать там найти вашу модель. Честно говоря, не самый удобный вариант, поскольку присутствует куча папок с одинаковыми названиями. Поэтому я пошел на сайт dlink.ru, в разделе «продукты и решения» нашел свою модель. Во вкладке «Загрузки» есть список и описание прошивок. Выбрал самую последнюю и скачал. В зависимости от текущей прошивки, интерфейс может меняться, поэтому процесс перепрошивки показывать не буду, в интернете полно инструкций.

Теперь нужно выбрать, какое из устройств будет работать как маршрутизатор (получать и раздавать интернет, выполнять роль DHCP сервера), а какое как точка доступа (только обеспечивать подключение клиента к Wi-Fi). Соединяем устройства проводами согласно схеме.

9c6aef12e905447ca8c572ac0a89b8ad.jpg

Если у вас больше 2-х устройств, то все точки доступа соединяются с LAN-портами маршрутизатора. Назначаем всем LAN-интерфейсам статические IP-адреса, по этим адресам мы будем получать доступ к web-интерфейсу для настройки точек.

816ea820501c44feb162a0f5e524c228.jpg

Настраиваем WAN соединение на маршрутизаторе согласно настройкам вашего провайдера.
На точках доступа удаляем все WAN соединения. В разделе настройки LAN, DHCP сервер выставляем в режим «Запретить».

48bab2cff3aa4dc7b830f4584edf3884.jpg

Всё, теперь мы имеем один маршрутизатор с настроенным интернетом и DHCP сервером, а также устройство, работающее в режиме точки доступа.
На обоих устройствах необходимо сделать одинаковый SSID. Я назвал свою тестовую сеть «Roaming».

abb971c3be8f4a759ef754d442ec2331.jpg

Теперь в web-интерфейсе в левой части ищем пункт «Wi-Fi», жмем на него и выпавшем списке выбираем пункт «Роуминг». Жмем его и в правой части экрана передвигаем ползунок вправо.

3c7ed27e4e374a15ae45a67b83bc624d.jpg

Важные настройки.
Минимальный уровень сигнала. Уровень сигнала клиента. При этом значении сигнала наша точка будет начнет опрашивать соседей на предмет того, кто лучше видит этого клиента.
46843cae853d4cc695f0c4eb06df9aeb.jpg

«Мертвая» зона (от -50% до 50%). Уровень сигнала клиента на другой точке относительно уровня сигнала на текущей.
Пример. Минимальный уровень сигнала 70%. Мертвая зона 10%. Если уровень сигнала достигнет 70%, активная точка начнет опрос соседей «Кто видит этого клиента? Какой у него уровень сигнала?». Соседи отзываются: «Я вижу. Уровень 75%». Это попадание в мертвую зону. Переключения не произойдет. Второй скажет «Я вижу. Уровень 90%». Это за пределами мертвой зоны. Активная точка сбросит соединение с клиентом. Вторая его подхватит. Эти настройки придуманы, видимо для того, чтобы клиент не прыгал постоянно между точками. Этими параметрами нужно поиграть в вашей конкретной сети.

С параметрами разобрались, повторяем настройку на втором устройстве. Теперь всё сделано согласно рекомендациям D-Link. Надо бы протестировать.

И тут до меня дошло, что для теста мне необходимо разнести точки на расстояние, когда клиент будет видеть обе точки, но при этом падение уровня сигнала будет значительным для срабатывания функции. Метров, эдак, 40–50. К сожалению, я не олигарх и у меня нет своего замка. К счастью, в ящике стола нашлась фольга. Покупка замка была отложена до лучших времён. Из фольги соорудил шапочку, которой накрывал точку доступа. С шапочкой дела пошли получше, мощность сигнала снижалась практически до границы видимости. Соответственно, и клиента эта точка видела очень плохо.
Сформировался следующий план испытаний:
1. Растащить обе точки максимально далеко. Получилось порядка 5 метров со стеной между ними.
2. Встать рядом с одной из них, присоединиться к тестовой сети. Клиент подключится к ближайшей точке, поскольку у неё сигнал лучше.
3. Потом двинуться ко второй точке. Для гарантии, активную накрыть шапочкой из фольги.
4. Переключение клиента отслеживать через web-интерфейс точек.

В общем, всё прошло по плану. Видимо потому, что это была 5 версия плана. Клиент цеплялся к точке с наилучшим сигналом. «Убитая» точка отбрасывала клиента, как и положено.
На этом можно было бы и закончить, заявленный функционал работает, клиент послушно прыгает от точки к точке. Переход происходит быстро.

Но насколько быстро? И хватит ли этого «быстро» для обеспечения непрерывного сервиса при передвижении в зоне действия всей сети? Поскольку цифры скорости переключения для меня, как для пользователя мало информативны, я решил протестировать, как будет вести себя сессия например, видеоконференции, при переключении между точками. План созрел такой:
1. Беру свой рабочий сервис ВКС. 2 аккаунта, один на ноутбуке, второй — на телефоне. Для чистоты эксперимента, ноутбук цепляю к рабочей сети, чтобы видео-поток шел не внутри одной Wi-Fi сети, а через провайдерские линии. Телефон цепляю к тестовой сети.
2. Звоню с телефона на ноутбук.
3. С телефоном ухожу ко второй точке, накрывая первую шапочкой из фольги. И слежу за качеством и наличием связи.
4. Потом контролирую через web-интерфейс факт переключения телефона между точками.

Результаты таковы. Прерывания связи не было, от слова вообще. Был момент возникновения артефакта на картинке и щелчок в звуке, предполагаю, что в момент переключения. Телефон, как и ожидалось, переключился на вторую точку.

Естественно, есть в моей программе тестирования ряд недостатков. Например, в тестовой сети было всего 2 клиента. Я не устраивал стресс-тестирование для определения максимальной скорости передвижения клиента без обрыва связи, просто ходил пешком. Я не знаю, как будут работать другие потоковые сервисы. Интересно было бы протестировать работу функции в разных подсетях (по заверениям производителя работать будет), но лень.

В качестве резюме.
1. Считаю, что функция вполне годная, по крайней мере при скромном бюджете и небольших масштабах.
2. Список поддерживаемых устройств достойный, есть в нем и AC устройства, компания обещает этот список расширять.
3. Человеку в D-Link, который писал инструкцию по настройке, я бы что-нибудь оборвал.

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

  • 30 декабря 2016 в 12:38

    0

    На скринах интерфейс 615 длинка или 300?
    Не узнаю интерфейс, это они так изменились за последнее время?
    • 30 декабря 2016 в 12:52

      0

      Оба. Видимо новый унифицированный интерфейс. В прошивке 3.0.0 web-интерфейс обоих устройств идентичен.
      • 30 декабря 2016 в 15:19

        0

        Есть еще корыстный вопрос — на 300-м скорость по кабелю/вафле мерели?

        У меня был такой, но ушел на полку из-за того что по кабелю давал максимум 20 Мбит/с, что очень печалило на тарифе в 100 Мбит/с.

        А тут появилось желание сдуть с него пыль и прошить, больно интересные скрины у вас.

  • 30 декабря 2016 в 14:13

    0

    Если бы это еще был не D-Link!

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

  • 30 декабря 2016 в 14:19

    +1

    Анонсируется фича — принудительное переключение клиента, вместо добровольного. Не увидел в тестах доказательств, что переключала именно точка, а не сам клиент прыгал на новую точку. Было бы интересно увидеть снифы беспроводного трафика в момент переключения. Как именно точка заставляет клиента быстро переключиться? Отключает через дизассоциацию и не даёт вновь проассоциироваться? Как реально работает то, что вы описываете?
    В текущем состоянии статья больше похожа на маркетинговый анонс, чем на техническую статью.
    • 30 декабря 2016 в 14:29

      0

      Честно говоря, я не особенно понимаю как оно работает)))) Предполагаю, что клиента дизассоциируют, и не дают вновь подключиться. Клиент, естественно сам прыгает, просто активная точка не позволяет клиенту подключиться обратно. В настройках есть задержка, которая (мои фантазии), наверно, отвечает за задержку переподключения к этой же точке.
      Была задача заставить работать функционал и поглядеть как оно настраивается. Задача выполнена. Вообще, смысл функции именно заставить автоматически переключиться на ближайшую точку. Полнофункциональный роуминг, похоже, вообще случайный эффект.
      Снифы есть в плане, но уже после праздников.
  • 30 декабря 2016 в 14:44 (комментарий был изменён)

    0

    Знаете после первого абзаца, я уже решился купить dir-300)), но вспомнил это же dlink. Подождём, может другие производители сделают чё-то похожее

© Habrahabr.ru