Нам пишут #1 (про Wi-Fi)

May 23, 2020 15:34


Открываю рубрику "нам пишут". В комменте к предыдущему псто был задан вот такой вопрос (стиль и орфография автора сохранены).
Хочу у тебя спросить про вайфай роуминг. Неоднократно читал, что сделать его бесшовным - сложна и дораха. Нужно специальное оборудование и кропотливая настройка. Между тем, что на прошлой работе 10 лет назад, что сейчас дома, я вообще этим не заморачивался: брал роутеры, причём самые дешёвые и разных марок, тупо задавал им один ссид; тогда каналы уже не помню какие назначал, сейчас вот для интереса назначил одинаковые (а пишут, что будут мешать друг другу!). И, на мой взгляд - это работает идеально. Переключение вообще незаметно "на глаз", если запустить непрерывный пинг, то в худшем случае пропадает один пакет и то не всегда. ЧЯДНТ?

Отвечаю.

Дьявол, как всегда, кроется в мелочах. В данном случае - в начальных условиях. А конкретно.
  • Клиентов очень мало (единицы).
  • Сами клиенты достаточно "умные" и "мощные". Например, топовые телефоны и ноутбуки, а не промышленные сканеры штрих-кодов.
  • Wi-Fi точек доступа относительно немного (единицы), они хоть как-то могут "слышать" друг друга через эфир, их зоны действия не [сильно] пересекаются.
  • Всех клиентов и все точки доступа технически возможно запихнуть в один L2-сегмент ("сегмент коллизий").
  • Отсутствует маршрутизация и фильтрация трафика, в том числе и на точках доступа. То есть вся беспроводная сеть представляет, условно говоря, "один большой коммутатор".
  • В качестве аутентификации используется обычный WPA-PSK / WPA2-PSK. Ни о каком WPA-ENT речи не идёт.
  • Объемы трафика в секунду через сеть проходят небольшие (не сотни мегабайт в секунду).

Если все эти условия выполняются, то да, городить какие-то сложные схемы / системы действительно совершенно не нужно. Всё будет прекрасно работать "и так", на самых дешёвых китайских роутерах, как и постулирует автор изначального вопроса. Но если же хотя бы одно из них отличается от "идеального мира", начинаются проблемы примерно следующего характера.

... Одна точка доступа физически не может обслуживать сильно много клиентов одновременно, ей тупо не хватает для этого вычислительных мощностей и оперативной памяти чтобы хранить ключи / сессии. Дешёвая "китайская" захлебнётся уже на дюжине активных клиентов. Подороже а-ля Ubiquiti / Mikrotik выдержит несколько десятков. Топовые Cisco-вские "зацепят" сотню-другую. Собственно, всё. Дальше надо ставить несколько таких точек.

... Но как балансировать нагрузку между ними? Клиент-то тупой, и алгоритмы у него тупые: пока сигнал находится на приемлемом уровне, он отцепляться от какой-то точки не будет, его "и здесь неплохо кормят". И плевать, что рядом есть другая точка, у которой сигнал намного мощнее. Поэтому приходится самим точкам доступа как-то "прогонять", "футболить" клиентов друг к дружке. Значит, нужна какая-то координация между ними всеми, реализация нетривиальных алгоритмов, по которым это всё делать.

... При частых "перебежках" от точки к точки вырабатывать новые сессионные ключи каждый раз становится слишком "дорого", особенно при использовании WPA-ENT. Значит, их надо расшаривать между несколькими точками, следить за их актуальностью. Без вариантов, приходится приплетать в схему некоего "арбитра", то есть устройство-контроллер. Он же (контроллер) будет автоматически регулировать мощность передатчиков соседних точек доступа, чтобы они не "гадили в эфир" друг дружке. То есть, тут уже нужна некая самообучающаяся и достаточно интеллектуальная система.

... Но как клиенту популярно объяснить "туда не ходи, сюда ходи"? В последних расширениях протокола 802.11 с литерами "k", "r", "v" можно сказать устройству "слышь, вон рядом есть точка получше, переключись-ка на неё". Но эти расширения, понятно, должны поддерживаться как сервером (то есть точкой доступа), так и самим клиентом. А если клиент слишком "тупой", то приходится банально "выбрасывать" его из сети и не отвечать на его запросы до тех пор, пока он сам не подключится туда, куда нам хочется. Сами понимаете, это неизбежный обрыв связи.

... По умолчанию в простейшем случае точки доступа представляют из себя "сетевой мост", он же bridge, он же медиаконвертер. То есть работают на втором уровне. Просто ретранслируют "всё что слышат" из провода в радиоэфир и обратно, не разбираясь и не вникая что там к чему. Соответственно, представьте, что у вас триста ноутбуков (офис средней организации), десяток точек доступа, и все они "воткнуты в один свитч" (знаю, что некрасиво, и что так делать не надо). Один из ноутбуков послал broadcast-кадр в сеть. Его ретранслируют все точки доступа. А теперь представьте, что на этот кадр кто-нибудь другой таки ответил. И такой ответивший оказался ещё и не один. Что получаем? Правильно, сетевой шторм. Эфир оказался безнадёжно загажен, на какое-то время сервис просто полёг. Значит что надо делать? Правильно, фильтровать. И / или кромсать сеть на более мелкие L2-сегменты.

... И вот тут-то мы "влетаем" в пресловутую бесшовность. Как сохранять IP-адрес клиента одним и тем же при его физическом переходе из одного L2-сегмента в другой? Может тогда на каждого клиента будет организовывать L3-сессию? Но где вычислительные мощности на это брать? А что делать с фильтрацией? Придётся сихнронизировать список открытых сессий между всеми или какой-то группой точек доступа? Ворох самых разных технических вопросов растёт в геометрической прогрессии.

... А что делать, если несколько точек работают на одном радиоканале, и их зоны покрытия пересекаются? Значит их надо как-то координировать между собой, чтобы "пока одна говорит, другая молчала бы". Попутно ещё и клиентов "строить". Тоже интересная задача.

... Ну и наконец, касаемо загрузки. Торренты могут легко "положить" даже самую мощную и грамотно построенную беспроводную сеть. Просто потому, что даже 5ГГц-эфир не резиновый. А про 2ГГц даже и говорить-то нечего. Значит нужно как-то контролировать сам трафик, вплоть до введения DPI. Не знаю как сейчас, а раньше "Яндекс" на свои конференции привозил собственное Wi-Fi оборудование и собственного NOC-а, чтобы тот сидел и руками "отстреливал" всех, у кого случайно или намеренно запущены те же торренты или жирные закачки. Поэтому на Яндексовских конференциях Wi-Fi всегда работал, а на других - обычно нет. Если же хочется мясного NOC-а заменить на железку, то придётся раскошелиться, ибо оные стоят как крыло от самолёта.

Резюмируя.

Если у тебя квартира / бар / офис человек на 10...20, то можно не париться и делать так, как описал автор вопроса: несколько дешевых точек доступа с одним SSID, и вперде. Если, скажем, гостиница на сотню-другую постояльцев, такой подход уже не прокатит. Надо брать хотя бы Ubiquiti / Mikrotik / Edimax, даже если жаба душит очень сильно. А коли речь идёт про складской комплекс, торговый центр, аэропорт, вокзал и иже с ними, то тут уже и "псевдоэнтерпрайз-сегмент" не справится. Только Cisco, только хардкор за сотни килобаксов. Увы.

Надеюсь, ответил.

P.S. Можете свободно задавать мне любые вопросы в околоITшной области, ответы на которые нельзя так просто взять и нагуглить. Если они окажутся в сфере моей компетенции, со временем накатаю аналогичный псто в качестве ответа.

wifi, ответы, ликбез, it

Previous post Next post
Up