Unidirectional Link Detection (UDLD) |
Unidirectional Link Detection (UDLD) — проприетарный Cisco протокол второго уровня созданный для автоматического обнаружения потери двухсторонней коммуникации на линиях связи. Обычно он упоминается при обсуждении spanning tree, на прямого отношения к стандарту IEEE 802.1D не имеет. UDLD может быть использован, как для оптических, так и для линий связи на основе UTP (Медный кабель). Не смотря на то, что UDLD является проприетарным протоколом, принципы его работы и формат сообщений определены в RFC 5171.
Преимущества использования UDLD на оптических каналах очевидно. В оптических линиях связи для передачи данных используется свет, при использовании которого нет необходимости в замкнутой цепи , как в случае с медными кабелями (в которых каждая пара проводников представляет из себя замкнутую цепь). В связи с этим, есть возможность выхода из строя только одного направления передачи данных на линии связи.
UDLD как раз и предназначен для обнаружения такого рода состояний. Так-же UDLD может быть полезен на медных линиях связи, которые проходят через пассивные устройства, такие, как медиаконвертеры.
В примере выше, конечная точка с лева не может обнаружить выход из строя удаленного медиаконвертера, т.к. интерфейс подключенный к локальному медиаконвертеру остается в состоянии UP (Конечнко возможность появления такой ситуации зависит от медиаконвертора). UDLD способен обнаружить неисправность удаленного медиаконвертора путем констатации отсутствия UDLD сообщений от удаленного устройства.
Настройка
По умолчанию, UDLD выключен на всех интерфейсах. Можно включить UDLD глобально на устройстве, или индивидуально на интерфейсе при помощи команды udld port. Это включит UDLD в режиме normal.
Switch(config)# interface f0/13 Switch(config-if)# udld port
Может быть достаточно сложно скоординировать включение UDLD на обоих концах линии связи одновременно, в связи с этим при первом включении UDLD состоянии канала оценивается, как unknown,
что не означает состояние ошибки.
Switch# show udld f0/13 Interface Fa0/13 --- Port enable administrative configuration setting: Enabled Port enable operational state: Enabled Current bidirectional state: Unknown Current operational state: Advertisement Message interval: 7 Time out interval: 5 No neighbor cache information stored
После включения UDLD на интерфейсе соседнего коммутатора, мы наблюдаем, что локальный коммутатор обнаружил соседнее устройство и изменил состояние канала на bidirectional.
Switch# show udld f0/13 Interface Fa0/13 --- Port enable administrative configuration setting: Enabled Port enable operational state: Enabled Current bidirectional state: Bidirectional Current operational state: Advertisement - Single neighbor detected Message interval: 15 Time out interval: 5 Entry 1 --- Expiration time: 40 Device ID: 1 Current neighbor state: Bidirectional Device name: CAT0746Z0WN Port ID: Fa0/16 Neighbor echo 1 device: CAT1032NJ69 Neighbor echo 1 port: Fa0/13 Message interval: 15 Time out interval: 5 CDP Device name: S2
UDLD способен отслеживать несколько соседних устройств на одном интерфейсе, но обычно этого не требуется.
Мы можем симулировать отказ канала и отследить реакцию UDLD. При использовании стандартных значений advertisement timer (15 секунд) и hold timer (5 секунд), реакция на проблему со стороны UDLD может занять до 20 секунд.
Switch# debug udld events UDLD events debugging is on Switch# 00:18:07: allNeighborsAgedOutEvent during link up. (Fa0/13) 00:18:07: Phase set from ADV to LUP because all neighbors aged out (Fa0/13) 00:18:07: prev = 0 entry = 3790AEC next = 0 exp_time = 0 (Fa0/13) 00:18:07: udsb->cache = 0x2F80128 (Fa0/13) 00:18:07: timeout timer = 7 (Fa0/13) 00:18:08: timeout timer = 6 (Fa0/13) 00:18:09: timeout timer = 5 (Fa0/13) 00:18:10: timeout timer = 4 (Fa0/13) 00:18:11: timeout timer = 3 (Fa0/13) 00:18:12: timeout timer = 2 (Fa0/13) 00:18:13: timeout timer = 1 (Fa0/13) 00:18:14: timeout timer = 0 (Fa0/13) 00:18:14: Phase set to udld_advertisement from phase udld_link_up. (Fa0/13) 00:18:14: Phase set to udld_advertisement after timer_expired. (Fa0/13) Switch# show udld f0/13 Interface Fa0/13 --- Port enable administrative configuration setting: Enabled Port enable operational state: Enabled Current bidirectional state: Unknown Current operational state: Advertisement Message interval: 7 Time out interval: 5 No neighbor cache information stored
Как свидетельствует вывод команды debug представленный выше, с момента потери связи с соседним устройством, UDLD отправит сем дополнительных сообщений (по одному в секунду). И вслучае, если ответ не будет получен, статус канала (bidirectional status) станет равным unknown.
Естественно, это не очень большое преимущество т.к. интерфейс продолжает считаться действующим протоколами более высокого уровня и коммутатор продолжает отправлять трафик в этот канал. Как альтернатива режиму normal, можно настроить UDLD в aggressive режим. Режим аggressive отличается тем, что, в случае обнаружения односторонней связи на канале, интерфейс будет помещен в режим error-disabled и трафик перестанет передаваться. Такое состояние привлечет гораздо больше внимания администраторов к проблеме.
Перевод UDLD в режим aggressive, осуществляется добавлением аргумента aggressive к командам используемым ранее. Данный режим должен быть включен по обоим сторонам канала.
Switch(config)# interface f0/13 Switch(config-if)# udld port aggressive
Можно убедится, что UDLD работает в режиме aggressive:
Switch# show udld f0/13 Interface Fa0/13 --- Port enable administrative configuration setting: Enabled / in aggressive mode Port enable operational state: Enabled / in aggressive mode Current bidirectional state: Bidirectional Current operational state: Advertisement - Single neighbor detected Message interval: 7 Time out interval: 5 Entry 1 --- Expiration time: 43 Device ID: 1 Current neighbor state: Bidirectional Device name: CAT0746Z0WN Port ID: Fa0/16 Neighbor echo 1 device: CAT1032NJ69 Neighbor echo 1 port: Fa0/13 Message interval: 15 Time out interval: 5 CDP Device name: S2
После очередной симуляции отказа,мы видим, что UDLD отвечает переводом канала в состояние error-disabled.
Switch# show udld f0/13 Interface Fa0/13 --- Port enable administrative configuration setting: Enabled / in aggressive mode Port enable operational state: Enabled / in aggressive mode Current bidirectional state: Unknown Current operational state: Disabled port Message interval: 7 Time out interval: 5 No neighbor cache information stored Switch# show interfaces f0/13 FastEthernet0/13 is down, line protocol is down (err-disabled) Hardware is Fast Ethernet, address is 0018.ba98.688f (bia 0018.ba98.688f) MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation ARPA, loopback not set Keepalive set (10 sec) ...
После устранения проблемы, можно вернуть интерфейс в рабочее состояние либо при помощи shutdown, no shutdown либо используя команду udld reset, которая автоматически восстановит работоспособность интерфейсов переведенных в состояние error-disabled в результате работы UDLD.
Switch# udld reset 1 ports shutdown by UDLD were reset.
Leave a Reply