이 문서에서는 Cisco IOS® 스위치의 현재 레이어 2(L2) 스패닝 트리 네트워크를 Cisco IOS XR을 실행하는 Cisco ASR(Aggregation Services Router) 9000 Series와 통합할 때 흔히 발생하는 문제에 대해 설명합니다.
PVST+(Per VLAN Spanning Tree Plus)를 실행하는 Cisco IOS 스위치는 PVID가 일치하지 않는 BPDU(Bridge Protocol Data Unit)를 수신할 때 스위치 포트를 차단합니다. 이 문제는 스위치 간 디바이스가 PVST+ BPDU에서 IEEE 802.1Q 태그를 변경하거나 변환할 때 발생합니다.
ASR 9000이 PVST+를 실행하고 VLAN 태그를 재작성하는 스위치 간에 L2VPN Point-to-Point 또는 Multipoint 서비스를 제공할 경우, Cisco IOS 기반 스위치에 다음과 같은 syslog 메시지가 표시될 수 있습니다.
%SPANTREE-2-RECV_PVID_ERR: Received BPDU with inconsistent
peer vlan id 10 on GigabitEthernet0/10 VLAN20.
%SPANTREE-2-BLOCK_PVID_LOCAL: Blocking GigabitEthernet0/10
on VLAN20. Inconsistent local vlan.
이 문제는 PVST+ BPDU에 포함된 PVID 태그 때문입니다. 이 태그는 잘못된 컨피그레이션을 감지하고 우발적인 루프를 방지하기 위해 설계되었습니다. 그러나 이 시나리오에서는 각 끝이 차단되고 트래픽 통과를 허용하지 않습니다.
예를 들면 다음과 같습니다.
다음은 ASR 9000 Series(a9k1) 컨피그레이션에 대한 컨피그레이션입니다.
2vpn
bridge group bg1
bridge-domain bd1
interface TenGigE0/0/0/0.10
!
interface TenGigE0/0/0/1.20
interface TenGigE0/0/0/0.10 l2transport
encapsulation dot1q 10
rewrite ingress tag pop 1 symmetric
interface TenGigE0/0/0/1.20 l2transport
encapsulation dot1q 20
rewrite ingress tag pop 1 symmetric
이 문제를 방지하기 위해 PVST+ BPDU를 차단할 수 있습니다. 이 작업은 스패닝 트리를 비활성화하며, 스위치 간에 이중 연결을 사용할 수 있으면 루프가 발생할 수 있습니다.
BPDU는 스위치의 BPDU 필터 기능으로 차단됩니다. BPDU 필터는 BPDU를 양방향으로 차단하므로 포트의 스패닝 트리가 효과적으로 비활성화됩니다. BPDU 필터는 인바운드 및 아웃바운드 BPDU를 방지합니다. 인터페이스에서 BPDU 필터링을 활성화할 경우 스패닝 트리를 비활성화하는 것과 동일하며, 이로 인해 스패닝 트리 루프가 발생할 수 있습니다.
switch1 및 switch2에서 다음 명령으로 BPDU 필터를 활성화합니다.
interface TenGigabitEthernet1/2
spanning-tree bpdufilter enable
PVST+ BPDU를 삭제하기 위해 ASR9000을 구성하면 이러한 문제가 발생하지 않습니다. 이는 PVST+ BPDU MAC 주소로 향하는 패킷을 거부하기 위해 L2 이더넷 서비스 액세스 목록으로 수행됩니다.
비 VLAN 1(비원시) VLAN에 대한 PVST+ BPDU는 PVST+ MAC 주소(SSTP[Shared Spanning Tree Protocol] MAC 주소, 0100.0ccc.cccd라고도 함)로 전송되며 해당 IEEE 802.1Q VLAN 태그로 태그가 지정됩니다.
이 ACL(Access Control List)은 PVST+ BPDU를 차단하기 위해 사용할 수 있습니다.
ethernet-services access-list l2acl
10 deny any host 0100.0ccc.cccd
20 permit any any
l2transport로 구성된 인터페이스에 ACL을 적용합니다.
interface TenGigE0/0/0/0.10 l2transport
encapsulation dot1q 10
rewrite ingress tag pop 1 symmetric
ethernet-services access-group l2acl ingress
interface TenGigE0/0/0/1.20 l2transport
encapsulation dot1q 20
rewrite ingress tag pop 1 symmetric
ethernet-services access-group l2acl ingress
ASR9000은 대부분의 Cisco IOS 스위치처럼 기본적으로 스패닝 트리를 수행하지 않습니다. EVC(Ethernet Virtual Circuit) 모델에서 BPDU는 단순히 또 다른 L2 멀티캐스트 패킷입니다. ASR 9000 브리지 도메인에서 실행되는 여러 유형의 STP로 인한 스패닝 트리 불일치가 자주 발생하는 문제입니다. 이는 몇 가지 다른 방식으로 나타납니다.
다음과 같은 간단한 토폴로지를 고려하십시오.
switch1이 MST(Multiple Spanning Tree)를 실행하고 switch2가 PVST+를 실행한다고 가정합니다. a9k1이 스패닝 트리의 어떤 형태도 실행하지 않으면 switch1은 이를 경계 포트로 간주합니다. Switch1은 CST0(Common Spanning Tree Instance 0)에 없는 VLAN에 대해 PVST 모드로 다시 전환됩니다. 원하는 설계인 경우 802.1s(Understanding Multiple Spanning Tree Protocol) 백서에 설명된 대로 MST 및 PVST 상호 작용에 대해 잘 알고 있어야 합니다.
이제 switch1과 switch1로 이동하는 a9k1 인터페이스에서 MST를 실행하지만, switch2에서는 여전히 PVST+를 실행한다고 가정합니다. PVST+ BPDU는 브리지 도메인을 통과하여 switch1에 도착합니다. 그런 다음 Switch1은 a9k1의 MST BPDU와 switch2의 PVST+ BPDU를 모두 볼 수 있으므로, switch1 포트의 스패닝 트리가 차단에서 차단으로 계속 이동하고 트래픽 손실이 발생합니다.
Switch1은 다음 syslog를 보고합니다.
%SPANTREE-SP-2-PVSTSIM_FAIL: Superior PVST BPDU received on VLAN 2 port Gi2/13,
claiming root 2:000b.45b7.1100. Invoking root guard to block the port
%SPANTREE-SP-2-ROOTGUARD_BLOCK: Root guard blocking port GigabitEthernet2/13
on MST1.
%SPANTREE-SP-2-ROOTGUARD_UNBLOCK: Root guard unblocking port GigabitEthernet2/13
on MST0.
%SPANTREE-SP-2-PVSTSIM_FAIL: Superior PVST BPDU received on VLAN 2 port Gi2/13,
claiming root 2:000b.45b7.1100. Invoking root guard to block the port
%SPANTREE-SP-2-ROOTGUARD_BLOCK: Root guard blocking port GigabitEthernet2/13
on MST1.
show spanning-tree interface 명령 출력은 switch1 Cisco IOS 디바이스에서 출력이 지속적으로 변경됨을 보여줍니다.
show spanning-tree interface gig 2/13
Mst Instance Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- -------
MST0 Desg BKN*20000 128.269 P2p Bound(PVST) *ROOT_Inc
MST1 Desg BKN*20000 128.269 P2p Bound(PVST) *ROOT_Inc
MST2 Desg BKN*20000 128.269 P2p Bound(PVST) *ROOT_Inc
show spanning-tree interface gig 2/13
Mst Instance Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- ---------
MST0 Desg FWD 20000 128.269 P2p
MST1 Desg FWD 20000 128.269 P2p
MST2 Desg FWD 20000 128.269 P2p
이러한 문제를 방지하기 위해 세 가지 옵션을 고려해야 합니다.
스위치가 동일한 인터페이스에서 전송된 스패닝 트리 BPDU를 수신하면 자체 루프로 인해 해당 VLAN을 차단합니다. 이는 트렁크 포트가 있는 스위치가 L2 멀티포인트 서비스를 제공하는 ASR 9000 라우터에 연결되고 ASR 9000이 동일한 브리지 도메인의 l2transport 인터페이스에 VLAN 태그를 재작성하지 않을 때 발생하는 일반적인 문제입니다.
앞에서 설명한 것과 동일한 간단한 토폴로지를 고려하십시오. 그러나 이제는 a9k1의 설계상의 이유로 동일한 스위치 트렁크 인터페이스에서 오는 여러 VLAN이 하나의 브리지 도메인에서 함께 병합됩니다.
다음은 a9k1 컨피그레이션입니다.
l2vpn
bridge group bg1
bridge-domain bd1
interface GigabitEthernet0/1/0/31.2
!
interface GigabitEthernet0/1/0/31.3
!
interface GigabitEthernet0/1/0/31.4
!
interface GigabitEthernet0/1/0/32.2
!
interface GigabitEthernet0/1/0/32.3
!
interface GigabitEthernet0/1/0/32.4
interface GigabitEthernet0/1/0/31.2 l2transport
encapsulation dot1q 2
!
interface GigabitEthernet0/1/0/31.3 l2transport
encapsulation dot1q 3
!
interface GigabitEthernet0/1/0/31.4 l2transport
encapsulation dot1q 4
이는 a9k1의 하나의 브리지 도메인에서 VLAN 2에서 4를 함께 브리징합니다.
ASR 9000 EVC 모델은 기본적으로 태그나 팝을 재작성하지 않습니다. VLAN2용 PVST+ BPDU는 인터페이스 Gig 0/1/0/31.2에 제공되며 Gig 0/1/0/31.3 및 Gig 0/1/0/31.4에 다시 전달됩니다. 컨피그레이션이 인그레스(ingress) pop 작업을 재작성하는 것이 아니므로 BPDU는 변경되지 않은 상태로 반환됩니다. 스위치에서는 이를 자체 BPDU를 다시 가져옴으로 간주하고 자체 루프로 인해 해당 VLAN을 차단합니다.
show spanning-tree interface 명령은 차단된 VLAN을 보여줍니다.
6504-A#show spanning-tree interface gig 2/13
Vlan Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- --------
VLAN0002 Desg BLK 4 128.269 self-looped P2p
VLAN0003 Desg BLK 4 128.269 self-looped P2p
VLAN0004 Desg BLK 4 128.269 self-looped P2p
이 문제는 ASR 9000 l2transport 인터페이스에서 ethernet egress-filter strict 명령을 사용하여 해결됩니다.
이것은 권장되는 디자인이 아닙니다. 그러나 이것이 정말 원하는 설계인 경우 스위치에서 동일한 인터페이스로 다시 보낸 BPDU를 수신하지 못하도록 이 솔루션을 사용할 수 있습니다.
a9k1 l2transport 인터페이스 또는 전역에서 ethernet egress-filter strict 명령을 사용할 수 있습니다. 다음은 인터페이스 아래의 예입니다.
interface GigabitEthernet0/1/0/31.2 l2transport
encapsulation dot1q 2
ethernet egress-filter strict
!
interface GigabitEthernet0/1/0/31.3 l2transport
encapsulation dot1q 3
ethernet egress-filter strict
!
interface GigabitEthernet0/1/0/31.4 l2transport
encapsulation dot1q 4
ethernet egress-filter strict
ethernet egress-filter strict 명령은 인터페이스에서 엄격한 이그레스 EFP(Ethernet Flow Point) 필터링을 활성화합니다. 인터페이스의 인그레스 EFP 필터를 통과한 패킷만 이 인터페이스 외부로 전송됩니다. 다른 패킷은 이그레스 필터에서 삭제됩니다. 즉, 이그레스(egress)하는 패킷이 인터페이스에 구성된 캡슐화 dot1q 레이블과 일치하지 않으면 전송되지 않습니다.
개정 | 게시 날짜 | 의견 |
---|---|---|
1.0 |
19-Sep-2013 |
최초 릴리스 |