STP в Cisco

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

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

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


На этой странице описывается процедура настройки различных версий протокола 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+

Включение Rapid PVST:

sw(config)# spanning-tree mode 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. Настраивается на портах уровня доступа, к которым подключены пользователи или сервера.

Фактически, PortFast меняет две вещи в стандартной работе STP:

  • порт пропускает состояния listening и learning
  • при изменении статуса порта, не отправляется сообщение о изменении состояния порта TCN BPDU (topology change notification BPDU)

Когда на интерфейсе включен PortFast, он все равно отправляет BPDU.

Но, если включить PortFast на портах, которые соединены с другими коммутаторами, то есть риск создания петли. Так как, после получения BPDU порт остается в состоянии Forwarding. За это время, уже может образоваться петля.

Поэтому, в связке с PortFast, как правило, используется BPDUGuard (хотя и это, конечно же, не даст 100% гарантии, что не будет петли).

[править] Настройка 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

Note-icon.gif

Если на интерфейсе, который работает в режиме транка выполнить команду без параметра 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

Note-icon.gif

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

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

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

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

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

[править] BackboneFast

Note-icon.gif

Проприетарное усовершенствование протокола 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 

Note-icon.gif

Хотя в команде, которая включает 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:
    • функция работает только для портов на которых включена функция Port Fast, но не включена функция BPDU Filtering (не применена на интерфейсе),
    • порт не принимает и не отправляет BPDU,
    • при включении порта отправляются несколько BPDU (10 BPDU) если порт на протяжении этого времени получает любой BPDU пакет то PortFast или PortFast + BPDU filtering отключается.
  • Если BPDU filtering включена на интерфейсе (без включения функции Port Fast):
    • порт не принимает и не отправляет BPDU,
    • применение этой функции на интерфейсе равносильно отключению spanning-tree на нем и может привести к образованию петель.

Возможные комбинации при включении BPDU Filtering глобально или на интерфейсе:

Настройка на интерфейсе Глобальная настройка Состояние PortFast Состояние PortFast BPDU Filtering
По умолчанию Включена Включена Включена
По умолчанию Включена Отключена Отключена
По умолчанию Отключена Не применимо Отключена
Отключена Не применимо Не применимо Отключена
Включена Не применимо Не применимо Включена
[править] Настройка BPDU Filtering

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

sw(config)# spanning-tree portfast bpdufilter default 

Note-icon.gif

Хотя в команде, которая включает 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

Root Guard -- если функция включена на интерфейсе, то при получении на нём BPDU лучшего, чем текущий корневой коммутатор, порт переходит в состояние root-inconsistent (эквивалентно состоянию listening). После того как порт перестает получать BPDU, он переходит в нормальное состояние.

Включение Root Guard на интерфейсе (переводит порт в роль designated):

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

Посмотреть какие порты в состоянии inconsistent:

sw# show spanning-tree inconsistentports

[править] 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 Да Нет
Защита от ошибок настройки Нет Да


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

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