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

Чтобы таких трагедий не случалось, был изобретен герой нашего рассказа — протокол связующего дерева, или STP. В этой статье мы разберёмся, что это за протокол, как он спасает сеть, какие бывают его версии, как им управлять и что делать, если что-то пошло не так. Поехали!


Что такое коммутатор и его роль в сети?

Коммутатор — это сетевое устройство, которое связывает несколько компьютеров или других устройств, создавая между ними "мосты" для передачи данных. В отличие от хаба, он "видит" MAC-адреса устройств и умно направляет трафик только туда, куда нужно.

Представьте коммутатор как мудрого диспетчера на перекрестке: он знает, куда отправить каждую машину (пакет), чтобы не создавать пробок.


Протокол связующего дерева (STP) — защита от петель в сети

Если вы подсоедините коммутаторы друг к другу так, что возникнет "кольцо", данные могут ходить по кругу бесконечно. Это называется коммутационной петлёй.

Что такое коммутационная петля?

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

Поэтому STP строит в сети дерево без циклов — он "отрубает" лишние соединения, оставляя только один активный путь между двумя точками. Остальные порты при этом блокируются.


Как выбирается корневой коммутатор (root) и зачем он нужен?

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

Как проходит выбор?

Каждый коммутатор посылает BPDU кадры (Bridge Protocol Data Unit), в которых указывается его идентификатор (приоритет + MAC-адрес). Тот коммутатор, у которого наименьший идентификатор, становится корневым.

  • Приоритет — число, которое можно настраивать, чтобы административно влиять на выбор корня. Чем меньше, тем лучше.
  • MAC-адрес — уникальный аппаратный адрес устройства.

Если приоритеты равны, выигрывает коммутатор с меньшим MAC-адресом.


BPDU кадры — язык общения коммутаторов

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

Важные поля BPDU:

Поле Описание
Root Identifier Идентификатор корневого коммутатора (приоритет + MAC)
Root Path Cost Стоимость пути до корня
Bridge Identifier Идентификатор отправляющего коммутатора
Port Identifier Идентификатор порта, с которого отправлено сообщение
Message Age Возраст сообщения в секундах
Max Age Максимально допустимый возраст сообщения
Hello Time Интервал отправки BPDU
Forward Delay Время перехода портов между состояниями

Что такое стоимость пути (cost)?

Чтобы определить лучший путь к корневому коммутатору, STP использует стоимость каналов. Чем выше скорость интерфейса — тем ниже стоимость:

Скорость канала Стоимость (Cost)
10 Гбит/с 2
1 Гбит/с 4
100 Мбит/с 19
10 Мбит/с 100

Коммутатор суммирует стоимости по пути, чтобы выбрать самый "дешёвый" маршрут.


Роли интерфейсов в STP

Роль Что делает
Root Port Порт, ведущий к корневому коммутатору
Designated Port Порт, разрешающий передачу трафика на сегменте
Alternate Port Запасной порт, который блокируется для избежания петель
Non-Designated Аналог Alternate, обычно заблокирован

Состояния портов в классическом STP

Порты проходят через несколько состояний перед полной активацией:

Состояние Описание Время (сек)
Blocking Порт блокирует трафик, слушает BPDU -
Listening Порт слушает BPDU, не учит адреса 15
Learning Порт учит MAC-адреса, не передаёт данные 15
Forwarding Порт передает данные и служебные кадры -
Disabled Порт выключен физически -

В сумме для перехода в Forwarding требуется около 30 секунд — а это может быть слишком долго для современных сетей.


Классический STP vs PVST и PVST+

Классический STP (CST) строит одно дерево на всю сеть. Но что если у вас VLAN-ы — отдельные логические сети на одном физическом оборудовании?

Cisco придумала Per-VLAN Spanning Tree (PVST), чтобы строить отдельное дерево для каждого VLAN. Позже появился PVST+ — который работает с открытым протоколом 802.1Q.

Это значит, что для каждого VLAN можно иметь свой корневой коммутатор и свои заблокированные порты, что увеличивает гибкость и эффективность.


Управление приоритетом коммутатора — кто будет корнем?

Чтобы назначить определённый коммутатор корневым для VLAN, изменяют приоритет:

  • Приоритет должен быть кратен 4096 (например, 24576, 28672).
  • Меньшее значение приоритета — выше шансы стать корневым.

Есть команда удобного назначения корневого коммутатора, которая автоматически выбирает подходящее значение приоритета:

spanning-tree vlan X root primary

Portfast — ускоряем включение порта

Если к порту подключен обычный компьютер, который не создаст петли, можно использовать Portfast. Он заставляет порт сразу переходить в состояние Forwarding, минуя стадии Listening и Learning.

Но будьте осторожны! Подключение коммутаторов или мостов к Portfast-порту может привести к петлям.


Команды для диагностики и просмотра состояния STP

Команда Описание
show spanning-tree Выводит информацию о всех VLAN и портов
show spanning-tree vlan X Информация по конкретному VLAN
show spanning-tree summary Краткая статистика и состояние портов
show spanning-tree interface Детали о spanning-tree на конкретном интерфейсе

RSTP — быстрый протокол связующего дерева

Классический STP тратит около 30 секунд на перестроение после сбоя. Для ускорения появился Rapid Spanning Tree Protocol (802.1w).

Чем отличается RSTP?

  • Меньше состояний (Discarding, Learning, Forwarding).
  • Быстрое переключение с помощью механизмов proposal/agreement.
  • Независимая генерация BPDU каждым коммутатором.
  • Использование альтернативных портов заранее.

RSTP позволяет свести время сходимости к нескольким секундам — идеально для больших и динамичных сетей.


Распространённые проблемы и их решения

Проблема Решение
Выбран неправильный корневой порт Проверить стоимость (cost) интерфейсов и приоритеты
STP отключён для VLAN или интерфейса Включить STP командой spanning-tree vlan X
Фильтрация BPDU пакетов Убедиться, что нет BPDU-фильтрации на портах
Несоответствие настроек VLAN Проверить режимы портов (trunk/access) и активность VLAN
Порты не переходят в forwarding быстро Использовать Portfast для клиентских портов

Пример настройки STP и выбор корневого коммутатора

## Назначаем Switch3 корневым для VLAN 3
Switch3(config)#spanning-tree vlan 3 root primary

## Включаем Portfast на порту FastEthernet0/3
Switch2(config-if)#spanning-tree portfast

## Включаем RSTP
Switch2(config)#spanning-tree mode rapid-pvst

FAQ

Можно ли изменить приоритет коммутатора на любое число?

Нет, приоритет должен быть кратен 4096.

Что будет, если на порт с Portfast подключить другой коммутатор?

Может возникнуть коммутационная петля и сбои в сети.

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

В выводе команды show spanning-tree ищите строку "This bridge is the root".

Что делать, если порты долго переходят в состояние Forwarding?

Используйте Portfast для клиентских портов или переходите на RSTP.


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

  • [ ] Проверить активность STP для всех VLAN
  • [ ] Настроить приоритет корневого коммутатора для каждого VLAN
  • [ ] Настроить правильные стоимости портов (cost)
  • [ ] Проверить режимы портов (trunk/access)
  • [ ] Включить Portfast для клиентских портов
  • [ ] Использовать RSTP для быстрой сходимости
  • [ ] Проверить отсутствие BPDU фильтрации и access-листов, блокирующих BPDU
  • [ ] Регулярно использовать команды диагностики (show spanning-tree)

Теперь вы вооружены знаниями, которые помогут вам построить надежную, гибкую и быструю сеть без петлей. Помните: протокол связующего дерева — это ваш сетевой пожарный, не дающий огню петель поглотить сеть! Удачи и поменьше сбоев в ваших сетях!