Unidirectional Link Detection (UDLD)

cdp

Unidirectional Link Detection (UDLD) — проприетарный Cisco протокол второго уровня созданный для автоматического обнаружения потери двухсторонней коммуникации на линиях связи. Обычно он упоминается при обсуждении spanning tree, на прямого отношения к стандарту IEEE 802.1D не имеет. UDLD может быть использован, как для оптических, так и для линий связи на основе UTP (Медный кабель). Не смотря на то, что UDLD является проприетарным протоколом, принципы его работы и формат сообщений определены в RFC 5171.

Преимущества использования UDLD на оптических каналах очевидно. В оптических линиях связи для передачи данных используется свет, при использовании которого нет необходимости в замкнутой цепи , как в случае с медными кабелями (в которых каждая пара проводников представляет из себя замкнутую цепь). В связи с этим, есть возможность выхода из строя только одного направления передачи данных на линии связи.

udld-1

UDLD как раз и предназначен для обнаружения такого рода состояний. Так-же UDLD может быть полезен на медных линиях связи, которые проходят через пассивные устройства, такие, как медиаконвертеры.

udld-2

В примере выше, конечная точка с лева не может обнаружить выход из строя удаленного медиаконвертера, т.к. интерфейс подключенный к локальному медиаконвертеру остается в состоянии 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

Your email address will not be published.





Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Яндекс.Метрика