本文件說明 Spanning Tree 通訊協定功能,此類功能旨在提高第 2 層網路穩定性。
本檔案假設讀者熟悉跨距樹狀目錄通訊協定(STP)的基本作業。
如需詳細資訊,請參閱瞭解和設定Catalyst交換器上的跨距樹狀目錄通訊協定(STP)。
本檔案以執行Cisco IOS的Catalyst交換器為基礎,但上述功能的可用性取決於使用的軟體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
如需更多文件慣例的相關資訊,請參閱思科技術提示慣例。
Spanning Tree 通訊協定 (STP) 會將實體備援拓撲解析為無迴圈的樹狀拓撲。STP的一個問題是硬體故障可能導致故障,從而導致轉發環路(STP環路)。 這些環路可能會導致嚴重的網路故障。
本檔案將說明STP環路防護功能,旨在提高第2層網路的穩定性。還描述了網橋協定資料單元(BPDU)傾斜檢測。BPDU 偏斜偵測是一項診斷功能,會在未及時收到 BPDU 時產生 Syslog 訊息。
STP環路防護功能在適用於Catalyst 4500交換器的Cisco IOS®軟體版本12.1(12c)EW和適用於Catalyst 6500的Cisco IOS軟體版本12.1(11b)EX中匯入。
在內部,STP 會根據組態、拓撲、連接埠在拓撲中的相對位置以及其他考量因素,為每個橋接器(或交換器)連接埠指派角色。
連接埠角色定義了從 STP 角度來看的連接埠行為。視連接埠角色而定,連接埠會傳送或接收 STP BPDU,並轉送或封鎖資料流量。
此清單提供了各 STP 連接埠角色的簡短摘要:
Designated — 每個鏈路(網段)選擇一個指定埠。 指定連接埠是最靠近根橋接器的連接埠。此連接埠會在鏈路(區段)上傳送 BPDU,並將流量轉送到根橋接器。在 STP 融合網路中,每個指定連接埠都處於 STP 轉送狀態。
Root — 網橋只能有一個根埠。根連接埠是通往根橋接器的連接埠。在 STP 融合網路中,根連接埠處於 STP 轉送狀態。
備用 — 備用埠通向根網橋,但不是根埠。替代連接埠會維持 STP 封鎖狀態。
備份 — 當同一交換機之間的兩個或多個埠直接或通過共用介質連線在一起時,這是特殊情況。在此情況下,系統會指定一個連接埠,並封鎖其餘連接埠。此連接埠的角色就是備份。
STP 迴圈防護功能會提供額外的保護,防止第 2 層轉送迴圈(STP 迴圈)。 當備援拓撲中的 STP 封鎖連接埠錯誤轉換為轉送狀態時,會建立 STP 迴圈。此狀況的發生原因通常是因為實體備援拓撲的其中一個連接埠(不一定為 STP 封鎖連接埠)不再接收 STP BPDU。STP 的運作有賴 BPDU 的持續接收或傳輸(視連接埠角色而定)。指定連接埠會傳送 BPDU,非指定連接埠則接收 BPDU。
如果實體備援拓撲中有一個連接埠不再接收 BPDU,STP 會假定拓撲不會發生迴圈。最終,來自備用或備用埠的阻塞埠變為指定狀態並進入轉發狀態(這種情況會導致環路)。
環路防護功能會建立其他檢查。如果未在非指定埠上接收BPDU,並且啟用環路防護,則該埠將進入STP環路不一致的阻塞狀態,而不是偵聽/學習/轉發狀態。若無迴圈防護功能,連接埠就會承擔指定連接埠角色。連接埠會轉移至 STP 轉送狀態並產生迴圈。
當迴圈防護封鎖不一致的連接埠時,會記錄以下訊息:
%SPANTREE-2-LOOPGUARD_BLOCK: Loop guard blocking port FastEthernet0/24 on VLAN0050.
一旦連接埠在迴圈不一致 STP 狀態下收到 BPDU,該連接埠便會轉換到另一個 STP 狀態。對於收到的 BPDU 而言,這代表復原會自動進行,不需要介入。復原後,會記錄以下訊息:
%SPANTREE-2-LOOPGUARD_UNBLOCK: Loop guard unblocking port FastEthernet0/24 on VLAN0050.
請參閱以下範例以瞭解此行為:
交換器 A 為根交換器。由於交換器 B 和交換器 C 之間鏈路的單向鏈路故障,因此交換器 C 未收到來自交換器 B 的 BPDU。
單向鏈路故障
如果沒有環路防護,交換機C上的STP阻塞埠在max_age計時器到期時轉換為STP偵聽狀態,然後轉換為forward_delay時間兩倍的轉發狀態。這種情況就會產生迴圈。
迴圈已建立
啟用環路防護後,當max_age計時器到期時,交換機C上的阻塞埠會轉換為STP環路不一致狀態。處於STP環路不一致狀態的埠不會傳遞使用者流量,因此不會建立環路。環路不一致狀態實際上等於阻塞狀態。
啟用迴圈防護可防止建立迴圈
迴圈防護功能的啟用方式是以連接埠為基準。然而,只要迴圈防護在 STP 層級封鎖連接埠,就會以 VLAN 為基準,封鎖不一致的連接埠(因為每個 VLAN 的 STP 不同)。
也就是說,如果只在一個特定VLAN的中繼埠上未接收BPDU,則只有該VLAN會被阻塞(移至環路不一致STP狀態)。 出於同樣的原因,如果在 EtherChannel 介面上啟用,則整個通道會因為某個特定 VLAN 遭封鎖,而不只是一個鏈路(因為從 STP 的角度來看,會將 EtherChannel 視為一個邏輯連接埠)。
在哪些埠上啟用了環路防護?最顯而易見的答案就是在封鎖連接埠上。但是,這並不是100%正確的。對於所有可能的活動拓撲組合,必須在非指定埠(更準確地說,在根埠和備用埠)上啟用環路防護。只要迴圈防護不是以 VLAN 為基準的功能,同一個(主幹)連接埠便可在一個 VLAN 中作為指定連接埠,而在另一個 VLAN 中作為非指定連接埠。
您也必須考慮可能的容錯移轉情境。
範例
已啟用迴圈防護的連接埠
預設情況下,環路防護被禁用,並且此命令用於在指定介面上啟用環路防護:
Router(config)#interface gigabitEthernet 1/1 Router(config-if)#spanning-tree guard loop
可以在所有點對點鏈路上啟用環路防護。雙工狀態的鏈路會偵測到點對點鏈路。如果雙工已滿,鏈路將視為點對點。仍可以基於每個埠配置或覆蓋全域性設定。
發出以下命令以全域性啟用環路防護:
Router(config)#spanning-tree loopguard default
發出以下命令,以逐個介面禁用環路防護:
Router(config-if)#no spanning-tree guard loop
發出以下命令以全域性禁用環路防護:
Router(config)#no spanning-tree loopguard default
發出以下命令以驗證環路防護狀態:
Router#show spanning-tree summary Switch is in pvst mode Root bridge for: none EtherChannel misconfig guard is enabled Extended system ID is disabled Portfast Default is disabled PortFast BPDU Guard Default is disabled Portfast BPDU Filter Default is disabled Loopguard Default is enabled UplinkFast is disabled BackboneFast is disabled Pathcost method used is short Name Blocking Listening Learning Forwarding STP Active ---------------------- -------- --------- -------- ---------- ---------- Total 0 0 0 0 0
迴圈防護和單向鏈路偵測 (UDLD) 功能部分重疊,因為兩者都能防止單向鏈路引起的 STP 故障。然而,在功能和解決問題的方式上,這兩種功能有所不同。
此表說明迴圈防護和 UDLD 的功能:
| 功能 | 迴圈防護 | UDLD |
|---|---|---|
| 組態 | 各連接埠 | 各連接埠 |
| 動作精細度 | 各 VLAN | 各連接埠 |
| 自動復原 | 是 | 有,搭配錯誤停用逾時功能 |
| 防止由單向鏈路引起的 STP 故障 | 有,在備援拓撲中的所有根連接埠和替代連接埠上啟用時 | 有,在備援拓撲中的所有鏈路上啟用時 |
| 防止由軟體問題引起的 STP 故障(指定交換器未傳送 BPDU) | 是 | 否 |
| 防止不正確的佈線。 | 否 | 是 |
根據各種設計考量,您可以選擇 UDLD 或迴圈防護功能。關於 STP,這兩種功能最明顯的差異是,對於由軟體問題引起的 STP 故障,UDLD 不提供防護。
因此,指定交換器不會傳送 BPDU。然而,這種故障(以規模來說)比由單向鏈路造成的故障還少見。相對而言,在 EtherChannel 中,UDLD 對於單向鏈路的處理可能會更靈活。在此情況下,UDLD 只會停用失敗的鏈路,而其餘的鏈路仍可以維持通道正常運作。在這樣的故障中,環路防護使其進入環路不一致狀態,以阻塞整個通道。
此外,在共用鏈路中,或鏈路從啟動以來一直是單向鏈路,迴圈防護便無法運作。在最後一個情況下,連接埠永遠不會收到 BPDU,也無法成為指定連接埠。因為這種行為可能是正常的,所以迴圈防護不涵蓋這種特定情況。UDLD 則對此情境提供防護。如上所述,啟用 UDLD 和迴圈防護時,系統會提供最高等級的保護。
根防護
根防護與迴圈防護互斥。根防護適用於指定連接埠,且不允許連接埠成為非指定連接埠。迴圈防護適用於非指定連接埠,且不允許連接埠透過 max_age 到期而成為指定連接埠。根防護和迴圈防護無法在同一個連接埠上啟用。在連接埠上設定迴圈防護後,就無法在同一個連接埠上設定根防護。
UplinkFast 和 BackboneFast
UplinkFast 和 BackboneFast 對迴圈防護而言都是透明的。重新收斂時backbone fast跳過max_age時,不會觸發環路防護。有關uplink fast和backbone fast的詳細資訊,請參閱:
PortFast 和 BPDU 防護及動態 VLAN
在已啟用portfast的連線埠上無法啟用回圈防護。由於 BPDU 防護作用於已啟用 PortFast 的連接埠,因此 BPDU 防護會受到一些限制。動態 VLAN 連接埠上無法啟用迴圈防護,因為這類連接埠已啟用 PortFast。
共用鏈路
共用鏈路上無法啟用迴圈防護。若在共用鏈路上啟用迴圈防護,則連接到共用區段的主機流量可能會遭封鎖。
多重 Spanning Tree (MST)
迴圈防護在 MST 環境中可正常運作。
| 修訂 | 發佈日期 | 意見 |
|---|---|---|
3.0 |
01-Jun-2026
|
更新的拼寫、語法、句子結構、間距等 |
2.0 |
18-Dec-2023
|
重新認證 |
1.0 |
14-Oct-2022
|
初始版本 |