Андрей Смирнов
Время чтения: ~14 мин.
Просмотров: 19

О сетях передачи данных

Previous Entry | Next Entry

Семестр 3. Глава 5. STP

STP (Spanning Tree Protocol) — протокол второго уровня, позволяющий в сети с избыточными соединениями использовать только один логический путь, блокируя избыточные пути, который могут привести к образованию петель.В случае, если один из участков пути будет недоступен, протокол STP вычислит новый путь и разблокирует один из заблокированных участков.STP использует Spanning Tree Algorithm (STA), чтобы определить, какой из портов коммутатора перевести в заблокированное состояние. Для этого STA определяет один из коммутаторов, как root bridge и использует его как точку отсчета для расчета всех путей. После того, как root bridge выбран, STA рассчитывает кратчайший путь к root bridge. Каждый коммутатор использует STA, чтобы определить, какой порт блокировать. Пока STA выбирает кратчайшие пути, коммутатор не имеет возможности передавать данные по сети. Для определения кратчайшего пути STA использует стоимость пути. Стоимость пути рассчитывается исходя из скоростей всех портов на протяжении пути. Сумма стоимостей участков в пути составляет стоимость пути. Если есть больше чем один путь, STA выбирает путь с меньшей стоимостью. Когда STA определил, какие пути оставить доступными, он назначает роли портам коммутаторов.Роли портовRoot (корневые) порты — порты некорневых коммутаторов, через которые проходит трафик в сторону корневого коммутатора. Может быть только один корневой порт у коммутатора. MAC адреса источника фреймов, полученные на этот порт, заносятся в таблицу MAC адресов коммутатора.Designated (назначенные) порты — могут быть и у корневых, и у некорневых коммутаторов. У корневых — это все порты. У некорневых — все некорневые порты, через которые разрешена передача трафика. В одном сегменте сети может быть только один назначенный порт. MAC адреса источника фреймов, полученные на эти порты, заносятся в таблицу MAC адресов коммутатора.Non-designated (неназначенные) порты — порты, которые находятся в состоянии блокировки. Трафик через них запрещен.Disabled (отключенные) порты — порты, которые выключены администратором командой shutdown.Процесс выбораroot bridgeВсе коммутаторы в сети принимают участие в выборах. Для этого они обмениваются сообщениями BPDU. Эти сообщения содержат bridge ID и root ID. Bridge ID — идентификатор текущего коммутатора. Root ID — идентификатор корневого коммутатора. После загрузки коммутатор каждые 2 секунды начинает отправлять BPDU сообщение. Изначально root ID в сообщении равен локальному bridge ID. После того, как коммутатор принимает BPDU сообщение, он сравнивает root ID из сообщения со своим root ID. Если root ID из сообщения будет меньше, он заменяет свой root ID. Затем коммутатор начинает передавать BPDU сообщения с новым root ID. В конце концов, все BPDU сообщения, передаваемые коммутаторами, будут содержать наименьший root ID. Коммутатор с этим bridge ID и будет root bridge.Изначально, после загрузки все порты коммутатора находятся в блокированном состоянии. По умолчанию — в течение 20 секунд (для диаметра сети 7). Они только передают и принимают BPDU.Определение лучшего пути кroot bridgeВ BPDU сообщениях кроме bridge ID и root ID передается таже стоимость пути к root ID. После того, как root bridge был выбран, STAначинает процессопределения наилучшегопути ккорневому мостусо всехнаправлений вшироковещательном домене. Информация о путях определяетсяпутем суммированияиндивидуальных стоимостей портовна пути откоммутатора назначениядо root bridge.По умолчанию, стоимость портов коммутаторов следующая:10 Гб/с — 21 Гб/с — 4100 Мб/с — 1910 Мб/с — 100Для каждого порта можно задать стоимость вручную командой:S1(config-if)#spanning-tree cost costДля отмены ручной настройки стоимости порта используется команда:S1(config-if)#no spanning-tree costПосле подсчета стоимостей всех путей, выбирается путь с наименьшей стоимостью, а все резервные пути блокируются. Для проверки стоимостей портов, а также стоимости пути к root bridge используется команда:S1#show spanning-treeДля вывода более детальной информации используется команда:S1#show spanning-tree detailBridge IDПоле bridge ID в BPDU состоит из трех частей.Bridge Priority — приоритет коммутатора при выборе root bridge. Может изменятся от 1 до 65536. По умолчанию равен 32768. Чем меньше значение, тем больше приоритет.Extended System ID — номер VLANа. Используется в PVST. Добавляется к Bridge Priority для вычисления приоритета.MAC Address. Когда все коммутаторы в сети сконфигурированы с одинаковыми приоритетом (Bridge Priority) и номером Extended System ID, рашающим фактором при выборе root bridge будет MAC адрес. Коммутатор с наименьшим MAC адресом будет выбран как root bridge.Бывают случаи, когда необходимо, чтобы конкретный коммутатор был корневым. Для этого меняется приоритет коммутатора. Сделать это можно двумя способами.1. Командой S1(config)#spanning-tree vlan vlan-id root primary. Коммутатору будет присвоен приоритет 24576 или на 4096 меньший, чем самый меньший обнаруженный приоритет в сети. Это будет основной корневой коммутатор.Командой S1(config)#spanning-tree vlan vlan-id root secondary. Коммутатору будет присвоен приоритет 28672. Это будет запасной корневой коммутатор. Он станет корневым, если основной корневой станет недоступен и начнутся новые выборы, при условии, что у остальных коммутаторов приоритет установлен по умолчанию.2. Командой S1(config)#spanning-tree vlan vlan-id priority value. Этим способом можно назначать конкретные значения приоритетов.Определение роли портаВыбор корневого порта. Коммутатор сравнивает стоимости всех возможных путей к корневому коммутатору. Порт коммутатора, у которого самая низкая стоимость пути, автоматически становится корневым. Если два и более портов имеют одинаковую стоимость пути, выбирается порт, имеющий больший приоритет. Если приоритеты тоже одинаковые, выбирается порт, имеющий наименьший номер (port ID). Приоритет порта настраивается командой S1(config-if)#spanning-tree port-priority value. Диапазон от 0 до 240 с шагом 16. По умолчанию равен 128.Выбор назначенных и неназначенных портов. Корневой коммутатор автоматически определяет все свои порты как назначенные. На некорневых коммутаторах этор выбор происходит после выбора корневого порта. Выбор происходит на каждом сегменте. Коммутатор смотрит сообщение BPDU, приходящее на порт и решает: если bridge ID у него меньше, чем у соседа, порт становится назначенным, а если больше — неназначенным.Проверить роли портов и их приоритеты можно командой S1#show spanning-treeСостояния портаПорты коммутатора при работе протокола STP могут находится в пяти состояниях.Blocking (заблокированный) — неназначенный порт не участвует в процессе пересылки фреймов. Но передает принимает BPDU.Listening (прослушивание) — порт принимает и передает только BPDU.Learning (изучение) — порт готовится к началу пересылки фреймов. Порт принимает и передает BPDU, а также изучает MAC адреса из фреймов, приходящих на него.Forwarding (пересылка) — порт принимает и передает изучает MAC адреса из фреймов, приходящих на него.Disabled — порт отключен администратором командой shutdown.Таймеры BPDUВремя, в течение которого порт находится в различных состояниях, зависит от таймеров BPDU. Только корневой коммутатор может рассылать сообщения по сети, которые настраивают таймеры. Существуют следующие таймеры изменения состояний:Hello time — время между посылками сообщений BPDU на порт. По умолчанию равно 2 секунды. Можно изменять от 1 до 10 секунд.Forward delay (задержка перед передачей) — время, в течении которого порт находится в каждом из состояний listening и learning. По умолчанию — 15 секунд. Можно изменить от 4 до 30 секунд.Maximum age — время, в течение которого порт хранит информацию, полученную вместе с последним BPDU. По умолчанию — 20 секунд. Может изменяться от 6 до 40 секунд.Изменять таймеры напрямую не рекомендуется. Таймеры по умолчанию установлены для сети с диаметром, равным 7. Поэтому, если администратор решит изменить время сходимости сети, лучше использовать команду задания диаметра сети. Коммутатор сам подстроит все таймеры.S1(config)#spanning-tree vlan vlan id root primary diameter value Технология Cisco PortFastДля портов, к которым подключены не коммутаторы, конечные устройства (компьютеры, телефоны и др.), для быстрого перехода в состояние передачи (без прохода через состояния listening и learning), Cisco разработала технологию PortFast. Устройство, подключенное к порту с включенным PortFast, сразу может передавать данные. Для включения используется команда: S1(config-if)#spanning-tree portfast. Для выключения — S1(config-if)#no spanning-tree portfast. Проверка включения режима PortFast на интерфейсе — S1#show running-config.Изменение топологии STPПосле того, как выборы корневого коммутатора завершились и произошло назначение ролей портам коммутатора, все коммутаторы, за исключением корневого, прекращают генерацию своих BPDU. Только корневой коммутатор генерирует BPDU и рассылает из на широковещетельный адрес. Все осталные — только ретранслируют его.При изменении топологии коммутатор, который это обнаружил, отправляет специальное сообщение BPDU, которое называется TCN (topology change notification), через корневой порт в направлении корневого коммутатора. Некорневые коммутаторы, которые принимают это сообщение, ретранслируют его через свой корневой порт, а также отправляют назад подтверждение о получении — TCA (topology change acknowledgement).После того, как корневой коммутатор получил TCN, он сначала отправляет назад TCA. А затем широковещательно отправляет BPDU с установленным флагом TC (topology change). Таким образом, все коммутаторы сети узнают об изменении топологии сети и увеличивают время Maximum age до 35 секунд по умолчанию.Варианты STPPer-VLAN spanning tree protocol (PVST) — проприетарный протокол Cisco. Использует для организации транков свой протокол ISL. Связующее дерево строится отдельно для каждого VLANа. Это дает возможность балансировать трафик на 2-м уровне. Для PVST разработаны расширения настройки портов BackboneFast,UplinkFastиPortFast.Per-VLAN spanning tree protocol plus (PVST+) — проприетарный протокол Cisco. Разработан для поддержки транкового протокола IEEE 802.1Q. Поддерживает все расширения PVST, а также введены дополнения BPDU guard и Root guard.Rapid per-VLAN spanning tree protocol (rapid PVST+) — проприетарный протокол Cisco. основан на стандарте IEEE802.1w и имеет меньшее время сходимости по сравнению с STP. Поддерживает все расширения PVST и PVST+.Rapid spanning tree protocol (RSTP) — общедоступный протокол. Включает расширения Cisco BackboneFast,UplinkFastиPortFast. Имеет меньшее время сходимости по сравнению с STP. Именно он сейчас и применяется. Т.е. STP = RSTPMultiple STP (MSTP) — общедоступный протокол. Позволяет строить связующие деревья для нескольких VLANов. Т.е. позволяет уменьшать количество деревьев на коммутаторе. Предусматриваетнесколько путейдляпереадресациитрафикаи позволяетбалансировать нагрузку.PVST+Это проприетарный протокол Cisco. Он строит связующие деревья для каждого VLANа и позволяет блокировать порты для каждого VLANа в отдельности. Поэтому более экономично используется полоса пропускания каждого порта (не простаивает).Соответственно и настраивать приоритеты для коммутаторов и портов можно для каждого VLANа. Например, для половины VLANов корневым коммутатором настривается один коммутатор, а для второй половины — другой.Но надо помнить, что если не настраивать приоритеты, все коммутаторы сети для всех VLANов будут принимать решения о корневом коммутаторе, основываясь на MAC адресах коммутаторов. И никкакой балансировки нагрузки не будет.Настройки по умолчанию на коммутаторах Cisco:Состояние — включено для VLAN1Вариант протокола — PVST+ (Rapid PVST+ и MSTP are отключены)Приоритет коммутатора — 32768Приоритет порта (при STP на основе портов) — 128Стоимость портов — 10 Гб/с — 2, 1 Гб/с — 4, 100 Мб/с — 19, 10 Мб/с — 100Приоритет порта (при STP на основе VLANов) — 128Таймеры — Hello time: 2 с, Forward-delay time: 15 с, Maximum-aging time: 20 с, Transmit hold count: — 6 BPDUПорядок настройки1. Выбираем коммутаторы, которые будут основными и резервными корневыми коммутаторами для каждого VLANа.2. Конфигурируем эти коммутаторы:S1(config)#spanning-tree vlan vlan-ID root primaryS2(config)#spanning-tree vlan vlan-ID root secondaryТакже можно настроить приоритеты коммутаторов командойS1(config)#spanning-tree vlan vlan-ID priority priority — где приоритет можно назначать в диапазоне от 0 до 61440 с шагом 4096. Коммутатор с более низким приоритетом и будет корневым.Проверка настроенного протокола для активных интерфейсов осуществляется командой:S2#show spanning tree active.RSTPЭто развитие протокола STP. Большинство параметров не изменилось. Изменились лишь роли портов и их состояния. Из-за этого значительно уменьшилось время сходимости сети.В RSTP, если коммутатор не принял три подряд BPDU (по умолчанию 6 секунд),  считается, что связь потеряна.Edge Ports — граничный порт относительно STP дерева. Это порт, к которому никогда не был подключен другой коммутатор, а подключены конечные устройства. То есть порт сразу же переходит в режим пересылки. Режим работы порта в этой роли похож на режим PortFast, но отличается тем, что порт при получении первого же BPDU становится STP портом.Состояния портовВ отличии от STP, RSTP определяет всего три состояния портов коммутаторов.Discarding (отброс фреймов) — состояние, в котором порт не передает данные. По аналогии с STP, это Blocking, Listening и Disabled состояния.Learning (изучение) — так же, как и в STPForwarding — так же, как и в STP.Роли портовКорневой порт порт некорневого коммутатора, имеющий лучшую стоимость для достижения корневого коммутатора. Для каждого некорневого коммутатора может быть только один. В стабильной сетевой топологии находится в состоянии Forwarding.Назначенный порт — все порты корневого коммутатора. А также только по одному порту на сегмент, связывающий некорневые коммутаторы. В стабильной сетевой топологии находится в состоянии Forwarding.Альтернативный порт — порт, предлагающий альтернативный путь к корневому коммутатору. Находится в состоянии Discarding.Конфигурирование Rapid-PVST+S1(config)#spanning-tree mode rapid-pvstS1(config)#interface interface-idS1(config-if)#spanning-tree link-type point-to-pointS1#clear spanning-tree detected-protocols

Profile

mcp1971

Latest Month

February 2020
S M T W T F S
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29

View All Archives

Categories

View my Categories page Powered by LiveJournal.comDesigned by Lilia Ahner

Общие данные про spanning-tree

Все очень плохо:

  1. Протоколы spanning-tree не гарантируют защиту от петель и могут не обеспечить должного резервирования. Даже хуже, так как именно резервирование по L2 с применением spanning-tree чаще всего и приводит к петлям.
  2. Есть разные реализации одного и того же протокола разными производителями.

Почему протокол spanning-tree не защищает от петель?

Коммутатор, который отправил BPDU, по понятным причинам не может и не должен контролировать его получение другими коммутаторами, а для рассылки BPDU использует мультикастовый адрес. Между коммутаторами могут происходить разные события, из-за которых какой-то коммутатор не получит BPDU, переведет порт из состояния alternate в состояние forwarding хоть и на короткое время, но этого будет вполне достаточно. Такое может случиться когда:

  • возникла односторонняя связь на оптических линках;
  • между коммутаторами включился half-duplex, что привело к множественным ошибкам и потерям;
  • на вашей транспортной сети из-за ошибок больше не передается мультикаст в принципе;
  • через операторские сети BPDU перестали передаваться, если вообще хоть кто-то когда-то из операторов такое разрешает;
  • вы просто ошиблись с конфигурацией оборудования, не смогли предусмотреть каких-то нюансов, что происходит чаще всего.

В случае использования коммутаторов Cisco следует:

  • настроить Unidirectional Link Detection (UDLD) протокол для оптических линков на случай односторонней связи;
  • настроить spanning-tree loopguard для блокировки порта до соседнего коммутатора на случай, когда BPDU не будет получен по любой причине;
  • настроить Connectivity Fault Management (CFM), если у вас metro-серия коммутаторов.

В случае использования коммутаторов других производителей или какого-то транспортного оборудования можно заметить, что:

  • UDLD протокол можно применить только между коммутаторами cisco, так как это их разработка;
  • аналога spanning-tree loopguard на коммутаторе может не быть;
  • надо настраивать «link-fault-management» (802.3ah) или “connectivity-fault-management» (802.3ag)

Выводы:

  • CFM 802.3ag полезен для определения состояния линка;
  • При наличии только loopguard из всего выше перечисленного можно себя обезопасить от потери BPDU.

Что не так с реализациями spanning-tree?Я сейчас не буду рассказывать подробно про разные стандарты, про которые любят писать писатели. Вроде как stp в стандарте заменили на rstp, а mstp стандарт теперь еще как-то называется. Есть еще куча разных протоколов в индустриальных коммутаторах. Дело же не в этом. Дело в том, что при использовании старых коммутаторов cisco и коммутаторов других производителей, только MSTP позволяет нормально настроить кольцо. Говорят, cisco поддерживает RSTP, но называется это RPVST+  или даже PVRST+. Но это ведь не стандартный RSTP, так как в цисковской реализации для каждого влана создается свой инстанс, рассылаются для каждого влана BPDU. Это неудобно даже в случае применения на сетях с цисками:

  • У вас есть коммутаторы с ограничением по количеству активных вланов: 256 или 1024. Если вы используете vtp протокол для создания вланов, то есть вероятность превышения лимита, из-за которого для определенных вланов инстанс stp создан не будет. Это 100% кольцо;
  • неудобно администрировать кучу инстансов;
  • загрузка cpu на коммутаторе тем выше, чем больше инстансов.

В стандартном RSTP ничего этого нет, поэтому самый простой способ оптимизировать сеть на старых коммутаторах cisco – настроить MSTP. В качестве бонуса получаем возможность интеграции с коммутаторами других производителей.Вывод: Два из трех протоколов spanning-tree от cisco не соответствуют стандартам. Использовать следует только MSTP.Настройка MSTPКажется, что mstp сложен для внедрения, но если поставить себе более простую задачу – создание аналога RSTP, то все сильно упрощается. Необходимо для начала определить для себя минимально необходимое количество инстансов. Пусть будет всего один, в который будут включены вообще все возможные вланы. Такая конфигурация никогда не будет изменяться, поэтому можно не читать про номера ревизий и т.п. Здесь в качестве нулевого — cist, через который mstp будет взаимодействовать с другими протоколами, а в первом msti — все возможные вланы. В качестве примера для 0 и 1 увеличены приоритеты. Бывает, что для 1-го увеличишь, а для cist — нет.Для коммутатора cisco: Для коммутатора juniper: Для eltex mes тоже можно настроить аналогично циске Для extreme network я пробовал настроить при тестировании x430 и, к сожалению, такую конструкцию реализовать не получилось, так как в инстанс там добавляются только созданные на коммутаторе вланы.Регион создавать один на всю сеть, да и то только по той причине, чтобы была возможность установки такого коммутатора в любую точку сети без переконфигурации. Никакой выгоды от нескольких регионов нет.Не следует злоупотреблять большим количеством инстансов. Мне попадались коммутаторы, в котором их можно было создать максимум штук 8.

Альтернативы протоколу spanning-tree

G.8032 Ethernet Ring Protection (ERP) protocol описанный в стандарте ITU-T G.8032 является хорошей альтернативной stp. И ERPS, и CFM можно найти у extreme network, даже у eltex, не говоря уже о многочисленных китайских поделках, но у циски почему-то это есть только в metro-серии. Так что имеет ли смысл далее поддерживать этого производителя, обезличивая конфигурации шеститонников для конкурсов «уникальным» функционалом: «поддержка EIGRP» и «возможность запуска отдельного экземпляра RSTP для отдельных vlan»?Маршрутизация не является альтернативной spanning-tree. Это совсем другая песня.Используемые источники:

  • https://mcp1971.livejournal.com/2513.html
  • http://prosto-seti.blogspot.com/2016/07/spanning-tree.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации