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

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

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

Такое количество кадров широковещательной рассылки, которое заполняет всю доступную пропускную способность и делает сеть недоступной для любого сетевого трафика
- Приводит к отказу в обслуживании (DoS)
- Может возникнуть за несколько секунд и вывести сеть из строя
Может возникнуть легко:
- Отправляем кадр на широковещательный адрес от
PC1 S2дублирует кадр на все свои порты (кроме 11). в Частности наS1иS3S1иS3в свою очередь поступаю также (кроме портов 1 и 2 соответственно)- И далее
S3получает широковещательный кадр отS1,S1отS3и поступают аналогично (в том числе отправляя на порты, к которым подсоединенS2) - Процесс повторяется
На канальном уровне нет понятия ttl
Дублирование кадров

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

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


- Выбирается корневой мост
- Каждый коммутатор выбирает оптимальный путь от себя до корневого моста (путь с наименьшей стоимостью)
- Пути не с самой маленькой стоимостью блокируются
STP
BPDU
Формат

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

- Hello Timer - интервал между BPDU, 2 с (от 1 до 10)
- Forward Delay Timer - время в состояниях прослушивания и обучения, 15 с (от 4 до 30)
- 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 (поиск корневого коммутатора)
- Каждый коммутатор объявляет себя root, начинает рассылать
BPDUсо своимBridgeID - Получив сообщение с меньшим
BridgeID, коммутатор вBPDUначинает рассылать меньшийBridgeIDкакRootID. Иначе продолжает расссылать свойBridgeIDкакRootID - Процесс продолжается некоторое время, пока реальный
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
Случай учета идентификатора (номера) порта

Итог:
- bridgeID
- Приоритет порта
- Идентификатор порта
Состояния портов

-
- состояние блокировки
-
- состояние выключен (администратором)
Эволюция 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 |
| RSTP | Rapid Spanning Tree или IEEE 802.1w представляет собой эволюцию STP, обеспечивающий более высокую сходимость, чем STP |
| Rapid PVST+ | Усовершенствованный Cisco RSTP, который использует PVST+, предоставляя отдельный экземпляр 802.1w для каждой сети VLAN |
| MSTP | Multiple Spanning Tree Protocol является стандартом IEEE, сопоставляет несколько сетей VLAN в пределах одного экземпляра протокола spanning-tree |
| MST | Multiple Spanning Tree (MST) представляет собой реализацию Cisco MSTP, которая предоставляет до 16 экземпляров RSTP и объединяет множество VLAN с той же физической и логической топологией в общий экземпляр RSTP |
Характеристики
| Protocol | Standard | Resources Needed | Convergence | Tree Calculation |
|---|---|---|---|---|
| STP | 802.1D | Low | Slow | All VLANs |
| PVST+ | Cisco | High | Slow | Per VLAN |
| RSTP | 802.1w | Medium | Fast | All VLANs |
| Rapid PVST+ | Cisco | Very high | Fast | Per VLAN |
| MSTP (MST) | 802.1s, Cisco | Medium or high | Fast | Per 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
Диаметр - максимальное расстояние от отправителя до получателя в сети