Вы когда-нибудь задумывались, почему сети Ethernet, состоящие из множества коммутаторов, не превращаются в гигантский круговорот пакетов, который напоминает бесконечный танец? Ответ — это протокол Spanning Tree Protocol, или просто STP. В этой статье мы подробно разберём, как STP спасает сети от хаоса, как коммутаторы договариваются, кто в их дереве будет главным, а какие порты стоит отключить, чтобы избежать сетевых петель и аварий.


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

Представьте сеть Ethernet как огромный город с множеством дорог (связей между коммутаторами). Если все дороги соединять, как попало, машинам (пакетам данных) будет сложно не заблудиться — начнется бесконечное блуждание по кругу, которое приведёт к пробкам и авариям. Вот тут на помощь и приходит STP — протокол второго уровня модели OSI, который превращает хаос в аккуратное древо с корнем в виде одного главного коммутатора (Root Bridge).

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


Почему возникают петли и чем они опасны?

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

Пример:
- Хост отправляет широковещательный пакет.
- Коммутатор пересылает его всем портам, кроме пришедшего.
- Другие коммутаторы делают то же самое.
- Пакет циркулирует бесконечно, вызывая перегрузку оборудования.

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


Как происходит выбор корневого моста?

Каждый коммутатор считает себя корневым при старте. Для определения истинного корня они обмениваются особыми сообщениями — BPDU (Bridge Protocol Data Unit). В этих пакетах содержится Bridge ID — уникальный идентификатор, состоящий из двух частей:

Поле Описание Размер
Приоритет Административный параметр выбора 2 байта
MAC-адрес Уникальный идентификатор коммутатора 6 байт

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

В результате в сети остаётся один корневой коммутатор, который посылает BPDU каждые 2 секунды.


Роли портов в STP: кто чем занимается?

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

Роль порта Описание
Root Port Порт с кратчайшим путём к корневому коммутатору, через который принимаются BPDU. У каждого не-корневого коммутатора только один такой порт.
Designated Port Назначенный порт для конкретного сегмента сети. Отвечает за пересылку трафика в этот сегмент. В каждом сегменте один Designated Port.
Non-designated Port Порт без назначения, его трафик блокируется, чтобы избежать петель.
Disabled Port Выключенный порт, не участвует в коммуникации.

Состояния портов: от блокировки до пересылки

Порты проходят через разные состояния, прежде чем станут «рабочими»:

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

Переход от Blocking к Forwarding — не спринт, а марафон. Почему? Чтобы убедиться, что сеть не будет бросать трафик в петли.


Как STP обрабатывает изменения топологии? (TCN)

Жизнь в сети не стоит на месте: порты могут падать, коммутаторы — выключаться. Чтобы об этом узнать и перестроить древо, существует уведомление Topology Change Notification (TCN).

  • Коммутатор, обнаруживший изменение, отправляет TCN через свой Root Port.
  • Сообщение подтверждается корневым мостом.
  • После этого коммутаторы обновляют таблицы MAC-адресов с ускоренным таймером, чтобы не пересылать данные в старые места.

Это похоже на пожарную тревогу: «Внимание, в сети перемены! Все к обновлению!»


Блокировка избыточных каналов: выбор места разрыва кольца

Когда в сети несколько путей к корню, STP блокирует лишние порты, чтобы не было петель.

Правила выбора порта для блокировки:

  1. Меньшая суммарная стоимость пути до корня (Root Path Cost).
  2. Меньший Bridge ID коммутатора.
  3. Меньший идентификатор порта (Port ID).

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


Таймеры и сходимость STP: сколько ждать до старта?

В STP важна скорость реакции:

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

Если связь с корнем потеряна, сети потребуется около 50 секунд, чтобы перестроиться — и это маленькая вечность в мире сети.


Что такое BPDU и что в них содержится?

BPDU — это «паспорт» коммутатора, с которым они «здороваются» и договариваются, кто главный.

Ключевые поля BPDU:

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

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


Root-guard: защита корня как охрана у врат

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

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


Настройка "места разрыва кольца" на оборудовании Sprinter

Иногда нужно вручную указать, какой порт блокировать, изменяя стоимость соединения:

Скорость канала Стоимость соединения (Cost)
10 Mb/s 2 000 000
100 Mb/s 200 000
1 Gb/s 20 000

Для настройки используется команда:

rstp <номер_порта> -c <новая_стоимость>

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


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

Когда коммутаторы включаются:

  • Каждый считает себя корнем и рассылает BPDU с собственным Bridge ID.
  • Получив BPDU с лучшим идентификатором, коммутатор перестаёт быть корнем.
  • Определяются роли портов: Root Port, Designated Port, Non-designated Port.
  • Блокируются лишние порты.
  • Порты проходят состояния Listening → Learning → Forwarding.
  • Сеть работает без петель.

Итог: как не запутаться в сетевых узлах

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


FAQ

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

Вопрос: Можно ли ускорить сходимость STP?
Ответ: Да, существуют протоколы быстрого восстановления, например, RSTP, а также можно настроить параметры таймеров, но это требует аккуратности.

Вопрос: Что будет, если в сети несколько корневых мостов?
Ответ: STP выберет единственного корневого по правилам Bridge ID, остальные перестанут претендовать.


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

  • [ ] Проверить приоритеты коммутаторов для выбора корневого моста.
  • [ ] Убедиться, что BPDU корректно передаются между устройствами.
  • [ ] Назначить функции root-guard на портах, где не должно быть корня.
  • [ ] Настроить стоимость портов для оптимального выбора путей.
  • [ ] Следить за состояниями портов (Blocking, Listening, Learning, Forwarding).
  • [ ] Тестировать срабатывание TCN при изменениях в топологии.

Советы от сети-шутника

  • Не думайте, что отключение лишних кабелей — это как убрать лишние этажи в доме, где живёт много людей. Лучше пусть есть запасные выходы, но чтобы они не мешали, пусть STP будет «дворецким» вашей сети.
  • Порты в состоянии Listening и Learning — как студенты на первом курсе: много слушают, учатся, но пока молчат. Только после экзаменов (Forwarding) они начинают работать.
  • Если сеть вдруг стала тормозить, проверьте — не устроила ли она танцы с BPDU без корня и назначенных портов!

Теперь вы знаете, как STP организует порядок в хаосе сетевых связей, и готовы стать настоящим властелином коммутаторов!