本文描述將目前的Cisco IOS®交換器上的第2層(L2)跨距樹狀目錄網路與執行Cisco IOS XR的Cisco Aggregation Services Router(ASR)9000系列整合到一起時所遇到的常見問題。
當執行「每個VLAN生成樹Plus(PVST+)」的Cisco IOS交換器收到具有不一致PVID的橋接器通訊協定資料單元(BPDU)時,會封鎖交換器連線埠。當交換機之間的裝置更改或轉換PVST+ BPDU上的IEEE 802.1Q標籤時,會發生此問題。
當ASR 9000在運行PVST+的交換機之間提供L2VPN點對點或多點服務並重寫VLAN標籤時,基於Cisco IOS的交換機上可能會顯示以下系統日誌消息:
%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系列(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
如果配置ASR9000以丟棄PVST+ BPDU,就可以避免此問題。這通過L2乙太網服務訪問清單完成,以拒絕發往PVST+ BPDU MAC地址的資料包。
非VLAN 1(非本徵)VLAN的PVST+ BPDU被傳送到PVST+ MAC地址(也稱為共用生成樹協定[SSTP] MAC地址0100.0ccc.ccd),並使用相應的IEEE 802.1Q VLAN標籤進行標籤。
此訪問控制清單(ACL)可用於阻止PVST+ BPDU:
ethernet-services access-list l2acl
10 deny any host 0100.0ccc.cccd
20 permit any any
將ACL套用到設定為l2transport的介面:
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
與大多數Cisco IOS交換機一樣,ASR9000在預設情況下不執行生成樹。在乙太網路虛擬電路(EVC)模型中,BPDU只是另一個第2層多點傳送封包。遇到的常見問題是跨越ASR 9000橋接域運行的多種STP型別導致生成樹不一致。這可以通過幾種不同的方式出現。
請考慮以下簡單拓撲:
假定switch1運行多生成樹(MST),switch2運行PVST+。如果a9k1未運行任何形式的生成樹,則switch1會將其視為邊界埠。對於不在通用生成樹例項0(CST0)中的VLAN,Switch1回到PVST模式。如果這是所需的設計,您應該熟悉MST和PVST互動,如瞭解多生成樹協定(802.1s)白皮書中所述。
現在假設您在switch1和通往switch1的a9k1介面上運行MST,但是您仍然在switch2上運行PVST+。PVST+ BPDU通過網橋域並到達交換機1。然後Switch1會看到來自a9k1的MST BPDU和來自switch2的PVST+ BPDU,這會導致switch1埠上的生成樹不斷從阻塞變為不阻塞,並導致流量丟失。
Switch1報告以下系統日誌:
%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不會在同一橋接域的l2傳輸介面上重寫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
這會將VLAN 2至4橋接到a9k1上的一個網橋域中。
預設情況下,ASR 9000 EVC型號不重寫任何標籤或彈出標籤。用於VLAN2的PVST+ BPDU傳入介面gig 0/1/0/31.2,並在gig 0/1/0/31.3和gig 0/1/0/31.4上轉回出去。由於該配置不是輸入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 l2傳輸介面上使用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)過濾。只有透過介面上的輸入EFP過濾器的封包會從這個介面轉發出去。其他封包會在輸出過濾器處捨棄。這表示如果流出的封包與介面上設定的encapsulation dot1q標籤不相符,則不會將其傳送出去。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
19-Sep-2013 |
初始版本 |