понедельник, 17 апреля 2017 г.

Elsicom - Обзор L2 коммутаторов ELS001 и ELS010. Часть 2.3 - STP: совместимость с Cisco

   В этой части рассмотрим работу 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
!

Для Cisco
!
 switchport trunk allowed vlan 670-675
 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  
!

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
!

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
   
   Как видно из выводов, 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'ов и средней нагрузки на коммутаторы...

Комментариев нет:

Отправить комментарий