Обзор

Проблемы избыточности

Проблемы колец 2-го уровня:

  • Нестабильность базы данных MAC-адресов — копии одного кадра, принимаются на разных портах
  • Широковещательные штормы — широковещательные рассылки распространяются непрерывно, что вызывает нарушения в работе сети
  • Множественная передача кадров — несколько копий одноадресных кадров направляются в один пункт назначения

Неустойчивость таблицы MAC-адресов

  1. PC1 отправляет кадр на PC4
  2. Кадр приходит на S2, таблица маршрутизации которого не заполнена. S2 заносит в таблицу, что PC1 подключен к его порту 11
  3. По правилам S2 рассылает кадр на все свои порты, кроме 11 (подключен PC1). В том числе рассылает S1, S3. Таблица коммутации на этих коммутаторах также не заполнена. S3 заносит в свою таблицу, что PC1 подключен к его 2 порту. S1 заносит в свою таблицу, что PC1 подключен к его 1 порту
  4. Из тех же соображений (таблица маршрутизации не заполнена) S1 отправляет пришедший кадр на все свои порты, кроме 1 (подключен S2), S3 отправляет кадр на все свои порты, кроме 2 (подключен S2)
  5. На S3 приходит тот же кадр от S1 и вынуждает его перетереть запись о PC1 в таблице маршрутизации. S1 приходит кадр от S3 и поступает аналогично. В итоге имеем ситуацию на картинке справа - S1 и S3, если на них придет кадр, предназначенный PC1 начнут “перебрасываться” кадром с порта 1 S3 на порт 2 S1 и обратно
  6. Более того S3 и S1 делают далее широковещательную рассылку кадра и отправляют кадр на S2 который также обновляет таблицу коммутации. И продолжает рассылать этот же кадр. Процесс не останавливается

Широковещательный шторм

Такое количество кадров широковещательной рассылки, которое заполняет всю доступную пропускную способность и делает сеть недоступной для любого сетевого трафика

  • Приводит к отказу в обслуживании (DoS)
  • Может возникнуть за несколько секунд и вывести сеть из строя

Может возникнуть легко:

  1. Отправляем кадр на широковещательный адрес от PC1
  2. S2 дублирует кадр на все свои порты (кроме 11). в Частности на S1 и S3
  3. S1 и S3 в свою очередь поступаю также (кроме портов 1 и 2 соответственно)
  4. И далее S3 получает широковещательный кадр от S1, S1 от S3 и поступают аналогично (в том числе отправляя на порты, к которым подсоединен S2)
  5. Процесс повторяется

На канальном уровне нет понятия ttl

Дублирование кадров

Может возникнуть в результате отправки неизвестного кадра

Неизвестный одноадресный кадр формируется, когда в таблице MAC-адресов коммутатора нет MAC-адреса назначения и ему приходится выполнить широковещательную рассылку этого кадра изо всех своих портов, за исключением того, на который он был получен (входного порта)

Решение - STP

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

Алгоритм STP

  1. Выбирается корневой мост
  2. Каждый коммутатор выбирает оптимальный путь от себя до корневого моста (путь с наименьшей стоимостью)
  3. Пути не с самой маленькой стоимостью блокируются

STP

BPDU

Формат

  1. Root ID - идентификатор корневого моста (8 байт)
  2. Root Path Cost - стоимость пути до корневого коммутатора
  3. Bridge ID - идентификатор коммутатора, который отправляет сообщение
  4. Port ID - номер порта, из которого было отправлено сообщение BPDU

9-12

wireshark

  1. Hello Timer - интервал между BPDU, 2 с (от 1 до 10)
  2. Forward Delay Timer - время в состояниях прослушивания и обучения, 15 с (от 4 до 30)
  3. Max Age Timer - максимальное время ожидания коммутатора перед попыткой изменения топологии STP, 20 с (от 6 до 40)

Все таймеры синхронизируются с корневым коммутатором

Bridge ID (BID)

  • Изначально в BID было два поля: приоритет и MAC-адрес моста
    Значение приоритета моста по умолчанию — 32768 (можно изменить)
  • Если приоритет моста не изменяется, то определяющим для выбора корневого моста становится самый низкий MAC-адрес
    поля:
  • bridge priority - приоритет коммутатора в работе STP
  • extended System ID - добавили, когда для каждого VLAN придумали строить свое STP
  • MAC Address mac-адрес коммутатора (какой?)

Алгоритм STP

Root Bridge

Мост с наименьшим идентификатором (BID) становится корневым мостом

  • Сначала сравнивается приоритет bridge priority
  • Если совпали, MAC-адеса (MAC Address)

Случай 1:

Случай 2:

Лучше явно задавать Root Bridge

Алгоритм Root bridge (поиск корневого коммутатора)

  1. Каждый коммутатор объявляет себя root, начинает рассылать BPDU со своим BridgeID
  2. Получив сообщение с меньшим BridgeID, коммутатор в BPDU начинает рассылать меньший BridgeID как RootID. Иначе продолжает расссылать свой BridgeID как RootID
  3. Процесс продолжается некоторое время, пока реальный RootID не начнут рассылать все коммутаторы в сети

Вычисление стоимостей путей до корневого коммутатора

Каждый коммутатор для каждого своего транкового* канала вычисляет стоимость пути до корневого коммутатора. Оставляет самый дешевый. Остальные каналы отключает

Как вычисляется стоимость путей

После того, как корневой коммутатор найден, корневой коммутатор продолжает рассылать BPDU, куда записывает стоимость путей до сеседних коммутаторов

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

Роли портов

Есть 3 роли портов:

  • Root Port - порт коммутатора с минимальным путем до корневого коммутатора. Должен быть активным
  • Designated Port (Переназначенный порт) - порт коммутатора с минимальным путем до корневого коммутатора, не являющийся корневым*. У корневого коммутатора все порты Designated
  • Alternate Port (в современнных stp) - выключенный порт. Не участвует в передаче трафика. Может получать BPDU, но не передает BPDU

Корневом коммутаторе все порты designated

На сегментах сети, где есть корневой порт, на противоположном конце должен быть designated порт. И наоборот. На сегментах сети, где есть designated порт, на противоположном конце должен быть корневой порт

В современных коммутаторах на сегментах сети, где на обоих концах нет корневого порта, один порт должен быть designated. designated будет порт коммутатора с меньшим bridgeID

Выбор ролей портов. Пример сложнее

Порт F0/2 коммутатора S3 становится designated, так как bridgeID коммутатора S3 меньше, чем bridgeID коммутатора S2

Случай учета приоритета порта

В ситуации выше какой порт будет иметь большую приоритетность, тот и останется в роли designated

Случай учета идентификатора (номера) порта

Итог:

  1. bridgeID
  2. Приоритет порта
  3. Идентификатор порта

Состояния портов

    • состояние блокировки
    • состояние выключен (администратором)

Эволюция STP

История версий

Типы STPОписание
STP (CST)Исходная версия IEEE 802.1D (802.1D-1998 и более ранних версий), которая предоставляет топологию без петли в сети с избыточными каналами. Также называется общим связующим деревом (CST), предполагает один экземпляр связующего дерева независимо от количества сетей VLAN
PVST+Per-VLAN Spanning Tree — усовершенствованная технология STP Cisco, которая предоставляет отдельный экземпляр протокола spanning-tree 802.1D для каждой VLAN, настроенной в сети
802.1D-2004Обновленная версия стандарта STP, в которую входит 802.1w
RSTPRapid Spanning Tree или IEEE 802.1w представляет собой эволюцию STP, обеспечивающий более высокую сходимость, чем STP
Rapid PVST+Усовершенствованный Cisco RSTP, который использует PVST+, предоставляя отдельный экземпляр 802.1w для каждой сети VLAN
MSTPMultiple Spanning Tree Protocol является стандартом IEEE, сопоставляет несколько сетей VLAN в пределах одного экземпляра протокола spanning-tree
MSTMultiple Spanning Tree (MST) представляет собой реализацию Cisco MSTP, которая предоставляет до 16 экземпляров RSTP и объединяет множество VLAN с той же физической и логической топологией в общий экземпляр RSTP

Характеристики

ProtocolStandardResources NeededConvergenceTree Calculation
STP802.1DLowSlowAll VLANs
PVST+CiscoHighSlowPer VLAN
RSTP802.1wMediumFastAll VLANs
Rapid PVST+CiscoVery highFastPer VLAN
MSTP (MST)802.1s, CiscoMedium or highFastPer Instance

Состояния и роли портов в RSTP/Rapid PVST+

Backup Port

Используется в разделяемых средах передачи данных. Вырожденный случай. Не следует использовать

За счет чего ускоряется RSTP

BPDUv2. Используется поле флагов в заголовках

  • Hello сообщения

Пограничные и непограничные порты

PortFast используется на портах, к которым подключены оконечные устройства (и только они)

  • Переводит порт в состояние forwarding
  • Обеспечивает надлежащую работу DHCP

При получении сообщения BPDU функция защиты от атак на уровне BPDU (BPDU Guard) отключает порт, на котором настроена функция PortFast.

при получении BPDU на PortFast порту, он переводится в ErrorDisabled

Конфигурация Catalyst 2960 по умолчанию

ФункцияНастройка по умолчанию
Состояние включенияВключено в сети VLAN 1
Режим связующего дереваPVST+ (Rapid PVST+ и MSTP отключены)
Приоритет коммутатора32768
Приоритет порта связующего дерева (настраивается для каждого интерфейса отдельно)128
Стоимость порта связующего дерева (настраивается для каждого интерфейса отдельно)1000 Мбит/с: 4
100 Мбит/с: 19
10 Мбит/с: 100
Приоритет порта сети VLAN (настраивается для каждой сети VLAN отдельно)128
Стоимость порта связующего дерева сети VLAN (настраивается для каждой сети VLAN отдельно)1000 Мбит/с: 4
100 Мбит/с: 19
10 Мбит/с: 100
Таймеры связующего дереваВремя приветствия: 2 секунды
Время задержки при пересылке: 15 секунд
Максимальный возраст в секундах: 20 секунд
Счетчик задержки передачи: 6 BPDU

Настройка STP

Настройка BridgeID (BID), корневого коммутатора

Метод 1 задаем корневой коммутатор и запасной корневой коммутатор автоматически

В конкретной vlan назначить коммутатору приоритет в идентификаторе BID наименьший среди всех коммутаторов сети (будет какое-то сканирование сети)

S1# configure terminal  
S1(config)# spanning-tree vlan 1 root primary

В конкретной vlan назначить коммутатору приоритет в идентификаторе BID второй по величине среди всех коммутаторов сети (будет какое-то сканирование сети)

S2# configure terminal  
S2(config)# spanning-tree vlan 1 root secondary

Метод 2 задаем приоритет bridgeID явно

Шаг - 4096, умолчание 32768

S# configure terminal  
S(config)# spanning-tree vlan 1 priority 24576

Настройка стоимости (приоритета) порта

S# configure terminal  
S(config)# interface f0/1  
S(config-if)# spanning-tree cost 25

Вернуть значение по умолчанию (128):

S# configure terminal  
S(config)# interface f0/1  
S(config-if)# no spanning-tree cost

Настройка PortFast и BPDU Guard

S2(config)# interface FastEthernet 0/11  
S2(config-if)# spanning-tree portfast  
%Warning: portfast should only be enabled on ports connected to a single host.  
Connecting hubs, concentrators, switches, bridges, etc... to this interface  
when portfast is enabled, can cause temporary bridging loops.  
Use with CAUTION
 
%Portfast has been configured on FastEthernet0/11 but will only  
have effect when the interface is in a non-trunking mode.  
S2(config-if)# spanning-tree bpduguard enable  
S2(config-if)# end

Настройка Rapid PVST+

Настроить тип STP:

S# configure terminal  
S(config)# spanning-tree mode rapid-pvst

Настроить тип порта (необязательная). Явно устанавливаем, что порт находится не в разделяемой среде:

S(config-if)# spanning-tree link-type point-to-point

Очистить STP: (чтобы пересчитать дерево, так как при работе коммутатора уже работает STP старой версии)

S# clear spanning-tree detected-protocols

Отладка STP

Убедиться, что топология протокола связующего дерева соответствует ожидаемой топологии. Убедиться, что версии протоколов STP между коммутаторами согласуются

Команды show spanning-tree и show spanning-tree vlan vlan-id для проверки статуса STP.

S1# show spanning-tree

Точечно для конкретной vlan (+ используемый протокол STP):

S1# show spanning-tree vlan vlan-id

Показать только vlan, где построено дерево stp

S1# show spanning-tree active

show running-config

Никогда не отключать STP!!!

Но если вдруг нужно:

S1# no spanning-tree

Стек коммутаторов

Можно подключить до девяти коммутаторов 3750
Один коммутатор (главный компонент стека) управляет работой стека

  • Если этот коммутатор выходит из строя, то выбирается новый главный компонент стека

В сети отображается как один объект

  • Стеку назначается один IP-адрес

У каждого коммутатора есть уникальный номер элемента стека

  • Можно настроить значение приоритета, чтобы определить, какой коммутатор является главным компонентом стека
  • У главного компонента стека наивысшее значение приоритета элемента стека

Главный компонент стека имеет файлы сохраненной и текущей конфигурации стека.

  • При использовании стека работа обслуживание ведется только с одним файлом конфигурации

В таких коммутаторах при их соединении используются особые типы портов StackWise


Switch show running-config | begin interface

Диаметр STP

Согласно рекомендациям IEEE максимальный диаметр для таймеров STP по умолчанию составляет 7 коммутаторов. Связано с ограничениями, наложенными таймерами, предусмотренными протоколами STP

Диаметр - максимальное расстояние от отправителя до получателя в сети