11. PVST
PVST - Per-VLAN Spanning Tree
STP и VLAN
STP блокирует коммутацию на порту без учета информации о VLAN. Остовное дерево в 802.1D строится по всей физической топологии, а не по отдельным логическим доменам
Есть вероятность блокировки коммутации там, где физически петля существует, но логически ее нет (равно как и последствий петли)
Уникальность Bridge ID
802.1D предполагает наличие только одного дерева
Другие протоколы строят несколько деревьев одновременно
MSTP (Multiple Spanning Tree Protocol) - 802.1s, вошел в состав 802.1Q-2005
Семейство PVST: Cisco, Force10, Alcatel-Lucent, Extreme, Avaya, Brocade, Juniper
Каждый коммутатор в дереве должен иметь уникальный Bridge ID
Метки принадлежности BPDU к определенному дереву в общем случае недостаточно для определения петли в дереве
Одному коммутатору приходится иметь несколько Bridge ID
PVST/PVST+/PVRST
PVST - проприетарный протокол Cisco на основе 802.1D-1990 c поддержкой VLAN и механизмами ускорения работы (STP Toolkit). Поддерживает только транки ISL
PVST+ - PVST с поддержкой транков 802.1Q
PVRST - проприетарный протокол Cisco на основе 802.1w. Строит дерево не на основе физической топологии, а по VLAN
PVRST+ - PVRST c поддержкой транков 802.1Q
Extended System ID
В реальных сетях размер поля Bridge Priority в 16 бит излишен
Для получения множества Bridge ID под хранение идентификатора дерева "заимствуется" 12 бит от поля приоритета
Схема называется Extended System ID
BPDU в протоколах семейства PVST
В протоколах семейства PVST строится одно дерево за каждый VLAN
Много VLAN - много BPDU в транке
Необходимо сверять дерево отправителя с деревом получателя
На метку или Extended System ID ориентироваться нельзя, приходится добавлять TLV (Type Length Value)
Формат BPDU модифицирован
Для не-PVST коммутаторов необходим "ванильный" CST
В Cisco CST включен принудительно, используется дерево VLAN 1
MAC-адрес получателя - 01:00:0C:CC:CC:CD
Инкапсуляция LLC+SNAP; Organization Code: 0x00000C; PID: 0x010B
Помечаются 802.1Q (кроме Native VLAN), PRI: Network Control
Добавляется TLV Originating VLAN (T=0x0000, L=2 байта)
Настройки по умолчанию
Spanning Tree работает на всех VLAN и на всех портах
Начиная с IOS 15.2(4)E режим по умолчанию - RPVST+
До этого по умолчанию использовался PVST+
Таймеры
Hello Time: 2 секунды
Forward Delay: 15 секунд
Max Age: 20 секунд
Метод вычисления стоимостей интерфейсов - 802.1D-1998
Extended System ID равен номеру VLAN
Switch(config)#spanning-tree mode ?
mst Multiple spanning tree mode
pvst Per-Vlan spanning tree mode
rapid-pvst Per-Vlan rapid spanning tree mode
Установка Bridge Priority
Задается десятичное значение, состоящее из:
Старших 4 бит приоритета
Нулевых 12 бит Extended System ID
16 возможных вариантов, в том числе:
32768 - значение по умолчанию
24576 - рекомендуемое значение для корневого коммутатора
28672 - рекомендуемое значение для резервного корневого коммутатора
Switch(config)#spanning-tree vlan 1 priority 1024
% Bridge Priority must be in increments of 4096.
% Allowed values are:
0 4096 8192 12288 16384 20480 24576 28672
32768 36864 40960 45056 49152 53248 57344 61440
Макросы Root Primary и Secondary
Макрос spanning tree vlan <#> root primary позволяет выставить коммутатору такой приоритет, который сделает бридж корневым
Если root priority - 32768, то выставляется приоритет 24576
Если другой, то выставляется приоритет такой же или на 4096 меньше
Switch(config)#spanning-tree vlan 1 root primary
Макрос spanning tree vlan <#> root secondary позволяет выставить коммутатору приоритет 28672, делая его резервным
Если корневой коммутатор получил свой приоритет с помощью макроса, а на других коммутаторах приоритет не настраивался, то при отказе текущего корня "резервный" коммутатор будет иметь самый маленький приоритет
Гарантии становления корнем после отказа текущего этот макрос не дает
Switch(config)#spanning-tree vlan 1 root secondary
Настройка Port Priority
Исторически Port ID состоял из двух однобайтовых полей:
С появлением многопортовых коммутаторов баланс изменился. На разных моделях комммутаторов он стал разным
Switch(config)#int gi0/0
Switch(config-if)#spanning-tree port-priority ?
<0-224> port priority in increments of 32
Приоритет может быть настроен за каждый конкретный VLAN
Switch(config-if)#spanning-tree vlan 100 port-priority ?
<0-224> port priority in increments of 32
Настройка Port Cost
Назначение стоимости порта во всех деревьях
Switch(config)#int e0/0
Switch(config-if)#spanning-tree cost ?
<1-200000000> port path cost
Назначение стоимости порта в отдельно взятом дереве
Switch(config-if)#spanning-tree vlan 100 cost ?
<1-200000000> Change an interface's per VLAN spanning tree path cost
Настройка метода вычисления стоимости портов (по умолчанию short):
Short: 802.1D-1998 (100/19/4/2)
Long: 802.1D-2004 (20Tb/скорость интерфейса)
Switch(config)#spanning-tree pathcost method ?
long Use 32 bit based values for default port path costs
short Use 16 bit based values for default port path costs
Диагностика STP
Заказывается диагностика за отдельное дерево
Switch#show spanning-tree vlan 1
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 5000.0001.0000
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 5000.0001.0000
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300 sec
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/0 Desg FWD 4 128.1 Shr
Gi0/1 Desg FWD 4 128.2 Shr
Gi0/2 Desg FWD 4 128.3 Shr
Gi0/3 Desg FWD 4 128.4 Shr
Last updated