Spanning Tree Protocol
Петля в локальной сети - это ситуация, при которой часть информации от коммутатора не рассылается по компьютерам, а кочует по двум параллельным маршрутам, как бы замыкающимся в кольцо. Данные при этом бесконечно кружатся по этому кольцу
Все индикаторы на панели свича будут синхронно мигать
Unicast flooding - возникает петля, когда свич только включается (у него нет таблицы мак) и на него приходит unicast кадр
- Выбор root свича и как до него добраться
- Выбор root портов
- Выбор designeted портов (которые не смотрят на root sw, порты root sw тоже входят)
- Выбор alternate порта (заблокированного)
Выбор Root switch
Приоритет 2б (по умолчанию 32768+номер vlan или инстанс MSTP) + MAC адрес 6б = Bridge ID
Bridge Protocol Data Units (BPDU) - используется для пересылки кадра между свичами раз в 2 сек для выявления петель. Она проходит и через заблокированный порт STP
Как только свичи включаются, каждый себя считает root и отправляет эту информацию соседним свичам, другой свич принимает кадры BPDU и сверяет со своим, если свой больше, то в поле bridge id будет записывать того свича
Выбор root свича происходит 15 сек
Выбор ROOT портов
- Корневой свич посылает BPDU с полем Root Path Cost, равным нулю
- Ближайший свич смотрит на скорость своего порта, куда BPDU пришел, и добавляет стоимость согласно таблице
3. Далее этот второй свич посылает этот BPDU нижестоящим коммутаторам, но уже с новым значением Root Path Cost, и далее по цепочке вниз
Если Root Path Cost одинаковый, выбирается порт с наименьшим Port Id отправителя
Выбор Designated портов
Далее выбираются назначенные (Designated) порты. Из каждого конкретного сегмента сети (линка между свичами) должен существовать только один путь по направлению к корневому свичу, иначе это петля (должен быть только один designated порт). Назначенным портом выбирается тот, который имеет лучшую стоимость в данном сегменте. У корневого свича все порты — назначенные.
И вот уже после того, как выбраны корневые и назначенные порты, оставшиеся блокируются, таким образом разрывая петлю.
Ручной выбор Root switch
-sw(conf t)# spanning-tree vlan n root primary
После команды приоритет свича станет на 8192 меньше по отношению рута, если до этого было по умолчанию, если нет, то на 4096
-sw(conf t)# spanning-tree vlan n root secondary
Выбирает запасным приоритетным свичом
Если истощается приоритет свича, он становится 1, и больше нельзя менять рут свича. В таком случае приоритет устанавливается вручную (начиная от 4096...x2)
Типы BPDU
Configuration BPDUs - для доставки информации между свитчами
TCN BPDUs - для информирования об изменении в топологии (при добавлении свича, изменении рута, падении порта)
Состояние портов STP
Таймеры STP
- Hellow Time - каждые 2 сек
- Forward delay - время когда порты свича находятся в состоянии Listening и Learning (15сек)
- Maximum age - время после которого будет объявлено TCN, если коммутатор перестал получать BPDU от соседа
BackboneFast
В этой технологии при отваливании линка (между sw1 sw3) sw2 убеждается что root sw3 живой и просто разблокирует линк с sw1. Сеть не ложится. Для того чтобы функция работала, необходимо включить её на всех коммутаторах в сети.
UplinkFast
Если основной sw выходит из строя, то access коммутатор сразу переключается на запасной и переводит его в состояние forward. Кроме того, UplinkFast позволяет коммутаторам обновить записи в таблицах коммутации, без использования TCN
PortFast
На Access sw на клиентском порту сразу включается Forwarding. Клиенты могут между собой общаться, пока работает STP
BPDU guard - функция, которая позволяет выключать порт при получении BPDU (вместо ПК подключился другой свич)
По разным причинам на коммутаторах порт может “упасть” в err-disabled. Чтобы не поднимать его вручную, можно сделать автоматическую попытку восстановления Errdisable Recovery на коммутаторе.
Симптом такой – порт находится в down, то есть выключен. Чтобы посмотреть какие порты на коммутаторе в режиме err-disabled нужно выполнить команду:
# show interfaces status
Root Guard
sw(cinfig-if)# spanning-tree guard root
Если функция включена на интерфейсе, то при получении на нём BPDU лучшего, чем текущий корневой коммутатор, порт переходит в состояние root-inconsistent (эквивалентно состоянию listening). После того как порт перестает получать BPDU, он переходит в нормальное состояние.Чтобы вывести из этого состояния, свичу нужно поменять priority (большой)
BPDU Filter (используется редко)
Выключает ссылку BPDU кадров на интерфейсе
Однонаправленные связи ?
Проблема обычно возникает в одномод? оптоволокне. Например провод на прием сломался, остается только провод на отправку. Получается однонаправленная петля, так как порты остались в своих статусах
Loop Guard
STP петля возникает когда блокированный порт в избыточной топологии ошибочно переводится в состояние forwarding(передачи). Это может возникнуть например когда блокированный STP порт перестаёт получать BPDU. Так как работа протокола STP полагается на постоянное присутствие BPDU пакетов в сети.(Designated (назначенный) порт постоянно должен передавать BPDU пакеты а non-designated должен их получать). Как только на порт перестают поступать BPDU STP понимает это как изменение топологии и исчезновение петли и переводит порт в состояние forwarding. В случае использования Loop Guard порт после прекращения получения пакетов BPDU переводится в состояние loop-inconsistent и остаются по прежнему блокированным.
UDLD
Вы посылаете приветственные сообщения, вы их получаете, и все прекрасно. Как только вы все еще посылаете приветственные сообщения, но больше их не получаете, вы понимаете, что что-то не так, и мы блокируем интерфейс.
- Aggressive - будет пытаться переустановить соединение с соседом, после чего переведет порт в состояние err-disabled. Отправит 8 request
- Normal - будет маркировать порт как undetermined
Сравнение Loop Guard и UDLD
Резюмируя:
Для ускорения используется технологии BackboneFast, UplinkFast,PortFast
логии: BPDU Guard, Root Guard, BPDU Filter, Loop Guard, UDLD
Версии STP
- STP - оригинальная версия протокола ( устарела)
- CST - открытый протокол, один экземпляр spanning-tree на всю сеть (без поддержки vlan, не поддерживает cisco оборуд)
- PVST - проприетарный протокол Cisco c поддержкой VLANs, работал только на ISL транках (практический устарела)
- PVST+ проприетарный протокол Cisco c поддержкой VLANs, работает с 802.1q транками (по умолчанию на свичах работает)
- MSTP - открытый протокол с поддержкой VLANs (расширение RSTP, делит коммутируемую сеть на регионы. Для того чтобы два и более коммутатора принадлежали одному региону MST, они должны обладать одинаковой конфигурацией MST, которая включает: номер ревизии MSTP, имя региона, карту привязки VLAN к копии связующего дерева (VLAN-to-instance mapping)
- RSTP - открытый протокол spanning-tree с быстрой сходимостью (не кладет сеть на 30сек, меньше. Не поддерживает cisco оборуд)
- Rapid PVST+ проприетарный протокол Cisco С быстрой сходимостью и поддержкой VLANs