簡介
本檔案介紹如何疑難排解兩個跨距樹狀目錄通訊協定(STP)不一致、連線埠VLAN ID (PVID)和型別。
必要條件
需求
Cisco建議您瞭解STP概念。
採用元件
本檔案所述內容不限於特定軟體或硬體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
慣例
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
背景資訊
在第 2 層 (L2) 網路中,任兩個裝置之間只能有一條路徑。跨距樹狀目錄通訊協定 (STP) 支援備援,可偵測和封鎖備援路徑,因此可避免轉送迴圈。某些設定錯誤可能會導致 STP 故障,造成網路中斷。為防止停機,實施了一些增強功能,以便STP檢測某些配置錯誤的情況,並將相關埠置於「不一致」狀態。
STP不一致可能有不同型別:
-
環路不一致- 由環路防護功能檢測出。有關詳細資訊,請參閱使用環路防護和BPDU遲滯檢測配置STP。
-
根不一致- 由根防護功能檢測出。有關詳細資訊,請參閱使用根防護增強生成樹協定。
-
EtherChannel不一致- 由EtherChannel一致性檢測功能檢測出。有關詳細資訊,請參閱瞭解EtherChannel不一致檢測。
-
Port VLAN ID (PVID)不一致- 在與其來源不同的VLAN上接收到Per VLAN spanning tree (PVST+)網橋協定資料單元(BPDU):(Port VLAN ID Mismatchor*PVID_Inc)。
-
類型不一致—PVST+ BPDU 係在非 802.1Q trunk 上接收。
PVID和型別不一致理論
Cisco Catalyst交換機實施使用交換機間鏈路(ISL)中繼的PVST。有了IEEE 802.1Q和ISL中繼的支援,PVST和所有VLAN的單個生成樹的IEEE 802.1Q概念之間需要一種互操作的方法。引入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會傳送到PVST+ MAC位址(也稱為共用跨距樹狀目錄通訊協定(SSTP) MAC位址0100.0ccc.ccd),並使用對應的IEEE 802.1Q VLAN標籤加以標籤。
如果IEEE 802.1Q中繼上的本地VLAN不是VLAN 1:
-
VLAN 1 STP BPDU被傳送到PVST+ MAC地址,並使用相應的IEEE 802.1Q VLAN標籤進行標籤。
-
VLAN 1 STP BPDU也會傳送到IEEE 802.1Q中繼原生VLAN上的IEEE STP MAC位址(未加標籤)。
-
非VLAN 1 STP BPDU會傳送到PVST+ MAC位址,並使用對應的IEEE 802.1Q VLAN標籤進行標籤。
附註:原生 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中繼連線到IEEE 802.1D或802.1Q網橋,該中繼在連線到IEEE 802.1Q或802.1D網橋的雲的所有網橋上都具有一致的本地VLAN。
PVST+ BPDU包含一個VLAN編號,允許PVST+網橋檢測是否不遵循先前的規則。當Catalyst交換機檢測到配置錯誤時,相應的埠將處於「PVID不一致」或「型別不一致」狀態,這將有效阻止相應埠上相應VLAN中的流量。這些狀態可防止因配置錯誤或佈線錯誤而導致的轉發環路。
為了說明不一致檢測的必要性,請考慮以下拓撲,其中交換機A和C運行PVST+ STP,交換機B運行802.1Q STP:
如果VLAN 1中根的BPDU優於VLAN 2中根的BPDU,則VLAN 2拓撲中沒有阻塞埠。VLAN 2的BPDU絕不會繞著拓撲產生「全圓」;它被B-C鏈路上的VLAN 1 BPDU所取代,因為B僅運行一個與PVST+的VLAN 1 STP合併的STP。因此,存在轉發環路。幸運的是,交換機A將VLAN 2的PVST+ BPDU(傳送到交換機B泛洪的SSTP地址)傳送到交換機C。交換機C可將埠C-B置於型別不一致狀態,從而防止環路。
附註:在部分指令輸出中,*-inconsistent STP 狀態稱為「中斷」。
檢測到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的源頭。當檢測到不一致時,兩個VLAN都會在接收此BPDU的埠上被阻止。
注意:消息可能因正在使用的Cisco IOS®軟體版本的型別和版本而異。
注意,如果埠不再接收不一致的BPDU,則會清除*-inconsistent狀態,並且STP會根據正常的STP操作更改埠狀態。系統傳送一條系統日誌消息以指示更改:
%SPANTREE-SP-2-UNBLOCK_CONSIST_PORT: Unblocking FastEthernet0/1 on vlan 1.
Port consistency restored.
有關PVST+操作的詳細資訊,請參閱從PVST+到快速PVST的生成樹遷移配置示例。
疑難排解
為檢視不一致埠清單,最新基於Cisco IOS的STP實現可支援show spanning-tree inconsistentports 命令。
在大多數情況下,檢測埠STP不一致的原因很明顯:
在此場景中,網橋A上的接入埠從網橋B接收來自VLAN(而不是1)的STP的帶標籤的PVST+ BPDU。A上的連線埠可以進入型別不一致狀態。
注意:交換機不必直接連線;如果它們透過一台或多台IEEE 802.1D或IEEE 802.1Q交換機(甚至集線器)連線,則效果相同。
在此場景中,A上的中繼埠從VLAN 2的STP接收帶有VLAN 2標籤的PVST+ BPDU。這會觸發A上的連線埠在VLAN 1和VLAN 2中遭到封鎖。
如果點對點鏈路兩端的裝置是Cisco Catalyst交換機,則檢查本地和遠端埠配置時通常會發現配置不匹配:
在這些情況下,請修復配置不匹配問題以解決STP不一致問題。
在某些情況下,更難確定原因:
在本示例中,交換機B配置錯誤,將SSTP BPDU注入雲。這會導致交換器A、C和D上的連線埠變為型別不一致。問題在於,發出「衝突」BPDU的裝置沒有直接連線到受影響的交換機。因此,如果中繼上包含許多裝置,那麼排除所有裝置故障會耗費大量時間。
幸運的是,有系統方法可以解決此問題:
-
建立BPDU的源MAC地址並傳送網橋ID。發生問題時,必須執行此操作
-
查詢發出「衝突」BPDU的網橋。這可以在以後某個時間完成,而不一定在問題發生時完成。
對於第1步,通常有兩個選項:使用資料包分析器或啟用調試以檢視收到的BPDU的轉儲。
有關使用debug轉儲STP BPDU的詳細資訊,請參閱對Catalyst交換機上的STP問題進行故障排除的使用STP Debug命令部分。
以下是顯示已接收BPDU的debug輸出示例:
*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地址,這一事實可能使問題變得複雜。如果發出show mac-address-table addressBPDU_mac_address 命令(對於基於Cisco IOS的交換機),則通常無法找到任何條目。
找到「衝突」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在退出雲時會變得不一致(例如,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.
相關資訊