簡介
本檔案介紹旨在提高第2層網路穩定性的生成樹通訊協定功能。
必要條件
需求
本文檔假設讀者熟悉STP的基本操作。如需詳細資訊,請參閱瞭解和設定Catalyst交換器上的跨距樹狀目錄通訊協定(STP)。
採用元件
本檔案是根據Catalyst交換器,但上述功能的可用性取決於使用的軟體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
慣例
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
背景資訊
生成樹協定(STP)將物理冗餘拓撲解析為無環樹狀拓撲。STP的最大問題是某些硬體故障會導致其發生故障。此故障會導致轉發環路(或STP環路)。STP環路造成了嚴重的網路故障。
本檔案介紹旨在提高第2層網路穩定性的環路防護STP功能。本檔案也說明橋接通訊協定資料單元(BPDU)歪斜偵測。BPDU偏差檢測是一種診斷功能,可在未及時收到BPDU時生成系統日誌消息。
功能可用性
Cisco IOS
STP埠角色
在內部,STP根據配置、拓撲、埠在拓撲中的相對位置以及其他考慮因素,為每個網橋(或交換機)埠分配一個角色。埠角色定義從STP角度出發的埠行為。根據埠角色,埠傳送或接收STP BPDU並轉發或阻止資料流量。此清單提供每個STP埠角色的簡短摘要:
-
Designated — 每個鏈路(網段)選擇一個指定埠。指定的埠是最靠近根網橋的埠。此連線埠在連結(區段)上傳送BPDU,並將流量轉送到根網橋。在STP融合網路中,每個指定埠都處於STP轉發狀態。
-
Root — 網橋只能有一個根埠。根埠是通向根網橋的埠。在STP融合網路中,根埠處於STP轉發狀態。
-
Alternate — 備用埠通向根網橋,但不是根埠。備用埠保持STP阻塞狀態。
-
備份 — 當同一交換機之間的兩個或多個埠直接或通過共用介質連線在一起時,這是一個特殊情況。這種情況下,會指定一個連線埠,而其餘連線埠會遭到封鎖。此連線埠的角色為備份。
STP環路防護
功能說明
STP 迴圈防護功能會提供額外的保護,防止第 2 層轉送迴圈(STP 迴圈)。當冗餘拓撲中的STP阻塞埠錯誤地轉換到轉發狀態時,會建立STP環路。發生這種情況通常是因為物理冗餘拓撲的一個埠(不一定是該STP阻塞埠)不再接收STP BPDU。STP 的運作有賴 BPDU 的持續接收或傳輸(視連接埠角色而定)。指定連接埠會傳送 BPDU,非指定連接埠則接收 BPDU。
如果實體備援拓撲中有一個連接埠不再接收 BPDU,STP 會假定拓撲不會發生迴圈。最終,來自備用或備用埠的阻塞埠變為指定狀態並變為轉發狀態。這種情況就會產生迴圈。
迴圈防護功能會提供額外的檢查。如果未在非指定埠上接收BPDU,並且啟用了環路防護,則該埠將進入STP環路不一致的阻塞狀態,而不是偵聽/學習/轉發狀態。若無迴圈防護功能,連接埠就會承擔指定連接埠角色。連接埠會轉移至 STP 轉送狀態並產生迴圈。
當環路防護阻塞不一致的埠時,將記錄以下消息:
-
Cisco IOS
%SPANTREE-2-LOOPGUARD_BLOCK: Loop guard blocking port FastEthernet0/24 on VLAN0050.
在處於環路不一致STP狀態的埠上收到BPDU後,該埠會轉換到另一個STP狀態。對於收到的BPDU,這意味著恢復是自動進行的,無需干預。恢復後,將記錄以下消息:
-
Cisco IOS
%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時間的兩倍內轉變為forwarding狀態。這種情況就會產生迴圈。
已建立循環
啟用環路防護後,當max_age計時器到期時,交換機C上的阻塞埠會轉換為STP環路不一致狀態。處於STP環路不一致狀態的埠不會傳遞使用者流量,因此不會建立環路。(環路不一致狀態實際上等於阻塞狀態。)
啟用環路防護可防止環路
配置注意事項
環路防護功能是基於每個埠啟用的。但是,只要它在STP級別阻塞埠,環路防護就會根據VLAN阻塞不一致的埠(因為每個VLAN STP)。也就是說,如果只在一個特定VLAN的中繼埠上未接收BPDU,則只有該VLAN被阻塞(移至環路不一致STP狀態)。出於相同原因,如果在EtherChannel介面上啟用,則整個通道對於特定VLAN而不是僅針對一條鏈路被阻塞(因為EtherChannel從STP的角度被視為一個邏輯埠)。
在哪些埠上啟用環路防護?最明顯的答案是阻塞埠。但是,這並不完全正確。對於所有可能的活動拓撲組合,必須在非指定埠(更準確地說,在根埠和備用埠)上啟用環路防護。只要環路防護不是每個VLAN的功能,就可以為一個VLAN指定相同(中繼)埠,為另一個VLAN指定非指定埠。還必須考慮可能的故障切換方案。
範例
已啟用環路防護的連線埠
預設情況下,環路防護處於禁用狀態。以下命令用於啟用環路防護:
-
Cisco IOS
spanning-tree guard loop
Router(config)#interface gigabitEthernet 1/1
Router(config-if)#spanning-tree guard loop
實際上,可以在所有點對點鏈路上啟用環路防護。點對點連結會透過連結的雙工狀態來檢測。如果雙工為全雙工,則鏈路視為點對點。仍可以基於每個埠配置或覆蓋全域性設定。
發出以下命令可全域性啟用環路防護:
-
Cisco IOS
Router(config)#spanning-tree loopguard default
發出以下命令可停用回圈防護:
-
Cisco IOS
Router(config-if)#no spanning-tree guard loop
發出以下命令可全域性禁用環路防護:
-
Cisco IOS
Router(config)#no spanning-tree loopguard default
發出以下命令可驗證環路防護狀態:
-
Cisco IOS
show spanning-tree
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
環路防護和單向鏈路檢測(UDLD)功能重疊,部分原因是兩者都防止單向鏈路導致的STP故障。但是,這兩個功能在功能以及解決問題方式上有所不同。下表介紹環路防護和UDLD功能:
功能 |
環路防護 |
UDLD |
組態 |
每個埠 |
每個埠 |
操作粒度 |
每個VLAN |
每個埠 |
自動恢復 |
是 |
是,具有錯誤禁用超時功能 |
針對單向鏈路導致的STP故障提供保護 |
是,在冗餘拓撲中的所有根埠和備用埠上啟用時 |
是,在冗餘拓撲中的所有鏈路上啟用時 |
防止軟體出現問題導致的STP故障(指定交換機不傳送BPDU) |
是 |
否 |
防止接線錯誤。 |
否 |
是 |
根據各種設計注意事項,您可以選擇UDLD或環路防護功能。在STP方面,這兩個功能之間最明顯的區別是UDLD中缺少針對軟體問題導致的STP故障的保護。因此,指定交換機不傳送BPDU。但是,這種型別的故障(數量級)比單向鏈路導致的故障更為罕見。反過來,在EtherChannel上使用單向連結時,UDLD可能更為靈活。在這種情況下,UDLD只會停用失敗連結,且通道可以透過保留連結保持運作。在這樣的故障中,環路防護使其進入環路不一致狀態,以阻塞整個通道。
此外,自連結啟動後,如果連結是單向的,則回圈防護無法作用在共用連結上,或發生這種情況。在最後一種情況下,埠從不接收BPDU而成為指定埠。由於此行為可能是正常的,因此環路防護不會涵蓋此特定情況。UDLD會針對此類情況提供保護。
如所述,啟用UDLD和環路防護時提供最高級別的保護。
環路防護與其他STP功能的互操作性
根防護
根防護與環路防護互斥。根防護用於指定埠,它不允許埠成為非指定埠。環路防護在非指定埠上工作,不允許埠在max_age到期後成為指定埠。根防護不能在與環路防護相同的埠上啟用。當在埠上配置環路防護時,它會禁用在同一埠上配置的根防護。
Uplink Fast和Backbone Fast
上行鏈路fast和主幹fast對環路防護都是透明的。重新收斂時backbone fast跳過max_age時,不會觸發環路防護。有關uplink fast和backbone fast的詳細資訊,請參閱以下文檔:
PortFast和BPDU防護以及動態VLAN
無法為已啟用portfast的連線埠啟用回圈防護。由於BPDU防護在已啟用portfast的埠上工作,因此有些限制適用於BPDU防護。無法在動態VLAN埠上啟用環路防護,因為這些埠已啟用portfast。
共用連結
不能在共用鏈路上啟用環路防護。如果在共用鏈路上啟用環路防護,則來自連線到共用網段的主機的流量可能會被阻止。
多重跨距樹狀目錄(MST)
環路防護在MST環境中正常工作。
相關資訊