- Что такое коммутатор и его роль в сети?
- Протокол связующего дерева (STP) — защита от петель в сети
- Как выбирается корневой коммутатор (root) и зачем он нужен?
- BPDU кадры — язык общения коммутаторов
- Что такое стоимость пути (cost)?
- Роли интерфейсов в STP
- Состояния портов в классическом STP
- Классический STP vs PVST и PVST+
- Управление приоритетом коммутатора — кто будет корнем?
- Portfast — ускоряем включение порта
- Команды для диагностики и просмотра состояния STP
- RSTP — быстрый протокол связующего дерева
- Распространённые проблемы и их решения
- Пример настройки STP и выбор корневого коммутатора
- FAQ
- Чек-лист для настройки и поддержки STP
Если бы компьютерные сети были городскими дорогами, то коммутаторы — это светофоры и развязки, которые помогают трафику не попасть в пробку. Но иногда в сети может случиться настоящий автокатастрофа — коммутационные петли. Представьте, что ваш трафик закружился по кольцу без остановки, пока не остановит вас... да, именно так! В этом хаосе сеть "захлебывается" и перестает работать.
Чтобы таких трагедий не случалось, был изобретен герой нашего рассказа — протокол связующего дерева, или 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)
Теперь вы вооружены знаниями, которые помогут вам построить надежную, гибкую и быструю сеть без петлей. Помните: протокол связующего дерева — это ваш сетевой пожарный, не дающий огню петель поглотить сеть! Удачи и поменьше сбоев в ваших сетях!