簡介
本檔案將說明由於存取交換器與分佈交換器之間的路徑成本不相符而導致的跨距樹狀目錄通訊協定(STP)根不一致問題。
必要條件
需求
思科建議您瞭解STP概念。
採用元件
本文件所述內容不限於特定軟體和硬體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
功能說明
根防護功能提供了一種在網路中實施根網橋放置的方法。
根防護確保啟用根防護的埠是指定埠。通常,根網橋埠都是指定埠,除非根網橋的兩個或多個埠連線在一起。如果網橋在啟用根防護的埠上收到上級STP網橋協定資料單元(BPDU),則根防護會將此埠移至根不一致STP狀態。這種根不一致狀態實際上等於偵聽狀態。沒有流量通過此連線埠轉送。通過這種方式,根防護將強制實施根網橋的位置。
問題
本節中的範例說明了當存取交換器與分佈交換器之間路徑成本不相符時,新增存取交換器到網路如何會導致根防護連線埠在分佈交換器上進入根不一致狀態。
在圖1中,交換機1和交換機2構成網路的分佈層,交換機1充當偶數VLAN的根網橋,交換機2充當奇數VLAN的根網橋。在交換機1和交換機2之間建立了第2層PortChannel。交換機3充當接入層交換機。對於奇數VLAN,交換機1和交換機3之間的鏈路在Switch 3端被阻塞;而對於偶數VLAN,交換機2和交換機3之間的鏈路在Switch 3端被阻塞。
圖1.分佈層交換機和接入層交換機連線
SW1所有Vlan均處於轉發狀態
SW1生成樹,用於Vlan10和Vlan20
SW2所有Vlan均處於轉發狀態
SW2生成樹,用於Vlan20
SW3阻塞的VLAN奇數和偶數埠詳細資訊
SW3根埠有關奇數和偶數的Vlan的詳細資訊
適用於Vlan10和Vlan20的SW3生成樹
在Switch3 Eth0/1埠上捕獲的資料包表明,從Switch1接收的VLAN20的STP幀到達根網橋的根路徑開銷為0。
Vlan20的SW3 Eth0/1埠上的資料包捕獲
在Switch3 Eth0/2埠上捕獲的資料包表明,從Switch2接收的VLAN20的STP幀到達根網橋的根路徑開銷為1000000。
SW3 Eth0/2埠上用於Vlan20的資料包捕獲
在Switch3 Eth0/1埠上捕獲的資料包表明,從Switch1接收的VLAN10的STP幀到達根網橋的根路徑開銷為1000000。
Vlan10的SW3 Eth0/1埠上的資料包捕獲
在Switch3 Eth0/2埠上捕獲的資料包顯示,從Switch2為VLAN10接收的STP幀具有到達根網橋的根路徑開銷0。
Vlan10的SW3 Eth0/2埠上的資料包捕獲
現在,接入交換機 — 交換機3遇到故障,已被新的接入交換機取代。在網路中新增新的接入交換機(交換機3)後,發現STP阻塞了分佈層交換機上的埠,交換機1和交換機2上的指定埠進入「根不一致」狀態。
圖 2:交換機2的Eth0/2埠已移至阻塞狀態
此圖顯示,交換機2的Eth0/2埠進入偶數VLAN的阻塞模式。
交換機1是VLAN 20、40、60的根網橋,通過PO1到達交換機2上的根網橋的開銷為1000000,通過Eth0/2到達的開銷為2000100(2000000+100)。
交換機3在Eth0/1上到達根橋的開銷為100,通過Eth0/2到達根橋的開銷為1000100。
由於交換機2 Eth0/2的開銷位於較高端,因此它阻塞了VLAN 20、40、60的埠Eth0/2。
Feb 10 04:31:55.516: %SPANTREE-2-ROOTGUARD_BLOCK: Received a superior STP BPDU from bridge aabb.cc00.0500. Root guard blocking port Ethernet0/2 on VLAN0060.
Feb 10 04:32:26.086: %SPANTREE-2-ROOTGUARD_BLOCK: Received a superior STP BPDU from bridge aabb.cc00.0500. Root guard blocking port Ethernet0/2 on VLAN0040
即使沒有Vlan,SW2根不一致埠詳細資訊
SW3所有Vlan均處於轉發狀態
圖 3:交換機1的Eth0/1埠已移至阻塞狀態
此圖顯示,交換機1的Eth0/1埠為奇數VLAN進入阻塞模式。
交換機2是VLAN 10、30、50、70的根網橋,通過PO1到達交換機1上的根網橋的開銷為1000000,通過Eth0/1到達的開銷為2000100(2000000+100)。
交換機3在Eth0/2上到達根橋的開銷為100,通過Eth0/1到達根橋的開銷為1000100。
由於交換機1 Eth0/1的開銷位於較高端,因此它阻塞了VLAN 10、30、50、70的埠Eth0/2。
Feb 10 14:49:58.952: %SPANTREE-2-ROOTGUARD_BLOCK: Received a superior STP BPDU from bridge aabb.cc00.0500. Root guard blocking port Ethernet0/1 on VLAN0010.
SW1根不一致Vlan奇數編號埠詳細資訊
在Switch1 Eth0/1埠上捕獲的資料包表明,從Switch3接收的VLAN10的STP幀到達根網橋的根路徑開銷為100。
在SW1 Eth0/1上為Vlan10捕獲資料包
在交換機2的Eth0/2埠上捕獲的資料包表明,從交換機3接收的VLAN20的STP幀到達根網橋的根路徑開銷為100。
Vlan20的SW2 Eth0/2埠上捕獲的資料包
交換機3使用指定為「短」的路徑開銷方法整合到網路中。 相反,交換機1和交換機2採用路徑開銷方法,分類為「long」。 交換機3將上級BPDU傳輸到交換機1和交換機2。收到上級BPDU後,根防護將埠置於根不一致STP狀態。
解決方案
在存取交換器3上,路徑成本組態從「short」變更為「long」時,此問題得以解決。
SW3(config)#spanning-tree pathcost method long
SW1#
*Feb 10 08:07:40.188: %SPANTREE-2-ROOTGUARD_UNBLOCK: Root guard unblocking port Ethernet0/1 on VLAN0010.
SW2#
*Feb 10 08:07:39.188: %SPANTREE-2-ROOTGUARD_UNBLOCK: Root guard unblocking port Ethernet0/2 on VLAN0020
*Feb 10 08:07:40.188: %SPANTREE-2-ROOTGUARD_UNBLOCK: Root guard unblocking port Ethernet0/2 on VLAN0040
SW3的Eth0/2變為阻塞狀態,即使VLAN不存在
SW3的Eth0/1進入Blocking狀態(奇數VLAN)