소개
이 문서에서는 두 가지 STP(Spanning Tree Protocol) 불일치, PVID(Port VLAN ID) 및 유형을 해결하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
STP 개념에 대한 지식이 있는 것이 좋습니다.
사용되는 구성 요소
이 문서는 특정 소프트웨어 또는 하드웨어 버전으로 제한되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
표기 규칙
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참조하십시오.
배경 정보
레이어 2(L2) 네트워크에는 두 디바이스 간에 하나의 경로만 있을 수 있습니다. 이중화는 STP(Spanning-Tree Protocol)에서 지원되며, 이중화 경로를 탐지 및 차단하여 루프 전달을 방지합니다. 특정 설정이 잘못되면 STP 장애가 발생하여 네트워크가 중단될 수 있습니다. 다운타임을 방지하기 위해 STP에서 특정 구성 오류 사례를 감지하고 관련 포트가 "일관성 없는" 상태가 되도록 몇 가지 개선 사항이 구현되었습니다.
STP 불일치의 유형은 다양할 수 있습니다.
-
Loop inconsistency(루프 불일치) - Loop Guard 기능에 의해 탐지됩니다. 자세한 내용은 Loop Guard 및 BPDU Skew Detection으로 STP 구성을 참조하십시오.
-
Root inconsistency(루트 불일치) - Root Guard 기능에 의해 탐지됩니다. 자세한 내용은 루트 가드로 스패닝 트리 프로토콜 개선을 참조하십시오.
-
EtherChannel 불일치 - EtherChannel 일관성 탐지 기능에 의해 탐지됩니다. 자세한 내용은 EtherChannel 불일치 탐지 이해를 참조하십시오.
-
포트 VLAN ID(PVID) 불일치 - PVST+(Per-VLAN Spanning Tree) BPDU(Bridge Protocol Data Unit)가 원래 VLAN이 아닌 다른 VLAN에서 수신됩니다(포트 VLAN ID 불일치*PVID_Inc).
-
유형 불일치 - 비 802.1Q 트렁크에서 PVST+ BPDU가 수신됩니다.
PVID와 유형 불일치의 이론
Cisco Catalyst 스위치는 ISL(Inter-Switch Link) 트렁크를 사용하는 PVST를 구현합니다. IEEE 802.1Q 및 ISL 트렁킹을 지원하므로, 모든 VLAN에 대해 단일 스패닝 트리의 IEEE 802.1Q 개념과 PVST 간의 상호 운용을 위한 방법이 필요했습니다. 이러한 요구 사항을 해결하기 위해 PVST+ 기능이 도입되었습니다.
참고: STP 관점에서 IEEE 802.1D는 VLAN을 인식하지 않으며 IEEE 802.1Q는 VLAN을 인식하지만 모든 VLAN에 대해 단일 STP 인스턴스를 사용합니다. 즉, 포트가 차단되는 경우 해당 포트의 모든 VLAN이 차단됩니다.
포워딩도 마찬가지입니다.
이 목록에서는 IEEE 802.1Q 트렁크의 네이티브 VLAN이 VLAN 1인 경우 PVST+가 IEEE 802.1Q 또는 IEEE 802.1D와 상호 운용되는 방식을 보여줍니다.
-
VLAN 1 STP BPDU는 태그가 지정되지 않은 IEEE STP MAC 주소(0180.c200.0000)로 전송됩니다.
-
VLAN 1 STP BPDU는 태그가 지정되지 않은 PVST+ MAC 주소로도 전송됩니다.
-
비 VLAN 1 STP BPDU는 해당 IEEE 802.1Q VLAN 태그가 지정된 PVST+ MAC 주소(SSTP(Shared Spanning Tree Protocol) MAC 주소 0100.0ccc.cccd라고도 함)로 전송됩니다.
IEEE 802.1Q 트렁크의 네이티브 VLAN이 VLAN 1이 아닌 경우:
-
VLAN 1 STP BPDU는 해당 IEEE 802.1Q VLAN 태그로 태그가 지정된 PVST+ MAC 주소로 전송됩니다.
-
VLAN 1 STP BPDU는 태그 없는 IEEE 802.1Q 트렁크의 네이티브 VLAN에 있는 IEEE STP MAC 주소로도 전송됩니다.
-
비 VLAN 1 STP BPDU는 해당 IEEE 802.1Q VLAN 태그로 태그가 지정된 PVST+ MAC 주소로 전송됩니다.
참고: 네이티브 VLAN STP BPDU는 태그가 지정되지 않은 상태로 전송됩니다.
이렇게 하면 PVST+의 VLAN 1 STP가 IEEE 802.1D 또는 802.1Q의 STP와 병합되는 반면 다른 VLAN은 IEEE 802.1D 또는 802.1Q 브리지의 클라우드를 통해 터널링됩니다. 예를 들어, IEEE 802.1D 또는 802.1Q 클라우드는 PVST+ VLAN에 대한 1이 아닌 "유선"과 유사합니다.
STP가 올바르게 작동하려면 PVST+ 브리지를 IEEE 802.1D 또는 802.1Q 브리지에 연결할 때 특정 규칙을 준수하십시오. PVST+ 브리지는 IEEE 802.1Q 또는 802.1D 브리지의 클라우드에 연결되는 모든 브리지에서 일관된 네이티브 VLAN을 사용하여 IEEE 802.1Q 트렁크를 통해 IEEE 802.1D 또는 802.1Q 브리지에 연결해야 한다는 것이 주요 규칙입니다.
PVST+ BPDU에는 PVST+ 브리지가 이전 규칙을 준수하지 않는지 여부를 감지할 수 있도록 하는 VLAN 번호가 포함되어 있습니다. Catalyst 스위치에서 잘못된 컨피그레이션을 탐지하면 해당 포트가 "PVID-inconsistent" 또는 "type-inconsistent" 상태가 되어 해당 포트에서 해당 VLAN의 트래픽이 효과적으로 차단됩니다. 이러한 상태는 컨피그레이션 오류로 인해 발생하거나 잘못 연결된 포워딩 루프를 방지합니다.
불일치 탐지에 대한 필요성을 설명하기 위해 스위치 A와 C가 PVST+ STP를 실행하고 스위치 B가 802.1Q STP를 실행하는 이 토폴로지를 고려하십시오.
VLAN 1에 있는 루트의 BPDU가 VLAN 2에 있는 루트의 BPDU보다 나은 경우 VLAN 2 토폴로지에는 차단 포트가 없습니다. VLAN 2의 BPDU는 토폴로지를 중심으로 "전체 원"을 만들지 않습니다. B는 PVST+의 VLAN 1 STP와 병합된 하나의 STP만 실행하므로 B-C 링크에서 VLAN 1 BPDU로 교체됩니다. 따라서 포워딩 루프가 있습니다. 다행히도 스위치 A는 VLAN 2의 PVST+ BPDU를 스위치 C로 보냅니다(스위치 B에 의해 플러딩되는 SSTP 주소로). 스위치 C는 포트 C-B를 유형 불일치 상태로 전환하여 루프를 방지할 수 있습니다.
참고: 일부 명령 출력에서 *-inconsistent STP 상태를 "broken"이라고 합니다.
STP 불일치가 감지되면 스위치에서 다음 syslog 메시지를 전송합니다.
%SPANTREE-2-RECV_1Q_NON_TRUNK: Received IEEE 802.1Q BPDU on non trunk
FastEthernet0/1 on vlan 1.
%SPANTREE-2-BLOCK_PORT_TYPE: Blocking FastEthernet0/1 on vlan 1.
Inconsistent port type.
%SPANTREE-2-RX_1QPVIDERR: Rcved pvid_inc BPDU on 1Q port 3/25 vlan 1
%SPANTREE-2-RX_BLKPORTPVID: Block 3/25 on rcving vlan 1 for inc peer vlan 10
%SPANTREE-2-TX_BLKPORTPVID: Block 3/25 on xmtting vlan 10 for inc peer vlan
이 예에서 VLAN 1은 BPDU가 수신된 곳이고 VLAN 10은 BPDU가 시작된 곳입니다. 불일치가 감지되면 이 BPDU가 수신된 포트에서 두 VLAN이 모두 차단됩니다.
참고: 메시지는 사용 중인 Cisco IOS® 소프트웨어 릴리스의 유형 및 버전에 따라 달라질 수 있습니다.
포트에서 더 이상 일관성 없는 BPDU를 수신하지 않는 경우 *-일관성 상태가 지워지며 STP는 정상적인 STP 작업을 기반으로 포트 상태를 변경합니다. 변경을 나타내기 위해 syslog 메시지가 전송됩니다.
%SPANTREE-SP-2-UNBLOCK_CONSIST_PORT: Unblocking FastEthernet0/1 on vlan 1.
Port consistency restored.
PVST+ 작업에 대한 자세한 내용은 PVST+에서 Rapid-PVST 마이그레이션 컨피그레이션 예제를 참조하십시오.
문제 해결
일관되지 않은 포트의 목록을 확인하기 위해 최근 Cisco IOS 기반 STP 구현에서는 show spanning-tree inconsistentports 명령을 지원합니다.
대부분의 경우 포트에서 STP 불일치가 탐지되는 이유는 명백합니다.
이 시나리오에서 브리지 A의 액세스 포트는 브리지 B에서 태그가 지정된 PVST+ BPDU를 1이 아닌 VLAN의 STP에서 수신합니다. A의 포트는 유형이 일치하지 않는 상태가 될 수 있습니다.
참고: 스위치를 직접 연결할 필요는 없습니다. 하나 이상의 IEEE 802.1D 또는 IEEE 802.1Q 스위치 또는 심지어 허브를 통해 연결되어 있는 경우에도 효과는 동일합니다.
이 시나리오에서 A의 트렁크 포트는 VLAN 2의 STP에서 VLAN 2의 태그로 PVST+ BPDU를 수신합니다. 그러면 A의 포트가 VLAN 1과 VLAN 2에서 모두 차단됩니다.
포인트-투-포인트 링크의 양쪽 끝에 있는 디바이스가 Cisco Catalyst 스위치인 경우, 로컬 및 원격 포트 컨피그레이션을 검사한 결과 컨피그레이션 불일치가 일반적으로 나타납니다.
이러한 경우 컨피그레이션 불일치를 수정하여 STP 불일치를 해결합니다.
어떤 경우에는 그 이유를 파악하는 것이 더 어렵습니다.
-
BPDU는 여러 디바이스가 있는 공유 미디어에서 수신됩니다.
-
PVST+ 스위치가 클라우드에 연결되는 동안 IEEE 802.1D 또는 802.1Q STP 모델을 구현하는 스위치 클라우드에서 BPDU가 수신됩니다.
-
BPDU는 일부 터널(예: DLSw+[Data Link Switch Plus] 클라우드, L2 프로토콜 터널링, EoMPLS, VPL[Virtual Path Links], LANE[LAN Emulation] 등) 뒤에서 제공됩니다.
이 예에서 스위치 B는 잘못 구성되었으며 SSTP BPDU를 클라우드에 삽입합니다. 이로 인해 스위치 A, C, D의 포트가 유형 일관성이 없게 됩니다. 문제는 "문제가 되는" BPDU를 생성하는 디바이스가 영향을 받는 스위치에 직접 연결되어 있지 않다는 것입니다. 따라서 많은 디바이스가 트렁크에 있으므로 모든 문제를 해결하는 데 시간이 소요될 수 있습니다.
다행히 이 문제를 해결하기 위한 체계적인 접근 방식이 있습니다.
-
BPDU의 소스 MAC 주소 및 전송 브리지 ID를 설정합니다. 문제가 발생하는 동안 이 작업을 수행해야 합니다.
-
"문제가 되는" BPDU를 시작하는 브리지를 찾습니다. 이는 문제가 발생할 때 반드시 필요한 것은 아니지만 나중에 수행할 수 있습니다.
1단계에서는 일반적으로 패킷 분석기를 사용하거나 debug를 활성화하여 수신된 BPDU의 덤프를 확인하는 두 가지 옵션이 있습니다.
STP BPDU를 덤프하는 데 디버그를 사용하는 방법에 대한 자세한 내용은 Catalyst 스위치의 STP 문제 해결의 STP 디버그 명령 사용 섹션을 참조하십시오.
수신된 BPDU를 보여주는 디버그 출력의 예입니다.
*Mar 14 19:33:27: STP SW: PROC RX: 0100.0ccc.cccd<-0030.9617.4f08 type/len 0032
*Mar 14 19:33:27: encap SNAP linktype sstp vlan 10 len 64 on v10 Fa0/14
*Mar 14 19:33:27: AA AA 03 00000C 010B SSTP
*Mar 14 19:33:27: CFG P:0000 V:00 T:00 F:00 R:8000 0050.0f2d.4000 00000000
*Mar 14 19:33:27: B:8000 0050.0f2d.4000 80.99 A:0000 M:1400 H:0200 F:0F00
*Mar 14 19:33:27: T:0000 L:0002 D:0001
소스 MAC 주소 및 전송 브리지 ID를 알게 되면 이 MAC 주소가 속한 디바이스를 찾아야 합니다. 스위치가 일반적으로 BPDU 프레임에서 소스의 MAC 주소를 학습하지 않기 때문에 복잡할 수 있습니다. Cisco IOS 기반 스위치의 경우 show mac-address-table addressBPDU_mac_address 명령을 실행한 경우 일반적으로 항목을 찾을 수 없습니다.
"문제가 되는" MAC 주소를 찾는 한 가지 방법은 클라우드에 연결된 모든 스위치에서 show spanning-tree 명령의 출력을 수집하는 것입니다. 이러한 명령 출력에는 각 브리지의 브리지 ID에 대한 정보가 포함됩니다.
Boris#show spanning-tree
!--- Use with Cisco IOS.
VLAN0001
Spanning tree enabled protocol rstp
Root ID Priority 0
Address 0007.4f1c.e847
Cost 131
Port 136 (GigabitEthernet3/8)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 00d0.003f.8800
!--- Output suppressed.
참고: 모델, 소프트웨어 버전 및 컨피그레이션에 따라 스위치에는 여러 브리지 ID MAC 주소가 포함될 수 있습니다. 다행히 모든 주소는 일반적으로 특정 범위(예: 0001.1234.5600~0001.1234.5640)에 있을 수 있습니다. 브리지 ID MAC 주소 하나를 알고 있는 경우 전송된 브리지 ID MAC 주소(1단계에서 발견)가 지정된 브리지 ID MAC 주소의 범위에 속하는지 확인할 수 있습니다. 네트워크 관리 툴을 사용하여 모든 브리지의 브리지 ID를 수집할 수도 있습니다.
문제가 되는 BPDU를 전송한 브리지를 찾은 후에는 클라우드에 연결된 포트의 컨피그레이션을 확인해야 합니다. 즉, 동일한 클라우드에 연결된 다른 스위치와 일관성이 있는지(트렁킹이 아닌 네이티브 VLAN과 달리 트렁킹) 확인해야 합니다.
브리지에서 적절한 BPDU를 전송하지만 터널링 클라우드 내부에서 잘못 수정될 수 있습니다. 이 경우, 클라우드로 들어오는 위반 BPDU가 다른 브리지의 컨피그레이션과 일치하지만, 동일한 BPDU가 클라우드를 종료할 때 일관성이 없게 됩니다(예: BPDU가 다른 VLAN에서 클라우드를 종료하거나 태그 또는 태그가 지정되지 않음). 이러한 경우, 문제가 되는 BPDU의 소스 MAC 주소가 전송 브리지 ID와 동일한 브리지에 속하는지 확인하는 데 도움이 될 수 있습니다. 그렇지 않으면 BPDU의 소스 MAC 주소를 소유하는 브리지를 찾고 컨피그레이션을 확인할 수 있습니다.
BPDU의 소스 MAC 주소를 소유하는 스위치를 찾기 위해 동일한 접근 방식을 사용할 수 있습니다(브리지 ID 찾기). 단, show module 명령 출력이 검사됩니다(Catalyst 4000 및 6000). 다른 Catalyst 스위치의 경우 show interface 명령 출력을 검사하여 포트에 속하는 MAC 주소를 확인할 수 있습니다.
Cat4000-#show module
!--- Use for Catalyst 4000,5000,6000
Mod Ports Card Type Model Serial No.
----+-----+--------------------------------------+-----------------+-----------
1 2 1000BaseX (GBIC) Supervisor(active) WS-X4515 ZZZ00000001
5 14 1000BaseT (RJ45), 1000BaseX (GBIC) WS-X4412-2GB-T ZZZ00000002
M MAC addresses Hw Fw Sw Status
--+--------------------------------+---+------------+----------------+---------
1 000a.4172.ea40 to 000a.4172.ea41 1.2 12.1(12r)EW 12.1(14)E1, EARL Ok
5 0001.4230.d800 to 0001.4230.d80d 1.0 Ok
!--- Output suppressed.
cat3550#show interface | i bia
Hardware is Gigabit Ethernet, address is 0002.4b28.da80 (bia 0002.4b28.da80)
Hardware is Gigabit Ethernet, address is 0002.4b28.da83 (bia 0002.4b28.da83)
Hardware is Gigabit Ethernet, address is 0002.4b28.da86 (bia 0002.4b28.da86)
Hardware is Gigabit Ethernet, address is 0002.4b28.da88 (bia 0002.4b28.da88)
Hardware is Gigabit Ethernet, address is 0002.4b28.da89 (bia 0002.4b28.da89)
!--- Output suppressed.
관련 정보