Петли L2, методы борьбы (PortFast, LoopGuard, BPDU guard, BPDU filter)
Петли в сетях
Петли в коммутируемой сети могут возникнуть по нескольким причинам:
- Отключен STP;
- PVST BPDU передает идентификатор VLAN. Если на access-интерфейсе полученный идентификатор VLAN'а не совпадает с VLAN ID в котором было получено BPDU, то порт переводится в заблокированное состояние для этого VLAN;
- Различные версии STP;
- Разные native VLAN'ы на концах транка;
- Слишком маленькие таймеры STP;
- Большое количество хопов в топологии STP.
Опциональные настройки STP
- Loop Guard
- BPDU Guard
- Root Guard
- PortFast
- BPDU Filter
- UDLD
Port Fast
Portfast функция на свичах для протокола Spanning Tree, которая позволяет переводить порт в режим передачи мгновенно. Как только втыкнуть в него кабель. Это применяеться для того чтобы включать рабочие станции и сервера в сеть немедленно, без ожидания конвергенции Spanning Tree. Не рекомендуют включать в таком режиме свичи, во избежания образования петель.
Portfast — функция, которая позволяет порту пропустить состояния listening и learning и сразу же перейти в состояние forwarding. Настраивается на портах уровня доступа, к которым подключены пользователи или сервера. Фактически, PortFast меняет две вещи в стандартной работе STP:
- порт пропускает состояния listening и learning
- при изменении статуса порта, не отправляется сообщение о изменении состояния порта TCN BPDU (topology change notification BPDU)
Настройка 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 (тегированый порт)
(Если на интерфейсе, который работает в режиме транка выполнить команду без параметра trunk, то функция Port Fast не будет применена. )
sw(config)#interface fa0/1
sw(config-if)# spanning-tree portfast trunk
Функцию 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
Просмотр информации о настройках spanning-tree на интерфейсе:
sw# show spanning-tree interface fa 0/1 detail
Если Port Fast была включена глобально на всех access-портах, то это можно посмотреть так:
sw# show spanning-tree summary
---------------------------------------Безопасность STP----------------------------------------------
BPDU Guard
Функция, которая позволяет выключать порт при получении BPDU.
PortFast BPDU guard предотвращает петли так: он переводит нетранковые поты в состояние errdisable, когда BPDU приходит на порт. Когда на свитче настроен BPDU guard, spanning tree выключает PortFast-configured порты, которые получают BPDUs вместо того, чтоб переводить их в состояние blocked. При правильной конфигурации PortFast интерфейсы не получают BPDUs.
Если в конфигурации отображается порт, который должен быть включен, но программное обеспечение на коммутаторе обнаружило порт в состояние ошибки, то программное обеспечение отключит этот порт. Когда порт отключается из-за ошибки, он фактически выключается, а прием и отправка трафика через него не выполняются. Цвет индикатора порта становится оранжевым, а при выполнении команды show interfaces отображается состояние порта err-disabled.
Включение BPDU Guard глобально на коммутаторе, на портах с включенной функцией Port Fast:
sw(config)# spanning-tree portfast bpduguard default
Настройка BPDU Guard на интерфейсе:
sw(config)#interface fa0/1
sw(config-if)# spanning-tree bpduguard enable
Информация о BPDU содержится в spanning-tree на интерфейсе:
sw1#sh span int fa0/1 detail
BPDU Filtering
• Если настраивается глобально, а не в режиме интерфейса
BPDU Filtering - настраивается поверх PORTFAST, блокирует попытки отправить BPDU с интерфейса на котором включен, так конечный пользователь не знает что работает STP. Разница с BPDU guard в том, что при получении пакета, порт не отключается как у BPDU guard, на нем отключается PORTFAST и функция BPDU guard, т.е. порт становится обычным STP портом, в том числе посылает и принимает BPDU пакеты
• If BPDU Filtering is configured from the interface configuration mode the result is completely different as this will cause the specific port to stop sending AND receiving (BPDUs are dropped) BPDUs. Tthe port ignores any incoming BPDUs and changes to Forwarding state. this solution is not recommended as it can result in bridging loops.
Включение BPDU Filtering глобально на коммутаторе, на портах с включенной функцией Port Fast:
sw(config)# spanning-tree portfast bpdufilter default
Настройка 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
if you enable BPDU Guard on the same interface as BPDU Filtering, BPDU Guard has no effect because BPDU Filtering takes precedence over BPDU Guard. Configuation of BPDU Filtering is not a recommended configuration.
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 - обеспечивает дополнительную защиту на 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? Loop guard должен быть включен на root и alternate портах. По умолчанию Loop guard выключен.
Для того что бы его включить используйте следующие команды:
Router(config)#interface gigabitEthernet 1/1
Router(config-if)#spanning-tree guard loop
Что бы включить Loop guard глобально:
(config)#spanning-tree loopguard default
Команда для проверки статуса Loop Guard:
#show spanning-tree summary
Хабра "Идеальный Шторм"
Comments
Post a Comment