Перейти к содержанию

STP

1. Введение в Spanning Tree Protocol (STP)

Spanning Tree Protocol (STP) – это сетевой протокол, предназначенный для предотвращения петель в топологиях с избыточными соединениями. STP позволяет коммутаторам автоматически обнаруживать и отключать избыточные пути, обеспечивая бесконфликтную работу сети.

2. Зачем нужен STP?

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

  1. Петлям в сети – пакеты начинают циркулировать бесконечно, перегружая сеть.
  2. Дублированию фреймов – устройства получают одни и те же кадры по разным путям, вызывая ошибки в работе.
  3. 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

  1. Root Port (RP) – Порт с наилучшим путем к корневому мосту.
    • Выбирается на основе наименьшей стоимости пути (Path Cost).
    • У каждого коммутатора (кроме Root Bridge) может быть только один Root Port.
  2. Designated Port (DP) – Назначенный порт, который пересылает трафик в данном сегменте сети.
    • Определяется для каждого сегмента сети, чтобы обеспечить единственный активный путь к Root Bridge.
  3. Blocking Port – Порт, находящийся в режиме блокировки для предотвращения петель.
    • Не пересылает трафик и не изучает MAC-адреса.
    • Может стать активным в случае изменения топологии.
  4. Alternate Port (в RSTP) – Альтернативный путь к Root Bridge, используется в RSTP для быстрого переключения.
  5. Backup Port (в RSTP) – Запасной порт, который используется в случае отказа основного Designated Port.

3.3. Состояния портов STP

  1. Blocking (Блокировка)
    • Порт получает BPDU, но не передает кадры данных.
    • Этот режим предотвращает петли в сети.
    • Все порты, кроме порта Root Bridge и Designated Port, изначально находятся в этом состоянии.
  2. Listening (Прослушивание)
    • Порт слушает BPDU для определения топологии сети.
    • Кадры данных все еще не передаются.
    • Длится 15 секунд по умолчанию (в STP).
  3. Learning (Обучение)
    • Порт начинает изучать MAC-адреса из трафика, но еще не передает кадры данных.
    • Позволяет устройству строить таблицу MAC-адресов перед выходом в рабочий режим.
    • Длится 15 секунд по умолчанию (в STP).
  4. Forwarding (Пересылка)
    • Порт полностью активен и передает трафик.
    • Этот режим используется для нормальной работы сети.
  5. 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), быстрее находит изменения в сети.
    • mstMSTP (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