В данной статье приведены примеры конфигурирования защиты интерфейсов от однонаправленных каналов(UDLD), а так же от link-flapping.
UDLD- это протокол канального уровня (L2), предназначенный для обнаружения однонаправленных каналов. В качестве примера, если в работе используются оптический разветвитель, то можно столкнуться с ситуацией, когда произошло повреждения одного волокна(Rx или TX) на любой из сторон, линк при этом не погас, что приводит к однонаправленности канала. Данный сбой может вызвать проблемы с передачей трафика и образование петель в топологии. UDLD путем обмена пакетами между соседними устройствами обнаруживает однонаправленные каналы до создания петли.
Пример конфигурации:
udld global-mode normal <<<<< Глобальная настройка. Режим работы UDLD для всех интерфейсов с не заданным port-admin-mode udld interface tengigabitethernet 0/0/2 action err-disable <<<<< режим выключения интерфейса при обнаружении нарушения связности port-admin-mode aggressive port-message-interval 10 exit udld interface tengigabitethernet 0/0/3 action err-disable port-message-interval 10 exit udld interface tengigabitethernet 0/0/4 action err-disable port-admin-mode aggressive port-message-interval 10 exit udld interface tengigabitethernet 0/0/5 action err-disable port-message-interval 10 exit udld interface tengigabitethernet 0/0/6 action err-disable port-message-interval 3
0/FMC0:EOS# show udld ports status Link service status: normal Interface UDLD Mode Msg T (sec) UDLD status Link status Nbrs cnt --------------------- ------------- ------------ ------------- ----------------- --------- te 0/0/1 disabled 10 idle up 0 - протокол не включен, линк поднят te 0/0/2 aggressive 10 bidirectional up 1 - протокол включен, линк поднят, сосед обнаружен te 0/0/3 normal 10 idle down 0 - протокол включен, линка нет te 0/0/4 aggressive 10 shutdown down 0 - протокол включен, порт заблокирован te 0/0/5 normal 10 undetermined up 0 - протокол включен, линк поднят, однонаправленная связь или на соседнем устрйстве не включен UDLD te 0/0/6 normal 3 Up detection 0 - протокол включен, линк поднят, протокол выполняет определение статуса порта
0/FMC0:EOS# show udld neighbors Thu Mar 28 03:07:57 2024 Interface Device ID Nbr. Port MAC Address Device Name SM State Msg T Exp T (sec) (sec) --------------------- -------------- ------------ ------------------ ------------------ -------------- ----------- ----------- te0/0/1 ME10000028 te0/0/24 e0:d9:e3:ff:47:18 R4 bidirectional 15 14
Касательно возможных статусов и режимов работы протокола UDLD:
Idle - Протокол не задействован на порту. Shutdown - порт находится в заблокированном состоянии . Detection - Протокол выполняет определение статуса порта. В этом состоянии протокол отправляет 8 UDLD пакетов с интервалом 1 секунда (т.е. нахождение в этой состоянии занимает 8 секунд). Отправив все 8 пакетов, порт переходит в одно из двух состояний: UNDETERMINED или BIDIRECTIONAL, анализируя полученные ответы. Undetermined - Протокол не смог выявить двунаправленную связь - не был получен корректный ответ ни от одного соседнего устройства на этом порту. Может означать как однонаправленную связь, так и отсутствие соседних устройств с задействованным UDLD на этом порту. Bidirectional - Протокол выявил двунаправленную связь, получив корректный ответ хотя бы от одного соседнего устройства на этом порту. Normal - "нормальный" режим работы, в котором невозможность обнаружить двунаправленную связь переводит порт в состоянии UNDEFINED. Блокировка порта производится только в случае закольцовывания UDLD-фреймов. Aggressive - "агрессивный" режим работы, при котором к блокировке порта приводит потеря ранее установленной двунаправленной связи с соседним устройством, либо закольцовывание UDLD-фреймов. Disable - принудительное отключение протокола на этом порту. Default - конфигурационная запись для порта будет создана, но в качестве оперативного режима будет использовать глобальная настройка, заданная командой
В случае, если UDLD обнаружил однаправленный канал или закольцовывание UDLD-фреймов, то взведется авария и порт переведет в состояние shutdown.
0/FMC0:EOS# show alarms Thu Mar 28 06:49:19 2024 ID Code Type Device Severity Duration Description ---- ------------------------------------------------- ------------- -------- --------- ----------- ------------ 1 Link is err-disabled alarm trap fmc 0/0 info 00h02m32s te0/0/1 is in err-disable state (reason: udld) 0/FMC0:EOS# show errdisable interfaces Thu Mar 28 07:21:26 2024 Interface Reason Time left(sec) ----------- ---------------------- --------------- te0/0/1 unidirectional-link 21 0/FMC0:EOS# show udld ports status Thu Mar 28 06:47:24 2024 Udld ports global mode: aggressive Interface UDLD Mode Msg T UDLD Status Link status Nbrs cnt (sec) --------------------- ------------- ----------- ----------------- ------------ --------- te0/0/1 aggressive 1 uni-dir(echo) Down(udld) 0
После этого линк на порту не подымается ни командами shutdown/no shutdown, ни переподключением волокна или SFP-модуля. Для восстановления порта необходимо настроить errdisable:
0/FMC0:EOS(config)# errdisable recovery cause unidirectional-link <<<<< Данной командой включим поддержку errdisable для UDLD 0/FMC0:EOS(config)# errdisable recovery interval 40 <<<<< Установим интерал, по истечению которого пробуем поднять линк
0/FMC0:EOS# show errdisable recovery Thu Mar 28 06:54:07 2024 Timer interval: 40 seconds Reason Automatic Recovery ---------------------- -------------------- link-flapping Enable unidirectional-link Enable
Так же рассмотрим случай, когда мы столкнулись с link-flapping на порту. Порт переходит в состояние Down(link-flapping) после 6 смен состояние up/down за 5 секунд, так же взведется авария. Далее порт находится в данном состоянии и сделает попытку поднять порт через errdisable recovery interval(По умолчанию 30 секунд). Так же по умолчанию errdisable для link-flaping включен.
0/FMC0:EOS# show alarms Thu Mar 28 07:15:29 2024 ID Code Type Device Severity Duration Description ---- ------------------------------------------------- ------------- -------- --------- ----------- ------------ 1 Link is err-disabled alarm trap fmc 0/0 info 00h00m29s te0/0/5 is in err-disable state (reason: link-flapping) 0/FMC0:EOS# show int tengigabitethernet 0/0/5 Thu Mar 28 07:15:23 2024 Tengigabitethernet0/0/5 is Down(link-flapping) Interface index is 27 Hardware is Tengigabitethernet, address is a8:f9:4b:8b:9a:05 Link is down for 0 hours, 0 minutes, 29 seconds 0/FMC0:EOS# show int tengigabitethernet 0/0/5 Thu Mar 28 07:15:25 2024 Tengigabitethernet0/0/5 is Up Interface index is 27 Hardware is Tengigabitethernet, address is a8:f9:4b:8b:9a:05 Link is up for 0 hours, 0 minutes, 0 seconds 0/FMC0:EOS# show errdisable interfaces Thu Mar 28 07:21:26 2024 Interface Reason Time left(sec) ----------- ---------------------- --------------- te0/0/5 link-flapping 28