| 2.3.4 Протокол Spanning Tree Protocol (STP) |
|
Данный раздел разбит на следующие секции:
◆ Секция 2.3.4.1, ”Введение"
◆ Секция 2.3.4.2, ”Определение корневого коммутатора” ◆ Секция 2.3.4.3, ”Пакеты BPDU” ◆ Секция 2.3.4.4, ”Статусы портов в протоколе Spanning Tree” ◆ Секция 2.3.4.5, ”Таймеры протокола Spanning Tree” ◆ Секция 2.3.4.6, ”Вес пути в Spanning Tree” ◆ Секция 2.3.4.7, ”Пример изменения топологии в STP” ◆ Секция 2.3.4.8, ”Rapid Spanning Tree (802.1w)” ◆ Секция 2.3.4.9, "Multiple Spanning Tree (802.1s)"
Достаточно важной технологией для 2-го сетевого уровня, является протокол STP. Данная технология была изобретена Радиа Перлманом. Данный протокол используется при соединении между собой, двух и более коммутаторов дублирующимися соединениями или при построении сети по топологии «mesh» (связь всех со всеми). Протокол Spanning Tree, обеспечивает стабильную работу сети, путем анализа топологии и устранения петель (forwarding loops) между коммутаторами, создавая граф (дерево) передачи пакетов между коммутаторами.
Петля (forwarding loop), может возникать в тех случаях, когда топология сети содержит дублирующиеся пути передачи пакетов, а STP не используется. Пример такой топологии изображен на рисунке 16.
Рисунок 16. Forwarding loop
Как показано на рисунке 16, сервер отправляет пакет на MAC адрес 00:11:11:11:11:11. Когда коммутатор Ethernet-switch-A получит этот пакет, он не распознает адреса получателя (DA) и выполнит unicast flood, т.е. разошлет пакет через все имеющиеся порты (см. Раздел 2.3.3, ”Одноадресный поток пакетов (unicast flood)”). Таким образом, пакет попадет на коммутаторы B и C, которые также не распознают адреса получателя и выполнят unicast flood. Данный процесс будет повторяться бесконечно долго, и достаточно быстро займет всю пропускную способность между коммутаторами A, B и C.
Важно понимать, как протокол Spanning Tree, работает в конвергентных сетях
FCoE. Если на сетевых адаптерах CNA включено использование протокола Spanning Tree, то время установления сетевого соединения между адаптером и коммутатором, значительно увеличивается. По этой причине, компания EMC рекомендует отключать поддержку протокола Spanning Tree, на тех интерфейсах коммутатора, к которым подключаются адаптеры CNA.
Протокол Spanning Tree (STP) работает следующим образом:
◆ STP – протокол управления соединениями, он позволяет осуществлять дублирование сетевых соединений и не допускает возникновения петель, между коммутаторами. При нормальном функционировании сети Ethernet, между двумя коммутаторами может быть активно лишь одно соединение, другие не будут использоваться.
◆ Т.к. несколько активных соединений между коммутаторами, создают петлю, STP блокирует одно или несколько таких соединений.
◆ Для обеспечения возможности резервирования соединений, протокол STP определяет граф (дерево) из сетевых коммутаторов. Протокол STP, вычислив дублирующиеся пути для данных, блокирует их, переводя в режим ожидания. В случае, если сегмент сети становится недоступным, или меняется вес пути графа STP (например, при изменении скорости соединения), алгоритм STP перестраивает дерево и если требуется, активирует резервные соединения.
◆ Работа протокола STP незаметна для оконечных узлов в сети, и неважно, подключены ли они к одному сегменту
LAN, или к LAN со множеством сегментов.
Все коммутаторы в сети LAN, работающие с STP, обмениваются между собой информацией, через специальные сообщения. Данные сообщения называются Bridge Protocol Data Units (BPDUs). Данные сообщения выполняют следующие функции:
◆ Выбор корневого коммутатора, для формирования топологии STP.
◆ Назначение основного коммутатора в каждом сегменте сети LAN.
◆ Удаление петлей, отключая передачу данных через дублирующиеся пути.
BPDUs (Bridge Protocol Data Units) – представляют из себя пакеты данных, предназначенные для обмена информацией между коммутаторами, например идентификаторами коммутаторов (Switch ID) и весом путей до корневого коммутатора (root path costs). STP использует BPDUs, для выбора корневого порта и коммутатора, а также для выбора основного порта и коммутатора для каждого сегмента сети.
Отправляя BPDU пакет, в качестве MAC адреса отправителя, коммутатор ставит свой собственный MAC адрес, а MAC адресом получателя пакета, является многоадресный, зарезервированный STP адрес 01:80:C2:00:00:00.
Существуют три типа пакетов BPDUs:
◆ Конфигурационные BPDU (Configuration BPDU (CBPDU)) — Используется для расчета графа STP
◆ Информирование об изменении топологии сети (Topology Change Notification (TCN)) — Используется для анонсирования изменений в топологии сети
◆ Подтверждение изменения топологии сети (Topology Change Acknowledgement (TCA)) — Используются для подтверждения TCNs
Пакеты BPDU регулярно посылаются по сети (по умолчанию, каждые 2 секунды), что позволяет коммутаторам постоянно отслеживать изменения в сети и немедленно реагировать на изменения.
Стабильность работы активной сетевой конфигурации, определяется следующими факторами:
◆ Уникальный идентификатор коммутатора (MAC адрес), ассоциируется с каждым коммутатором.
◆ Вес пути до корневого коммутатора, присваивается каждому порту.
◆ Идентификатор порта (MAC адрес), ассоциируется с каждым портом коммутатора.
Каждый конфигурационный BPDU содержит следующую информацию:
◆ Уникальный идентификатор коммутатора (MAC адрес), который переправляется корневому коммутатору.
◆ Вес пути до корневого коммутатора от отправившего пакет порта.
◆ Идентификатор порта (MAC адрес), отправившего пакет порта.
Обмен пакетами BPDU приводит к следующим результатам:
◆ Выбирается единственный корневой коммутатор. Если такой коммутатор не настроен вручную, то корневым выбирается коммутатор, с наименьшим MAC адресом.
◆ Высчитывается кратчайшее расстояние, от корневого коммутатора, до каждого коммутатора сети.
◆ Также определяются коммутаторы, расположенные близ корневого, они будут переправлять пакеты на корневой коммутатор.
◆ Выбираются порты коммутаторов, которые менее всего удалены от корневого коммутатора. Если есть несколько эквивалентных путей, то будет выбран порт с наименьшим MAC адресом.
◆ Выбираются порты, отключенные протоколом STP.
Если все коммутаторы сети настроены по умолчанию, то корневым коммутатором будет выбран коммутатор с наименьшим MAC адресом (ID шлюза). Однако, в зависимости от топологии сети, количества портов, типов и скоростей соединений, автоматический выбор корневого коммутатора по наименьшему MAC адресу, не всегда является оптимальным. Можно запустить перерасчет топологии STP заново, чтобы выбрать более подходящий корневой коммутатор, путем повышения его приоритета в сети.
На рисунке 17 отображен формат пакета BPDU.
Рисунок 17. Формат пакета BPDU
Когда топология сети еще не определена и сеть находится в неопределенном статусе, порт коммутатора, передавая данные, создает временные петли пакетов. Порты коммутаторов должны подождать некоторое время, пока не получат информацию о топологии сети, чтобы начать передавать пакеты по сети LAN. Также, они должны подождать, пока не истечет время жизни пакетов старой топологии.
Каждый порт коммутатора, который использует протокол STP, может находиться в одном из пяти состояний:
◆ Blocking — Порт находится в заблокированном состоянии. В данном состоянии, порт не передает пакеты, но получает и отвечает на служебные сообщения.
◆ Listening — Порт сканирует сеть. В данном состоянии, порт не имеет MAC адреса и не передает других MAC адресов, порт принимает и передает пакеты BPDU, а также получает и отвечает на служебные сообщения.
◆ Learning – Порт изучает топологию сети. В данном состоянии, порт не передает никаких пакетов, кроме пакетов BPDU. Порт находится в режиме заполнения таблицы MAC адресов, и готовится к началу передачи данных, а также он получает и отвечает на служебные сообщения.
◆ Forwarding – Порт находится в режиме передачи. В данном состоянии, порт принимает и передает все пакеты сети.
◆ Disabled – (Выключен – обычно переведен в такое состоянии вручную). Отключенный порт не принимает и получает никаких типов пакетов в сети.
После перезагрузки коммутатора или изменения топологии сети, порт, использующий STP, четырежды меняет свое состояния. Коммутаторы с резервными соединениями, и правильно настроенные коммутаторы, также могут иметь порты в статусах blocking или forwarding.
Этапы инициализации порта:
◆ С initializing в blocking
◆ С blocking в listening
◆ С listening в learning
◆ С learning в forwarding
◆ С Forwarding в disabled (при ручной настройке) — Не является обязательным шагом.
Таймеры в протоколе Spanning Tree, используются для обеспечения стабильности собранной топологии сети, а также для устранения дублирующихся пакетов в сети, перед началом передачи данных по сети. Существует несколько видов таймеров:
◆ Hello — Это время, между отправками на порт пакетов BPDU. По умолчанию, установлен интервал в 2 секунды, но на коммутаторе можно установить значение от 1 до 10 секунд.
◆ Forward delay — Это время, в течение которого порт коммутатора будет находиться в состояниях listening и learning. По умолчанию, установлено значение в 15 секунд, но на коммутаторе можно установить значение от 4 до 30 секунд.
◆ Max age — Таймер, контролирующий период времени, через которое порт сохраняет свою конфигурацию BPDU. По умолчанию, установлен интервал в 20 секунд, но на коммутаторе можно установить значение от 6 до 40 секунд.
По умолчанию, значения таймеров, используемые в протоколе Spanning Tree, достаточно велики для современных сетей. Например, посчитаем время инициализации порта коммутатора:
(20 секунд для Max age + 2 x forward delay (15 секунд на listening/learning)) = 50 секунд
Вес пути напрямую зависит от скорости соединения. Коммутаторы используют путь с наименьшим весом, как основной путь передачи данных. Если существует дублирующий путь, с более высоким весом, то путь не будет использоваться, до тех пор, пока путь с меньшим весом остается доступным. На следующей таблице показано соответствие скорости соединения и веса пути интерфейса.
На рисунке 18 изображен пример изначальной STP. Данная топология STP уже построена, и все порты ведут передачу данных.
Легенда к рисунку18:
◆ SW 1 - корневой коммутатор
◆ BPDUs отправлены от корневого коммутатора и спускаются вниз по дереву
Рисунок 18. Пример изначальной топологии STP
На рисунке 19 изображен пример изменения топологии STP. Как видно на рисунке, соединение между коммутаторами SW 3 и SW 5 оборвалось, и теперь нет прямого соединения меду коммутаторами SW 3 и SW 5.
Рисунок 19. Пример обрыва соединения
Шаги по восстановлению соединения с коммутатором SW 5:
1. Соединение между коммутаторами SW 3 и SW 5 оборвалось.
2. Коммутатор SW 5 прекратил получать BPDUs от коммутатора SW 3.
3. Коммутатор SW 5 ожидает Max age (20 секунд) и начинает обновлять топологию.
4. Коммутатор SW 3 отправляет пакет TCN через RP порт, чтобы информировать корневой коммутатор (SW 1) об изменении в топологии сети.
5. Коммутатор SW 1 подтверждает получение TCN, отправкой TCA.
6. Коммутатор SW 1 отправляет всем коммутаторам пакет BPDU, с выставленным битом TC (Topology Change), чтобы информировать все коммутаторы об изменении топологии сети.
После получения пакета BPDU с битом TC, каждый коммутатор удаляет из своей базы MAC адреса, которые старше 15 секунд. Это делается для того, чтобы в базе остались только активные MAC адреса, а остальные адреса будет собирать алгоритм протокола STP.
7. Коммутатор SW 5 обновляет топологию STP и начинает передавать данные через коммутатор SW 4.
На рисунке 20 показан пример восстановления топологии STP. В этом примере, соединение между коммутаторами SW3 и SW 5, было восстановлено.
Рисунок 20. Пример восстановления топологии STP
Шаги по восстановлению соединения между коммутаторами SW 3 и SW 5:
1. Коммутатор SW 5 получает BPDU от коммутатора SW 3.
2. Коммутаторы SW 3 и SW 5 отправляют TCN на корневой коммутатор (SW 1).
3. Коммутатор SW 5 блокирует оба RP порта и недавно подключенный порт, чтобы можно было начать процесс обновления топологии STP.
4. Коммутатор SW 1 отправляет TCA, подтверждая получение TCN.
6. Коммутатор SW 1 отправляет всем коммутаторам пакет BPDU, с выставленным битом TC (Topology Change), чтобы информировать все коммутаторы об изменении топологии сети.
После получения пакета BPDU с битом TC, каждый коммутатор удаляет из своей базы MAC адреса, которые старше 15 секунд. Это делается для того, чтобы в базе остались только активные MAC адреса, а остальные адреса будет собирать алгоритм протокола STP.
6. Коммутатор SW 5 завершает построение топологии STP и восстанавливает путь к корневому коммутатору SW 1, через коммутатор SW 3. Также он отключает путь через SW 4.
Протокол Rapid Spanning Tree (RSTP), был разработан для быстрого изменения топологии. В отличие от стандартного STP, использующего временные интервалы для сбора топологии сети, RSTP использует двухстороннюю передачу данных между активными портами. Коммутаторы сохраняют таблицы MAC адресов активных портов, участвующих в формировании Spanning Tree, что делает возможным обновление конфигурации более быстрым.
RSTP был построен на основе стандартного протокола STP, и он использует такие же механизмы определения топологии и корневого коммутатора. Также он создан с поддержкой обратной совместимости со стандартным STP (802.1d), где используется Common Spanning Tree (CST) для VLAN сетей. Однако у него есть собственные методы, позволяющие создавать несколько вариантов Spanning Tree, при использовании VLAN сетей.
Стандарты IEEE, основанные на RSTP, позволяют создавать единственное дерево для всех VLAN, работающих в одном STP домене.
Как работает Rapid Spanning Tree
Первоначальное построение архитектуры сети, у RSTP занимает столько же времени, как и у STP. Однако, когда топология сети построена, и все коммутаторы подключены, любые операции с сегментами сети (например добавление порта, восстановление соединения), происходят мгновенно, и не требуют такого количества времени, как при использовании стандартного протокола Spanning Tree. В зависимости от размеров сети, время, которое требуется на обновление топологии, варьируется от десяти миллисекунд, до нескольких секунд.
Когда коммутаторы обнаруживают изменения в топологии сети, они очищают свои таблицы MAC адресов и отправляют пакет TCN (Topology Change Notification), на другие коммутаторы, пропуская таймауты STP. Быстрота изменения топологии сети, в случае сбоев элементов сети, достигается за счет отсутствия таймаутов. Для обеспечения быстрого восстановления топологии, RSTP выполняет следующие действия:
◆ Отслеживает статусы MAC адресов и отключения нефункционирующих портов.
◆ Использует пакеты BPDU, для определения изменений в топологии сети.
◆ Отслеживает статусы портов, которые предоставляют альтернативные пути к корневому коммутатору.
Если пропадает путь к порту корневого коммутатора, RSTP быстро находит альтернативный порт и моментально отправляет пакеты через резервный путь.
◆ Использует соединения точка-точка, которое требует меньшее время на синхронизацию, в отличие от переназначения порта.
Статусы портов протокола Rapid Spanning Tree
Rapid Spanning-Tree использует метод быстрого переключения между статусами STP. Для этого, в место пяти статусов оригинального протокола Spanning Tree, он использует четыре.
◆ Discarding
◆ Learning
◆ Forwarding
◆ Disabled – Также как и в оригинальном протоколе Spanning Tree, данный статус устанавливается вручную.
На таблице 2 показано соответствие статусов портов, между 802.1D и 802.1w.
Table 2 Port states and function
Функции портов в протоколе Rapid Spanning Tree
В сети, порт может выполнять различные функции. Функции корневого и ближайшего к корневому порту остаются, а функция заблокированного порта, в этом протоколе, разбивается на резервный и альтернативный порты. Функция порта в STP, основывается на BPDUs.
◆ Root Port (корневой порт) — это порт, который ближе всего к корневому коммутатору, с точки зрения веса пути.
◆ Designated Port (определенный порт) — Это порт, который получает BPDU от корневого порта.
◆ Alternate Port (альтернативный порт) — порт коммутатора, который получает BPDU от корневого коммутатора, но по второму пути.
◆
Backup Port (резервный порт) — данный порт схож с альтернативным портом, но получает BPDU от самого себя. В данном случае, это может быть порт коммутатора, который переправляет BPDU от корневого коммутатора, и получает BPDU, через другой порт.
◆ Edge Port (Крайний порт) — Настраиваемый порт, который подсоединяется к конечному устройству и не может создавать межкоммутаторную петлю. Этот порт пропускает все этапы инициализации и сразу переходит в статус Forwarding.
Стандартом IEEE, определен протокол Multiple Spanning Tree Protocol (MSTP), предназначенный для использования STP в VLAN.
До этого, каждая сеть VLAN, использовала свой протокол STP, и были проблемы с совместимостью протоколов между разными производителями оборудования. Протокол Multiple Spanning Tree Protocol, является расширением протокола RSTP и предназначен для расширения возможностей использования VLAN сетей. MSTP используется для настройки различных Spanning Tree, для каждой VLAN. Также его называют Multiple Spanning-Tree Instances (MSTI).
|


