Представьте себе оживлённый перекрёсток с множеством дорог и светофоров. Если светофоры не работают правильно, машины начнут ездить по кругу, создавая пробки и аварии. В мире сетей Ethernet таким "перекрёстком" выступают коммутаторы, а "светофором" — протокол STP (Spanning Tree Protocol). Сегодня мы погрузимся в детали работы STP, узнаем, как он спасает сеть от бесконечных петель, и как правильно его настроить, чтобы ваша сеть работала как часы, а не как бешеный карусель.


Что такое STP и зачем он нужен?

STP — это волшебник второго уровня модели OSI, который превращает сеть с множеством взаимосвязей в аккуратное древовидное дерево. Его задача — предотвратить бесконечные циклы (петли) в сети, которые могут превратить ваши коммутаторы в огнедышащих драконов, пожирающих все ресурсы.

Почему так важно избегать петель? Когда в сети образуется петля, данные пакеты начинают бесконечно кружиться между коммутаторами, словно волчки на карусели без остановки. Это приводит к перегрузке оборудования, потере связи и полному хаосу.


Как появляются петли в сети?

Возьмём простой пример. Представьте, что компьютер VPC5 отправляет широковещательный пакет. Switch1 получает этот пакет и раздаёт его по всем своим портам, кроме того, с которого пакет пришёл. Switch2 и Switch3, получив этот пакет, делают то же самое. В результате пакет начинает бегать по кольцу: Switch1 → Switch2 → Switch3 → Switch1 и так далее — бесконечный марафон.

Пример петли в сети

Такой цикл приводит к частой смене таблиц MAC-адресов на коммутаторах, из-за чего сеть становится непредсказуемой и неработоспособной.


Как работает выбор корневого коммутатора?

Для начала протокол STP выбирает главный "корень" сети — Root Bridge. Это коммутатор с наименьшим идентификатором Bridge ID. Bridge ID — это уникальный номер, состоящий из двух частей:

Компонент Описание
Приоритет Административный приоритет (0-65535), по умолчанию 32768
MAC-адрес Уникальный физический адрес коммутатора

Процесс выбора прост: каждый коммутатор считает себя корневым и отправляет сообщения BPDU (Bridge Protocol Data Unit), заявляя об этом. Если коммутатор получает BPDU с меньшим Bridge ID, он перестаёт считать себя корнем и начинает следовать указаниям "лучшего" корневого.


Что такое BPDU и TCN?

BPDU — это служебные пакеты, с помощью которых коммутаторы общаются, обмениваясь информацией о состоянии сети. Они содержат важные данные:

  • Идентификатор корневого коммутатора (Root Bridge ID)
  • Стоимость пути до корня (Root Path Cost)
  • Идентификатор отправителя (Bridge ID)
  • Идентификатор порта (Port ID)
  • Таймеры и флаги

TCN (Topology Change Notification) — специальное сообщение, которое отправляется, когда в сети меняется топология, например, порт переходит в другое состояние или выходит из строя. TCN помогает коммутаторам быстро обновить таблицы и перестроить дерево без долгих простоев.


Как STP блокирует избыточные каналы?

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

Как определяется, какой порт блокировать? Алгоритм сравнивает:

Критерий Описание Приоритет в выборе
Root Path Cost Стоимость пути до корневого моста Высокий
Bridge ID Идентификатор коммутатора Средний
Port ID Идентификатор порта Низкий

Порт с наибольшей стоимостью пути и худшими ID блокируется. Например, если у Switch2 и Switch3 два пути к корню, STP заблокирует порт с более высокой стоимостью.


Состояния портов в STP: что происходит за кулисами?

Порты в STP могут находиться в нескольких состояниях:

Состояние Что происходит? Время по умолчанию
Blocking Порт не передаёт данные, слушает только BPDU Не передаёт кадры данных
Listening Порт прослушивает BPDU, не передаёт данные Forward Delay (15 секунд)
Learning Порт учит MAC-адреса, не передаёт данные Forward Delay (15 секунд)
Forwarding Порт передаёт данные и BPDU Рабочее состояние
Disabled Порт выключен -

Зачем столько состояний? Представьте, что порт — ученик в школе. Сначала он слушает учителя (Listening), потом учится записывать заметки (Learning), а затем начинает активно участвовать в уроке (Forwarding). Этот процесс помогает избежать ошибок и циклов.


Роли портов в STP: кто что делает?

В зависимости от своей роли порт ведёт себя по-разному:

Роль порта Описание
Root Port Порт с кратчайшим путём к корневому коммутатору (единственный)
Designated Port Порт, ответственный за передачу трафика на сегмент сети
Non-Designated Port Порт, заблокированный для предотвращения петель (Blocked)
Disabled Port Выключенный порт

Например, у Switch2 и Switch3 в примере Root Port — это порт, по которому они получают BPDU от Root Bridge. Порт между Switch2 и Switch3, который блокируется, называется Non-Designated.


Таймеры и сходимость: как STP адаптируется к изменениям?

STP использует несколько таймеров:

Таймер Описание Значение по умолчанию
Hello Timer Интервал отправки BPDU от корневого 2 секунды
Max Age Время ожидания BPDU, прежде чем признать потерю корня 20 секунд
Forward Delay Время ожидания в состояниях Listening/Learning 15 секунд

Когда связь с корневым коммутатором пропадает (например, отключился порт), коммутатор ждёт Max Age, пересчитывает топологию, меняет роли портов, проходя состояния Listening и Learning. Обычно на полное восстановление связи уходит около 50 секунд — почти как ожидание автобуса в час пик.


Типичные проблемы и их решения

Проблема: Корневой порт выбран неправильно

Иногда коммутатор выбирает корневой порт с худшей пропускной способностью. Почему? Потому что стоимость порта настроена неверно.

Решение: Проверьте и исправьте стоимость порта:

interface Ethernet0/13
no spanning-tree cost 19

Удаление неправильной настройки возвращает стоимость порта к значению по умолчанию, и коммутатор выбирает более быстрый порт.


Проблема: STP отключён для VLAN

Если STP не работает для определённого VLAN, могут возникнуть петли.

Решение: Убедитесь, что STP включён для всех необходимых VLAN:

spanning-tree vlan 10

Проблема: BPDU фильтруются

Если BPDU не доходят между коммутаторами, они не смогут согласовать топологию, и сеть будет в опасности.

Решение: Убедитесь, что фильтрация BPDU отключена на портах:

interface fa0/16
no spanning-tree bpdufilter enable

Таблица соответствия скорости порта и стоимости (Sprinter, RSTP)

Скорость Стоимость (Cost)
10 Мбит/с 2 000 000
100 Мбит/с 200 000
1000 Мбит/с 20 000

Изменение стоимости помогает влиять на выбор корневого порта и "место разрыва кольца" в сети.


Защита корня (root-guard): охрана главного коммутатора

Функция root-guard позволяет закрепить корневой мост в сети, предотвращая попытки других устройств стать корневым.

Если порт с root-guard получает BPDU с более высоким приоритетом корня, он переходит в состояние несогласованности и блокирует трафик.


Часто задаваемые вопросы (FAQ)

Как узнать, какой коммутатор является корневым?

Команда show spanning-tree покажет Bridge ID и статус корня.

Почему порт находится в состоянии Blocking?

Это значит, что STP заблокировал порт для предотвращения петель.

Сколько времени занимает переключение порта из Blocking в Forwarding?

Около 30 секунд (Listening + Learning по 15 секунд).

Можно ли настроить время таймеров STP?

Да, но стоит быть осторожным, чтобы не ухудшить стабильность сети.


Чек-лист для настройки и проверки STP

  • [x] Выбрали и проверили корневой коммутатор с наименьшим Bridge ID
  • [x] Убедились, что BPDU передаются без фильтрации
  • [x] Проверили состояние портов и их роли (Root, Designated, Non-Designated)
  • [x] Настроили стоимость портов, чтобы оптимизировать выбор корневого порта
  • [x] Включили STP для всех необходимых VLAN
  • [x] Использовали root-guard на портах, где не должно быть корневых коммутаторов
  • [x] Следили за изменениями топологии с помощью TCN

Советы от профи

  • Всегда рисуйте схему сети и отмечайте роли портов, чтобы не потеряться в лабиринте связей.
  • Не бойтесь менять стоимость портов, если видите, что трафик идёт не оптимальным путём.
  • Следите за тем, чтобы BPDU не блокировались — это сердце STP.
  • Помните, что STP — ваш друг, который бережёт сеть от хаоса, но его стоит знать и уважать.

Станьте мастером сетевой магии — настройте STP правильно, и ваша сеть будет как хорошо отлаженный оркестр, где каждый порт играет свою партию без перебоев и фальшивых нот!