Logo
  • ГЛАВНАЯ
  • ОБО МНЕ
  • СЕРТИФИКАТЫ
nocip.ssh@mail.ru
Главная  >  Cisco Switching

Концепции протокола STP


Создана 21.02.2025
Отредактирована 19.05.2025
Протокол распределённого связующего дерева (Spanning Tree Protocol - STP) представляет локальным сетям Ethernet дополнительные преимущества по установке избыточных каналов связи в локальной сети, а также помогает преодолеть известные проблемы, связанные с дополнительными каналами связи. Использование избыточных каналов связи в проекте позволяет сети LAN продолжать работу не только при отказе некоторых каналов связи, но даже некоторых коммутаторов. В надлежащем проекте сети LAN должно быть достаточно избыточности, чтобы никакая единая точка отказа не нарушила её работу. Протокол STP позволяет проекту использовать избыточность, не создавая других проблем.
В этом обзоре рассматриваются концепции протокола STP. В частности, обсуждается, почему локальные сети нуждаются в протоколе STP, что он делает для решения определённых проблем в локальных сетях с избыточными каналами связи и как осуществляет свою работу. Обзор состоит из двух основных разделов: в первом рассматриваются базовые функции протокола STP, во втором - его дополнительные средства. 
Но прежде чем перейти к протоколу STP, уделим внимание краткому обзору тем по сетям LAN, чтобы, читая о протоколе STP, не пришлось припоминать детали сетей Ethernet. Но если вы об этом уже знаете, то переходите непосредственно к протоколу STP.
  • Протокол распределённого связующего дерева (IEEE 802.1D)

Обзор коммутации LAN

Современные локальные сети состоят из проводных и беспроводных соединений со множеством устройств. Эти соединения обеспечивают любому устройству средства передачи и получения данных от других устройств в сети. Совместно с соединениями WAN и Интернетом, подключённые к локальной сети устройства могут общаться с другими устройствами в других частях корпоративной сети и во всём мире.
Проводные части современных локальных сетей используют стандарты Ethernet и коммутаторы LAN. Стандарты Ethernet определяют характеристики кабельной проводки, а также правила канального уровня, включая фреймирование и адреса. Физически локальная сеть Ethernet может быть маленькой или большой, но она включает три основных компонента:
  • устройства с платой сетевого интерфейса Ethernet (NIC - Network Interface Card);
  • коммутаторы LAN Ethernet;
  • соединяющие устройства кабели (сетевые платы - с портами коммутатора, порты коммутатора - друг с другом и т.д.)
На рис. 1 приведён пример с шестью компьютерами, подключёнными к одному коммутатору LAN.
Рис. 1. Небольшая локальная сеть Ethernet с сетями VLAN

Логика перенаправления коммутатора LAN

Протокол STP ограничивает выбор направлений перенаправления коммутатором фреймов с целью предотвращения проблем с петлями (loop). Это проблема возникает потому, что в некоторых случаях базовая логика коммутатора LAN буквально перенаправляет фрейм в сети LAN по бесконечному кругу, если нет такого внешнего метода, как протокол STP, позволяющего предотвратить это. Таким образом, чтобы понять логику протокола STP, необходимо вспомнить базовую логику коммутатора LAN, особенно логику перенаправления. Тогда станет понятно, почему без протокола STP фреймы могут передаваться по кругу и как он предотвращает петли.
Ниже описаны этапы перенаправления фреймов коммутатором LAN при игнорировании роли протокола STP.
Этап 1 Определить сеть VLAN, в которую должен быть перенаправлен фрейм, следующим образом:
A. Если фрейм поступает на интерфейс доступа, использовать сеть доступа VLAN интерфейса
B. Если фрейм поступает на магистральный интерфейс, использовать сеть VLAN, указанную в магистральном заголовке фрейма
Этап 2 Добавить MAC-адрес отправителя в таблицу MAC-адресов, указав входящий интерфейс и идентификатор VLAN
Этап 3 Найти MAC-адрес получателя фрейма в таблице MAC-адресов, но только среди записей о VLAN, выявленных на этапе 1. Использовать один из следующих этапов, в зависимости от того, найден ли MAC-адрес получателя.
A. Найден. Перенаправить фрейм через единственный интерфейс, указанный в найденной записи таблицы MAC-адресов
B. Не найден. Разослать фрейм на все остальные порты доступа в той же сети VLAN и на все порты магистрального канала, для которых эта сеть VLAN указана как полностью поддерживаемая (активная, в списке разрешённых, не сокращена, маршрутизируется STP)
Предположим, например, что фрейм в сети на рис. 1 послан компьютером A. Согласно рисунку, порт Fa0/11 коммутатора находится в сети VLAN 100, поэтому на этапе 1 коммутатор определяет фрейм как находящийся в сети VLAN 100. Коммутатор не перенаправил бы фрейм на порты в сети VLAN 200 (интерфейсы Fa0/13 и Fa0/14) или сети VLAN 300 (интерфейсы Fa0/15 и Fa0/16). Затем коммутатор нашёл бы MAC-адрес получателя в таблице MAC-адресов, но поиск осуществляется только среди записей для сети VLAN 100.
ПРИМЕЧАНИЕ

Термины "порт коммутатора" и "интерфейс коммутатора" являются синонимами.


Далее обсуждается, как протокол STP вмешивается в эту логику, ограничивая интерфейсы, используемые коммутатором как при получении, так и при перенаправлении фреймов, предотвращая таким образом петли.

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

Логика коммутатора LAN очень проста, для её описания действительно достаточно лишь нескольких строк, поскольку потенциально коммутаторы должны быть способны перенаправлять миллионы фреймов в секунду. Получить фрейм, определить сеть VLAN, соотнести MAC-адрес получателя с MAC-адресом в таблице, выбрать исходящий интерфейс и перенаправить фрейм. Однако смысл команд show может быть трудно понять, особенно если использовать их в реальных сетях не каждый день. Далее будут показаны несколько ключевых команд show, которые окажутся полезными при рассмотрении протокола STP.

Просмотр таблицы MAC-адресов

На рис. 2 показан вывод таблиц MAC-адресов на двух коммутаторах, sw1 и sw2. Рисунок демонстрирует концепцию таблиц MAC-адресов на примере двух компьютеров и одного маршрутизатора, находящихся в сети VLAN 100. Команда ниже, отображает все динамические изученные записи таблицы MAC-адресов на коммутаторе для всей сети VLAN.

show mac address-table dynamic

Рис. 2. Пример сети LAN с таблицами MAC-адресов
Обратите внимание, что вывод каждой команды на каждом коммутаторе повторяет в основном ту же информацию таблицы MAC-адресов. Оба коммутатора изучили все три MAC-адреса, поэтому каждое из этих трёх устройств может получать фреймы, которые достигнут обоих коммутаторов. Но у каждого коммутатора разная информация перенаправления (порт). Например, в таблице MAC-адресов MAC-адресу компьютера PC2 (0200.1111.1111) на коммутаторе sw1 соответствует порт Fa0/9, а на коммутаторе sw2 - порт Gi0/2. Эта графа в таблице указывает локальному коммутатору, на какой из его локальных портов перенаправить фрейм.
Протокол STP не оставляет никаких пометок или примечаний в выводе этой команды. Но он влияет на выбор портов, для которых коммутатор может изучать MAC-адреса, таким образом, протокол STP косвенно изменяет то, что выводит команда show mac address-table. Как будет отмечено далее, протокол STP блокирует порт, в результате чего коммутатор игнорирует фреймы, поступающие на интерфейс. В результате коммутатор не будет изучать MAC-адреса этих фреймов, что повлияет на записи таблицы, выводимые командой show mac address-table

Определение сетей VLAN фрейма

Процесс перенаправления коммутатора уровня 2 подразумевает перенаправление фрейма в контексте одной сети VLAN. Таким образом, фрейм поступает на коммутатор, и он должен определить сеть VLAN, из которой прибыл фрейм. Затем коммутатор уровня 2 перенаправляет фрейм на порты только в той же сети VLAN или на порты магистрального канала, поддерживающего эту сеть VLAN.
Порты коммутатора Cisco работают либо как порты доступа (access), либо как порты магистрального канала (trunk), и тип порта определяет, как коммутатор рассматривает сеть VLAN входящего фрейма. У порта доступа интерфейс коммутатора ассоциируется с одной сетью VLAN. Фреймы, поступавшие на порт доступа, считаются частью сети доступа VLAN, заданной подкомандой интерфейса (см. команду ниже). Фрейм для портов магистрального канала поступает с тегом VLAN в заголовке магистрального канала; этот тег задаёт идентификатор сети VLAN.

sw1(config)#interface Fa0/9 sw1(config-if)#switchport mode access sw1(config-if)#switchport access vlan 100

В примере 1 содержится вывод нескольких команд show, отображающих информацию об интерфейсах коммутатора и связанными с ними сетях VLAN. Команда show interface status выводит все интерфейсы коммутатора и их текущее состояние. Здесь также указано, работает ли порт как интерфейс VLAN, как порт доступа, или как магистральный канал.
Пример 1. Отображение интерфейсов и сетей VLAN

sw1#show interface status Port Name Status Vlan Duplex Speed Type Fa0/1 notconnect 1 auto auto 10/100BaseTX Fa0/2 notconnect 1 auto auto 10/100BaseTX Fa0/3 notconnect 1 auto auto 10/100BaseTX Fa0/4 notconnect 1 auto auto 10/100BaseTX Fa0/5 notconnect 1 auto auto 10/100BaseTX Fa0/6 notconnect 1 auto auto 10/100BaseTX Fa0/7 notconnect 1 auto auto 10/100BaseTX Fa0/8 notconnect 1 auto auto 10/100BaseTX Fa0/9 PC2 connected 100 a-full a-100 10/100BaseTX Fa0/10 notconnect 1 auto auto 10/100BaseTX Fa0/11 notconnect 1 auto auto 10/100BaseTX Fa0/12 PC1 connected 100 a-full a-100 10/100BaseTX Fa0/13 notconnect 1 auto auto 10/100BaseTX Fa0/14 notconnect 1 auto auto 10/100BaseTX Fa0/15 notconnect 1 auto auto 10/100BaseTX Fa0/16 notconnect 1 auto auto 10/100BaseTX Fa0/17 notconnect 1 auto auto 10/100BaseTX Fa0/18 notconnect 1 auto auto 10/100BaseTX Fa0/19 notconnect 1 auto auto 10/100BaseTX Fa0/20 notconnect 1 auto auto 10/100BaseTX Fa0/21 notconnect 1 auto auto 10/100BaseTX Fa0/22 notconnect 1 auto auto 10/100BaseTX Fa0/23 notconnect 1 auto auto 10/100BaseTX Fa0/24 notconnect 1 auto auto 10/100BaseTX Gi0/1 to sw2 connected trunk a-full a-1000 10/100/1000BaseTX Gi0/2 notconnect 1 auto auto 10/100/1000BaseTX

sw1#show vlan brief VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4 Fa0/5, Fa0/6, Fa0/7, Fa0/8 Fa0/10, Fa0/11, Fa0/13, Fa0/14 Fa0/15, Fa0/16, Fa0/17, Fa0/18 Fa0/19, Fa0/20, Fa0/21, Fa0/22 Fa0/23, Fa0/24, Gi0/2 100 VLAN0100 active Fa0/9, Fa0/12 1002 fddi-default act/unsup 1003 token-ring-default act/unsup 1004 fddinet-default act/unsup 1005 trnet-default act/unsup


В нижней части примера приведён вывод команды show vlan brief, отображающий все сети VLAN со списком всех соответствующих им портов доступа. (Обратите внимание: эти команды соответствуют схеме сети на рис. 2.)
Уделим минуту, чтобы снова подумать о задаче протокола STP. Протокол STP не оказывает никакого влияния ни на одну из команд в примере 1. Например, в команде show interfaces status протокол STP не изменяет присвоение VLAN, состояние магистрального канала или состояния интерфейса с connected на другое. Протокол STP требует использования команд, начинающихся на show spanning-tree, с информацией, применимой ко всем интерфейсам, будь то интерфейсы доступа, магистральные линии или поддерживаемые ими VLAN.

Проверка магистральных каналов

Заключительная тема обзора посвящена выводу команды коммутаторов LAN, которая, в отличие от предыдущих, действительно представляет прямую "улику" деятельности протокола STP - команду show interfaces trunk
Интерфейсы коммутатора Cisco будут работать в магистральном режиме VLAN, если они настроены правильно на обоих концах магистрального канала. Магистральный канал может поддерживать все сети VLAN, известные локальному коммутатору. Но магистральный канал может решить не перенаправлять фреймы для некой сети VLAN в связи с различиями функций коммутаторов, одной из этих функций является протокол STP. 
Команда show interfaces trunk демонстрирует несколько важных идей. В первую очередь, она выводит только работающие в настоящее время магистральные каналы и не выводит магистральные каналы, которые могли бы "договориться" о магистральном соединении в будущем. Она также выводит сети VLAN, для которых коммутатор в настоящее время перенаправляет фреймы, в последней строке вывода для каждого порта.
Пример 2. Команда show interfaces trunk с подробностями последнего списка VLAN

sw1#show interfaces trunk Port Mode Encapsulation Status Native vlan Gi0/1 desirable 802.1q trunking 1 Port Vlans allowed on trunk Gi0/1 1-4094 Port Vlans allowed and active in management domain Gi0/1 1,100 Port Vlans in spanning tree forwarding state and not pruned Gi0/1 1,100


Вывод этой команды имеет четыре группы сообщений. Первая демонстрирует список работающих магистральных каналов и их параметров. Следующие три выводят сети VLAN, поддерживаемые на каждом магистральном канале, в порядке всё более ограничивающих списков. Любая VLAN, выведенная в заключительном (выделенном) списке, способна передавать и получать через этот порт. В данном случае порт Gi0/1 коммутатора sw1 перенаправит фреймы для сетей VLAN 1 и 100, но не для любых других.
Эта команда важна для протокола STP потому, что она выводит информацию, на которую протокол STP воздействует непосредственно. Протокол STP использует для каждой сети VLAN состояние перенаправления (forwarding) и блокировки (blocking) порта. Если протокол STP блокирует порт определённой VLAN, то её не будет в заключительном списке внизу вывода команды show interfaces trunk.

Протокол распределённого связующего дерева (IEEE 802.1D)

Без протокола распределённого связующего дерева (Spanning Tree Protocol - STP) локальная сеть с избыточными каналами связи могла бы передовать фреймы Ethernet по кругу неопределённое долгое время. Протокол STP позволяет блокировать некоторые порты коммутатора так, чтобы они не передавали фреймы. Протокол STP разумно выбирает блокируемые порты с учётом двух задач.
  • Все устройства в сети VLAN способны передавать фреймы на все другие устройства. Т.е. блокировать следует не слишком много портов, чтобы не отрезать одни части сети LAN от других.
  • Фреймы имеют короткую продолжительность существования, что не позволяет передавать их по кругу неопределённо долго.
Протокол STP соблюдает баланс, позволяя доставлять фреймы каждому устройству, но не вызывать проблем, связанных с круговой передачей фреймов по сети (чтобы не было петель в сети).
Для предотвращения круговой передачи фреймов протокол STP добавляет дополнительную проверку на каждом интерфейсе, прежде чем коммутатор использует его для передачи или получения пользовательского трафика. Проверка такова: если порт находится в состоянии перенаправления для данной сети VLAN, то использовать его, как обычно; если он находится в состоянии блокировки, блокировать весь пользовательский трафик, не посылать и не передавать пользовательский трафик на этом интерфейсе для данной сети VLAN.
Отметим, что эти состояния STP не изменяют другую информацию, уже известную об интерфейсах коммутатора. Состояние интерфейса connected/notconnected не изменяется. Рабочее состояние интерфейса, доступа или магистрального канала не изменяется. Протокол STP добавляет своё дополнительное состояние, состояние блокировки (blocking state), просто отключая интерфейс.
Хоть и разными способами, но мы можем подвести итог того, что делает протокол STP. Однако подробности того, как именно протокол STP осуществляет свою работу, могут потребовать длительного изучения и практики. Далее мы рассмотрим объяснения необходимости в протоколе STP и фундаменальных идеях, благодаря которым протокол STP решает проблемы циклической передачи фреймов, а так же выбору протоколом STP блокируемых портов коммутатора для решения своих задач.

К какому же уровню относится протокол STP?

ПРИМЕЧАНИЕ

Протокол STP относится ко второму уровню (канальному), так как он реализуется на коммутаторах. И он не обменивается в своих сообщениях IP адресами, или сетями. Он анонсирует MAC-адреса и другую информацию.


Потребность в протоколе связующего дерева STP (назначение)

Целью создания избыточности в сети является предотвращение простоя в сети в тех случаях, когда в отдельной точке сети происходит сбой. Для повышения надёжности все сети должны обладать избыточностью. Примером сети с избыточностью может служить сеть автомобильных дорог. Если одна трасса закрыта для ремонта, то имеются другие маршруты к требуемому мосту.
Предположим, что у крупного города есть небольшой пригород, который отделён от центральной части города рекой. Если через эту реку существует только один мост (Мост А), то, соответственно, имеется лишь один маршрут к центру города. При такой топологии избыточность отсутствует.
Если на мосту возникла "пробка" или он повреждён в результате дорожного происшествия, то поездка в город через этот мост становится невозможной. Построение второго моста (Мост Б) через эту реку создаст избыточность в такой автомобильной сети. В этом случае пригород не оказывается отрезанным от центра города в таком случае, если по одному из мостов проехать нельзя.
Рис. 3. Пример карты с двумя мостами (избыточность)
Задача сетевого инженера спроектировать сеть так, чтобы добиться круглосуточной работоспособности сети на протяжении всей рабочей недели. Достижение 100% работоспособности сети, вероятно, невозможно, однако обеспечение работоспособности сети на 99,999% (такой уровень надёжности называется "пятью девятками") - цель, которую ставят перед собой компании и организации. Это значение можно представить в среднем как один день простоя сети за 30 лет, один час простоя за 4000 дней или 3,25 минут простоя за год. Эта оценка применима и к другим важным службам, таким как финансовые операции, больницы, работа провайдеров служб Inernet и т.д. Цена простоев оказывается весьма высокой. Многим другим предприятиям для уменьшения расходов на оборудование приходится жертвовать надёжностью сети.
Достижение уровня надёжности 99,999% требует исключительной надёжности от сети. Эта надёжность достигается за счёт использования надёжного оборудования, такого как Cisco и путём проектирования сети, устойчивой к сбоям и ошибкам. Для этого сеть проектируется таким образом, чтобы в ней быстро происходила реконвергенция и при передаче данных обходился участок со сбоем.
ВНИМАНИЕ!

Термин конвергенция, например для протокола STP (STP convergence) описывает процесс, когда все коммутаторы понимают, что в топологии LAN что-то изменилось и, возможно, следует провести новые выборы корневого моста (коммутатора) и изменить состояние блокированных и перенаправляющих портов. Любые изменения в spanning-tree, которые приводят к перестроению дерева можно относить к конвергенции (сходимости) spanning-tree.


Протокол STP предотвращает три общих проблемы локальных сетей Ethernet, возникающих при наличии в локальной сети избыточных каналов связи и отсутствии протокола STP.
  1. Широковещательный шторм
  2. Неустойчивость таблицы MAC-адресов
  3. К месту назначения прибывают несколько копий фрейма
Фактически все три проблемы - это побочные эффекты циклической передачи некоторых фреймов Ethernet на протяжении довольно продолжительного времени (часов, дней или даже постоянно, пока не откажут устройства или каналы связи сети LAN).
Даже один фрейм, передаваемый в сети по кругу, может вызвать широковещательный шторм (broadcast storm). Широковещательный шторм происходит тогда, когда широковещательные, многоадресные или одноадресатные фреймы для неизвестного получателя циклически передаются по сети LAN. Широковещательные штормы способны заполнить все каналы связи копиями этого одного фрейма, вытесняя полезные фреймы, а также значительно снижая производительность компьютера конечного пользователя и коммутаторов, заставляя их обрабатывать слишком много широковещательных фреймов.
ПРИМЕЧАНИЕ

Коммутаторы непрерывно рассылают одни и те же широковещательные фреймы. Такое явление называется широковещательным штормом.


Чтобы помочь понять, как это происходит, на рис. 4.1 приведён пример сети, где компьютер PC3 посылает широковещательный фрейм. Пунктирные линии показывают, как коммутаторы перенаправляют фрейм без протокола STP.
ВНИМАНИЕ!

Первоначальный широковещательный фрейм может быть также послан по кругу в противоположном направлении, когда коммутатор sw3 пошлёт копию первоначального фрейма через свой порт Gi0/1. На рисунке это не показано, чтобы не загромождать его.


Помните описанную ранее логику сети LAN? Она требует от коммутатора передать широковещательный фрейм на все интерфейсы в той же сети VLAN, кроме того интерфейса, на который прибыл фрейм (интерфейс Fa0/13). Согласно рисунку, это означает, что коммутатор sw3 перенаправит фрейм, полученный с компьютера PC3, на коммутатор sw2, а он перенаправит фрейм на коммутатор sw1, который, в свою очередь, перенаправит его назад, на коммутатор sw3, а тот снова перенаправит его на коммутатор sw2.
Рис. 4.1 Широковещательный шторм
Когда происходит широковещательный шторм, как на рис. 4.1, фреймы передаются бесконечно, пока что-то не изменится: отключится интерфейс, перезагрузится коммутатор или ещё нечто нарушит цикл. Обратите также внимание, что всё то же самое происходит и в противоположном направлении. Когда PC3 передаёт первоначальный фрейм, коммутатор sw3 перенаправляет его копию и на коммутатор sw1, он - на коммутатор sw2 и т.д.
Циклическая передача фреймов вызывает также проблему неустойчивости таблицы MAC-адресов. Неустойчивость таблицы MAC-адресов означает, что информация таблицы MAC-адресов коммутатора постоянно изменяется, занося MAC-адрес отправителя циклически передаваемого фрейма. Например, коммутатор sw3 на рис. 4.1 начинает со следующей записи таблицы MAC-адресов для компьютера PC3:

Mac Address Table ------------------------------------------- Vlan Mac Address Type Ports ---- ----------- -------- ----- 100 0200.3333.3333 DYNAMIC Fa0/13

Теперь рассмотрим процесс обучения коммутатора, происходящий при передаче циклического фрейма на коммутатор sw2, затем на коммутатор sw1, а затем назад, на интерфейс Gi0/1 коммутатора sw3. Коммутатор sw3 думает так: "Хм ... MAC-адрес отправителя 0200.3333.3333", а фрейм поступил на мой интерфейс Gi0/1. Изменю свою таблицу MAC-адресов!" и создаёт следующую запись:

Mac Address Table ------------------------------------------- Vlan Mac Address Type Ports ---- ----------- -------- ----- 100 0200.3333.3333 DYNAMIC Gi0/1

На настоящий момент коммутатор sw3 сам не может правильно доставить фрейм по MAC-адресу компьютера PC3. Если на коммутатор sw3 поступает фрейм, предназначенный для компьютера PC3 (другой фрейм, а не передаваемый по кругу и привёдший к проблеме), коммутатор sw3 ошибочно направит его через интерфейс Gi0/1 на коммутатор sw1.
Циклические фреймы создают и третью проблему: к месту назначения прибывает несколько копий фрейма. Рассмотрим случай, когда компьютер PC3 передаёт фрейм на компьютер PC1, но ни один коммутатор не знает MAC-адрес компьютера PC1. Коммутаторы лавинно рассылают (to flood frames) фреймы, посланные на неизвестный одноадресный MAC-адрес. Когда компьютер PC3 посылает фрейм на MAC-адрес компьютера PC1, коммутатор sw3 посылает его копию и коммутатору sw1, и коммутатору sw2. Коммутаторы sw1 и sw2 также лавинно рассылают фрейм, запуская копии фрейма по кругу. Коммутатор sw1 отсылает также копию каждого фрейма на интерфейс Fa0/11 компьютера PC1. В результате компьютер PC1 получает несколько копий фрейма рис. 4.2, что может привести к отказу приложения, если оно неустойчиво к проблемам сети.
Рис. 4.2 . К PC1 прибывает несколько копий фрейма от PC3
Три класса основных проблем, вызванных отсутствием протокола STP в избыточных сетях LAN, представлены в табл. 1.

Таблица 1. Три класса проблем, вызываемых отсутствием протокола STP в избыточных сетях LAN

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

Что делает связующее дерево IEEE 802.1D

Протокол STP предотвращает циклы (петли), переводя каждый порт коммутатора либо в состояние перенаправления, либо в состояние блокировки. Интерфейсы в состоянии перенаправления действуют как обычно, перенаправляя и получая фреймы. Но интерфейсы в блокированном состоянии не обрабатывают никаких фреймов, кроме сообщений протокола STP (и некоторых других служебных сообщений). Блокированные интерфейсы не перенаправляют пользовательские фреймы, не изучают MAC-адреса полученных фреймов и не обрабатывают полученные пользовательские фреймы.
На рис. 5 приведено простое дерево STP, решающее представленную на рис. 4.1 и 4.2 проблему за счёт перевода одного порта коммутатора sw3 в состояние блокировки.
Рис. 5. Протокол SFP блокирует порт, чтобы разорвать круг (петлю)
Теперь, когда компьютер PC3 посылает широковещательный фрейм, он не передаётся по кругу. На рисунке показаны следующие этапы: 
Этап 1. Компьютер PC3 посылает фрейм коммутатору sw3
Этап 2. Коммутатор sw3 перенаправляет фрейм только коммутатору sw1, но не через интерфейс Gi0/2 коммутатору sw2, поскольку этот интерфейс находится в состоянии блокировки
Этап 3. Коммутатор sw1 рассылает фрейм на интерфейсы Fa0/11 и Gi0/1
Этап 4. Коммутатор sw2 рассылает фрейм на интерфейсы Fa0/12 и Gi0/1
Этап 5. Физически коммутатор sw3 получает фрейм, но игнорирует его, поскольку его интерфейс Gi0/2 находится в блокированном состоянии
В представленной сети на рис. 5 коммутаторы просто не используют канал связи между коммутаторами sw2 и sw3 для трафика этой сети VLAN, что является незначительным отрицательным побочным эффектом протокола STP. Но при отказе любого из двух других каналов связи конвергенция протокола STP сработает так, что коммутатор sw3 переведёт свой интерфейс Gi0/2 из состояния блокировки в состояние перенаправления.
ВНИМАНИЕ!

Термин конвергенция, например для протокола STP (STP convergence) описывает процесс, когда все коммутаторы понимают, что в топологии LAN что-то изменилось и, возможно, следует провести новые выборы корневого моста (коммутатора) и изменить состояние блокированных и перенаправляющих портов. Любые изменения в spanning-tree, которые приводят к перестроению дерева можно относить к конвергенции (сходимости) spanning-tree.


На этом завершается обсуждение того, что делает протокол STP, переводя каждый порт в состояние перенаправления или блокировки. Однако куда интереснее и труднее другие вопросы: как и почему протокол STP делает свой выбор? Как протокол STP блокирует интерфейс коммутатора? Как конвергенция изменяет состояние блокировки на перенаправление, чтобы использовать избыточные каналы при отказе сетевых соединений? Эти вопросы будут рассмотрены далее.

Как работает протокол STP

Алгоритм STP создаёт связующее дерево интерфейсов, передающих фреймы. Древовидная структура перенаправляющих интерфейсов формирует только один путь к каждому каналу связи Ethernet и от него (точно так же, как и у живого дерева можно проследить только один путь от корня к каждому листу).
ВНИМАНИЕ!

Протокол STP был создан задолго до появления коммутаторов LAN. В те времена протокол STP использовал мосты Ethernet. Сегодня роль мостов играют коммутаторы, реализуя ту же концепцию STP. Однако многие термины протокола STP всё ещё относятся к мостам, поэтому термины мост (bridge) и коммутатор (switch) можно считать синонимами.


Принимая решение о переводе интерфейса в состояние перенаправления, протокол STP руководствуется тремя критериями.
  • Протокол STP выбирает корневой коммутатор. Все рабочие интерфейсы корневого коммутатора переводятся в состояние перенаправления.
  • Каждый некорневой коммутатор считает, что у одного из его портов есть наименьшая административная стоимость между ним и корневым коммутатором. Это корневая стоимость (root cost) данного коммутатора. Протокол STP переводит в состояние перенаправления корневой порт коммутатора (Root Port - RP), т.е. порт, являющийся частью пути с наименьшей корневой стоимостью.
  • К тому же сегменту Ethernet может быть подключено много коммутаторов, но в современных сетях с каждым каналом связи связано обычно лишь два коммутатора. Коммутатор с самой низкой корневой стоимостью, по сравнению с другими коммутаторами, подключёнными к тому же каналу связи, переводится в состояние перенаправления. Это выделенный коммутатор (designated switch), а присоединённыый к этому сегменту интерфейс коммутатора - выделенный порт (Designated Port - DP).
ВНИМАНИЕ!

Реальная причина, по которой корневые коммутаторы переводят все рабочие интерфейсы в состояние перенаправления (forwarding [ˈfɔːwədɪŋ]), заключается в том, что все они являются выделенными портами, но проще просто запомнить, что все рабочие интерфейсы всех корневых коммутаторов перенаправляют фреймы.


Все другие интерфейсы переводятся в состояние блокировки. В табл. 2 приведены причины, по которым протокол STP переводит порт в состояние перенаправления или блокировки.

Таблица 2. STP: причины для перевода порта в состояние перенаправления или блокировки

Характеристика порта
Состояние STP
Описание
Все порты корневого коммутатора
Перенаправление
Корневой коммутатор всегда является выделенным для всех подключённых сегментов
Корневой порт каждого некорневого коммутатора
Перенаправление
Порт с наименьшей стоимостью для доступа к корневому коммутатору
Выделенный порт каждой сети LAN
Перенаправление
Коммутатор, перенаправляющий сообщения Hello в сегмент, с самой низкой корневой стоимостью, является выделенным коммутатором (рис. 10) для этого сегмента
Все другие рабочие порты
Блокировка
Порт не используется ни для перенаправления пользовательских фреймов, ни для получения любых фреймов, предназначенных для перенаправления
ВНИМАНИЕ!

Протокол STP учитывает только рабочие интерфейсы (т.е. находящиеся в подключённом состоянии). Интерфейсы отключённые физически (например, без кабеля) или отключённые административно протокол STP переводит в блокированное состояние. Таким образом, используется термин рабочий порт (working port) для интерфейсов, способных перенаправлять фреймы, если бы протокол STP перевёл интерфейс в состояние перенаправления.


Идентификатор моста STP и пакет BPDU Hello

Сначала протокол STP выбирает один коммутатор как корневой. Чтобы лучше понять процесс выбора, следует уяснить, какие сообщения STP передаются между коммутаторами, а также концепции и формат идентификатора, позволяющего однозначно определить каждый коммутатор.
Идентификатор моста STP (Bridge ID ) представляет собой 8-байтовое значение, уникальное для каждого коммутатора. Идентификатор моста состоит из 2-байтового поля приоритета (priority) и 6-байтового системного идентификатора (system ID), в основе которого лежит универсальный (прошитый на заводе, на оборудовании Cisco его можно увидеть на корпусе) MAC-адрес каждого коммутатора. Использование прошитого MAC-адреса гарантирует, что идентификатор моста каждого коммутатора будет уникален.
Протокол STP определяет сообщения модуля данных протокола моста (Bridge Protocol Data Unit - BPDU), используемые коммутаторами для обмена информацией друг с другом. Наиболее распространённым сообщением BPDU является пакет Hello, содержащий много подробностей, включая идентификатор BID коммутатора. Передавая свои уникальные идентификаторы BID, коммутаторы способны распознать, кто какой пакет Hello передал. Часть ключевой информации пакета Hello приведена в табл. 3.

Таблица 3. Поля пакета Hello протокола STP

Поле
Описание
RID - идентификатор корневого моста
Отправивший это сообщение Hello коммутатор в настоящее время считает себя корневым
BID - идентификатор моста отправителя
Идентификатор моста коммутатора, отправившего это сообщение Hello
rootcost - корневая стоимость отправителя
Стоимость STP пути между этим коммутатором и текущим корневым
Значение таймера на корневом коммутаторе
Значение таймеров Hello, MaxAge, и таймера задержки перенаправления
Сейчас основное внимание обратите лишь на первые три элемента табл. 3, поскольку далее будут рассмотрены три этапа выбора протоколом STP интерфейсов, переводимых в состояние перенаправления. Итак, рассмотрим три основных этапа процесса STP.

Выбор корневого коммутатора

Коммутаторы выбирают корневой коммутатор на основании идентификаторов BID в сообщениях (анонсах) BPDU. Корневой коммутатор - это коммутатор с самым низким числовым значением идентификатора BID. Поскольку идентификатор BID состоит из двух частей, начиная со значения приоритета, корневым, по существу, становится коммутатор с самым низким приоритетом. Например, если у одного коммутатора приоритет 4096, а у других 8192, то победит коммутатор с приоритетом 4096, независимо от MAC-адреса, использованного для создания идентификатора BID каждого коммутатора.
Поскольку выбор происходит на основании части приоритета идентификатора BID, при равных приоритетах корневым станет коммутатор с самой низкой частью MAC-адреса. Никакой другой схемы разрешения конфликтов не нужно, поскольку во второй части своих идентификаторов BID коммутаторы используют собственные универсальные (прошитые) MAC-адреса. Если при равенстве приоритетов один коммутатор использует как часть BID MAC-адрес 0200.0000.0000, а другой 0911.1111.1111, то корневым станет первый коммутатор (MAC-адрес 0200.0000.0000).
Выборы корневого коммутатора протоколом STP проходит совсем не так, как политические выборы. Процесс начинается с передачи сообщений BPDU Hello всеми коммутаторами, которые собираются стать корневыми. Собственный идентификатор BID коммутатора в этих сообщениях заявлен как корневой BID. Если коммутатор получает сообщение Hello c лучшим (более низким) идентификатором BID, он прекращает анонсировать себя как корневой и начинает перенаправлять сообщение Hello лучше, чем у него. Сообщение Hello, посланное лучшим коммутатором, содержит идентификатор BID лучшего коммутатора в качестве корневого. Это как в предвыборной компании, когда менее популярный кандидат сдаётся и, прекращая собственную кампанию, оказывает поддержку более популярному кандидату. В конечном счёте все соглашаются, что у некого коммутатора наилучший (самый низкий) идентификатор BID, и поддерживает избранный коммутатор, а аналогия с политической предвыборной кампанией на этом заканчивается.
ВНИМАНИЕ!

Смысл лучшего сообщения Hello в том, что указанный в нём идентификатор BID корневого коммутатора лучше (в цифровой форме меньше). Это наилучшее сообщение Hello (superior Hello). У худшего сообщения Hello идентификатор BID корневого коммутатора не так хорош (в цифровой форме больше). Это не наилучшее сообщение Hello (inferior Hello).


На рис. 6 представлено начало процесса выборов корневого коммутатора. В данном случае коммутатор sw1 анонсировал себя корневым, как и коммутаторы sw2 и sw3. Но коммутатор sw2 теперь полагает, что коммутатор sw1 лучший корневой коммутатор, поэтому он теперь перенаправляет сообщения Hello, посланные коммутатором sw1. Таким образом, на настоящий момент на рисунке показан коммутатор sw1, передающий сообщения Hello, с заявкой на роль корневого; коммутатор sw2 соглашается с этим и перенаправляет сообщение коммутатора sw1 с заявкой на роль корневого; но коммутатор sw3 всё ещё утверждает, что он лучший, посылая собственное сообщение BPDU Hello, содержащее идентификатор BID коммутатора sw3 как корневого.
На рис. 6 всё ещё есть два кандидата: коммутаторы sw1 и sw3. Так кто же победит? Конечно, коммутатор, идентификатор BID которого содержит самый низкий приоритет; если приоритеты равны, победит обладающий меньшим значением MAC-адреса. Как показано на рисунке, у коммутатора sw1 идентификатор BID (32769:A40C.C301.0001) меньше, чем у коммутатора sw3 (32769:A40C.C303.0003), поэтому побеждает коммутатор sw1, а коммутатор sw3 теперь также полагает, что он лучший коммутатор. На рис. 7 представлены результирующие сообщения Hello, посланные коммутаторами.  
Рис. 6. Начало процесса выборов корневого коммутатора
Рис. 7. Коммутатор sw1 побеждает на выборах
По завершении выборов только корневой коммутатор продолжает передавать сообщения Hello. Другие коммутаторы получают сообщения Hello, изменяют поле BID отправителя (и поле корневой стоимости), а затем перенаправлют их на другие интерфейсы. Рисунок отражает тот факт, что на этапе 1 коммутатор sw1 посылает сообщения Hello, а коммутаторы sw2 и sw3 независимо перенаправляют их на другие интерфейсы (этап 2).
Таким образом, выборы корневого коммутатора происходят на каждом коммутаторе, претендующем на роль корневого, а наилучшим считается коммутатор с самым низким (в цифравой форме) идентификатором BID. При разделении идентификатора BID на компоненты сравнение осуществляется так.

Логика выбора корневого коммутатора

  • Самый низкий идентификатор моста
  • При равенстве самый низкий MAC-адрес коммутатора

Выборы корневого порта каждого коммутатора

Вторая часть процесса STP - это выбор каждым некорневым коммутатором одного и только одного корневого порта (Root Port - RP). Корневой порт коммутатора - это интерфейс с наименьшей стоимостью STP для доступа к корневому коммутатору. 
Идея стоимости доступа к корневому коммутатору и связанная с каждым портом коммутатора стоимость STP, а также некий рассматриваемый коммутатор. Конечно, коммутаторы используют совсем не такой процесс, как на рисунке, но он облегчает описание идеи.
На рис. 8 представлена именно такая схема с теми же тремя коммутаторами, что и на нескольких предыдущих рисунках. Коммутатор sw1 уже выиграл выборы как корневой, так на рисунке ниже рассматривается стоимость с точки зрения коммутатора sw3.
Рис. 8. Как человек мог бы вычислить стоимость STP от коммутатора sw3 до корневого коммутатора sw1
У коммутатора sw3 есть два возможных физических пути для передачи фреймов на корневой коммутатор: прямой путь (слева) и обходной (справа, через коммутатор sw2). Стоимость (cost) - это сумма стоимостей всех портов, покидаемых фреймов, если бы он следовал по этому пути (входящие порты вычисление игнорируют). Как можно заметить, общая стоимость прямого пути через порт Gi0/1 коммутатора sw3 состовляет 4, а общая стоимость другого пути - 8. Коммутатор sw3 выбирает свой порт Gi0/1 как корневой, поскольку он является частью пути с наименьшей стоимостью для передачи фреймов на корневой коммутатор.
Коммутаторы приходят к тому же выводу, но в ходе другого процесса. Вместо этого они добавляют стоимость STP своего локального интерфейса к корневой стоимости, указанной в каждом полученном пакете BPDU Hello. Стоимость STP маршрута через порт - это целочисленное значение, присвоенное каждому интерфейсу каждой сети VLAN для обеспечения объективного измерения, позволяющее протоколу STP выбрать, какие интерфейсы добавить в топологию STP. Коммутаторы учитывают также корневую стоимость своего соседа, анонсируемую в каждом полученном от каждого соседа пакета BPDU Hello.
На рис. 9 приведён пример вычисления коммутаторами своей лучшей корневой стоимости и последующего выбора корневого порта, с использованием той же топологии и стоимостей STP, что и на рис. 8. Протокол STP на коммутаторе sw3 вычисляет свою стоимость доступа к корневому коммутатору по двум возможным путям с добавлением анонсируемой (в сообщении Hello) стоимости к стоимости интерфейса, приведённого на рисунке.
Сначала рассмотрим сам процесс. Корневой коммутатор посылает сообщения Hello с указанной корневой стоимостью 0. Идея в том, что стоимость корневого коммутатора для доступа к себе самому составляет 0.
Теперь рассмотрим левую часть ресунка. Коммутатор sw3 берёт стоимость 0, полученную в сообщении Hello, посланном коммутатором sw1, добавляет стоимость 4 интерфейса, на котором было получено сообщение Hello. Коммутатор sw3 вычисляет стоимость доступа к корневому коммутатору через этот порт Gi0/1 и получает 4.
В правой части рисунка коммутатор sw2 вычислил, что его лучшая стоимость доступа корневого коммутатора составляет 4. Таким образом, когда коммутатор sw2 перенаправляют пакет Hello коммутатору sw3, он указывает корневую стоимость 4. Стоимость маршрута коммутатора sw3 через порт Gi0/2 составляет 4, поэтому коммутатор sw3 определяет общую стоимость доступа к корневому коммутатору через порт Gi0/2 как 8.
Рис. 9. Так протокол STP фактически вычисляет стоимость от коммутатора sw3 до корневого коммутатора sw1
В результате изображённого на рис. 9 процесса коммутатор sw3 выбирает свой порт Gi0/1 как корневой (Root Port - RP), поскольку стоимость доступа к корневому коммутатору через него состовляет 4, что ниже, чем у альтернативы (стоимость через порт Gi0/2 = 8). Точно так же коммутатор sw2 выбирает свой порт Gi0/2 как порт RP со стоимостью 4 (коммутатор sw1 анонсировал стоимость 0 плюс стоимость 4 интерфейса Gi0/2 коммутатора sw2). Каждый коммутатор переводит свой корневой порт в состояние перенаправления (FWD).
В более сложной топологии выбор корневого порта не будет столь очевиден. Более подробная информация по этой теме и более сложные примеры, включая схемы разрешения конфликтов при совпадении корневых стоимостей будут рассмотрены далее.

Выбор выделенного порта на каждом сегменте LAN

Заключительный этап процесса STP по выбору топологии подразумевает выбор выделенного порта на каждом сегменте сети LAN. Выделенный порт (Designated Port - DP) сегмента LAN - это порт коммутатора, анонсирующий в сегмент LAN сообщения Hello с самой низкой стоимостью. Когда некорневой коммутатор перенаправляет сообщения Hello, он записывает в поле корневой стоимости сообщения стоимость доступа к корневому коммутатору. В результате коммутатор с самой низкой стоимостью доступа к корневому коммутатору из всех коммутаторов сегмента становится портом DP на этом сегменте.
Например, на рис. 7 зелёным шрифтом выделены части сообщений Hello от коммутаторов sw2 и sw3, определяющих выбор порта DP на данном сегменте. Обратите внимание, что оба коммутатора, sw2 и sw3, имеют свою стоимость доступа к корневому коммутатору (4 у sw2 и 4 у sw3 соответственно).
Так как анонсируемые сети совпадают, выбирается коммутатор с более низким идентификатором BID. Выиграл коммутатор sw2, его идентификатор BID 32769:A40C.C302.0002 меньше чем 32769:A40C.C303.0003 у коммутатора sw3.
Все порты DP переводятся в состояние перенаправления; таким образом, интерфейс Gi0/1 коммутатора sw2 в данном случае будет в состоянии перенаправления.
Но если бы стоимость у коммутатора sw3 была меньше, то порт Gi0/2 стал бы выделенным портом на этом сегменте LAN.
Единственный интерфейс, которому нет причин оставаться в состоянии перенаправления на трёх коммутаторах в примерах на рис. 6 - 9, - это порт Gi0/2 коммутатора sw3. Итак, процесс STP завершён. В табл. 4 приведены состояния каждого порта и причины его нахождения в этом состоянии.
Таблица 4. Состояние каждого интерфейса
Интерфейс коммутатора
Состояние
Причина нахождения в состоянии перенаправления
sw1 Gi0/1
Перенаправление
Интерфейс находится на корневом коммутаторе, поэтому он становится портом DP на этом канале связи
sw1 Gi0/2
Перенаправление
Интерфейс находится на корневом коммутаторе, поэтому он становится портом DP на этом канале связи
sw2 Gi0/2
Перенаправление
Корневой порт коммутатора sw2
sw2 Gi0/1
Перенаправление
Выделенный порт сегмента LAN на коммутаторе sw3
sw3 Gi0/1
Перенаправление
Корневой порт коммутатора sw3
sw3 Gi0/2
Блокировка
Некорневой и невыделенный порт

Влияние и изменение топологии STP

Коммутаторы не используют протокол STP только один раз и больше никогда. Коммутаторы отслеживают изменения непрерывно. Причиной этих изменений может стать отказ канала связи или коммутатора, либо может появиться новый канал связи, доступный для использования. Топологию STP может изменить смена конфигурации. Далее будут рассмотрены коротко факты, способные изменить топологию STP либо при смене конфигурации, либо при изменении состояния каналов связи или устройств LAN. 

Внесение изменений в конфигурацию влияет на топологию STP

Сетевые инженеры вполне могут изменить параметры STP, что повлияет на результаты выборов в данной сети LAN. Для изменения идентификатора моста и стоимости маршрута через порт STP инженеру доступны два основных инструмента.
Коммутатор способен создать стандартный идентификатор BID из стандартного значения приоритета и уникального MAC-адреса, прошитого на коммутаторе при изготовлении. Но инженеры обычно сами выбирают, какой коммутатор станет корневым. Далее будет рассмотрена настройка коммутатора Cisco и переопределение его стандартного идентификатора BID так, чтобы он стал корневым.
Стоимости маршрута через порт также имеют стандартные значения по каждому порту и сети VLAN. Эти стоимости маршрута через порт также можно настроить или можно использовать стандартные значения. В табл. 5 приведены стоимости маршрута через порт согласно стандарту IEEE; компания Cisco использует эти же значения.

Таблица 5. Стандартные стоимости маршрута через порт согласно IEEE

Скорость Ethernet
Стоимость IEEE
10 Мбит/с
100
100 Мбит/с
19
1 Гбит/с
4
10 Гбит/с
2
25 Гбит/с
1
40 Гбит/с
1
При включённом протоколе STP все рабочие интерфейсы коммутатора находятся либо в состоянии STP перенаправления, либо блокировки, даже порты доступа.  Если интерфейсы коммутатора подключены к хостам или маршрутизаторам, не использующим протокол STP, коммутатор продолжает перенаправлять пакеты Hello на эти интерфейсы. Чтобы стать единственным устройством, посылающим пакеты Hello в этом сегменте LAN, коммутатор посылает пакеты Hello с наименьшей стоимостью на этот сегмент LAN, позволяя коммутатору стать выделенным портом на этом сегменте сети LAN. Таким образом, протокол STP переводит рабочие интерфейсы доступа в состояние перенаправления в ходе части процесса STP, относящейся к выделенному порту.

Реакция на изменение состояния влияет на топологию STP

Как только инженер закончит настройку протокола STP, топология STP должна перейти в стабильное состояние и не изменяться, по крайней мере, до изменения топологии сети. В данном разделе рассматривается работа протокола STP в то время, когда сеть стабильна, а затем при переходе на новую топологию, когда что-то изменяется.
Стандартно корневой коммутатор посылает новые сообщения BPDU Hello каждые 2 секунды. Каждый некорневой коммутатор перенаправляет сообщения Hello на все выделенные порты (DP), но только после изменяющихся элементов, выведенных в сообщениях Hello. Коммутатор вносит корневую стоимость в вычисляемую корневую стоимость локального коммутатора. Коммутатор устанавливает также в поле идентификатора моста отправителя собственный идентификатор моста (поле идентификатора моста корневого коммутатора не изменяется).
При перенаправлении полученного (и изменённого) пакета Hello все выделенные порты (DP) всех коммутаторов продолжают получать сообщения Hello каждые 2 секунды. Ниже приведена последовательность действий при стабильной работе, когда в топологии STP ничего не изменяется.

Работа протокола STP в стабильных условиях

Этап 1. Корневой коммутатор создаёт и посылает сообщения BPDU Hello с корневой стоимостью 0 (ноль) через все свои рабочие интерфейсы (находящиеся в состоянии перенаправления)
Этап 2. Некорневые коммутаторы получают сообщения Hello на своих корневых портах. После замены в сообщении Hello идентификатора BID отправителя на собственный и указания собственной корневой стоимости коммутатор перенаправляет сообщение Hello на все выделенные порты
Этап 3. Этапы 1 и 2 повторяются, пока что-то не изменится
Для контроля работоспособности пути к корневому коммутатору каждый коммутатор полагается на периодическое получение сообщений Hello от корневого коммутатора. Когда коммутатор прекращает получать сообщения Hello или получает сообщение Hello с другими подробностями, он понимает, что что-то отказало, и реагирует, запуская процесс изменения топологии распределённого связующего дерева.

Как коммутаторы реагируют на изменения топологии STP

По некоторым причинам процесс конвергенции требует использования трёх таймеров. Все коммутаторы используют таймеры, как диктует корневой коммутатор, периодически передающий сообщения BPDU Hello. Таймеры описаны в табл. 6.

Таблица 6. Таймеры STP

Таймер
Описание
Стандартное значение
Hello
(hello time)
Период времени между передачей сообщений Hello корневым коммутатором
2 секунды
Max Age
(maximum-aging time)
Как долго коммутатор должен ожидать после прекращения поступления сообщений Hello, прежде чем пытаться изменять топологию STP
20 секунд
(10 периодов Hello Time)
Forward Delay
(forward-delay time)
Задержка, влияющая на процесс, происходящий при изменении интерфейсом состояния с блокировки на перенаправление. На протяжении секунд, заданных таймером, задержки перенаправления порт остаётся в промежуточном состоянии прослушивания, а затем переходит в промежуточное состояние самообучения
15 секунд
Если коммутатор не получает ожидаемых сообщений BPDU Hello за период Hello, то продолжает работать как обычно. Но если сообщения Hello не поступают на протяжении периода Max Age, то коммутатор реагирует действиями, изменяющими топологию STP. При стандартных настройках таймер Max Age состовляет 20 секунд (10 стандартных таймеров Hello по 2 секунды). Таким образом, коммутатор не будет реагировать 20 секунд, не получая сообщений Hello.
По истечении периода Max Age коммутатор начинает, по существу, новые выборы STP на основании любых пакетов Hello, поступающих от других коммутаторов. В результате корневой коммутатор выбирается заново. Если локальный коммутатор не становится корневым, он выбирает свой корневой порт (RP). И это определяет, будут ли это выделенные порты (DP) на каждом из его других каналов связи. Лучше всего описать конвергенцию STP на примере, используя уже знакомую топологию. На рис. 10 представлена та же схема с интерфейсом Gi0/2 коммутатора sw3 в состоянии блокировки, но интерфейс Gi0/2 коммутатора sw1 только что отказал.
Рис. 10. Начальное состояние топологии STP перед отказом канала связи sw1 - sw3
Коммутатор sw3 реагирует на изменения, поскольку не получает ожидаемые сообщения Hello на своём интерфейсе Gi0/1. Но коммутатор sw2 не должен реагировать, поскольку он продолжает регулярно получать сообщения Hello на своём интерфейсе Gi0/2. В данном случае коммутатор sw3 реагирует либо по истечении периода Max Age без сообщений Hello, либо как только заметит, что его интерфейс Gi0/1 отказал (еcли интерфейс отказал, коммутатор может заметить, что сообщения Hello больше не поступают на этот интерфейс).
Теперь, когда коммутатор sw3 может действовать, он начинает повторный процесс выбора корневого коммутатора. Коммутатор sw3 всё ещё получает сообщения Hello от коммутатора sw2, пересылаемые с корневого коммутатора sw1. Идентификатор BID коммутатора sw1 всё ещё ниже, чем у коммутатора sw3; в противном случае коммутатор sw1 уже не был бы корневым. Таким образом, коммутатор sw3 решает, что коммутатор sw1 всё ещё лучший, а он сам некорневой.
Затем коммутатор sw3 переоценивает свой выбор корневого порта (RP). На настоящий момент коммутатор sw3 получает сообщения Hello только на одном интерфейсе Gi0/2. Безотносительно вычисляемой корневой стоимости, интерфейс Gi0/2 становится новым корневым портом коммутатора sw3 (он имел бы стоимость = 8, подразумевая, что стоимости STP не изменились с момента, изображённого на рис. 8 - 9).  
Затем коммутатор sw3 переоценивает свою роль выделенного порта (DP) на любых других интерфейсах. В этом примере никаких изменений быть не должно. Коммутатор sw3 уже был выделенным портом на интерфейсе Fa0/13 и остаётся им, поскольку никакие другие коммутаторы не соединены с этим портом.

Изменение состояния интерфейса в STP

Протокол STP использует концепции ролей (role) и состояний (state). Роли корневого и выделенного портов относятся к тому, как протокол STP анализирует топологию сети LAN. Состояния перенаправления и блокировки указывают коммутатору, нужно ли передавать и получать фреймы. При конвергенции STP коммутатор выбирает новые роли для порта, а роли порта определяют состояние (перенаправления или блокировки).
Коммутаторы способны практически мгновенно перейти из состояния блокировки в состояние перенаправления, но для смены состояния им нужно дополнительное время. Например, если прежде коммутатор использовал свой порт Gi0/1 как корневой (роль RP), он находился в состоянии перенаправления. После конвергенции порт Gi0/1 может и не остаться ни корневым, ни выделенным; коммутатор может немедленно перевести его в состояние блокировки.
При переводе порта из состояния блокировки в состояние перенаправления коммутатор сначала помещает порт в два промежуточных состояния. Эти временные состояния позволяют предотвратить временные циклы (петли).

Определения происходящего в состояниях прослушивания и самообучения

  • Прослушивание (listening). Как и в состоянии блокировки, интерфейс не перенаправляет фреймы. Коммутатор удаляет устаревшие (неиспользуемые) записи таблицы MAC-адресов, для которых (или от которых) за данный период не было получено фреймов. Устаревшие записи таблицы MAC-адресов могут стать причиной временных петель.

  • Самообучение (learning). Интерфейсы в этом состоянии всё ещё не перенаправляют фреймы, но коммутатор начинает изучать MAC-адреса фреймов, полученных на интерфейсе.
Протокол STP переводит интерфейс из состояния блокировки в состояние прослушивания, затем в состояние самообучения, потом в состояние перенаправления. Протокол STP оставляет интерфейс в каждом из промежуточных состояний на время, равное периоду задержки перенаправления (стандартно 15 секунд). В результате событие конвергенции, переводящее интерфейс из состояния блокировки в состояние перенаправления, требует 30 секунд. Кроме того, коммутатору, возможно, придётся выждать период Max Age, прежде чем перейти к выборам.
Например, рассмотрим происходящее с начальной топологией STP, показанной на рис. 6 - 9, при отказавшем канале связи между sw1 и sw3 ( см. рис. 10). Если коммутатор sw1 просто перестанет посылать сообщения Hello на коммутатор sw3, но канал связи между ними будет исправен, то прежде чем реагировать, коммутатор sw3 выждет период Max Age (стандартно 20 секунд). Фактически коммутатор sw3 довольно быстро выбрал бы роли STP своих портов, но затем он ожидал бы по 15 секунд в состояниях прослушивания и самообучения на интерфейсе Gi0/2, что привело бы к суммарной задержке конвергенции в 50 секунд.

Таблица 7. Состояния интерфейсов протокола STP по стандарту IEEE 802.1D

Состояние
Перенаправляет ли фреймы?
Изучает MAC-адреса на основании полученных фреймов?
Стабильное или промежуточное?
Блокирования
Нет
Нет
Стабильное
Прослушивания
Нет
Нет
Промежуточное
Прослушивания
Нет
Да
Промежуточное
Перенаправления
Да
Да
Стабильное
Отключения
Нет
Нет
Стабильное

Дополнительные средства протокола STP

Протокол STP существует более тридцати лет, хотя использовался даже раньше, чем Институт инженеров по электротехнике и электронике (Institute of Electrical and Electronic Engineers - IEEE) приступил к разработке стандартов Ethernet для Xerox и других производителей. Впервые IEEE стандартизировал протокол STP как стандарт IEEE 802.1D в 1980-х годах. Нынче коммутаторы Cisco всё ещё используют протокол STP. Кроме изменений стандартных значений стоимости, описание протокола STP до сих пор относилось к оригинальному протоколу STP, созданному многие годы назад.
Даже при такой удивительно долгой продолжительности существования (несколько десятилетий) протокол STP претерпел несколько изменений, больших и маленьких. Например, компания Cisco добавила в протокол STP несколько собственных усовершенствований. В некоторых случаях IEEE добавил эти усовершенствования в последующий стандарт, например 802.1D, или оформил как дополнительный стандарт. У протокола STP есть новая версия с улучшенной конвергенцией - ускоренный протокол распределённого связующего дерева (Rapid Spanning Tree Protocol - RSTP), первоначально определённый в стандарте IEEE 802.1w
В заключении мы кратко рассмотрим основы некоторых из необязательных средств, не входящих в базовые концепции протокола STP стандарта 802.1D, ключая:
  • Канал EtherChannel
  • PortFast
  • Функцию BPDU Guard

Канал EtherChannel и STP

Один из наилучших способов снижения времени конвергенции STP заключается в том, чтобы вообще избежать конвергенции. Канал EtherChannel позваляет избежать необходимости в конвергенции STP при отказе только одного порта или кабеля.
Канал EtherChannel объединяет несколько (до восьми) параллельных сегментов с равной скоростью между той же парой коммутаторов, связанных каналом EtherChannel.  Коммутаторы рассматривают канал EtherChannel как единый интерфейс (логический) с точки зрения протокола STP. В результате при отказе одного из каналов связи, например интерфейсы Gi0/3 у коммутаторов sw3 и sw1, по крайней мере при наличии одного рабочего канала связи, конвергенция STP необязательна рис. 11.
Рис. 11. Отказ одного канала связи в EtherChannel, конвергенция STP необязательна
На каналах связи EtherChannel, состоящих из двух каналов связи Ethernet, протокол STP рассматривает каждый канал EtherChannel как единый канал связи. Другими словами, чтобы вызывать конвергенцию STP, отказать должно оба канала связи (рис. 12) с тем же коммутатором. Без канала EtherChannel, если между двумя коммутаторами есть несколько параллельных каналов связи, протокол STP блокирует все каналы связи, кроме одного. При наличии канала EtherChannel все параллельные каналы связи могут работать одновременно, время конвергенции STP сокращается, что, в свою очередь, повышает доступность сети.
Рис. 12. Отказ двух каналов связи в EtherChannel, конвергенция STP обязательна
Когда коммутатор принимает решение о перенаправлении фрейма по каналу EtherChannel, он должен предпринять дополнительный логический этап, на какой именно физический интерфейс передать фрейм? У коммутатора есть логика балансировки нагрузки, позволяющая ему выбрать интерфейс для каждого фрейма так, чтобы распределить нагрузку по всем активным каналам связи в канале EtherChannel. В результате сеть LAN, использующая каналы EtherChannel, намного лучше использует доступную ширину полосы пропускания между коммутаторами, при сокращении времени конвергенции STP. Более подробно про технологию EtherChannel можно ознакомиться здесь.

Режим PortFast и STP

Режим PortFast позволяет коммутатору немедленно переходить из состояния блокировки в состояние перенаправления (см. рис. 13), в обход состояний прослушивания и самообучения. Однако единственные порты, на которых можно безопасно включить режим PortFast - это порты, к которым гарантированно не подключены никакие мосты, коммутаторы или другие устройства STP. В противном случае режим PortFast способен создавать петли, во избежание которых предназначены состояния прослушивания и самообучения.
Рис. 13. Режим PortFast, переход из состояния блокировки в состояние перенаправления
Режим PortFast лучше всего подходит для соединений с устройствами конечного пользователя. Если включить режим PortFast на портах, соединённых с устройствами конечного пользователя, при включении компьютера конечного пользователя порт коммутатора может перейти в состояние перенаправления STP и начать перенаправлять трафик, как только сетевая плата компьютера станет активной. Без режима PortFast каждый порт вынужден ждать, пока коммутатор подтвердить роль выделенного порта (DP), а затем подождёт, пока интерфейс находится в промежуточных состояниях прослушивания и самообучения, прежде чем перейти в состояние перенаправления.

Функция BPDU Guard и STP

Протокол STP открывает в сети LAN несколько брешей для нарушения её безопасности. Например:
  • Злоумышленник может подключиться к коммутатору через один из портов с низким значением приоритета STP и сделать его корневым коммутатором. У новой топологии STP может оказаться худшая производительность, чем у желательной топологии.
  • Злоумышленник может включить несколько портов на нескольких коммутаторах, чтобы сделать свой коммутатор корневым, и фактически перенаправлять через него бóльшую часть трафика сети LAN. Если сотрудники не воспрепятствуют, злоумышленник может использовать анализатор LAN для копирования фреймов данных, передаваемых по локальной сети.
  • Пользователи по неосторожности могут повредить LAN, купив и подключив недорогой потребительский коммутатор LAN (неспособный использовать протокол STP). Такой коммутатор без функций STP не станет блокировать порты и, вероятно, создаст петли.
Функция Cisco BPDU Guard позволяет предотвратить проблемы с режимом PortFast. Режим PortFast должен быть разрешён только на тех портах доступа к сети, которые соединены с пользовательскими устройствами, но не с другими коммутаторами LAN. Использование функции BPDU Guard на тех же портах имеет смысл, поскольку при подключении к такому порту другого коммутатора локальный коммутатор может отключить порт прежде, чем образуется петля.

Протокол Rapid STP IEEE 802.1w

Как уже упоминалось выше, IEEE определяет протокол STP в стандарте IEEE 802.1D. Улучшенная версия протокола, ускоренный протокол распределённого связующего дерева (RSTP), определена в стандарте IEEE 802.1w
Протокол RSTP 802.1w работает точно также, как протокол STP 802.1D в следующем.
  • Выбирает корневой коммутатор, используя теже параметры и схемы разрешения конфликтов.
  • Выбирает корневой порт на некорневых коммутаторах по тем же правилам.
  • Переводит все порты в состояние перенаправления или блокировки, хотя в протоколе RSTP состояние блокировки называется состояние игнорирования (discarding state).
Протокол RSTP может быть развёрнут параллельно с традиционным протоколом STP 802.1D, включая средства RSTP, работающие на коммутаторах, поддерживающих его, и традиционные средства протокола STP 802.1D, работающие на коммутаторах с поддержкой только протокола STP.
При всех этих сходствах может возникнуть вопрос: почему IEEE потрудился создать протокол RSTP? Причина в конвергенции. Конвергенция протокола STP занимает относительно много времени (50 секунд, со стандартными настройками). Протокол RSTP улучшает конвергенцию сети при изменении топологии; обычно она занимает несколько секунд, а в самых плохих случаях порядка 10 секунд. 
В реальной жизни большинство корпоративных локальных сетей используют пректы сетей, требующих применения протокола STP, а большинство из них предпочитает использовать протокол RSTP из-за лучшей конвергенции. Однако на экзамене CCNA компании Cisco уделяет больше внимания протоколу RSTP, чем на экзамене CCNP. Тем, кто по работе связан с коммутацией LAN, имеет смысл изучить работу и реализацию протокола 802.1w/RSTP на коммутаторах вашей сети. 
«-«-«- Назад
Вперед -»-»-»

Реализация протокола STP

🔁

Приветствуем всех любителей ретро-игровой индустрии на канале RetraR
Сувенирная и брендированная продукция с персонажами из любимых игр.
RetraR — Компьютерные игры для Nintendo Game Boy
RetraR - Computer games for Nintendo Game Boy 🌌🛸👽👾☄️🤖
RetraR - 任天堂ゲームボーイ用コンピュータゲーム 🎮🕹️👾

RetraR в VK
Канал - RetraR в Telegram

Оформить заказ

Нажимая на кнопку, вы даете согласие на обработку персональных данных

Спасибо за заказ

Ваш заказ принят в обработку. 

Мы свяжемся с вами в ближайшее время.