1.1. Общие сведения о MSTP
Изначально для защиты сетей с кольцевыми топологиями использовались STP и его модификация RSTP, которые строили единое для всех VLAN покрывающее дерево. Это было просто с точки зрения эксплуатации, но не позволяло гибко управлять трафиком, разнося разные VLAN по разным физическим каналам. Проблема гибкости была решена в проприетарном PerVLAN Spanning Tree (PVST), который создавал отдельный процесс построения покрывающего дерева для каждого VLAN. Данный подход был довольно прост с точки зрения эксплуатации и очень гибок, но при большом количестве VLAN вызывал перегрузки CPU коммутатора. Так как трафик большинства VLAN использовал идентичные пути, смысла в разделении процессов STP для них не было, соответственно концепция протокола была доработана. Так появился Multiple Spanning Tree Protocol (MSTP), в котором создаются независимые экземпляры покрывающего дерева (MSTI - Multiple Spanning Tree Instance) для отдельных групп VLAN.
Соответствия VLAN-MSTI задаются администратором вручную. Формат MSTP BPDU аналогичен RSTP BPDU. Для снижения нагрузки на коммутаторы, все BPDU различных MSTI коммутатора объединяются в один BPDU.
1.1.1. Регионы MSTP
Новая концепция вызывала сложности в эксплуатации, так как было необходимо идентично конфигурировать соответствие VLAN-MSTI на всех коммутаторах. Для упрощения и поддержания обратной совместимости с STP и RSTP была разработана концепция регионов.
Регион MSTP может быть образован из нескольких смежных коммутаторов с одинаковыми MSID (MST Configuration Identification), состоящими из:
Имя региона MSTP;
Ревизия конфигурации;
Дайджест соответствий VLAN-MSTI.
MSID добавляется к MSTP BPDU так, что сохраняется совместимость с STP и RSTP. При этом MSTP BPDU, отправленные разными коммутаторами одного региона, воспринимаются смежными STP/RSTP-коммутаторами как RSTP BPDU одного коммутатора (Рисунок 29.1). Таким образом кольцевая топология на разных коммутаторах по-прежнему поддерживается и в регионе MSTP сохраняется гибкость управления трафиком.
Рисунок 29.1 - Регион MST в сети
MSTP внутри региона
Для каждого региона выбирается региональный корневой коммутатор, относительно которого строится внутреннее покрывающее дерево (IST - Internal Spanning Tree), объединяющее все коммутаторы региона. Региональный корневой коммутатор выбирается по наименьшему приоритету коммутатора, а при равных по минимальной стоимости пути до корневого коммутатора всей сети (либо региона, в котором находится корневой коммутатор). Если таких коммутаторов несколько, то среди них выбирается один с наименьшим ID.
MSTP между регионами
Для защиты топологий соединения различных регионов и отдельных коммутаторов строится общее покрывающее дерево (CST - Common Spanning Tree). В качестве корневой коммутатора в CST выбирается коммутатор с наименьшим приоритетом, а при равных с наименьшим ID. Каждый регион MSTP представляется для CST как отдельный виртуальный коммутатор.
CST совместно с IST всех регионов формируют полное покрывающее дерево сети (CIST - Common and Internal Spanning Tree).
1.1.2. Роли портов
В CIST порты имеют все те же роли, что есть в RSTP:
Root port
Порт с наименьшей стоимостью пути до корневого коммутатора
(регионального в MSTI).
Designated port
Порт , предоставляющий подключенной к нему сети самый дешевый путь до корневого коммутатора (регионального в MSTI).
Alternate port
Резерв Root port.
Backup port
Резерв Designated port.
Также в MSTI доступна новая роль - Master port - это порт с наименьшей стоимостью пути из региона до корневого коммутатора CIST.
1.1.3. Балансировка трафика в MSTP
Параметры коммутатора и его портов могут быть изменены для каждого MSTI в отдельности, таким образом трафик разных групп VLAN может быть отправлен по разным путям, распределяя нагрузку по всей сети.
1.2. Конфигурация MSTP
Включить spanning-tree и выбрать режим;
Сконфигурировать MSTI;
Определить параметры региона MSTP;
Определить таймеры MSTP;
Включить механизмы ускорения сходимости;
Выбрать формат MSTP BPDU;
Определить параметры порта;
Сконфигурировать аутентификацию;
Определить метод перестроения spanning-tree.
Включение spanning-tree и выбор режима
Команда | Описание |
---|---|
spanning-tree no spanning-tree ! В режиме глобальной конфигурации | Включение функции spanning-tree. Команда no отключает эту функцию. |
spanning-tree mode {stp|rstp|mstp} no spanning-tree mode ! В режиме глобальной конфигурации | Выбор режима spanning-tree. Команда no устанавливает режим по-умолчанию. |
spanning-tree mcheck ! В режиме конфигурации порта | Отслеживание режима подключенной сети и переключение на STP при необходимости. |
2. Конфигурация MSTI
Команда | Описание |
---|---|
spanning-tree priority <bridge-priority> no spanning-tree priority ! В режиме глобальной конфигурации | Установка приоритета spanning-tree коммутатора. Команда no устанавливает приоритет по-умолчанию. |
spanning-tree mst <instance-id> priority <bridge-priority> no spanning-tree mst <instance-id> priority ! В режиме глобальной конфигурации | Установка приоритета коммутатора для указанного MSTI. Команда no устанавливает приоритет по-умолчанию. |
spanning-tree mst <instance-id> cost <cost> no spanning-tree mst <instance-id> cost ! В режиме конфигурации порта | Установка стоимости пути через порт в указанном MSTI. Команда no устанавливает стоимость по-умолчанию. |
spanning-tree mst <instance-id> port-priority <port-priority> no spanning-tree mst <instance-id> port-priority ! В режиме конфигурации порта | Установка приоритета порта spanning-tree в указанном MSTI. Команда no устанавливает приоритет по-умолчанию. |
spanning-tree [mst <instance-id>] rootguard no spanning-tree mst <instance-id> rootguard ! В режиме конфигурации порта | Включение/выключения функционала rootguard для порта spanning-tree в указанном MSTI. Порт с включенным rootguard не может стать root port. |
spanning-tree [mst <instance-id>] loopguard no spanning-tree [mst <instance-id>] loopguard ! В режиме конфигурации порта | Включение/выключение функционала loopguard для порта spanning-tree в указанном MSTI. Loopguard блокирует петли, возникающие при некорректной разблокировке порта spanning-tree (например, при отсутствии BPDU от подключенной к порту сети). |
3. Определение параметров региона MSTP
Команда | Описание |
---|---|
spanning-tree mst configuration no spanning-tree mst configuration ! В режиме глобальной конфигурации | Переход в режим конфигурации MSTI. Команда с приставкой no сбрасывает настройки всех MSTI. |
show ! В режиме конфигурации MSTI | Отображает информацию о текущей конфигурации MSTI. |
instance <instance-id> vlan <vlan-list> no instance <instance-id> [vlan <vlan-list>] ! В режиме конфигурации MSTI | Установка соответствий VLAN-MSTI. |
name <name> no name ! В режиме конфигурации MSTI | Установка имени региона MSTP. |
revision-level <level> no revision-level ! В режиме конфигурации MSTI | Установка уровня ревизии для региона MSTP. |
abort ! В режиме конфигурации MSTI | Выход из режима конфигурации MSTI без сохранения примененной конфигурации. |
4. Определение таймеров MSTP
Команда | Описание |
---|---|
spanning-tree forward-time <time> no spanning-tree forward-time ! В режиме глобальной конфигурации | Установка значения таймера Bridge_Forward_Delay для коммутатора. Bridge_Forward_Delay - таймер перехода порта из статуса blocking в forwarding. |
spanning-tree hello-time <time> no spanning-tree hello-time ! В режиме глобальной конфигурации | Установка значения таймера Bridge_Hello_Time для коммутатора. Bridge_Hello_Time - таймер отправки spanning-tree BPDU. |
spanning-tree maxage <time> no spanning-tree maxage ! В режиме глобальной конфигурации | Установка значения таймера Bridge_Max_Age для коммутатора. Bridge_Max_Age - таймер времени жизни лучшего полученного spanning-tree BPDU. |
spanning-tree max-hop <hop-count> no spanning-tree max-hop ! В режиме глобальной конфигурации | Установка значения счетчика Max_Hop, который определяет какое количество коммутаторов может пройти BPDU, до того как будет отброшен. |
5. Включение механизма ускорения сходимости
Команда | Описание |
---|---|
spanning-tree link-type p2p {auto|force-true|force-false} no spanning-tree link-type ! В режиме конфигурации порта | Выбор механизма определения типа подключенной к порту сети. auto - автоматическое определение типа соединения; force-true - всегда point-to-point; force-false - всегда shared. |
spanning-tree portfast [bpdufilter| bpduguard] [recovery <30-3600>] no spanning-tree portfast ! В режиме конфигурации порта | Включение/выключение механизма portfast определяющего порт spanning-tree как граничный. bpdufilter - отбрасывает поступающие на порт BPDU; bpduguard - отключает порт при получении BPDU. |
6. Выбор формата MSTP BPDU
Команда | Описание |
---|---|
spanning-tree format standard spanning-tree format privacy spanning-tree format auto no spanning-tree format ! В режиме конфигурации порта | Установка формата BPDU. standard - стандарт IEEE; privacy - CIsco-совместимый формат; auto - автоматическое определение формата по поступающим BPDU. |
7. Определение параметров порта
Команда | Описание |
---|---|
spanning-tree cost no spanning-tree cost ! В режиме конфигурации порта | Установка стоимости пути через порт spanning-tree. |
spanning-tree port-priority no spanning-tree port-priority ! В режиме конфигурации порта | Установка приоритета порта spanning-tree в указанном MSTI. |
spanning-tree rootguard no spanning-tree rootguard ! В режиме конфигурации порта | Включение/выключения функционала rootguard для порта spanning-tree. Порт с включенным rootguard не может стать root port. |
spanning-tree transmit-hold-count <tx-hold-count-value> no spanning-tree transmit-hold-count ! В режиме глобальной конфигурации | Установка количества BPDU отправляемых в течение интервала Bridge_Hello_Time. |
spanning-tree cost-format {dot1d | dot1t} ! В режиме глобальной конфигурации | Установка формата стоимости пути. dot1d - значения в интервале 1-65535; dot1t - значения в интервале 1-200000000. |
8. Конфигурация аутентификации
Команда | Описание |
---|---|
spanning-tree digest-snooping no spanning-tree digest-snooping ! В режиме конфигурации порта | Включение/выключение аутентификации spanning-tree. |
9. Определение метода перестроения spanning-tree
Команда | Описание |
---|---|
spanning-tree tcflush {enable| disable| protect} no spanning-tree tcflush ! В режиме глобальной конфигурации | Установка режима перестроения топологии spanning-tree. disable - FDB не сбрасывается при перестроении топологии; enable - FDB сбрасывается при перестроении топологии; protect - FDB сбрасывается не чаще чем раз в 10 секунд при перестроении топологии. |
spanning-tree tcflush {enable| disable| protect} no spanning-tree tcflush ! В режиме конфигурации порта | Установка режима перестроения топологии spanning-tree для порта. |
1.3. Пример конфигурации MSTP
Рисунок 29.2 - Пример сети с кольцевой топологией
На всех коммутаторах в сети (Рисунок 29.2) включен spanning-tree в режиме MSTP. Все праметры spanning-tree установлены по умолчанию и равны.
По умолчанию MSTP формирует древовидную топологию, растущую из SW1, блокируя избыточные соединения. Порты с пометкой X переведены в состояние blocking, остальные в состоянии forwarding.
Ниже представлена конфигурация коммутаторов по умолчанию.
Имя коммутатора | SW1 | SW2 | SW3 | SW4 | |
MAC-адрес коммутатора | …00-00-01 | …00-00-02 | …00-00-03 | …00-00-04 | |
Приоритет коммутатора | 32768 | 32768 | 32768 | 32768 | |
Приоритет порта | 1 | 128 | 128 | 128 | |
2 | 128 | 128 | 128 | ||
3 | 128 | 128 | |||
4 | 128 | 128 | |||
5 | 128 | 128 | |||
6 | 128 | 128 | |||
7 | 128 | 128 | |||
Стоимость пути | 1 | 200000 | 200000 | 200000 | |
2 | 200000 | 200000 | 200000 | ||
3 | 200000 | 200000 | |||
4 | 200000 | 200000 | |||
5 | 200000 | 200000 | |||
6 | 200000 | 200000 | |||
7 | 200000 | 200000 |
Сконфигурируем сеть:
Сконфигурируем VLAN:
Создадим VLAN 20, 30, 40, 50 на коммутаторах SW2, SW3 и SW4;
Переведем порты 1-7 коммутаторов SW2, SW3 и SW4 в режим trunk.
Сконфигурируем MSTP:
Определим коммутаторы SW2, SW3 и SW4 в регион MSTP;
Установим соответствие VLAN 20 и 30 - MSTI 3;
Установим соответствие VLAN 40 и 50 - MSTI 4.
Распределим нагрузку, определив корневые коммутаторы для каждого MSTI:
Установим приоритет коммутатора SW3 равным 0 в MSTI 3;
Установим приоритет коммутатора SW4 равным 0 в MSTI 4;
Конфигурация:
SW2
SW2(config)#vlan 20 SW2(Config-Vlan20)#exit SW2(config)#vlan 30 SW2(Config-Vlan30)#exit SW2(config)#vlan 40 SW2(Config-Vlan40)#exit SW2(config)#vlan 50 SW2(Config-Vlan50)#exit SW2(config)#spanning-tree mst configuration SW2(Config-Mstp-Region)#name sw2-sw3-sw4 SW2(Config-Mstp-Region)#instance 3 vlan 20;30 SW2(Config-Mstp-Region)#instance 4 vlan 40;50 SW2(Config-Mstp-Region)#exit SW2(config)#interface e1/0/1-7 SW2(Config-Port-Range)#switchport mode trunk SW2(Config-Port-Range)#exit SW2(config)#spanning-tree
SW3
SW3(config)#vlan 20 SW3(Config-Vlan20)#exit SW3(config)#vlan 30 SW3(Config-Vlan30)#exit SW3(config)#vlan 40 SW3(Config-Vlan40)#exit SW3(config)#vlan 50 SW3(Config-Vlan50)#exit SW3(config)#spanning-tree mst configuration SW3(Config-Mstp-Region)#name sw2-sw3-sw4 SW3(Config-Mstp-Region)#instance 3 vlan 20;30 SW3(Config-Mstp-Region)#instance 4 vlan 40;50 SW3(Config-Mstp-Region)#exit SW3(config)#interface e1/0/1-7 SW3(Config-Port-Range)#switchport mode trunk SW3(Config-Port-Range)#exit SW3(config)#spanning-tree SW3(config)#spanning-tree mst 3 priority 0
SW4
SW4(config)#vlan 20 SW4(Config-Vlan20)#exit SW4(config)#vlan 30 SW4(Config-Vlan30)#exit SW4(config)#vlan 40 SW4(Config-Vlan40)#exit SW4(config)#vlan 50 SW4(Config-Vlan50)#exit SW4(config)#spanning-tree mst configuration SW4(Config-Mstp-Region)#name sw2-sw3-sw4 SW4(Config-Mstp-Region)#instance 3 vlan 20;30 SW4(Config-Mstp-Region)#instance 4 vlan 40;50 SW4(Config-Mstp-Region)#exit SW4(config)#interface e1/0/1-7 SW4(Config-Port-Range)#switchport mode trunk SW4(Config-Port-Range)#exit SW4(config)#spanning-tree SW4(config)#spanning-tree mst 4 priority 0
После применения описанной конфигурации коммутатор SW1 остается корневым для MST 0 всей сети. В регионе sw2-sw3-sw4 коммутатор SW2 становится региональным корневым для MSTI 0, SW3 - для MSTI 3, SW4 - для MSTI 4.
MSTP генерирует топологии для MSTI 0, MSTI 3, и MSTI 4. Порты с пометкой X переведены в состояние blocking, остальные в состоянии forwarding.
Рисунок 29.3 - Топология MSTI 0
Рисунок 29.4 - Топология MSTI 3
Рисунок 29.5 - Топология MSTI 4
1.4. Решение проблем при конфигурации MSTP
Для включения MSTP на порту, MSTP должен быть включен глобально.
Параметры MSTP взаимосвязаны и следует соблюдать следующие соответствия, иначе MSTP может работать некорректно:
2 x (Bridge_Forward_Delay - 1 sec) >= Bridge_Max_Age Bridge_Max_Age >= 2 x (Bridge_Hello_Time + 1 sec)
Нужно всегда помнить, что изменение параметров MSTP может вызвать изменение топологии.