이 문서에서는 UDLD(Unidirectional Link Detection) 프로토콜이 전환된 네트워크에서 루프 및 트래픽 이상 현상을 방지하는 데 어떻게 도움이 되는지 설명합니다.
이 문서에 대한 특정 요건이 없습니다.
이 문서에서는 일반적인 UDLD 작업에 대해 설명합니다. 이 문서의 구성 및 확인 예는 Cisco IOS XE 17.X 릴리스를 실행하는 Cisco Catalyst 9300 Series 스위치에서 검증되었습니다.
참고: 명령 구문, 기본값, 타이머 범위 및 출력은 플랫폼 및 소프트웨어 릴리스에 따라 달라질 수 있습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참고하십시오.
STP(Spanning-Tree Protocol)는 이중화된 물리적 토폴로지를 루프 프리(loop-free) 트리와 같은 포워드 토폴로지로 변환합니다. 이를 위해 하나 이상의 포트를 차단합니다. 하나 이상의 포트가 차단된 상태에서 전달 토폴로지에는 루프가 없습니다. STP는 BPDU(Bridge Protocol Data Unit)의 수신 및 전송에 대한 작업을 사용합니다. STP 차단 또는 폐기 상태의 포트가 지정된 브리지에서 BPDU 수신을 중단하면 STP는 결국 해당 포트와 연관된 정보를 에이징하여 전달 상태로 전환합니다.
이렇게 하면 패킷이 반복 경로를 따라 무한 순환하기 시작하고 더 많은 대역폭과 리소스를 소비하는 STP 루프를 생성할 수 있습니다. 이로 인해 네트워크 중단이 발생할 수 있습니다.
포트가 작동 중인 동안 스위치에서 BPDU를 수신하지 못하는 방법은 무엇입니까? 이는 단방향 링크 때문입니다.
다음과 같은 경우 링크는 단방향으로 간주됩니다.
링크가 연결의 양쪽에 있습니다.
로컬 측은 원격 측에서 전송한 패킷을 수신하지 않는 반면, 원격 측은 로컬 측에서 전송한 패킷을 수신합니다.
다음 시나리오를 고려할 때 화살표는 STP BPDU의 흐름을 나타냅니다.
STP 포트 상태 토폴로지
이 토폴로지에 표시된 상태에서 스위치 B에서 스위치 C로의 인터페이스는 B-C 세그먼트에 대해 지정된 포트이며 스위치 C로 BPDU를 전송합니다. 스위치 C에서 스위치 B로의 인터페이스는 기존 IEEE 802.1D STP에서 지정되지 않은 포트입니다. 또는 RSTP의 대체 포트이며 스위치 B로부터 BPDU를 수신하여 처리하는 동안 차단/폐기 상태로 유지됩니다. 스위치 C의 인터페이스가 차단 또는 폐기 상태이지만 포트는 BPDU를 계속 수신하여 처리합니다. 이러한 상태는 포트에서 데이터 프레임을 전달하는 것을 방지하지만 BPDU를 수신하는 것을 방지하지는 않습니다.
B-C 링크가 단방향이 되고 B-→C 방향이 실패하는 경우 어떻게 되는지 고려하십시오. 스위치 C는 더 이상 스위치 B로부터 BPDU를 수신할 수 없는 반면 스위치 B는 스위치 C가 전송한 BPDU를 수신할 수 있습니다. 스위치 C는 정보가 만료될 때까지 마지막 BPDU에서 학습한 정보를 유지합니다. 기존 IEEE 802.1D STP와 기본 최대 기간인 20초의 경우, 최대 20초가 걸릴 수 있습니다. STP 정보가 오래되면 스위치 C는 더 이상 해당 세그먼트에서 스위치 B를 더 이상 우월한 것으로 간주하지 않으며, 포트가 차단에서 수신 대기, 학습, 전달로 전환될 수 있습니다.
이렇게 하면 A-B-C 삼각형에 차단된 포트가 더 이상 없으므로 레이어 2 포워딩 루프가 생성됩니다. 브로드캐스트, 알 수 없는 유니캐스트, 멀티캐스트 프레임이 반복해서 루프를 순환하면서 대역폭, CPU를 소모하고 브로드캐스트 스톰이 발생할 수 있습니다.
이 시나리오는 네트워크를 중단시킬 수 있습니다. 이는 트래픽 블랙홀과 같은 단방향 링크에 의해 발생할 수 있는 또 다른 문제입니다.
STP BPDU 플로우
UDLD는 직접 연결된 장치 간의 단방향 통신 및 특정 케이블 불일치를 식별하여 레이어 1 링크 탐지 메커니즘을 보완하는 레이어 2 프로토콜입니다.
레이어 1에서 자동 협상은 물리적 시그널링 및 결함 탐지를 해결합니다. UDLD는 자동 협상이 수행할 수 없는 작업(예: 네이버 ID 탐지 및 잘못 연결된 포트 종료)을 수행합니다. 자동 협상 및 UDLD를 모두 활성화할 경우 레이어 1 및 레이어 2 탐지는 물리적/논리적 단방향 연결과 다른 프로토콜의 오작동을 방지하기 위해 함께 작동합니다.
UDLD는 인접 디바이스 간의 프로토콜 패킷 교환을 통해 작동합니다. 양방향 UDLD 네이버 관계를 설정하려면 직접 연결된 두 디바이스 모두 UDLD를 지원하고 연결된 인터페이스에서 활성화해야 합니다. 두 디바이스에서 양방향 상태를 확인합니다.
UDLD에 대해 구성된 각 스위치 포트는 포트 디바이스/포트 ID 및 해당 포트에서 UDLD에 표시된 인접 디바이스/포트 ID를 포함하는 UDLD 프로토콜 패킷을 전송합니다.
인접한 포트는 다른 쪽에서 받은 패킷에서 자체 디바이스/포트 ID(에코)를 볼 수 있습니다. 특정 시간 동안 들어오는 UDLD 패킷에서 포트에 자체 디바이스/포트 ID가 없으면 링크가 단방향으로 간주됩니다.
이 에코 알고리즘에서는 다음 문제를 탐지할 수 있습니다.
링크는 양쪽에서 모두 작동하지만 패킷은 한쪽에서만 수신됩니다.
파이버를 받을 때와 보낼 때의 연결(전선) 실수가 원격측의 동일한 포트에 연결되지 않는다.
UDLD는 단방향 조건을 탐지하면 탐지 로컬 인터페이스를 err-disable 상태로 전환합니다. 원격 인터페이스 상태는 원격 UDLD 탐지 및 물리적 링크 동작에 따라 달라집니다. 비슷한 메시지가 콘솔에 인쇄됩니다.
UDLD-3-DISABLE: Unidirectional link detected on port 1/2. Port disabled
UDLD에 의해 비활성화된 인터페이스는 수동으로 복구되거나 활성화된 errdisable 복구 타이머가 만료될 때까지 err-disable 상태로 유지됩니다. 복구하기 전에 파이버, 트랜시버, 케이블링 또는 원격 인터페이스 오류를 수정합니다. 수동 복구를 위해 shutdown 및 no shutdown을 사용합니다. 이를 지원하는 플랫폼에서 udld 재설정은 UDLD에 의해 비활성화/종료된 인터페이스를 재설정합니다. 복구 후 show interfaces status err-disabled, show udld <interface-id> 및 show udld neighbors 명령을 실행하여 인터페이스가 작동하며 UDLD 관계가 양방향인지 확인합니다. 시스템 로그를 검토하여 결함이 재발하지 않는지 확인합니다.
UDLD는 두 가지 모드로 작동할 수 있습니다. 일반 및 적극적인 방식:
지원되는 인터페이스에서 UDLD가 활성화된 경우 적극적인 모드가 명시적으로 구성되지 않는 한 일반 모드가 기본 작동 모드입니다. UDLD는 자동 협상과 같은 레이어 1 메커니즘과 함께 작동하여 링크를 검증합니다. 레이어 1 메커니즘은 물리적 시그널링 및 링크 결함을 탐지하는 반면, UDLD는 인접 디바이스를 식별하고 올바른 포트에 연결되는 파이버 선을 확인합니다.
일반 모드에서 UDLD는 포트 간에 파이버 선이 잘못 연결된 경우 단방향 조건을 감지하며 레이어 1 메커니즘은 케이블링 오류를 감지하지 않습니다. 파이버 선이 올바른 포트에 연결되지만 트래픽이 한 방향으로만 이동하는 경우 UDLD 일반 모드에서는 논리적 링크를 undetermined로 표시하고 포트를 비활성화하지 않습니다. 이 동작은 물리적 장애를 탐지하기 위해 레이어 1 메커니즘에 의존합니다. 하나의 파이버 선이 연결 해제되고 자동 협상이 물리적 결함을 탐지하면 링크가 작동 상태로 유지되지 않습니다. 레이어 1에서 이미 문제를 감지했으며 UDLD 논리 링크 상태가 확인되지 않았으므로 UDLD는 종료 작업을 수행하지 않습니다.
어그레시브(Aggressive) 모드에는 일반 모드의 탐지 기능이 포함되며 점대점 광섬유 및 트위스트 페어 링크에 대한 추가 보호 기능을 제공합니다. 잘못 연결된 파이버 선 및 한 엔드포인트가 트래픽을 보내거나 받을 수 없는 상태, 한 포트가 작동 중인 동안 다른 포트가 작동 중지된 상태 또는 파이버 선 하나가 연결이 끊긴 상태를 탐지합니다.
UDLD hello 패킷은 포인트-투-포인트 링크의 하트비트 역할을 합니다. 링크가 양방향으로 설정된 후 UDLD에서 이러한 패킷의 수신을 중단하는 경우 적극적인 모드에서는 양방향 관계를 재설정하려고 시도합니다. UDLD에서 관계를 복원할 수 없는 경우, 양방향 작업을 확인할 수 없는 링크의 지속적인 사용을 방지하기 위해 영향을 받는 로컬 포트를 비활성화합니다.
두 파이버 선이 레이어 1에 작동 중인 것으로 나타나면 적극적인 UDLD는 파이버 선이 올바른 인접 포트에 연결되었는지, 그리고 트래픽이 예상 인접 디바이스 간에 양방향으로 흐르는지 확인합니다. 자동 협상은 계층 1에서 작동하므로 이 네이버 및 포트 ID 검증을 수행할 수 없습니다.
UDLD를 실행하는 포트가 보류 시간 동안 인접 포트에서 UDLD 패킷을 수신하지 못하면 UDLD 정보가 에이징됩니다. 이러한 타이머는 일반 모드와 적극적인 모드 모두에서 UDLD 네이버 정보 유지 관리에 적용됩니다. 만료 이후의 작업은 구성된 모드 및 탐지된 조건에 따라 달라집니다. 포트의 보류 시간은 원격 포트에 의해 지정되며 원격 측의 메시지 간격에 따라 달라집니다. 메시지 간격이 짧을수록 대기 시간이 짧아지고 탐지 속도가 빨라집니다. UDLD의 최근 구현에서는 메시지 간격의 컨피그레이션을 허용합니다. 일부 물리적 문제 또는 이중 불일치로 인한 포트의 높은 오류율로 인해 UDLD 정보가 오래될 수 있습니다. 이러한 패킷 삭제는 링크가 단방향임을 의미하지 않으며, 일반 모드의 UDLD는 링크를 비활성화하지 않습니다.
적절한 탐지 시간을 보장하려면 적절한 메시지 간격을 선택하는 것이 중요합니다. 메시지 간격은 전달 루프가 생성되기 전에 단방향 링크를 탐지할 수 있을 만큼 빨라야 하지만 스위치 CPU를 과부하해서는 안 됩니다. 이 예에서 기본 메시지 간격은 15초입니다. 설명된 기존 IEEE 802.1D STP 타이머 시나리오의 경우, 예상 UDLD 정보 만료 시간은 차단된 포트가 전달 상태에 도달하는 예상 시간보다 짧습니다.
이러한 비교로 인해 STP가 전달 토폴로지를 변경하기 전에 적극적인 UDLD가 인터페이스를 err-disable 상태로 전환한다는 보장은 없습니다. UDLD 네이버 정보가 만료되는 대략적인 시간은 메시지 간격의 3배입니다. 예를 들면 다음과 같습니다.
Texpiration ≈ message_interval × 3
기본 메시지 간격 Texpiration ≈ 15 × 3 = 45초입니다. 기존 IEEE 802.1D STP 작업의 경우 차단된 포트가 저장된 STP 정보를 소진하고 수신 대기 및 학습 상태를 통해 전달 상태로 전환되는 대략적인 시간은 다음과 같습니다.
Tforward = max_age + (2 × forward_delay)
기본 STP 타이머를 사용하는 경우: 전달 = 20 + (2 × 15) = 50초 -UDLD 인접 디바이스 정보 만료를 STP 포트 전환과 비교할 때 다음을 유지하는 메시지 간격을 선택합니다. 문자 < 앞으로
Aggressive 모드에서 UDLD 네이버 정보가 만료된 후 UDLD는 8초 동안 초당 1개의 메시지를 전송하여 양방향 관계를 다시 설정하려고 시도합니다. 양방향 상태를 다시 설정할 수 없는 경우 UDLD는 로컬 포트를 비활성화합니다.
참고: 이러한 계산은 대략적인 것이며 이 문서에 설명된 UDLD 동작 및 기존 IEEE 802.1D STP 타이머 시나리오에 적용됩니다. 구축된 플랫폼, 소프트웨어 릴리스, STP 모드, 구성된 타이머 및 장애 발생 시간이 실제 타이밍에 영향을 줄 수 있습니다.
참고: 기존 STP 계산 Treconvergence = max_age + (2 × forward_delay)는 일반 RSTP 빠른 컨버전스에 적용되지 않습니다. RSTP 프로토콜 정보는 3회 연속 Hello 간격 동안 BPDU가 수신되지 않거나 해당 최대 기간 조건에 도달하면 만료될 수 있습니다. 그러면 적합한 대체 포트가 전달 상태로 빠르게 전환될 수 있습니다. 총 전환 시간은 토폴로지, 포트 역할, 링크 유형, 동기화 프로세스 및 장애 조건에 따라 달라집니다. 따라서 고정 타이머 계산에서는 RSTP가 전달 토폴로지를 변경하기 전에 UDLD가 단방향 링크를 탐지하거나 비활성화한다고 보장할 수 없습니다. 구축된 플랫폼, 소프트웨어 릴리스, 토폴로지 및 타이머 구성에서 UDLD와 RSTP 간의 상호 작용을 검증합니다.
aggressive 모드에서 탐지되는 추가 조건의 예는 다음과 같습니다.
일부 Ethernet PHY 구현에서는 특정 물리적 장애가 발생한 후 링크 엔드포인트 중 하나 또는 둘 다가 다운될 수 있는 원격 결함 시그널링 또는 링크 협상 메커니즘을 제공합니다. 동작은 플랫폼, 인터페이스 유형, 트랜시버, 미디어 및 협상 모드에 따라 다릅니다. UDLD는 물리적 레이어 시그널링에서 탐지하지 못하는 단방향 조건에 대해 레이어 2 검증을 제공합니다. 한 엔드포인트가 송/수신할 수 없거나 한 엔드포인트가 작동 중이고 다른 엔드포인트가 작동 중이면 실패한 링크 자체가 완전한 포워딩 경로를 제공하지 않으며 포워딩 루프를 형성하지 않습니다. 그러나 인터페이스가 가동 상태를 유지하면 작동하지 않는 경로로 트래픽을 계속 전달하여 트래픽 블랙홀이 발생할 수 있습니다. Aggressive UDLD는 양방향 통신의 손실을 감지하고 UDLD 관계를 재설정할 수 없는 경우 영향을 받는 로컬 포트를 비활성화합니다.
연결된 두 인터페이스에서 UDLD를 활성화합니다. 일관성 있는 로컬 오류 감지 및 오류 비활성화 동작을 제공하도록 두 엔드포인트에서 동일한 UDLD 모드를 구성합니다.
9300-1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
9300-1(config)#interface TenGigabitEthernet1/1/6
9300-1(config-if)#udld port
9300-1(config-if)#end
9300-2#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
9300-2(config)#interface TenGigabitEthernet1/1/6
9300-2(config-if)#udld port
9300-2(config-if)#end
참고: 글로벌 UDLD 명령 및 그 인터페이스 범위는 플랫폼에 따라 다릅니다. 전역 명령을 사용하기 전에 대상 플랫폼 명령 참조를 확인하십시오.
두 링크 엔드포인트에서 show udld <interface-id> 및 show udld neighbors 명령을 실행합니다. 각 인터페이스가 운영 가능하게 설정되었는지, 현재 상태가 Bidirectional인지, 예상 인접 디바이스 및 포트 식별자가 표시되는지 확인합니다.
9300-1#show udld TenGigabitEthernet1/1/6
Interface Te1/1/6
---
Port enable administrative configuration setting: Enabled
Port enable operational state: Enabled
Current bidirectional state: Bidirectional
Current operational state: Advertisement - Single neighbor detected
Message interval: 15000 ms
Time out interval: 5000 ms
Port fast-hello configuration setting: Disabled
Port fast-hello interval: 0 ms
Port fast-hello operational state: Disabled
Neighbor fast-hello configuration setting: Disabled
Neighbor fast-hello interval: Unknown
Entry 1
---
Expiration time: 37500 ms
Cache Device index: 1
Current neighbor state: Bidirectional
Device ID: F87A41A8CA00
Port ID: Te1/1/6
Neighbor echo 1 device: F87A41A8C180
Neighbor echo 1 port: Te1/1/6
TLV Message interval: 15 sec
No TLV fast-hello interval
TLV Time out interval: 5
TLV CDP Device name: 9300-2
9300-1#show udld neighbors
Port Device Name Device ID Port ID Neighbor State
---- ----------- --------- ------- --------------
Te1/1/6 F87A41A8CA00 1 Te1/1/6 Bidirectional
Total number of bidirectional entries displayed: 1
9300-2#show udld TenGigabitEthernet1/1/6
Interface Te1/1/6
---
Port enable administrative configuration setting: Enabled
Port enable operational state: Enabled
Current bidirectional state: Bidirectional
Current operational state: Advertisement - Single neighbor detected
Message interval: 15000 ms
Time out interval: 5000 ms
Port fast-hello configuration setting: Disabled
Port fast-hello interval: 0 ms
Port fast-hello operational state: Disabled
Neighbor fast-hello configuration setting: Disabled
Neighbor fast-hello interval: Unknown
Entry 1
---
Expiration time: 32500 ms
Cache Device index: 1
Current neighbor state: Bidirectional
Device ID: F87A41A8C180
Port ID: Te1/1/6
Neighbor echo 1 device: F87A41A8CA00
Neighbor echo 1 port: Te1/1/6
TLV Message interval: 15 sec
No TLV fast-hello interval
TLV Time out interval: 5
TLV CDP Device name: 9300-1
9300-2#show udld neighbors
Port Device Name Device ID Port ID Neighbor State
---- ----------- --------- ------- --------------
Te1/1/6 F87A41A8C180 1 Te1/1/6 Bidirectional
Total number of bidirectional entries displayed: 1
udld port aggressive 명령을 사용하여 인터페이스에서 Aggressive UDLD를 구성할 수 있습니다.
9300-1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
9300-1(config)#interface TenGigabitEthernet1/1/6
9300-1(config-if)#udld port aggressive
9300-1(config-if)#end
9300-2#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
9300-2(config)#interface TenGigabitEthernet1/1/6
9300-2(config-if)#udld port aggressive
9300-2(config-if)#end
두 엔드포인트에서 show udld <interface-id> 명령을 실행하여 적극적인 모드가 작동 가능하게 설정되었는지 확인합니다.
9300-1#show udld TenGigabitEthernet1/1/6
Interface Te1/1/6
---
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: 15000 ms
Time out interval: 5000 ms
Port fast-hello configuration setting: Disabled
Port fast-hello interval: 0 ms
Port fast-hello operational state: Disabled
Neighbor fast-hello configuration setting: Disabled
Neighbor fast-hello interval: Unknown
Entry 1
---
Expiration time: 31200 ms
Cache Device index: 1
Current neighbor state: Bidirectional
Device ID: F87A41A8CA00
Port ID: Te1/1/6
Neighbor echo 1 device: F87A41A8C180
Neighbor echo 1 port: Te1/1/6
TLV Message interval: 15 sec
No TLV fast-hello interval
TLV Time out interval: 5
TLV CDP Device name: 9300-2
9300-2#show udld TenGigabitEthernet1/1/6
Interface Te1/1/6
---
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: 15000 ms
Time out interval: 5000 ms
Port fast-hello configuration setting: Disabled
Port fast-hello interval: 0 ms
Port fast-hello operational state: Disabled
Neighbor fast-hello configuration setting: Disabled
Neighbor fast-hello interval: Unknown
Entry 1
---
Expiration time: 38600 ms
Cache Device index: 1
Current neighbor state: Bidirectional
Device ID: F87A41A8C180
Port ID: Te1/1/6
Neighbor echo 1 device: F87A41A8CA00
Neighbor echo 1 port: Te1/1/6
TLV Message interval: 15 sec
No TLV fast-hello interval
TLV Time out interval: 5
TLV CDP Device name: 9300-1
udld message time 명령을 실행하여 메시지 간격을 변경합니다.
9300-1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
9300-1(config)#udld message time ?
<1-90> Time in seconds between sending of messages in steady state
Cisco Catalyst 3000 및 9000 Series 스위치에서 udld 메시지 시간 값의 범위는 1~90초이며 기본값은 15초입니다. 다른 시스템에서 허용되는 범위 및 기본값을 확인하려면 명령 참조 설명서를 참조하십시오.
Catalyst 3560 스위치의 경우 UDLD 구성을 참조하십시오
| 개정 | 게시 날짜 | 의견 |
|---|---|---|
2.0 |
18-Aug-2026
|
맞춤법, 문법, 삽입한 가로줄을 가독성을 위해 별도의 섹션으로 업데이트했습니다. |
1.0 |
09-Jul-2007
|
최초 릴리스 |