Введение
Сетевой протокол, который создает безцикличную логическую топологию для сетей Ethernet.
Протокол Spanning Tree (STP) – это сетевой протокол, который создает безцикличную логическую топологию для сетей Ethernet. Основная функция STP – предотвращать петли в мостах и широковещательное излучение, возникающее в результате этих петель. Spanning Tree также позволяет в сетевой конструкции включать резервные каналы связи, обеспечивающие отказоустойчивость при выходе из строя активного канала. Как следует из названия, STP создает остовное дерево, которое характеризует взаимосвязь узлов в сети соединенных мостов второго уровня, и отключает те каналы, которые не входят в остовное дерево, оставляя единственный активный путь между любыми двумя узлами сети. STP основан на алгоритме, изобретенном Радией Перлман во время работы в Digital Equipment Corporation. В 2001 году IEEE представил протокол Rapid Spanning Tree (RSTP) как 802.1w. RSTP обеспечивает значительно более быстрое восстановление после изменений или сбоев в сети, вводя новые механизмы сходимости и роли портов мостов для этого. RSTP был разработан с обратной совместимостью со стандартным STP. Изначально STP был стандартизирован как IEEE 802.1D, но функциональность остовного дерева (802.1D), быстрого остовного дерева (802.1w) и множественного остовного дерева (802.1s) впоследствии была включена в IEEE 802.1Q 2014. Хотя STP все еще используется сегодня, в большинстве современных сетей его основное применение – это механизм защиты от петель, а не механизм отказоустойчивости. Протоколы агрегации каналов, такие как LACP, объединяют два или более канала для обеспечения отказоустойчивости и одновременного увеличения общей пропускной способности каналов.
Протокольная операция
Необходимость в протоколе Spanning Tree (STP) возникла из-за того, что коммутаторы в локальных сетях (LAN) часто соединяются с использованием избыточных каналов для повышения отказоустойчивости в случае обрыва одного из соединений. После того, как коммутаторы, поддерживающие STP, в локальной сети выбрали корневой мост, все некорневые мосты назначают один из своих портов в качестве корневого порта. Это либо порт, соединяющий коммутатор с корневым мостом, либо, если существует несколько путей, порт с предпочтительным путем, рассчитанным корневым мостом. Поскольку не все коммутаторы подключены к корневому мосту напрямую, они обмениваются информацией друг с другом посредством STP BPDU. Каждый коммутатор добавляет стоимость своего собственного пути к стоимости, полученной от соседних коммутаторов, чтобы определить общую стоимость данного пути до корневого моста. После суммирования стоимости всех возможных путей до корневого моста, каждый коммутатор назначает порт в качестве корневого порта, который ведет по пути с наименьшей стоимостью или наибольшей пропускной способностью, ведущему к корневому мосту.
Государства порта
Все порты коммутаторов в локальной сети, где включен STP, категоризируются. Базовая конфигурация требует включения STP на всех коммутаторах в локальной сети и выбора одной и той же версии STP на каждом из них. Администратор может определить, какой коммутатор будет корневым мостом, и соответствующим образом настроить коммутаторы. Если корневой мост выходит из строя, протокол автоматически назначит новый корневой мост на основе идентификатора моста. Если у всех коммутаторов одинаковый идентификатор моста, например, идентификатор по умолчанию, и корневой мост выходит из строя, возникает ситуация равенства, и протокол назначит один из коммутаторов корневым мостом на основе MAC-адресов коммутаторов. После того, как коммутаторам присвоен идентификатор моста и протокол выбрал корневой мост, наилучший путь к корневому мосту рассчитывается на основе стоимости порта, стоимости пути и приоритета порта. В конечном итоге STP рассчитывает стоимость пути на основе пропускной способности канала связи, однако каналы связи между коммутаторами могут иметь одинаковую пропускную способность. Администраторы могут влиять на выбор протоколом предпочтительного пути, настраивая стоимость порта: чем ниже стоимость порта, тем выше вероятность того, что протокол выберет подключенный канал в качестве корневого порта для предпочтительного пути. На выбор того, как другие коммутаторы в топологии выбирают свой корневой порт или путь с наименьшей стоимостью к корневому мосту, может влиять приоритет порта. Более высокий приоритет означает, что путь будет менее предпочтительным. Если все порты коммутатора имеют одинаковый приоритет, для пересылки кадров выбирается порт с наименьшим номером.
Корневой мост и идентификатор моста
Коренный мост расширяющегося дерева – это мост с наименьшим (самым низким) идентификатором моста. Каждый мост имеет конфигурируемый номер приоритета и MAC-адрес; идентификатор моста формируется путем объединения приоритета моста и MAC-адреса. Например, идентификатор моста с приоритетом 32768 и MAC-адресом [вставить MAC-адрес] будет [вставить полный ID]. Приоритет моста по умолчанию равен 32768 и может быть настроен только кратно 4096. При сравнении двух идентификаторов моста сначала сравниваются значения приоритета, а MAC-адреса сравниваются только в случае равенства приоритетов. Коммутатор с наименьшим приоритетом среди всех коммутаторов становится корневым; если приоритеты равны, то корневым становится коммутатор с наименьшим приоритетом и наименьшим MAC-адресом. Например, если у коммутаторов A (MAC = [вставить MAC-адрес]) и B (MAC = [вставить MAC-адрес]) одинаковый приоритет – 32768, то в качестве корневого моста будет выбран коммутатор A. Если администраторы сети хотят, чтобы корневым мостом стал коммутатор B, они должны установить его приоритет ниже 32768.
Единица данных мостового протокола
Вышеуказанные правила описывают один из способов определения вычисляемого алгоритмом остовного дерева, но сформулированные правила требуют знания всей сети. Мосты должны определить корневой мост и вычислить роли портов (root, designated или blocked), располагая только имеющейся у них информацией. Чтобы обеспечить наличие достаточной информации у каждого моста, мосты используют специальные кадры данных, называемые протоколными данными моста (BPDU), для обмена информацией о протоколе остовного дерева, идентификаторах мостов и стоимостях путей к корню. Мост отправляет кадр BPDU, используя уникальный MAC-адрес порта в качестве исходного адреса и адрес назначения – многоадресный MAC-адрес STP, или 01:00:0C:CC:CC:CD для проприетарного Cisco Per VLAN Spanning Tree. В оригинальной спецификации STP (802.1D) существует два типа BPDU, основанных на алгоритме, разработанном Перлманом. Последующие версии были опубликованы в 1998 и 2004 годах с включением различных расширений. Изначальный протокол остовного дерева, названный DEC STP, не является стандартом и отличается от версии IEEE как форматом сообщений, так и настройками таймеров. Некоторые мосты реализуют как версии IEEE, так и DEC протокола остовного дерева, однако их взаимодействие может создавать проблемы для сетевого администратора. Различные реализации стандарта не гарантируют совместимость, например, из-за различий в настройках таймеров по умолчанию. IEEE рекомендует поставщикам предоставлять заявление о соответствии реализации протокола, указывающее, какие возможности и опции были реализованы. RSTP был разработан с обратной совместимостью со стандартным STP. RSTP обеспечивает значительно более быструю сходимость остовного дерева после изменения топологии, вводя новые модели сходимости и роли мостовых портов для достижения этой цели. В то время как STP может требовать от 30 до 50 секунд для реагирования на изменение топологии, RSTP обычно способен реагировать на изменения в течение 3 × hello time (по умолчанию: 3 2 секунды) или в течение нескольких миллисекунд после сбоя физического соединения. Время hello – важный и конфигурируемый интервал времени, используемый RSTP для нескольких целей; его значение по умолчанию составляет 2 секунды.
Стандарты для VLAN
STP и RSTP не разделяют порты коммутаторов по VLAN. Однако в средах коммутации Ethernet, где существует несколько VLAN, часто желательно создавать несколько spanning tree, чтобы трафик в разных VLAN использовал различные каналы связи.
Собственные стандарты
До того, как IEEE опубликовал стандарт протокола Spanning Tree для VLAN, ряд производителей, продающих коммутаторы с поддержкой VLAN, разработали собственные версии протокола Spanning Tree, способные работать с VLAN. Компания Cisco разработала, внедрила и опубликовала проприетарный протокол Per VLAN Spanning Tree (PVST), использующий собственную проприетарную технологию Inter Switch Link (ISL) для инкапсуляции VLAN, а также PVST+, который использует инкапсуляцию VLAN 802.1Q. Оба стандарта реализуют отдельное spanning tree для каждой VLAN. В настоящее время коммутаторы Cisco обычно реализуют PVST+ и могут создавать spanning trees для VLAN только в том случае, если другие коммутаторы в локальной сети реализуют тот же протокол VLAN STP. HP обеспечивает совместимость с PVST и PVST+ в некоторых своих сетевых коммутаторах. Extreme Networks делает это с двумя ограничениями: отсутствие поддержки на портах, где VLAN не помечен или является нативным, а также для VLAN с идентификатором 1. PVST+ может передаваться через MSTP-регион. Компания Juniper Networks, в свою очередь, разработала и внедрила протокол VLAN Spanning Tree Protocol (VSTP) для обеспечения совместимости с PVST от Cisco, чтобы коммутаторы обоих производителей могли быть включены в одну локальную сеть. По умолчанию VSTP использует протокол RSTP в качестве базового протокола spanning tree, но можно принудительно использовать STP, если в сети присутствуют устаревшие мосты. Более подробная информация о настройке VSTP на коммутаторах Juniper Networks опубликована в официальной документации. Cisco также опубликовала проприетарную версию протокола Rapid Spanning Tree. Он создает spanning tree для каждой VLAN, как и PVST. Cisco называет это Rapid Per VLAN Spanning Tree (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). MSTP включает всю информацию об охватывающих деревьях в единый формат BPDU. Это не только уменьшает количество BPDU, необходимых для передачи информации об охватывающем дереве для каждой VLAN, но и обеспечивает обратную совместимость с RSTP и, по сути, с классическим STP. MSTP достигает этого за счет кодирования дополнительной области информации после стандартного BPDU RSTP, а также ряда сообщений MSTI (от 0 до 64 экземпляров, хотя на практике многие коммутаторы поддерживают меньшее количество). Каждое из этих сообщений конфигурации MSTI передает информацию об охватывающем дереве для каждого экземпляра. Каждому экземпляру может быть назначено несколько настроенных VLAN, и кадры, назначенные этим VLAN, работают в этом экземпляре охватывающего дерева, когда они находятся внутри MST-области. Чтобы избежать передачи всей таблицы отображения VLAN на охватывающее дерево в каждом BPDU, коммутаторы кодируют MD5-хеш своей таблицы VLAN-экземпляров в BPDU MSTP. Этот хеш затем используется другими коммутаторами MSTP вместе с другими административно настроенными значениями для определения, находится ли соседний коммутатор в той же MST-области. MSTP полностью совместим с коммутаторами RSTP, поскольку BPDU MSTP может быть интерпретирован коммутатором RSTP как BPDU RSTP. Это не только обеспечивает совместимость с коммутаторами RSTP без изменений конфигурации, но и заставляет любые коммутаторы RSTP за пределами MST-области видеть эту область как единый коммутатор RSTP, независимо от количества коммутаторов MSTP внутри самой области. Для дальнейшего упрощения представления MST-области как единого коммутатора RSTP протокол MSTP использует переменную, известную как оставшиеся переходы, в качестве счетчика времени жизни вместо таймера возраста сообщения, используемого RSTP. Таймер возраста сообщения увеличивается только один раз, когда информация об охватывающем дереве входит в MST-область, и поэтому коммутаторы RSTP будут видеть область как всего один переход в охватывающем дереве. Порты на границе MST-области, подключенные к коммутатору RSTP или STP или к конечному устройству, называются граничными портами. Как и в RSTP, эти порты могут быть настроены как граничные порты для ускорения изменения состояния пересылки при подключении к конечным устройствам.
Сокращение пути
IEEE 802.1aq, также известный как Shortest Path Bridging (SPB), позволяет использовать резервные каналы связи между коммутаторами по нескольким равноценным путям, обеспечивает значительно более крупные топологии второго уровня, более быструю сходимость и повышает эффективность использования mesh-топологий за счет увеличения пропускной способности между всеми устройствами, позволяя трафику распределять нагрузку по всем путям в mesh-сети. SPB объединяет в единый протокол состояния каналов множество существующих функций, включая протоколы Spanning Tree (STP), Multiple Spanning Tree (MSTP), Rapid Spanning Tree (RSTP), агрегирование каналов и Multiple MAC Registration Protocol (MMRP).
Расширение идентификатора системы
Идентификатор моста (BID) – это поле внутри пакета BPDU. Его длина составляет восемь байт. Первые два байта – это приоритет моста, беззнаковое целое число от 0 до 65 535. Последние шесть байт – это MAC-адрес, предоставленный мостом. До стандарта IEEE 802.1D 2004 первые два байта определяли 16-битный приоритет моста. Начиная со стандарта IEEE 802.1D 2004, первые четыре бита являются конфигурируемым приоритетом, а последние двенадцать битов несут расширение идентификатора мостовой системы. В случае MST расширение идентификатора мостовой системы содержит номер экземпляра MSTP. Некоторые производители используют расширение идентификатора мостовой системы для передачи идентификатора VLAN, что позволяет использовать отдельное дерево распространения для каждой VLAN, например, PVST от Cisco.
Недостатки и текущая практика
Спеннинг-три – это более старый протокол с более длительным временем сходимости. Неправильное использование или реализация могут приводить к сбоям в работе сети. Блокировка каналов связи – это примитивный подход к обеспечению высокой доступности и предотвращению петель. Современные сети могут использовать все подключенные каналы связи, применяя протоколы, которые подавляют, контролируют или предотвращают естественное поведение петель в логической или физической топологии. Более новые и надежные протоколы включают протокол TRILL (Transparent Interconnection of Lots of Links), также разработанный Перлманом, и протокол Shortest Path Bridging от IEEE. Конфигурирование соединений между сетевым оборудованием как IP-каналов 3-го уровня и использование IP-маршрутизации для обеспечения отказоустойчивости и предотвращения петель является популярной альтернативой. Технологии виртуализации коммутаторов, такие как Cisco Virtual Switching System и Virtual PortChannel, а также HP Intelligent Resilient Framework, объединяют несколько коммутаторов в единую логическую сущность. Такая группа агрегирования каналов связи между несколькими шасси работает как обычный транк порта, но распределена по нескольким коммутаторам. В противоположность этому, технологии партиционирования разделяют одно физическое шасси на несколько логических сущностей. На периферии сети настроено обнаружение петель для предотвращения случайных петель, создаваемых пользователями.