13. STP Toolkit

STP Toolkit - набор "улучшений" протоколов семейства STP от Cisco

  • PortFast

  • BPDU Guard

  • BPDU Filter

  • Root Guard

  • Loop Guard

  • UDLD

  • Bridge Assistance

  • STP Dispute

  • UplinkFast

  • BackboneFast

  • EtherChannel Guard

PortFast

  • Изначально являлся частью STP Toolkit, затем вошел в 802.1w

  • Ускоряет начало работы для абонентских портов

    • Порт при пересчете топологии начинает работу из состояния Forwarding

    • BPDU в порт отправляются, но не ожидаются с него

    • При появлении BPDU порт теряет статус PortFast, с пересчетом топологии

  • Не должен включаться на ISL-транках

    • Включается либо на абонентских портах, либо на транках до серверов

  • Включить на отдельном интерфейсе:

Switch(config-if)#spanning-tree portfast edge ?
  trunk  Enable portfast edge on the interface even in trunk mode
  <cr>
  • Включить автоматически на всех access-интерфейсах:

Switch(config)#spanning-tree portfast edge default

BPDU Guard

  • Включается на PortFast-портах*, за которыми всегда должны находиться конечные абоненты, но не коммутаторы

    • Рекомендуется на портах конечных абонентов

  • Включить на отдельном интерфейсе:

Switch(config-if)#spanning-tree bpduguard enable
  • Включить автоматически на всех PortFast-интерфейсах:

Switch(config)#spanning-tree portfast edge bpduguard default
  • При обнаружении BPDU порт выключается (err-disable)

%SPANTREE-SP-2-BLOCK_BPDUGUARD: 
   Received BPDU on port GigabitEthernet4/1 with BPDU Guard enabled. Disabling port.
%PM-SP-4-ERR_DISABLE: 
   bpduguard error detected on Gi4/1, putting Gi4/1 in err-disable state

BPDU Filter

  • Включается на PortFast-портах*, за которыми всегда должны находиться конечные абоненты, но не коммутаторы

    • Отправка и получение BPDU прекращаются, порт всегда Designated

    • Рекомендуется использовать на интерфейсах в сторону чужих AS

    • В гетерогенных сетях рекомендуется использовать вместе с BPDU Guard

  • Включить на отдельном интерфейсе:

Switch(config-if)#spanning-tree bpdufilter enable
  • Включить автоматически на всех PortFast-интерфейсах:

Switch(config)#spanning-tree portfast edge bpdufilter default
  • После включения порта в течение 10 x Hello Time отправляет BPDU

  • Если в это время приходят ответные BPDU, то фильтр на порту не включается

Root Guard

  • Механизм защиты от неавторизованной смены Root Bridge

    • Указываются порты, на которых в норме не должны приходить Superior BPDU

    • При получении BPDU коммутация блокируется на Max Age

    • Порт никогда не сменяет роль с Designated

Switch(config-if)#spanning-tree guard root
%SPANTREE-2-ROOTGUARD_CONFIG_CHANGE: Root guard enabled on port GigabitEthernet0/0
%SPANTREE-2-ROOTGUARD_BLOCK: Root guard blocking port GigabitEthernet0/0 on Vlan 1
Switch#show spanning-tree vlan 1 | include Gi0/0
Gi0/0                Desg BKN*20000    128.1    P2p        *ROOT_Inc

Односторонний отказ

  • В некоторых типах каналов возможны односторонние отказы связи:

    • В одну сторону пакеты проходят, в другую - нет

    • Типичная проблема для оптических каналов

  • Если BPDU от настоящего Designated Bridge не доходят до других коммутаторов в сегменте, те примут роль Designated Bridge сами

    • Если есть альтернативный путь между коммутаторами - возникнет петля

Loop Guard

  • Механизм борьбы с односторонними отказами, антипод Root Guard

    • Указывает порты, на которых в норме должны приходить Superior BPDU

    • При исчезновении BPDU коммутация блокируется до возобновления приема

    • Порт никогда не сменяет роль на Designated

  • Включение на отдельном интерфейсе:

Switch(config-if)#spanning-tree guard loop
  • Включение на всех не PortFast P2P портах:

Switch(config)#spanning-tree loopguard default
%SPANTREE-2-LOOPGUARD_BLOCK: Loop guard blocking port GigabitEthernet0/0
Switch#show spanning-tree vlan 1 | include Gi0/0
Gi0/0                Desg BKN*20000    128.1    P2p        *LOOP_Inc

UDLD

  • Unidirectional Link Detection

  • Альтернативный механизм борьбы с односторонними отказами

  • Проприетарный протокол для проверки двусторонней связности

  • Не использует STP BPDU, но создан для существования с 802.1D-1990

  • Отправляет UDLD-пакеты и ожидает ответы на них

    • По умолчанию таймер 15 секунд, время жизни - 45 секунд

Имеет два режима работы:

  • Normal - при обнаружении одностороннего отказа ничего не происходит

  • Aggressive - при обнаружении одностороннего отказа порт выключается

    • Перед выключением в попытке переподключения отправляет 8 пакетов в секунду

  • Включить на всех оптических портах:

Switch(config)#udld aggressive
Switch(config)#udld message time 2
  • Включить на конкретном интерфейсе:

Switch(config-if)#udld port aggressive
  • Включение должно производится с обеих сторон

Bridge Assurance

  • Механизм борьбы с односторонними отказами, аналог Loop Guard

  • BPDU отправляются на всех портах, включая Root, Alternate и Backup

  • Указываются порты, на которых в норме всегда должны приходить BPDU

  • При отсутствии BPDU коммутация блокируется

  • Включение механизма Bridge Assurance:

Switch(config)#spanning-tree bridge assurance
  • Разметка интерфейсов:

Switch(config-if)#spanning-tree portfast network
  • Пример блокировки порта при отсутствии BPDU

Switch#show spanning-tree vlan 1 | include Gi0/0
Gi0/0                Desg BKN*20000    128.1    P2p Network  *BA_Inc
  • В отличии от Loop Guard срабатывает и после перезагрузки

STP Dispute

  • Механизм борьбы с односторонними отказами, аналог Loop Guard

  • При получении BPDU с недостоверной ролью порта коммутация блокируется

  • Настройка на коммутаторах Cisco не требуется, работает всегда (внутренний механизм RSTP, MST)

Switch#show spanning-tree vlan 1 | include Gi0/0
Gi0/0                Desg BLK 20000    128.1    P2p Dispute

UplinkFast

  • Устаревший механизм переключения между аплинками в PVST

  • Включался на коммутаторах доступа

  • Bridge Priority выставляется в 49152, препятствует захвату роли Root Bridge

  • Port Cost на всех портах увеличивается на 3000, препятствуя транзиту

  • При потере Root Port немедленно Alternate Port переходит в Root Forwarding

    • В него отправляются dummy-кадры на 0100.0ссd.cdcd от всех адресов в таблице MAC

Switch(config)#spanning-tree uplinkfast

BackboneFast

  • Устаревший механизм защиты от непрямого отказа в ядре сети

  • Включался на коммутаторах ядра

  • При получении Inferior BPDU на заблокированном порту проверялась доступность Root Bridge проприетарным протоколом RLQ (Root Link Query)

  • В случае доступности Root соседу немедленно отправлялась Superior BPDU

  • Механизм сокращал время перестроения топологии на 20 с за счет Max Age

Switch(config)#spanning-tree backbonefast

EtherChannel Guard

  • Механизм защиты EtherChannel от некорректной сборки

    • Использует STP BPDU для контроля корректности

  • STP использует агрегатный интерфейс для отправки BPDU

    • Если на физических интерфейсах EtherChannel приходят BPDU с разными Sender Port ID - агрегатный интерфейс выключается (err-disable)

  • Включен по умолчанию, можно включить/выключить:

Switch(config)#spanning-tree etherchannel guard misconfig
Switch(config)#interface range gi0/0-1
Switch(config-if-range)#channel-group 1 mode on
*Mar  1 00:04:00.266: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Gi1/0/24, putting Gi1/0/24 in err-disable state
*Mar  1 00:04:00.333: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Po1, putting Gi1/0/24 in err-disable state
*Mar  1 00:04:00.333: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Po1, putting Po1 in err-disable state
*Mar  1 00:04:01.281: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet1/0/24, changed state to down
*Mar  1 00:04:00.300: %PM-4-ERR_DISABLE: channel-misconfig (STP) error detected on Gi2/0/24, putting Gi2/0/24 in err-disable state (Switch-2)
*Mar  1 00:04:01.315: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet2/0/24, changed state to down
*Mar  1 00:04:01.315: %LINEPROTO-5-UPDOWN: Line protocol on Interface Port-channel1, changed state to down

Диагностика STP Toolkit

  • Глобальные настройки:

Switch#show spanning-tree summary
Switch is in pvst mode
Root bridge for: VLAN0001
Extended system ID                      is enabled
Portfast Default                        is disabled
Portfast Edge BPDU Guard Default        is disabled
Portfast Edge BPDU Filter Default       is disabled
Loopguard Default                       is disabled
PVST Simulation Default                 is enabled but inactive in pvst mode
Bridge Assurance                        is enabled but inactive in pvst mode
EtherChannel misconfig guard            is enabled
Configured Pathcost method used is short
UplinkFast                              is disabled
BackboneFast                            is disabled

Name                   Blocking Listening Learning Forwarding STP Active
---------------------- -------- --------- -------- ---------- ----------
VLAN0001                     0         0        0          4          4
---------------------- -------- --------- -------- ---------- ----------
1 vlan                       0         0        0          4          4
  • Порты в err-disabled и причина блокировки:

Switch#show interface status err-disabled

Port      Name               Status       Reason               Err-disabled Vlans
Gi0/1                        err-disabled bpduguard
  • Настройки на интерфейсе:

Switch#show spanning-tree interface gi0/0 portfast
VLAN0001            disabled
Switch#show spanning-tree interface gi0/0 inconsistency 
VLAN0001            none
Switch#show spanning-tree interface gi0/0 detail                  
 Port 1 (GigabitEthernet0/0) of VLAN0001 is designated forwarding 
   Port path cost 4, Port priority 128, Port Identifier 128.1.
   Designated root has priority 32769, address 5000.0001.0000
   Designated bridge has priority 32769, address 5000.0001.0000
   Designated port id is 128.1, designated path cost 0
   Timers: message age 0, forward delay 0, hold 0
   Number of transitions to forwarding state: 1
   Link type is point-to-point by default
   Bpdu guard is enabled
   Bpdu filter is enabled
   BPDU: sent 158, received 0
Switch#show spanning-tree interface gi0/0 detail | begin guard    
   Bpdu guard is enabled
   Bpdu filter is enabled
   BPDU: sent 158, received 0

Last updated