В этой части рассмотрим работу Spanning-Tree Protocol (STP). Подопытная топология представлена ниже.
В наличии целая куча избыточных связей, поэтому в данном случае важность правильной работы Spanning-Tree неоспорима. Иначе - петли, штормы и прочие прелести.
О реализации STP на оборудовании Elsicom
В документации сказано, что в данный момент реализована версия STP в соответствии со стандартом 802.1D, модификация PVST+. Это значит, что для каждого VLAN запущен свой процесс STP. Данный режим - единственный возможный вариант STP. 802.1w не реализован, каких-либо других версий (более старых или более новых) нет.
В результате для "честной" проверки совместимости я провожу переключение с Rapid-STP на PVST на коммутаторе sw-4. Понятное дело, что такое в лабе я себе позволить могу, но в продакшене никто не будет этого делать. Во-первых, увеличится время сходимости STP. Во-вторых, все уже настроено, и мы только дополняем нашу топологию, а не перестраиваем все заново только потому, что докупленное оборудование что-то там не поддерживает, причем это что-то является стандартным (напоминаю, RSTP - IEEE 802.1w - не реализовано, так же, как и 802.1s, но последнее менее критично).
Предсказуемость топологии
Для проверки реализации STP попробуем просчитать, каким образом выстроится наша топология при условии, что STP отработал верно. Для этих целей необходимо вспомнить, как происходит выбор root-коммутатора, как принимается решение о присвоении тем или иным портам определенного статуса.
На верхушке топологии будет находится корневой коммутатор. Корневой коммутатор выбирается исходя из следующего критерия:
1) Корневой коммутатор имеет наименьшее значение параметра Bridge Priority. По умолчанию это значение равно 32 768.
2) В случае, если у всех коммутаторов будет стоять значение приоритета по умолчанию, в игру вступает параметр MAC-адрес коммутатора. Чем ниже значение MAC-адреса, тем вероятнее коммутатор станет Root-коммутатором.
В случае с лабораторной топологией значения приоритетов и МАС-адресов расположились следующим образом:
Из указанных значений можно заключить, что после того, как топология сойдется, Root-коммутатором будет являться sw-4 для всех VLAN. Решение об этом будет принято на основании значения МАС-адреса, которое является минимальным у sw-4.
Относительно корня (или вершины, кому как нравится) будет строится остальное дерево. Попробуем спрогнозировать, какой статус будет присвоен портам. Для этого необходимо вспомнить, что:
1) Все порты, имеющие наилучшую стоимость маршрута до корневого коммутатора - это Root-ports.
2) Порты со стороны корневого коммутатора имеют статус Designed.
3) Если стоимость маршрута до корня одинаковая - используется значение приоритета портов: чем выше значение, тем выше приоритет у порта.
4) Если приоритеты на портах одинаковые, то используется номер порта в качестве решающего в выборе. Чем выше номер порта, тем менее приоритетнее данное направление.
Приоритеты на портах везде одинаковые - 128. Поэтому, судя по теории, состояние портов будет присвоено следующим образом:
Вот такую картину мы хотим получить при условии, что соединяем все в соответствии с топологией и не меняем приоритеты портов и коммутаторов в части STP.
Настройка и управление
Для реализации задуманного соединим 3 коммутатора кабелями. На каждом порту коммутатора, участвующем в эксперименте, зададим следующие настройки:
Для Elsicom
!
switchport access vlan 676
switchport trunk allowed vlan 670-675
no shutdown
!
switchport trunk allowed vlan 670-675
no shutdown
!
Для Cisco
!
switchport trunk allowed vlan 670-675
switchport trunk encapsulation dot1q
switchport mode trunk
switchport nonegotiate
no shutdown
switchport trunk encapsulation dot1q
switchport mode trunk
switchport nonegotiate
no shutdown
!
Смотрим на получившийся результат. STP повел себя в точном соответствии с нашими ожиданиями. Ниже пример вывода для vlan 670:
Cisco:
!
VLAN0670
Spanning tree enabled protocol ieee
Root ID Priority 33438
Address 3c08.f69e.d280
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 33438 (priority 32768 sys-id-ext 670)
Address 3c08.f69e.d280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300 sec
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/17 Desg FWD 19 128.17 P2p
Gi0/18 Desg FWD 19 128.18 P2p
Gi0/19 Desg FWD 19 128.19 P2p
Gi0/20 Desg FWD 19 128.20 P2p
Spanning tree enabled protocol ieee
Root ID Priority 33438
Address 3c08.f69e.d280
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 33438 (priority 32768 sys-id-ext 670)
Address 3c08.f69e.d280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300 sec
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/17 Desg FWD 19 128.17 P2p
Gi0/18 Desg FWD 19 128.18 P2p
Gi0/19 Desg FWD 19 128.19 P2p
Gi0/20 Desg FWD 19 128.20 P2p
!
ELS001
!
ELS001# show spanning-tree vlan 670
VLAN0670
Spanning tree enabled protocol ieee
Root ID Priority 33438
Address 3c08.f69e.d280
Cost 19
Port 7 (FastEthernet 0/7)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 33438 (priority 32768 sys-id-ext 670)
Address e400.0000.5a40
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300 sec
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/7 Root FWD 19 128.7 P2p
Fa0/8 Blck BLK 19 128.8 P2p
Fa0/15 Desg FWD 19 128.15 P2p
Fa0/16 Desg FWD 19 128.16 P2p
Gi0/1 Desg FWD 4 128.17 P2p
VLAN0670
Spanning tree enabled protocol ieee
Root ID Priority 33438
Address 3c08.f69e.d280
Cost 19
Port 7 (FastEthernet 0/7)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 33438 (priority 32768 sys-id-ext 670)
Address e400.0000.5a40
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300 sec
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/7 Root FWD 19 128.7 P2p
Fa0/8 Blck BLK 19 128.8 P2p
Fa0/15 Desg FWD 19 128.15 P2p
Fa0/16 Desg FWD 19 128.16 P2p
Gi0/1 Desg FWD 4 128.17 P2p
!
ELS010
!
VLAN0670
Spanning tree enabled protocol ieee
Root ID Priority 33438
Address 3c08.f69e.d280
Cost 19
Port 20 (FastEthernet 0/20)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 33438 (priority 32768 sys-id-ext 670)
Address ea00.0000.44f1
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/19 Blck BLK 19 128.19 P2p
Fa0/20 Root FWD 19 128.20 P2p
Fa0/47 Blck BLK 19 128.47 P2p
Fa0/48 Blck BLK 19 128.48 P2p
Gi0/1 Blck BLK 4 128.49 P2p
Spanning tree enabled protocol ieee
Root ID Priority 33438
Address 3c08.f69e.d280
Cost 19
Port 20 (FastEthernet 0/20)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 33438 (priority 32768 sys-id-ext 670)
Address ea00.0000.44f1
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/19 Blck BLK 19 128.19 P2p
Fa0/20 Root FWD 19 128.20 P2p
Fa0/47 Blck BLK 19 128.47 P2p
Fa0/48 Blck BLK 19 128.48 P2p
Gi0/1 Blck BLK 4 128.49 P2p
!
Как видно из выводов, STP отрабатывает корректно. Для изменения поведения STP предусмотрены возможности влияния на значения приоритетов портов и BridgeID. Например, чтобы заставить коммутатор ELS010 стать рутом для VLAN'ов с 670 по 675, необходимо ввести команду spanning-tree vlan 670-676 root (если нет желания играть со значениями приоритетов).
В документации описан набор команд для влияния на таймеры. Можно изменить стандартные значения таймеров Listening, Learning, времени хранения BPDU, сделав их отличными от значений по умолчанию.
Так же реализована возможность включения режима PortFast как на портах с конечными устройствами пользователей, так и на сетевых портах. При этом для защиты от разрушения STP-топологии и предотвращения атаки на STP реализована функция BPDUGuard.
Единственным странным моментом остался отдельный STP-процесс для интерфейса 676, который вообще-то является нативным vlan и не передается в транке, т.е. является неактивным. Cisco на этот счет заявляет, что влан не активен, поэтому вывод команды show spanning-tree vlan 676 показывает ничего (Spanning tree instance(s) for vlan 676 does not exist.), в отличие от Elsicom, которые построили топологию STP абсолютно такую же, как и для остальных разрешенных и активных VLAN. Проверив все созданные вланы, которые есть на коммутаторе, обнаружил, что на каждый созданный влан есть свой STP процесс, независимо от того, активен ли VLAN или нет, является ли VLAN внесенным в список разрешенных в транке или нет. Подозреваю, что здесь вполне себе может произойти утечка памяти в случае большого количества VLAN'ов и средней нагрузки на коммутаторы...
Комментариев нет:
Отправить комментарий