В предыдущей статье мы рассмотрели основные принципы работы протокола Spanning Tree. В этой статье мы продолжим рассматривать данный протокол и поговорим о его различных реализациях.  Существует несколько стандартов данного протокола. Напомню, что исходная версия STP это стандарт IEEE 802.1D. Данный стандарт предполагает использование только одного экземпляра протокола STP для всей сети коммутаторов независимо от количества сетей VLAN. Первой существенной модификацией протокола можно назвать Rapid Spanning Tree, RSTP (IEEE 802.1w). Как можно понять из названия этого протокола, он стал работать быстрее. Одной из основных проблем классического STP является достаточно продолжительный период сходимости.  Напомним, что в классическом Spanning Tree порт последовательно находится в четырех состояниях. До тех, пока не выбран корневой коммутатор, порты находятся в специальном состоянии прослушивания (Listening), когда передаются только BPDU. Фреймы с данными в таком состоянии не передаются и не принимаются. Данное состояния длиться в соответствии со значением Forward delay timer, по умолчанию это 15 секунд. Это время STP выделяет для выбора Root Bridge. Далее порт переходит в состояние обучения (Learning) в котором фреймы с данными, приходящие на порт, изучаются и их МАС-адреса заносятся в таблицу МАС-адресов коммутатора. Но дальше эти фреймы никуда не отправляются, пересылаются по-прежнему только BPDU. Наконец, состояние пересылки (Forwarding) которое является обычным состоянием для порта и в нем передаются фреймы с обычными данными. Четвертое состояние это блокирование (Blocking) – в нем через порт не передаются никакие фреймы. Это состояние используется для исключения избыточности топологии.    Что касается общего времени, необходимого на перестроение топологии, то изначально STP требуется таймер ожидания в 20 секунд на получение BPDU. Затем порт переходит в состояние прослушивания и обучения – ещё по 15 секунд на каждое. Итого мы имеем 20 + 15 + 15 = 50 секунд на конвергенцию. Совершенно очевидно, что такой продолжительный интервал времени простоя неприемлем.  Протокол Rapid Spanning Tree использует другие состояния портов Отбрасывание (Discarding), Обучение (Learning), Пересылка (Forwarding). Состояние пересылки является отличительной особенностью RSTP и объединяет в себе блокировку и прослушивание состояния порта. То есть, если порт не является активным в данной сетевой топологии и не участвует в изучении МАС адресов, то для него применяется состояние отбрасывание. Также, если порт активен в топологии, но он не участвует в изучении МАС адресов, то для него также применяется состояние отбрасывания.   Протокол RSTP предусматривает ожидание, равное утроенному значению таймера Hello, то есть 2 * 3 = 6 секунд. То есть, если коммутатор не принял три подряд BPDU, то считается, что связь потеряна. В результате мы устраняем те самые 15 секундные задержки, которые были в STP и в совокупности время сходимости RSTP составляет менее 10 секунд.  Еще одним отличием RSTP является понятие альтернативного порта. Альтернативным портом является порт коммутатора, который является наилучшей альтернативой текущему корневому порту. В случае отказа корневого порта (имеется в виду изменение топологии сети) будет выбираться наилучший альтернативный порт, что также ускоряет конвергенцию протокола. Резервный порт - это еще одно новшество RSTP. Если в каком-то коммутаторе имеется два или более канала к одному и тому же сегменту сети, то эти избыточные порты, которые не используются после построения топологии (переводятся в состояние отбрасывания), но пропускают BPDU кадры, и являются резервными. И еще одно отличие от STP заключается в том, что в Rapid Spanning Tree коммутаторы вырабатывают собственные кадры BPDU и рассылают их по всем остальным. Протокол STP же подразумевает, что после схождения дерева этим занимается только корневой коммутатор. Это также позволяет увеличить сходимость RSTP. Стоит отметить, что STP и RSTP совместимы между собой. Однако, у RSTP сохраняется тот же недостаток, что и у STP – используется один экземпляр STP для всей сети коммутаторов независимо от количества сетей VLAN. Для включения RSTP на коммутаторах Eltex необходимо воспользоваться командой console(config)# spanning-tree mode rstp Но по умолчанию и так используется режим RSTP. Далее на конкретных портах коммутатора, непосредственно участвующих в работе RSTP необходимо включить spanning tree: console(config-if)# no spanning-tree disable Очень популярная в России до недавнего времени корпорация Cisco разработала PVST+ усовершенствованный протокол STP, в котором для каждой VLAN, настроенной в сети, используется отдельный экземпляр классического Spanning Tree. При этом стоит отметить, что скорость взаимодействия сети будет такая же, как и в исходном STP.  PVST более требователен к аппаратным мощностям коммутаторов, так как при создании экземпляра для каждой сети VLAN увеличиваются требования к ЦП и памяти. Такая модель позволяет оптимизировать классический протокол spanning-tree для трафика каждой сети VLAN. При этом, сходимость будет такая же, как и у STP, но отдельно для каждой сети VLAN Еще одно усовершенствование протокола Spanning Tree от Cisco это Rapid PVST+. Важным преимуществом данной реализации является то, что данный протокол предоставляет отдельный экземпляр RSTP для каждой сети VLAN. То есть, в каждой настроенной VLAN выполняется один экземпляр протокола связующего дерева. Каждый экземпляр Rapid PVST + в VLAN имеет один корневой коммутатор.  Принципы работы этого протокола аналогичны RSTP, и соответственно скорость сходимости также измеряется секундами. Относительным недостатком Rapid PVST+ являются повышенные требования к аппаратным мощностям участвующих в работе коммутаторов.  Протоколы PVST так или иначе связаны с Cisco, однако существует также и другие реализации STP, предназначенные для решения проблем с использованием отдельных экземпляров Spanning Tree для каждого из VLAN. Протокол Multiple Spanning Tree Protocol (MSTP), являющийся расширением протокола RSTP, позволяет настраивать отдельный экземпляр STP для любой VLAN или группы VLAN, создавая множество маршрутов передачи трафика и позволяя осуществлять балансировку нагрузки.  Протокол MSTP обратно совместим с протоколами STP и RSTP. Для включения RSTP на коммутаторах Eltex необходимо воспользоваться командой console(config)# spanning-tree mode mst console (config-mst)# Далее необходимо указать соответствие экземпляра STP и VLAN  console (config-mst)# instance_id:(1..63); vlan_range: (1..4094) И неплохо бы присвоить созданной конфигурации имя:  console (config-mst)# name test Всего можно сконфигурировать 64 экземпляра MSTP. В этой статье мы кратко рассмотрели различные реализации протокола Spanning Tree. В следующей статье мы поговорим о проблемах с безопасностью у протокола Spanning Tree. В завершение приглашаю всех читателей на бесплатное занятие, которое проведут Product Manager команды Qrator.Radar совместно с руководителем курса "Network Engineer" Алексеем Куличевым. На занятии рассмотрим основные механизмы, которые используются сетевыми инженерами для защиты от атак на протокол BGP и инцидентов случившихся в результате ошибки. Проделаем путь от привычных Route Objects, используемых для фильтрации префиксов, до популярных RPKI ROA и ASPA.