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+
Включение Rapid PVST:
sw(config)# spanning-tree mode rapid-pvst
[править] Настройка MST
Задачи по настройке MST:
- Создать нужные VLAN'ы и назначить порты в соответствующие VLAN.
- Настроить параметры IST:
- IST Bridge Priority
- IST Port Priority
- Глобально включить MST и зайти в режим настройки MST выполнив команду spanning-tree mode mst
- Из режима настройки MST настроить параметры, которые обязательно должны совпадать у всех коммутаторов в регионе:
- Имя региона MST
- MST revision number
- Соответствие MST instance -- VLAN'ы
- Настроить параметры, которые обычно (но не обязательно) уникальны для коммутатора:
- 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
|
Если на интерфейсе, который работает в режиме транка выполнить команду без параметра 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:
- функция работает только для портов на которых включена функция 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
|
Хотя в команде, которая включает 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 | Да | Нет |
Защита от ошибок настройки | Нет | Да |
[править] Дополнительная информация
- Spanning Tree Protocol Root Guard Enhancement (англ.)
- Spanning Tree PortFast BPDU Guard Enhancement (англ.)
- Spanning Tree Protocol Problems and Related Design Considerations (англ.)
- Understanding and Configuring the Cisco UplinkFast Feature (англ.)