Spanning Tree Protocol ( STP ) — сетевой протокол , который создает логическую топологию без петель для сетей Ethernet . Основная функция STP — предотвращение мостовых петель и вызванного ими широковещательного излучения . Spanning Tree также позволяет проектировать сеть , включая резервные каналы, обеспечивающие отказоустойчивость в случае отказа активного канала.
Как следует из названия, STP создает связующее дерево , которое характеризует взаимосвязь узлов в сети соединенных мостов уровня 2 , и отключает те связи, которые не являются частью связующего дерева, оставляя один активный путь между любыми двумя сетевыми узлами. STP основан на алгоритме, который был изобретен Радией Перлман, когда она работала в Digital Equipment Corporation . [1] [2]
В 2001 году IEEE представил Rapid Spanning Tree Protocol ( RSTP ) как 802.1w. RSTP обеспечивает значительно более быстрое восстановление в ответ на изменения или сбои в сети, внедряя новые поведения конвергенции и роли портов моста для этого. RSTP был разработан с учетом обратной совместимости со стандартным STP.
Первоначально STP был стандартизирован как IEEE 802.1D, но функциональность связующего дерева (802.1D), быстрого связующего дерева (802.1w) и множественного связующего дерева (802.1s) с тех пор была включена в IEEE 802.1Q-2014 . [3]
Хотя протокол STP используется и сегодня, в большинстве современных сетей он в основном используется как механизм защиты от циклов, а не как механизм обеспечения отказоустойчивости. [ необходима ссылка ] Протоколы агрегации каналов , такие как LACP, объединяют два или более каналов для обеспечения отказоустойчивости, одновременно увеличивая общую пропускную способность канала.
Необходимость в протоколе связующего дерева (STP) возникла из-за того, что коммутаторы в локальных сетях (LAN) часто соединяются между собой с помощью избыточных каналов для повышения устойчивости в случае отказа одного из соединений. [4] : 386 Однако такая конфигурация соединения создает коммутационную петлю , что приводит к широковещательным излучениям и нестабильности таблицы MAC-адресов . [4] : 388 Если для соединения коммутаторов используются избыточные каналы, то коммутационных петель следует избегать. [4] : 385
Чтобы избежать проблем, связанных с избыточными связями в коммутируемой локальной сети, STP реализуется на коммутаторах для мониторинга топологии сети. Каждое соединение между коммутаторами, и в частности избыточные связи, каталогизируются. Затем алгоритм связующего дерева блокирует пересылку по избыточным связям, устанавливая одну предпочтительную связь между коммутаторами в локальной сети. Эта предпочтительная связь используется для всех кадров Ethernet, если только она не выходит из строя, в этом случае включается непредпочтительная избыточная связь. При реализации в сети STP назначает один коммутатор уровня 2 в качестве корневого моста . Затем все коммутаторы выбирают свое лучшее соединение к корневому мосту для пересылки и блокируют другие избыточные связи. Все коммутаторы постоянно взаимодействуют со своими соседями в локальной сети, используя § Bridge protocol data units (BPDU). [4] : 388
При условии, что между двумя коммутаторами имеется более одного соединения, корневой мост STP вычисляет стоимость каждого пути на основе пропускной способности. STP выберет путь с наименьшей стоимостью, то есть с наибольшей пропускной способностью, в качестве предпочтительного канала. STP включит этот предпочтительный канал как единственный путь для кадров Ethernet между двумя коммутаторами и отключит все другие возможные каналы, назначив порты коммутатора, которые соединяют предпочтительный путь, в качестве корневого порта . [4] : 393
После того, как коммутаторы с поддержкой STP в локальной сети выбрали корневой мост, все некорневые мосты назначают один из своих портов в качестве корневого порта. Это либо порт, который соединяет коммутатор с корневым мостом, либо, если путей несколько, порт с предпочтительным путем, рассчитанным корневым мостом. Поскольку не все коммутаторы напрямую подключены к корневому мосту, они взаимодействуют друг с другом с помощью STP BPDU. Каждый коммутатор добавляет стоимость своего собственного пути к стоимости, полученной от соседних коммутаторов, чтобы определить общую стоимость данного пути к корневому мосту. После того, как стоимость всех возможных путей к корневому мосту будет сложена, каждый коммутатор назначает порт в качестве корневого порта, который подключается к пути с наименьшей стоимостью или наибольшей пропускной способностью, который в конечном итоге приведет к корневому мосту. [4] : 394
Первоначально стоимость пути STP по умолчанию рассчитывалась по формуле 1 Гбит/с/пропускная способность . Когда стали доступны более высокие скорости, значения по умолчанию были скорректированы, так как в противном случае скорости выше 1 Гбит/с были бы неразличимы STP. Его преемник RSTP использует похожую формулу с большим числителем: 20 Тбит/с/пропускная способность . Эти формулы приводят к выборочным значениям в таблице. [5] : 154
Все порты коммутатора в локальной сети, где включен STP, классифицируются. [4] : 388
Когда устройство впервые подключается к порту коммутатора, оно не сразу начинает пересылать данные. Вместо этого оно проходит через ряд состояний, обрабатывая BPDU и определяя топологию сети. Порт, подключенный к хосту, такому как компьютер, принтер или сервер, всегда переходит в состояние пересылки, хотя и с задержкой около 30 секунд, пока он проходит через состояния прослушивания и обучения. Время, проведенное в состояниях прослушивания и обучения, определяется значением, известным как задержка пересылки (по умолчанию 15 секунд и устанавливается корневым мостом). Если подключен другой коммутатор , порт может оставаться в режиме блокировки, если будет определено, что это приведет к образованию петли в сети. BPDU уведомления об изменении топологии (TCN) используются для информирования других коммутаторов об изменениях портов. TCN вводятся в сеть некорневым коммутатором и распространяются на корневой. После получения TCN корневой коммутатор установит флаг изменения топологии в своих обычных BPDU. Этот флаг распространяется на все остальные коммутаторы и дает им указание быстро устаревать записи в таблицах пересылки.
Перед настройкой STP следует тщательно спланировать топологию сети. [6] Базовая конфигурация требует, чтобы STP был включен на всех коммутаторах в локальной сети и на каждом из них была выбрана одна и та же версия STP. Администратор может определить, какой коммутатор будет корневым мостом, и настроить коммутаторы соответствующим образом. Если корневой мост выйдет из строя, протокол автоматически назначит новый корневой мост на основе идентификатора моста. Если все коммутаторы имеют одинаковый идентификатор моста, например идентификатор по умолчанию, и корневой мост выйдет из строя, возникнет ситуация связывания, и протокол назначит один коммутатор в качестве корневого моста на основе MAC-адресов коммутатора. После того, как коммутаторам был назначен идентификатор моста, а протокол выбрал коммутатор корневого моста, наилучший путь к корневому мосту рассчитывается на основе стоимости порта, стоимости пути и приоритета порта. [7] В конечном итоге STP рассчитывает стоимость пути на основе пропускной способности канала, однако каналы между коммутаторами могут иметь одинаковую пропускную способность. Администраторы могут влиять на выбор протокола предпочтительного пути, настраивая стоимость порта; чем ниже стоимость порта, тем больше вероятность, что протокол выберет подключенное соединение в качестве корневого порта для предпочтительного пути. [8] Выбор того, как другие коммутаторы в топологии выбирают свой корневой порт или наименее затратный путь к корневому мосту, может зависеть от приоритета порта. Самый высокий приоритет будет означать, что путь в конечном итоге будет менее предпочтительным. Если все порты коммутатора имеют одинаковый приоритет, для пересылки кадров выбирается порт с наименьшим номером. [9]
Корневой мост связующего дерева — это мост с наименьшим (самым низким) идентификатором моста. Каждый мост имеет настраиваемый номер приоритета и MAC-адрес; идентификатор моста — это конкатенация приоритета моста и MAC-адреса. Например, идентификатор моста с приоритетом 32 768 и MAC-адресом 0200.0000.1111 — 32768.0200.0000.1111 . Приоритет моста по умолчанию — 32 768, и его можно настроить только кратно 4096. [a] При сравнении двух идентификаторов мостов сначала сравниваются части приоритета, а MAC-адреса сравниваются только в том случае, если приоритеты равны. Коммутатор с наименьшим приоритетом из всех коммутаторов будет корневым; если есть ничья, то коммутатор с наименьшим приоритетом и наименьшим MAC-адресом будет корневым. Например, если коммутаторы A (MAC = 0200.0000.1111 ) и B (MAC = 0200.0000.2222 ) оба имеют приоритет 32 768, то коммутатор A будет выбран в качестве корневого моста. [b] Если администраторы сети хотят, чтобы коммутатор B стал корневым мостом, они должны установить его приоритет менее 32 768. [c]
Последовательность событий для определения наилучшего полученного BPDU (который является наилучшим путем к корню) следующая:
Вышеуказанные правила описывают один из способов определения того, какое связующее дерево будет вычислено алгоритмом, но правила в том виде, в котором они написаны, требуют знания всей сети. Мосты должны определить корневой мост и вычислить роли портов (корневой, назначенный или заблокированный) только с помощью имеющейся у них информации. Чтобы гарантировать, что у каждого моста достаточно информации, мосты используют специальные кадры данных , называемые блоками данных протокола моста (BPDU), для обмена информацией о протоколе связующего дерева, идентификаторах мостов и стоимости корневого пути.
Мост отправляет кадр BPDU, используя уникальный MAC-адрес самого порта в качестве исходного адреса и адрес назначения многоадресного адреса STP с MAC-адресом назначения 01:80:C2:00:00:00 [ 13] или 01:00:0C:CC:CC:CD для фирменного протокола Cisco Per-VLAN Spanning Tree. [14]
В исходной спецификации STP (802.1D) [5] существует два типа BPDU : 63 (расширение Rapid Spanning Tree (RSTP) использует определенный RSTP BPDU):
BPDU обмениваются регулярно (по умолчанию каждые 2 секунды) и позволяют коммутаторам отслеживать изменения в сети и запускать и останавливать пересылку на портах по мере необходимости. Чтобы предотвратить задержку при подключении хостов к коммутатору и во время некоторых изменений топологии, был разработан Rapid STP, который позволяет порту коммутатора быстро переходить в состояние пересылки в таких ситуациях.
BPDU IEEE 802.1D и IEEE 802.1aq имеют следующий формат:
1. Идентификатор протокола: 2 байта (0x0000 IEEE 802.1D) 2. Идентификатор версии: 1 байт (0x00 Config & TCN / 0x02 RST / 0x03 MST / 0x04 SPT BPDU) 3. Тип BPDU: 1 байт (0x00 STP Config BPDU, 0x80 TCN BPDU, 0x02 RST/MST Config BPDU) 4. Флаги: 1 байт биты: использование 1 : 0 или 1 для изменения топологии 2 : 0 (не используется) или 1 для предложения в RST/MST/SPT BPDU 3–4 : 00 (неиспользовано) или 01 для роли порта: альтернативный/резервный в RST/MST/SPT BPDU 10 для роли порта Root в RST/MST/SPT BPDU 11 для роли порта, назначенной в RST/MST/SPT BPDU 5: 0 (не используется) или 1 для обучения в RST/MST/SPT BPDU 6: 0 (не используется) или 1 для пересылки в RST/MST/SPT BPDU 7 : 0 (не используется) или 1 для соглашения в RST/MST/SPT BPDU 8: 0 или 1 для подтверждения изменения топологии 5. Корневой идентификатор: 8 байт (корневой идентификатор CIST в MST/SPT BPDU) биты: использование 1–4: Приоритет корневого моста 5–16: Расширение идентификатора системы корневого моста 17–64: MAC-адрес корневого моста 6. Стоимость корневого пути: 4 байта (стоимость внешнего пути CIST в MST/SPT BPDU) 7. Идентификатор моста: 8 байт (региональный корневой идентификатор CIST в MST/SPT BPDU) биты: использование 1–4: Приоритет моста 5–16: Расширение идентификатора мостовой системы 17–64: MAC-адрес моста 8. Идентификатор порта: 2 байта 9. Возраст сообщения: 2 байта за 1/256 секунды. 10. Максимальный возраст: 2 байта за 1/256 секунды. 11. Время приветствия: 2 байта за 1/256 секунды 12. Задержка пересылки: 2 байта за 1/256 секунды 13. Длина версии 1: 1 байт (0x00 информация о протоколе версии 1 отсутствует. Только BPDU RST, MST, SPT) 14. Длина версии 3: 2 байта (только MST, SPT BPDU) TCN BPDU включает только поля 1–3.
Первый протокол связующего дерева был изобретен в 1985 году в Digital Equipment Corporation Радией Перлман . [1] В 1990 году IEEE опубликовал первый стандарт для протокола как 802.1D, [15] основанный на алгоритме, разработанном Перлманом. Последующие версии были опубликованы в 1998 [16] и 2004 годах, [17] включая различные расширения. Оригинальный протокол связующего дерева, вдохновленный Перлманом, называемый DEC STP, не является стандартом и отличается от версии IEEE форматом сообщений, а также настройками таймера. Некоторые мосты реализуют как версии IEEE, так и версии DEC протокола связующего дерева, но их взаимодействие может создавать проблемы для сетевого администратора. [18]
Различные реализации стандарта не гарантируют взаимодействие , например, из-за различий в настройках таймера по умолчанию. IEEE призывает поставщиков предоставлять Заявление о соответствии реализации протокола , объявляющее, какие возможности и опции были реализованы, [17] чтобы помочь пользователям определить, будут ли различные реализации взаимодействовать правильно.
В 2001 году IEEE представил протокол Rapid Spanning Tree Protocol (RSTP) как IEEE 802.1w . Затем RSTP был включен в IEEE 802.1D-2004, что сделало исходный стандарт STP устаревшим. [19] RSTP был разработан с учетом обратной совместимости со стандартным STP.
RSTP обеспечивает значительно более быструю сходимость связующего дерева после изменения топологии, вводя новые поведения сходимости и роли мостового порта для достижения этого. В то время как STP может потребоваться от 30 до 50 секунд для ответа на изменение топологии, RSTP обычно способен реагировать на изменения в течение 3 × времени приветствия (по умолчанию: 3 × 2 секунды) или в течение нескольких миллисекунд после сбоя физического соединения. Время приветствия является важным и настраиваемым временным интервалом, который используется RSTP для нескольких целей; его значение по умолчанию составляет 2 секунды. [20] [21]
RSTP добавляет новые роли портов моста для ускорения конвергенции после сбоя соединения:
Количество состояний порта коммутатора, в которых может находиться порт, сокращено до трех вместо первоначальных пяти в STP:
Подробности работы RSTP:
STP и RSTP не разделяют порты коммутатора по VLAN. [22] Однако в коммутируемых средах Ethernet , где существует несколько VLAN , часто желательно создать несколько связующих деревьев, чтобы трафик в разных VLAN использовал разные каналы.
До того, как IEEE опубликовал стандарт протокола Spanning Tree для VLAN, ряд поставщиков, которые продавали коммутаторы с поддержкой VLAN, разработали свои собственные версии протокола Spanning Tree, которые были совместимы с VLAN. Cisco разработала, внедрила и опубликовалаPer-VLAN Spanning Tree ( PVST ) — фирменный протокол , использующий собственный фирменный Inter-Switch Link (ISL) для инкапсуляции VLAN , и PVST+, который использует инкапсуляцию VLAN 802.1Q . Оба стандарта реализуют отдельное связующее дерево для каждой VLAN. Коммутаторы Cisco теперь обычно реализуют PVST+ и могут реализовывать связующие деревья для VLAN, только если другие коммутаторы в LAN реализуют тот же протокол VLAN STP. HP обеспечивает совместимость PVST и PVST+ в некоторых своих сетевых коммутаторах. [22] Некоторые устройства от Force10 Networks , Alcatel-Lucent , Extreme Networks , Avaya , Brocade Communications Systems и BLADE Network Technologies поддерживают PVST+. [23] [24] [25] Extreme Networks делает это с двумя ограничениями: отсутствие поддержки на портах, где VLAN является нетегированной/собственной, а также на VLAN с идентификатором 1. PVST+ может туннелировать через регион MSTP . [26]
Поставщик коммутаторов Juniper Networks, в свою очередь, разработал и внедрил свой протокол VLAN Spanning Tree Protocol (VSTP) для обеспечения совместимости с PVST от Cisco, чтобы коммутаторы обоих поставщиков могли быть включены в одну локальную сеть. [22] Протокол VSTP поддерживается только сериями EX и MX от Juniper Networks. Существует два ограничения совместимости VSTP:
По умолчанию VSTP использует протокол RSTP в качестве основного протокола связующего дерева, но использование STP может быть принудительно, если сеть включает старые мосты. [28] Более подробная информация о настройке VSTP на коммутаторах Juniper Networks опубликована в официальной документации. [29]
Cisco также опубликовала собственную версию Rapid Spanning Tree Protocol. Она создает связующее дерево для каждой VLAN, как и PVST. Cisco называет этоБыстрое связующее дерево для каждой VLAN ( RPVST ).
Протокол множественного связующего дерева (MSTP), первоначально определенный в IEEE 802.1s -2002 и позднее объединенный в IEEE 802.1Q -2005, определяет расширение RSTP для дальнейшего развития полезности VLAN.
В стандарте связующее дерево, которое отображает одну или несколько VLAN, называется множественным связующим деревом (MST). В MSTP связующее дерево может быть определено для отдельных VLAN или для групп VLAN. Кроме того, администратор может определять альтернативные пути в связующем дереве. Сначала коммутаторы назначаются региону MST, затем VLAN сопоставляются с этим MST или назначаются ему. Общее связующее дерево (CST) — это MST, с которым сопоставлены несколько VLAN, эта группа VLAN называется экземпляром MST (MSTI). CST обратно совместимы со стандартами STP и RSTP. MST, которому назначена только одна VLAN, является внутренним связующим деревом (IST). [22]
В отличие от некоторых фирменных реализаций связующего дерева для каждой VLAN, [30] MSTP включает всю информацию связующего дерева в одном формате BPDU. Это не только сокращает количество BPDU, необходимых для передачи информации связующего дерева для каждой VLAN, но и обеспечивает обратную совместимость с RSTP и, по сути, с классическим STP. MSTP делает это, кодируя дополнительную область информации после стандартного RSTP BPDU, а также ряд сообщений MSTI (от 0 до 64 экземпляров, хотя на практике многие мосты поддерживают меньшее количество). Каждое из этих сообщений конфигурации MSTI передает информацию связующего дерева для каждого экземпляра. Каждому экземпляру может быть назначено несколько настроенных VLAN, и кадры, назначенные этим VLAN, работают в этом экземпляре связующего дерева, когда они находятся внутри региона MST. Чтобы избежать передачи всей своей VLAN в сопоставление связующего дерева в каждом BPDU, мосты кодируют дайджест MD5 своей таблицы VLAN для экземпляра в MSTP BPDU. Затем этот дайджест используется другими мостами MSTP вместе с другими административно настроенными значениями для определения того, находится ли соседний мост в том же регионе MST, что и он сам.
MSTP полностью совместим с мостами RSTP, поскольку MSTP BPDU может интерпретироваться мостом RSTP как RSTP BPDU. Это не только обеспечивает совместимость с мостами RSTP без изменения конфигурации, но и заставляет любые мосты RSTP за пределами региона MSTP видеть регион как один мост RSTP независимо от количества мостов MSTP внутри самого региона. Чтобы еще больше облегчить это представление региона MSTP как одного моста RSTP, протокол MSTP использует переменную, известную как оставшиеся переходы, в качестве счетчика времени жизни вместо таймера возраста сообщения, используемого RSTP. Время возраста сообщения увеличивается только один раз, когда информация связующего дерева поступает в регион MST, и поэтому мосты RSTP будут видеть регион только как один переход в связующем дереве. Порты на краю региона MSTP, подключенные либо к мосту RSTP, либо к STP, либо к конечной точке, называются граничными портами. Как и в RSTP, эти порты можно настроить как граничные порты для обеспечения быстрых изменений состояния пересылки при подключении к конечным точкам.
IEEE 802.1aq, также известный как Shortest Path Bridging (SPB), позволяет избыточным соединениям между коммутаторами быть активными через несколько путей с равной стоимостью и обеспечивает гораздо более крупные топологии уровня 2, более быструю сходимость и улучшает использование топологий ячеистой сети за счет увеличения пропускной способности между всеми устройствами, позволяя трафику распределять нагрузку по всем путям в ячеистой сети. [31] [32] SPB объединяет несколько существующих функций, включая Spanning Tree Protocol (STP), Multiple Spanning Tree Protocol (MSTP), Rapid Spanning Tree Protocol (RSTP), Link aggregation и Multiple MAC Registration Protocol (MMRP) в один протокол состояния соединения. [33]
Идентификатор моста (BID) — это поле внутри пакета BPDU. Его длина составляет восемь байт. Первые два байта — это приоритет моста, беззнаковое целое число от 0 до 65 535. Последние шесть байтов — это MAC-адрес, предоставляемый мостом. До IEEE 802.1D-2004 первые два байта давали 16-битный приоритет моста. Начиная с IEEE 802.1D-2004 первые четыре бита — это настраиваемый приоритет, а последние двенадцать битов несут расширение идентификатора системы моста. В случае MST расширение идентификатора системы моста несет номер экземпляра MSTP . Некоторые поставщики устанавливают расширение идентификатора системы моста для переноса идентификатора VLAN, что позволяет использовать разные связующие деревья для каждой VLAN, например PVST от Cisco .
Spanning tree — это старый протокол с более длительным временем сходимости. Неправильное использование или реализация могут привести к сбоям в работе сети. Блокировка ссылок — это грубый подход к обеспечению высокой доступности и предотвращению петель. Современные сети могут использовать все подключенные ссылки с помощью протоколов, которые подавляют, контролируют или подавляют естественное поведение логических или физических топологических петель.
Более новые и надежные протоколы включают протокол TRILL (прозрачное соединение множества ссылок), также созданный Перлманом [34] , и протокол Shortest Path Bridging от IEEE.
Популярной альтернативой является настройка соединений между сетевым оборудованием как IP-соединений уровня 3 и использование IP-маршрутизации для обеспечения отказоустойчивости и предотвращения образования петель.
Методы виртуализации коммутаторов, такие как Cisco Virtual Switching System и Virtual PortChannel и HP Intelligent Resilient Framework, объединяют несколько коммутаторов в одну логическую сущность. Такая группа агрегации каналов с несколькими шасси работает как обычная портовая магистраль , только распределенная через несколько коммутаторов. И наоборот, технологии разделения разделяют одно физическое шасси на несколько логических сущностей.
На границе сети настроено обнаружение петель для предотвращения случайных петель пользователями. [ необходимо дополнительное объяснение ]
{{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка ){{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка ){{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка ){{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка ){{cite journal}}
: Цитировать журнал требует |journal=
( помощь )Поскольку исходный протокол Spanning Tree Protocol (STP) был удален из версии IEEE Std 802.1D 2004 года, для любого заявления о соответствии для реализации IEEE Std 802.1Q-2003, которая ссылается на текущую версию IEEE Std 802.1D, требуется реализация RSTP.
Path Bridging заменит Spanning Tree в структуре Ethernet.