STP
1. Введение в Spanning Tree Protocol (STP)
Spanning Tree Protocol (STP) – это сетевой протокол, предназначенный для предотвращения петель в топологиях с избыточными соединениями. STP позволяет коммутаторам автоматически обнаруживать и отключать избыточные пути, обеспечивая бесконфликтную работу сети.
2. Зачем нужен STP?
В коммутируемых сетях часто применяют избыточные соединения для повышения отказоустойчивости. Однако это может привести к:
- Петлям в сети – пакеты начинают циркулировать бесконечно, перегружая сеть.
- Дублированию фреймов – устройства получают одни и те же кадры по разным путям, вызывая ошибки в работе.
- MAC-нестабильности – коммутаторы постоянно обновляют таблицы MAC-адресов, вызывая коллизии.
STP предотвращает эти проблемы, отключая ненужные пути, но сохраняя возможность быстрого восстановления соединений при отказе основного пути.
3. Основные принципы работы STP
STP создает логическое дерево, в котором один коммутатор назначается корневым (Root Bridge), а все остальные выбирают оптимальные пути к нему. Остальные избыточные порты переводятся в заблокированное (Blocking) состояние.
3.1. Выбор корневого моста (Root Bridge)
- Коммутатор с наименьшим Bridge ID становится Root Bridge.
- Bridge ID = приоритет (по умолчанию 32768) + MAC-адрес.
- Если приоритет одинаков, выигрывает коммутатор с меньшим MAC-адресом.
3.2. Типы портов STP
- Root Port (RP) – Порт с наилучшим путем к корневому мосту.
- Выбирается на основе наименьшей стоимости пути (Path Cost).
- У каждого коммутатора (кроме Root Bridge) может быть только один Root Port.
- Designated Port (DP) – Назначенный порт, который пересылает трафик в данном сегменте сети.
- Определяется для каждого сегмента сети, чтобы обеспечить единственный активный путь к Root Bridge.
- Blocking Port – Порт, находящийся в режиме блокировки для предотвращения петель.
- Не пересылает трафик и не изучает MAC-адреса.
- Может стать активным в случае изменения топологии.
- Alternate Port (в RSTP) – Альтернативный путь к Root Bridge, используется в RSTP для быстрого переключения.
- Backup Port (в RSTP) – Запасной порт, который используется в случае отказа основного Designated Port.
3.3. Состояния портов STP
- Blocking (Блокировка)
- Порт получает BPDU, но не передает кадры данных.
- Этот режим предотвращает петли в сети.
- Все порты, кроме порта Root Bridge и Designated Port, изначально находятся в этом состоянии.
- Listening (Прослушивание)
- Порт слушает BPDU для определения топологии сети.
- Кадры данных все еще не передаются.
- Длится 15 секунд по умолчанию (в STP).
- Learning (Обучение)
- Порт начинает изучать MAC-адреса из трафика, но еще не передает кадры данных.
- Позволяет устройству строить таблицу MAC-адресов перед выходом в рабочий режим.
- Длится 15 секунд по умолчанию (в STP).
- Forwarding (Пересылка)
- Порт полностью активен и передает трафик.
- Этот режим используется для нормальной работы сети.
- Disabled (Отключен)
- Порт отключен вручную администратором или из-за сбоя оборудования.
4. Типы Spanning Tree Protocol
4.1. STP (Spanning Tree Protocol, 802.1D)
Описание: Классическая версия протокола STP, разработанная для предотвращения петель в сетях Ethernet. Использует алгоритм STA (Spanning Tree Algorithm), который определяет единственный путь для передачи данных.
Назначение:
- Поддержка резервных соединений без возникновения петель.
- Автоматическое определение и отключение избыточных путей.
Задачи:
- Выбор корневого моста.
- Определение оптимального пути к Root Bridge.
- Блокировка избыточных портов.
Плюсы:
- Простая реализация.
- Поддержка большинства сетевых устройств.
Минусы:
- Долгое время конвергенции (~50 секунд).
- Не поддерживает балансировку нагрузки между VLAN.
4.2. RSTP (Rapid Spanning Tree Protocol, 802.1w)
Описание: Улучшенная версия STP с ускоренной конвергенцией и новыми состояниями портов.
Назначение:
- Обеспечение более быстрого восстановления сети.
- Поддержка альтернативных и резервных портов.
Задачи:
- Быстрое переключение на резервные пути.
- Сокращение времени восстановления после сбоев.
Плюсы:
- Существенно более быстрое восстановление (1-6 секунд).
- Поддержка альтернативных портов (Alternate и Backup Ports).
Минусы:
- Требует поддержки со стороны оборудования.
- Может усложнять конфигурацию сети.
4.3. MSTP (Multiple Spanning Tree Protocol, 802.1s)
Описание: Версия STP, позволяющая создавать несколько экземпляров STP для разных VLAN.
Назначение:
- Эффективное управление трафиком в многосегментных сетях.
- Улучшенная балансировка нагрузки между VLAN.
Задачи:
- Объединение VLAN в группы, называемые MST Instances (MSTI).
- Назначение отдельных деревьев для каждого MSTI.
Плюсы:
- Поддержка нескольких экземпляров STP.
- Улучшенная балансировка нагрузки по VLAN.
Минусы:
- Сложнее в настройке по сравнению с RSTP.
- Требует тщательной конфигурации MST регионов.
5. Процесс определения и построения STP
5.1. Выбор корневого моста (Root Bridge)
Каждое устройство в сети отправляет BPDU (Bridge Protocol Data Unit), содержащий его Bridge ID (составленный из приоритета моста и MAC-адреса). Процесс выбора корневого моста проходит в несколько этапов:
- Коммутатор с наименьшим значением Bridge ID становится Root Bridge.
- Если несколько устройств имеют одинаковый приоритет, выбирается устройство с наименьшим MAC-адресом.
- Root Bridge выполняет роль централизованного узла для всей сети STP, отправляя BPDU с нулевой стоимостью пути (Path Cost).
5.2. Распространение BPDU и выбор Root Port
- Все коммутаторы (кроме Root Bridge) получают BPDU от соседних устройств и определяют наилучший путь к Root Bridge.
- Для каждого коммутатора выбирается порт с наименьшей стоимостью пути (Path Cost) – этот порт становится Root Port.
- Если стоимость одинаковая для нескольких портов, выбирается порт с наименьшим MAC-адресом соседнего коммутатора.
5.3. Выбор Designated Port (DP) на каждом сегменте
- В каждом сегменте сети STP выбирает один Designated Port, который отвечает за пересылку трафика в сегменте.
- Выбор Designated Port происходит следующим образом:
- Порт на коммутаторе с наименьшей стоимостью пути к Root Bridge становится DP.
- Если стоимость одинаковая, выбирается порт коммутатора с наименьшим Bridge ID.
- Если Bridge ID совпадает, выбирается порт с наименьшим номером.
5.4. Оставшиеся порты переходят в состояние блокировки (Blocking Port)
- Все порты, не являющиеся Root Port или Designated Port, переходят в состояние Blocking, чтобы предотвратить петли.
- Порты в этом состоянии продолжают получать BPDU, но не пересылают кадры данных.
5.5. Таблица стоимости пути (Path Cost)
STP использует стоимость пути для определения наилучшего маршрута. Вот стандартные значения стоимости пути в зависимости от скорости соединения:
| Скорость порта | Path Cost (802.1D) | Path Cost (802.1w/802.1s) |
|---|---|---|
| 10 Mbps | 100 | 2000000 |
| 100 Mbps | 19 | 200000 |
| 1 Gbps | 4 | 20000 |
| 10 Gbps | 2 | 2000 |
| 100 Gbps | - | 200 |
| 1 Tbps | - | 20 |
5.6. Стабилизация и обновление топологии
После выбора ролей портов коммутаторы переходят через несколько состояний (Listening → Learning → Forwarding). Если топология изменяется (например, отказ Root Bridge), процесс выбора ролей портов начинается заново.
6. Настройка STP на коммутаторе
6.1. Выбор режима STP
spanning-tree mode {pvst | rapid-pvst | mst}
- Переключает STP в один из режимов:
pvst– стандартный Per-VLAN STP, для каждой VLAN свое STP-дерево.rapid-pvst– ускоренная версия STP (Rapid-PVST), быстрее находит изменения в сети.mst– MSTP (Multiple Spanning Tree), объединяет несколько VLAN в одно STP-дерево (экономит ресурсы).
6.2. Настройка корневого (root) коммутатора
Автоматическое назначение root-коммутатора
spanning-tree vlan 10 root primary
- Делает этот коммутатор главным (root) для VLAN 10.
- Сам снижает приоритет так, чтобы коммутатор точно стал root.
Ручное задание приоритета root-коммутатора
spanning-tree vlan 10 priority 4096
- Устанавливает приоритет root-коммутатора (чем ниже, тем выше шанс стать root).
- Значения:
0, 4096, 8192, ... 61440(по умолчанию 32768). - Лучший приоритет для root-коммутатора –
0или4096.
6.3. Настройка таймеров STP
spanning-tree vlan 10 hello-time 2 # Интервал отправки BPDU (по умолчанию 2 сек)
spanning-tree vlan 10 forward-time 15 # Время перехода в Forwarding (по умолчанию 15 сек)
spanning-tree vlan 10 max-age 20 # Время хранения BPDU перед признанием порта неактивным (по умолчанию 20 сек)
- hello-time – как часто отправляются BPDU (обычно 2 сек).
- forward-time – сколько ждет порт перед переходом в активное состояние.
- max-age – сколько коммутатор хранит BPDU перед признанием линка неработающим.
6.4. Настройка портов
6.4.1. Включение PortFast (ускорение загрузки порта)
interface GigabitEthernet0/1
spanning-tree portfast
- Ускоряет включение порта, сразу переводя его в Forwarding.
- Применяется ТОЛЬКО ДЛЯ ПК, СЕРВЕРОВ, ПРИНТЕРОВ!
- Не включать на портах к коммутаторам – это может привести к петлям!
Включение PortFast на всех портах для ПК
spanning-tree portfast default
6.4.2. BPDU Guard (защита от петель)
interface GigabitEthernet0/1
spanning-tree bpduguard enable
- Если на PortFast-порт (например, к ПК) приходит BPDU, порт сразу отключается.
- Защищает от случайного подключения второго коммутатора.
Включение BPDU Guard на всех портах с PortFast
spanning-tree bpduguard default
6.4.3. Root Guard (защита root-коммутатора)
interface GigabitEthernet0/2
spanning-tree guard root
- Если этот порт получает BPDU с меньшим приоритетом, порт блокируется.
- Не позволяет другим коммутаторам захватить роль root.
6.4.4. Loop Guard (защита от "тихих" петель)
interface GigabitEthernet0/3
spanning-tree guard loop
- Если BPDU перестали приходить, порт не переходит в Forwarding.
- Предотвращает петли, когда один из линков сломался, но второй остался активным.
6.4.5. Ускорение переключения резервных линков
UplinkFast (ускоряет переход на резервный uplink)
spanning-tree uplinkfast
- Если основной uplink к root-коммутатору пропадает, резервный включается мгновенно.
- Включается ТОЛЬКО на access-коммутаторах (не root!).
- Работает только в STP и PVST+ (в RSTP не нужен).
BackboneFast (ускоряет работу STP в ядре сети)
spanning-tree backbonefast
- Позволяет коммутаторам не ждать 20 секунд, если линк сломался.
- Работает ТОЛЬКО если включен на всех коммутаторах.
6.5. Настройка MSTP (Multiple Spanning Tree)
Если хотим объединить VLAN 10 и 20 в одно STP-дерево:
spanning-tree mode mst # Включаем MSTP
spanning-tree mst configuration # Входим в конфигурацию MST
name MST1 # Имя MST-домена (должно быть одинаковым на всех коммутаторах)
revision 1 # Версия конфигурации MST (должна совпадать в сети)
instance 1 vlan 10,20 # Привязываем VLAN 10 и 20 к MST-инстанции 1
exit
- Имя MST и revision должны быть одинаковыми на всех коммутаторах!
- VLAN 10 и VLAN 20 теперь имеют одно общее STP-дерево (экономия ресурсов).
Назначаем root-коммутатор для MST-инстанции 1:
spanning-tree mst 1 priority 4096
6.6. Проверка состояния STP
show spanning-tree # Общий статус STP
show spanning-tree vlan 10 # Проверка STP для VLAN 10
show spanning-tree interface GigabitEthernet0/1 # STP-статус порта
show spanning-tree mst # Статус MSTP-инстанций
show spanning-tree mst configuration # Проверка настроек MST