Дано – сеть, которая не-UniFi и некоторое количество точек доступа, которые UniFi. Разумеется, есть контроллер, который точками доступа рулит. И точки доступа внезапно работают в mesh-режиме. То есть в интерфейсе контроллера указано, что точка подключается именно через другую точку доступа, хотя не должна.
Вообще, за такое поведение отвечает опция “Wireless Meshing”. В некоторых версиях контроллера оно может называться, например, “Enable connectivity monitor and wireless uplink” или просто «Wireless Uplink». Сама функция нужна для того, чтобы обеспечить устройства связью в случаях, когда по проводу точка доступа работать почему-то не может, а другая точка доступа наоборот – доступна и вполне себе работает. В такой ситуации точка доступа пускает траффик по воздуху.
У нас все точки доступа подключены проводом, линки горят, PoE питание подает, с проводами проблем не наблюдается. На портах коммутаторов MAC-адреса точек доступа видны везде именно там, где им и полагается быть. Но контроллер упорно говорит, что траффик идет через другую точку доступа. Отключение опция mesh заметного положительного результата не дает. Чего происходит вообще??? Начинаем перебирать опции со стороны свитча.
В какой-то момент я обратил внимание на опцию STP, которая оказалась включена на всех портах. Давайте разберемся, как вообще работает STP в контексте описанной напасти. В нормальной ситуации включение STP на обычных портах на работу сети никак не влияет – ну рассылается BPDU на порт с компьютером, да и ладно. Дополнительная нагрузка на сеть смешная, оконечные устройства подобные пакеты просто игнорируют, все работает нормально. Но у нас-то ситуация немного другая! Технически, точка доступа – это просто свитч, причем без поддержки STP. А как поступает глупый свитч, если получает пакет, который он не понимает? Правильно, просто транслирует его дальше никак не вмешиваясь в данные.
Таким образом, у нас получается, что свитч отправляет BPDU по проводу в точку доступа. Она, в свою очередь не глядя шлет его дальше везде, куда может. А может она только по воздуху и следующая точка доступа точно так же получает этот пакет и шлет его дальше, но на этот раз уже в провод к следующему свитчу. И так по всем железкам. Неочевидный эффект заключается в том, то оба свитча считают, что помимо “штатного” линка между ними есть еще и связь по портам, которые обслуживают точки доступа. Соответственно, при построении дерева STP они тоже учитываются и нередко отключаются. Ну а точка доступа, видя, что ей перекрыли кислород по проводу, принимает единственно верное решение – работать дальше по воздуху. Как так складывается, что ответный порт не блокируется – для меня загадка. Вероятно, какой-то порт в сети тоже был заблокирован и соответствующая точка доступа тоже перешла в режим работы по воздуху.
На самом деле, я случайно увидел, что один из портов на свитче в режиме STP Forward, а другой – в режиме STP Blocking. И да, отключение STP на портах, обслуживающих точки доступа или перевод в режим Edge помог. Цепочка точек доступа распалась и нормально выстроилась, как полагается.