STP в Cisco

Материал из Xgu.ru

Перейти к: навигация, поиск

Эта статья находится в процессе написания.
Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

На этой странице описывается процедура настройки различных версий протокола Spanning Tree на коммутаторах Cisco.

Содержание

[править] Петли в сети

Петли в коммутируемой сети могут возникнуть по нескольким причинам:

  • Отключен STP;
  • PVST BPDU передает идентификатор VLAN. Если на access-интерфейсе полученный идентификатор VLAN'а не совпадает с VLAN ID в котором было получено BPDU, то порт переводится в заблокированное состояние для этого VLAN;
  • Различные версии STP;
  • Разные native VLAN'ы на концах транка;
  • Слишком маленькие таймеры STP;
  • Большое количество хопов в топологии STP.

[править] Настройки по умолчанию

Настройки STP по умолчанию (для коммутатора 3550):

Настройка Значение по умолчанию
Состояние Включен в VLAN 1
Режим spanning-tree PVST+ (Rapid PVST+ и MSTP выключены)
Приоритет коммутатора32768
Приоритет портов (настраивается для каждого порта отдельно)128
Стоимость порта (настраивается для каждого порта отдельно)

1000 Mbps: 4

100 Mbps: 19

10 Mbps: 100

Приоритет порта в VLAN (настраивается для каждого VLAN отдельно)128
Стоимость порта в VLAN (настраивается для каждого VLAN отдельно)

1000 Mbps: 4

100 Mbps: 19

10 Mbps: 100

Таймеры spanning-tree

Hello time: 2 секунд

Forward-delay time: 15 секунд

Maximum-aging time: 20 секунд

Transmit hold count: 6 BPDU

[править] Настройка PVST+

Включить PVST+ в VLAN (по умолчанию включен):

sw(config)# spanning-tree vlan 100

[править] Настройка Rapid PVST+

[править] Настройка MST

Задачи по настройке MST:

  1. Создать нужные VLAN'ы и назначить порты в соответствующие VLAN.
  2. Настроить параметры IST:
    • IST Bridge Priority
    • IST Port Priority
  3. Глобально включить MST и зайти в режим настройки MST выполнив команду spanning-tree mode mst
  4. Из режима настройки MST настроить параметры, которые обязательно должны совпадать у всех коммутаторов в регионе:
    • Имя региона MST
    • MST revision number
    • Соответствие MST instance -- VLAN'ы
  5. Настроить параметры, которые обычно (но не обязательно) уникальны для коммутатора:
    • Bridge Priority для instance
    • Port Priority для instance

[править] Опциональные настройки STP

  • Loop Guard
  • BPDU Guard
  • Root Guard
  • PortFast
  • BPDU Filter
  • UDLD

Функции PortFast, BPDU guard, BPDU filtering, EtherChannel guard, root guard или loop guard могут быть настроены в режиме PVST+, rapid PVST+ или MSTP.

Функции UplinkFast, BackboneFast или cross-stack UplinkFast могут быть настроены в режиме rapid PVST+ или MSTP, но они будут оставаться выключенными (inactive) до тех пор пока режим не будет изменен на PVST+.

[править] Настройки по умолчанию опциональных функций

Функция Значение по умолчанию
Port Fast, BPDU filtering, BPDU guard Глобально выключены
UplinkFast Глобально выключена
Cross-Stack UplinkFast (CSUF) Выключена на всех интерфейсах
BackboneFast Глобально выключена
EtherChannel guard Глобально включена
Root guard Выключена на всех интерфейсах
Loop guard Выключена на всех интерфейсах

[править] Port Fast

Portfast — функция, которая позволяет порту пропустить состояния listening и learning и сразу же перейти в состояние forwarding. Настраивается на портах уровня доступа, к которым подключены пользователи или сервера.

Порт с включенной функцией Port Fast проходит через обычный цикл состояний spanning-tree, когда коммутатор перезагружается.

Цель функции Port Fast минимизировать время, которое необходимо для того чтобы порт перешел в состояние forward. Поэтому она эффективна только когда применена к портам, к которым подключены хосты. Если включить Port Fast на портах, которые соединены с другими коммутаторами, то есть риск создания петли. Включение этой функции, так же препятствует возникновению сообщений о изменении состояния порта TCN BPDU (topology change notification Bridge Protocol Data Unit)

[править] Настройка Port Fast

Синтаксис команды для настройки Port Fast на интерфейсе:

sw(config-if)# spanning-tree portfast [disable | trunk]

Настройка Port Fast на access-интерфейсе:

sw(config)#interface fa0/1
sw(config-if)# spanning-tree portfast

Настройка Port Fast на интерфейсе, который работает в режиме trunk (тегированый порт):

sw(config)#interface fa0/1
sw(config-if)# spanning-tree portfast trunk

Если на интерфейсе, который работает в режиме транка выполнить команду без параметра trunk, то функция Port Fast не будет применена.

Функцию Port Fast можно настроить глобально на всех интерфейсах в режиме access:

sw(config)#spanning-tree portfast default

Отключить Port Fast на интерфейсе:

sw(config-if)# spanning-tree portfast disable

[править] Просмотр информации о настройках Port Fast

Просмотр информации о статусе функции Port Fast на интерфейсе:

sw# show spanning-tree interface fa 0/1 portfast 
VLAN0001            enabled

Просмотр информации о настройках spanning-tree на интерфейсе:

sw# show spanning-tree interface fa 0/1  detail
Port 1 (FastEthernet0/1) of VLAN0001 is designated forwarding 
  Port path cost 19, Port priority 128, Port Identifier 128.1.
  Designated root has priority 32769, address 000a.b8ab.eb80
  Designated bridge has priority 32769, address 0012.0111.e580
  Designated port id is 128.1, designated path cost 19
  Timers: message age 0, forward delay 0, hold 0
  Number of transitions to forwarding state: 1
  The port is in the portfast mode
  Link type is point-to-point by default
  BPDU: sent 75684, received 0

Если Port Fast была включена глобально на всех access-портах, то это можно посмотреть в суммарной информации о настройках STP на коммутаторе:

sw# show spanning-tree summary 
Switch is in pvst mode
Root bridge for: none
Extended system ID           is enabled
Portfast Default             is enabled
PortFast BPDU Guard Default  is disabled
Portfast BPDU Filter Default is disabled
Loopguard Default            is disabled
EtherChannel misconfig guard is enabled
UplinkFast                   is disabled
BackboneFast                 is disabled
Configured Pathcost method used is short

Name                   Blocking Listening Learning Forwarding STP Active
---------------------- -------- --------- -------- ---------- ----------
VLAN0001                     1         0        0          3          4
---------------------- -------- --------- -------- ---------- ----------
1 vlan                       1         0        0          3          4

[править] UplinkFast

Проприетарное усовершенствование протокола 802.1D сделанное Cisco. В RSTP эта функция не используются, так как улучшения уже встроены в протокол.

После включения UplinkFast на коммутаторе:

  • приоритет увеличивается до 49152
  • стоимость портов устанавливается равной 3000
  • отслеживаются альтернативные корневые порты, на которых были получены сообщения hello от корневого коммутатора.

Если основной RP выходит из строя, то коммутатор сразу переключается на запасной и переводит его в состояние forward.

Кроме того, UplinkFast позволяет коммутаторам обновить записи в таблицах коммутации, без использования TCN. Вместо TCN коммутатор находит MAC-адреса всех локальных устройств и отправляет один multicast фрейм с каждым MAC-адресом в поле отправитель. Удаляются также остальные записи в таблицы коммутации самого коммутатора.

[править] BackboneFast

Проприетарное усовершенствование протокола 802.1D сделанное Cisco. В RSTP эта функция не используются, так как улучшения уже встроены в протокол. Позволяет быстрее найти альтернативный путь, после изменения топологии. Для того чтобы функция работала, необходимо включить её на всех коммутаторах в сети.

Настройка BackboneFast:

sw(config)# spanning-tree backbonefast

[править] Безопасность STP

[править] BPDU Guard

BPDU Guard — функция, которая позволяет выключать порт при получении BPDU.

Может быть включена глобально на коммутаторе или на интерфейсе, у этих режимов есть некоторые отличия:

  • Если BPDU Guard включена глобально на коммутаторе, то для портов с включенной функцией Port Fast:
    • при корректной настройке, порты с включенным Port Fast не должны получать BPDU,
    • получение BPDU на портах с Port Fast говорит о неправильных настройках или о том, что подключено неавторизованное устройство,
    • при получении BPDU на интерфейсе, функция BPDU Guard переведет его в состояние error-disabled,
  • Если BPDU Guard включена на интерфейсе (без включения функции Port Fast):
    • при получении BPDU на интерфейсе, функция BPDU Guard переведет его в состояние error-disabled.
[править] Настройка BPDU Guard

Включение BPDU Guard глобально на коммутаторе, на портах с включенной функцией Port Fast:

sw(config)# spanning-tree portfast bpduguard default 

Хотя в команде, которая включает BPDU Guard глобально на коммутаторе, есть параметр portfast, применение этой команды не включает функцию Port Fast. Она должна быть настроена отдельно.

Настройка BPDU Guard на интерфейсе:

sw(config)#interface fa0/1
sw(config-if)# spanning-tree bpduguard enable
[править] Просмотр информации о настройках BPDU Guard

Просмотр информации о настройках spanning-tree на интерфейсе:

sw1#sh span int fa0/1 detail 
Port 1 (FastEthernet0/1) of VLAN0001 is designated forwarding 
  Port path cost 19, Port priority 128, Port Identifier 128.1.
  Designated root has priority 32769, address 000a.b8ab.eb80
  Designated bridge has priority 32769, address 0012.0111.e580
  Designated port id is 128.1, designated path cost 19
  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: sent 116964, received 0

Если функция BPDU Guard была включена глобально на коммутаторе, то это можно посмотреть в суммарной информации о настройках STP на коммутаторе:

sw1#sh span summary 
Switch is in pvst mode
Root bridge for: none
Extended system ID           is enabled
Portfast Default             is disabled
PortFast BPDU Guard Default  is enabled
Portfast BPDU Filter Default is disabled
Loopguard Default            is disabled
EtherChannel misconfig guard is enabled
UplinkFast                   is disabled
BackboneFast                 is disabled
Configured Pathcost method used is short  

Name                   Blocking Listening Learning Forwarding STP Active
---------------------- -------- --------- -------- ---------- ----------
VLAN0001                     1         0        0          3          4
---------------------- -------- --------- -------- ---------- ----------
1 vlan                       1         0        0          3          4

[править] BPDU Filtering

BPDU Filtering — после включения функции, порт не принимает и не отравляет BPDU.

Может быть включена глобально на коммутаторе или на интерфейсе, у этих режимов есть некоторые отличия:

  • Если BPDU filtering включена глобально на коммутаторе, то для портов с включенной функцией Port Fast:
    • порт не принимает и не отравляет BPDU,
    • при включении порта отправляются несколько BPDU, а затем коммутатор фильтрует исходящие BPDU,
    • при получении BPDU на портах с Port Fast, на порту выключается Port Fast и BPDU filtering,
  • Если BPDU filtering включена на интерфейсе (без включения функции Port Fast):
    • порт не принимает и не отравляет BPDU,
    • применение этой функции на интерфейсе равносильно отключению spanning-tree на нем и может привести к образованию петель.
[править] Настройка BPDU Filtering

Включение BPDU Filtering глобально на коммутаторе, на портах с включенной функцией Port Fast:

sw(config)# spanning-tree portfast bpdufilter default 

Хотя в команде, которая включает BPDU Filtering глобально на коммутаторе, есть параметр portfast, применение этой команды не включает функцию Port Fast. Она должна быть настроена отдельно.

Настройка BPDU Filtering на интерфейсе:

sw(config)#interface fa0/1
sw(config-if)# spanning-tree bpdufilter enable
[править] Просмотр информации о настройках BPDU Filtering

Просмотр информации о настройках spanning-tree на интерфейсе:

sw1#sh spanning-tree interface fa0/1 detail 
Port 1 (FastEthernet0/1) of VLAN0001 is designated forwarding 
  Port path cost 19, Port priority 128, Port Identifier 128.1.
  Designated root has priority 32769, address 000a.b8ab.eb80
  Designated bridge has priority 32769, address 0012.0111.e580
  Designated port id is 128.1, designated path cost 19
  Timers: message age 0, forward delay 0, hold 0
  Number of transitions to forwarding state: 1
  The port is in the portfast mode by default
  Link type is point-to-point by default
  Bpdu filter is enabled
  BPDU: sent 117353, received 0

Если функция BPDU Filtering была включена глобально на коммутаторе, то это можно посмотреть в суммарной информации о настройках STP на коммутаторе:

sw1#sh spanning-tree summary 
Switch is in pvst mode
Root bridge for: none
Extended system ID           is enabled
Portfast Default             is disabled
PortFast BPDU Guard Default  is disabled
Portfast BPDU Filter Default is enabled
Loopguard Default            is disabled
EtherChannel misconfig guard is enabled
UplinkFast                   is disabled
BackboneFast                 is disabled
Configured Pathcost method used is short 

Name                   Blocking Listening Learning Forwarding STP Active
---------------------- -------- --------- -------- ---------- ----------
VLAN0001                     1         0        0          3          4
---------------------- -------- --------- -------- ---------- ----------
1 vlan                       1         0        0          3          4

[править] Root Guard

[править] Loop Guard

Одна из проблем с STP, это то что само оборудование которое его использует может быть причиной сбоя и быть причиной создание петли. Для предотвращения подобных сбоев и был создана команда Loop Guard.

Описание Loop Guard

Loop Guard - обеспечивает дополнительную защиту на 2 уровне от возникновения петель. STP петля возникает когда блокированный порт в избыточной топологии ошибочно переводиться в состояние forwarding(передачи). Это может возникнуть например когда блокированный STP порт перестают получать BPDU. Так как работа протокола STP полагается на постоянное присутствие BPDU пакетов в сети.(Designated (назначенный) порт постоянно должен передовать BPDU пакеты а non-designated должен их получать). Как только на порт перестают поступать BPDU STP понимает это как изменению топологии и исчезновение петли и переводит порт в состояние forwarding. В случаи использованя Loop Guard порт после прекращения получения пакетов BPDU переводиться в состояние loop-inconsistent и остаются по прежнему блокированным. А в логах появиться следующее сообщение:

     •	%SPANTREE-2-LOOPGUARD_BLOCK: Loop guard blocking port FastEthernet0/15 on VLAN0037.

Как только на порт снова начинают поступать BPDU порт переводиться в состояние согласно содержанию пакетов BPDU, а в логах появиться следующее сообщение:

     •	%SPANTREE-2-LOOPGUARD_UNBLOCK: Loop guard unblocking port FastEthernet0/15 on VLAN0037.


На каких портах следует включать Loop Guard? Наиболее очевидный ответ blocking. Однако это не всегда правильно. Loop guard должен быть включен на non-designated портах (более точно root и alternate портах).

По умолчанию Loop guard выключен. Для того что бы его включить используйте следующие команды:

Cisco IOS

   spanning-tree guard loop
   Router(config)#interface gigabitEthernet 1/1
   Router(config-if)#spanning-tree guard loop

Что бы включить Loop guard глобально:

Cisco IOS

   Router(config)#spanning-tree loopguard default

Команда для проверки статуса Loop Guard:

Cisco IOS

   show spanning-tree summary
   Router#show spanning-tree summary
   Switch is in pvst mode
   Root bridge for: none
   EtherChannel misconfig guard is enabled
   Extended system ID           is disabled
   Portfast Default             is disabled
   PortFast BPDU Guard Default  is disabled
   Portfast BPDU Filter Default is disabled
   Loopguard Default            is enabled
   UplinkFast                   is disabled
   BackboneFast                 is disabled
   Pathcost method used         is short
   Name                   Blocking Listening Learning Forwarding STP Active
   ---------------------- -------- --------- -------- ---------- ----------
   Total                        0         0        0          0          0

[править] UDLD

  • UDLD — использует сообщения канального уровня для того чтобы обнаружить ситуацию когда коммутатор более не получает кадры от соседа. Коммутатор передающий интерфейс которого не вышел из строя, переводится в состояние err-disable.
  • UDLD aggressive mode — коммутатор пытается соединиться с другим коммутатором (8 раз) после того как обнаружил, что более не получает кадры от соседа. Если коммутатор не отвечает, то обе стороны переводятся в состояние err-disable.

[править] Совместимость и отличия функций

  • Root Guard и Loop Guard не могут быть включены одновременно.
  • Root Guard не должен быть включен на интерфейсах, которые используются функцией UplinkFast. UplinkFast позволяет запасным интерфейсам (которые находятся в заблокированном состоянии) заменять корневой порт, если он вышел из строя. Однако, если на запасных интерфейсах включен Root Guard, то порты будут переведены в состояние root-inconsistent и не перейдут в состояние forward.

[править] Loop Guard в сравнении с UDLD

Функции Loop Guard и UDLD (Unidirectional Link Detection) частично совпадают друг с другом. Обе эти функции предназначены для борьбы с последствиями сбоев в функциональности STP. Однако есть небольшие отличия в функциональности.

Функциональность Loop Guard UDLD
Настройка Per-port Per-port
Область действия Per-port Per-port
Автовосстановление Да Да, с err-disable timeout
Защита против физических сбоев STP Да Да
Защита против программных сбоев STP Да Нет
Защита от ошибок настройки Нет Да

--DenisSP 11:27, 25 февраля 2010 (UTC)


[править] Дополнительная информация

Источник — «http://xgu.ru/wiki/STP_%D0%B2_Cisco»