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

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


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

STP — это протокол канального уровня (второго уровня модели OSI), разработанный в 1985 году Радьей Перлман, которую ласково называют "Мамой Интернета". Основная задача STP — убрать избыточные связи (петли) в сети, чтобы пакеты не бегали по кругу, занимая всё пропускное пространство и не позволяя нормальной работе сети.

Почему петли — это зло?

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

Вот что происходит:

Шаг Описание действия
1 Хост посылает широковещательный пакет
2 Коммутатор отправляет копии на все порты, кроме входящего
3 Другие коммутаторы получают пакет и тоже рассылют дальше
4 Пакеты возвращаются к исходным коммутаторам, повторяются и умножаются бесконечно

В итоге — сеть забивается, производительность падает, а люди на работе начинают звонить в ИТ со словами: "У меня интернет упал!"


Основные понятия и термины в STP

Чтобы понять работу STP, нужно познакомиться с несколькими важными терминами:

Термин Что это? Аналогия
Bridge (мост) Коммутатор, который соединяет сегменты сети Узловая станция метро
Port (порт) Точка подключения к коммутатору Ворота или дверь
Root Bridge (корневой мост) Главный коммутатор в сети, центр дерева Король замка
Root Port (корневой порт) Порт, ведущий к корневому мосту по кратчайшему пути Главный проход к королевской комнате
Designated Port (назначенный порт) Порт, выбранный для передачи трафика на сегмент Приглашённый гость, ответственный за вход
Non-designated Port (неназначенный порт) Порт, заблокированный для предотвращения петель Закрытая дверь
BPDU (Bridge Protocol Data Unit) Сообщения между коммутаторами для обмена информацией STP Посланцы с новостями
Path Cost (стоимость пути) Метрика, основанная на скорости канала, для выбора маршрута Расстояние или сложность пути

Как выбирается корневой коммутатор?

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

Bridge ID состоит из:

  • Приоритета (Bridge Priority) — число от 0 до 65535, задаваемое администратором (по умолчанию 32768)
  • MAC-адреса — уникального аппаратного адреса

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


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

После выбора корневого коммутатора каждый коммутатор определяет для себя:

  • Root Port — единственный порт с минимальной суммарной стоимостью пути к корневому коммутатору. Это главный путь наверх.
  • Designated Port — порт, выбранный для обслуживания сегмента сети. В каждом сегменте есть только один назначенный порт.
  • Non-designated Port — порт, который блокируется для предотвращения петель.
  • Disabled Port — порт, выключенный или не участвующий в STP.

Состояния портов: от новичка до профессионала

Порты не сразу начинают пропускать трафик. Они проходят через несколько состояний, словно ученик в школе:

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

Переходы — это осторожная процедура, чтобы не нарушить стабильность сети.


Как происходит блокировка избыточных каналов?

Вернёмся к нашему примеру с тремя коммутаторами Switch1, Switch2 и Switch3, соединёнными в треугольник. STP автоматически вычисляет стоимость путей до корневого моста и выбирает порты, которые нужно блокировать, чтобы убрать петли.

Как это делается?

  • Коммутаторы обмениваются BPDU, сообщая свои Bridge ID и стоимости пути.
  • Определяется кратчайший путь к корневому мосту для каждого сегмента.
  • Порты, не являющиеся root или designated, переводятся в состояние Blocking.

Например, если путь через Switch2 дешевле, чем через Switch3, то порт Switch3 на этом сегменте блокируется.


BPDU: посланцы сети

BPDU — это маленькие пакетики с новостями, которые коммутаторы посылают друг другу каждые 2 секунды (по умолчанию). В них содержится информация о:

  • Корневом коммутаторе (Root Bridge ID)
  • Стоимости пути до корня (Root Path Cost)
  • Идентификаторе отправителя (Bridge ID)
  • Идентификаторе порта отправителя (Port ID)
  • Таймерах (Hello, Max Age, Forward Delay)

Коммутаторы сравнивают полученные BPDU с собственными и решают, кто корень, какие порты активны, а какие блокируются.


Таймеры в STP: как долго ждать?

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

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

Общая задержка при перестройке сети может достигать 50 секунд — не самый быстрый способ, зато надёжный.


Расширения и эволюция STP

Протокол STP развивается, и появились его улучшения:

Протокол Особенности Стандарт IEEE
RSTP (Rapid STP) Быстрая сходимость, уменьшение времени восстановления сети 802.1w
PVSTP (Per-VLAN STP) Отдельный экземпляр STP для каждого VLAN (Cisco) Проприетарный Cisco
MSTP (Multiple STP) Группировка VLAN с одинаковой топологией в один экземпляр STP 802.1s
SPB (Shortest Path Bridging) Устранение необходимости блокировки портов, использование кратчайших путей IEEE 802.1aq

Как и зачем менять стоимость порта?

Стоимость порта (Port Cost) влияет на выбор маршрута к корневому мосту: чем ниже стоимость, тем предпочтительнее путь. Стоимость связана со скоростью канала и может быть изменена вручную.

Скорость порта Стандартная стоимость (802.1D-1998) Стоимость (802.1W-2001)
4 Мбит/с 250 5 000 000
10 Мбит/с 100 2 000 000
100 Мбит/с 19 200 000
1 Гбит/с 4 20 000
10 Гбит/с 2 2 000

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


Что такое TCN и как протокол реагирует на изменения?

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

  • Коммутатор с изменением отправляет TCN через Root Port к корневому мосту.
  • Корневой мост уведомляет все коммутаторы об изменении, устанавливая флаг Topology Change Acknowledgement (TCA).
  • В результате коммутаторы ускоренно обновляют таблицы MAC-адресов, сокращая время "застоя" сети.

Практические советы по настройке STP

  • Задайте корневой мост вручную — настройте Bridge Priority у коммутатора, который должен стать корнем, чтобы избежать спонтанных выборов.
  • Используйте защиту корня (root-guard) на портах, где не должен появиться корневой мост.
  • Настройте стоимость портов (port cost) для управления выбором оптимальных путей.
  • Обновляйте прошивки коммутаторов для поддержки Rapid STP и других улучшений.
  • Мониторьте BPDU-трафик для обнаружения несанкционированных изменений сети.

FAQ

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

Почему порт может быть заблокирован?
Чтобы предотвратить петли, STP блокирует избыточные порты.

Что такое корневой порт?
Порт с минимальной стоимостью пути к корневому коммутатору.

Сколько времени занимает перестройка STP?
Около 30–50 секунд, в зависимости от таймеров.

Можно ли ускорить работу STP?
Да, с помощью RSTP или настроек port cost и root priority.


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

  • [ ] Определить и назначить корневой мост (низкий Bridge Priority)
  • [ ] Проверить корректность работы BPDU
  • [ ] Настроить port cost для оптимизации маршрутов
  • [ ] Включить root-guard на портах, где это необходимо
  • [ ] Обеспечить поддержку RSTP для быстрой сходимости
  • [ ] Мониторить сеть на появление топологических изменений

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