本檔案介紹跨距樹狀目錄通訊協定(STP)的PortFast和橋接通訊協定資料單元(BPDU)防護增強功能。
本文件沒有特定需求。
以下軟體版本已匯入STP PortFast BPDU防護:
適用於Catalyst 6500/6000平台的Cisco IOS®軟體版本12.0(7)XE
適用於Catalyst 4500/4000監督器引擎III的Cisco IOS軟體版本12.1(8a)EW
適用於Catalyst 4500/4000監督器引擎IV的Cisco IOS軟體版本12.1(12c)EW
適用於Catalyst 2900XL和3500XL系列的Cisco IOS軟體版本12.0(5)WC5
適用於Catalyst 3750系列交換器的Cisco IOS軟體版本12.1(11)AX
適用於Catalyst 3750 Metro交換器的Cisco IOS軟體版本12.1(14)AX
適用於Catalyst 3560系列交換器的Cisco IOS軟體版本12.1(19)EA1
適用於Catalyst 3550系列交換器的Cisco IOS軟體版本12.1(4)EA1
適用於Catalyst 2970系列交換器的Cisco IOS軟體版本12.1(11)AX
適用於Catalyst 2955系列交換器的Cisco IOS軟體版本12.1(12c)EA1
適用於Catalyst 2950系列交換器的Cisco IOS軟體版本12.1(6)EA2
適用於Catalyst 2950長距離乙太網路(LRE)交換器的Cisco IOS軟體版本12.1(11)EA1
適用於Catalyst 2940系列交換器的Cisco IOS軟體版本12.1(13)AY
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
如需更多文件慣例的相關資訊,請參閱思科技術提示慣例。
在正確設計的交換網路中,生成樹協定(STP)通過將冗餘路徑置於阻塞狀態來防止第2層環路。每個連線埠在傳遞使用者流量之前,通常都會經過STP狀態(偵聽、學習及最後轉送)。對於交換機到交換機的鏈路而言,這種融合延遲(傳統802.1D中大約為30秒)是合適的,但對於連線到終端主機(例如PC、伺服器或印表機)的埠而言是不必要的,這些終端主機無法自己建立交換環路。
難點在於,連線到終端主機的埠根本不能接收STP網橋協定資料單元(BPDU)。如果BPDU到達這樣的連線埠,通常會標示出以下兩種問題中的其中一個:有人連線了未經授權的交換機,或者裝置運行了模擬網橋的軟體。這兩種情況都可能會破壞拓撲的穩定,尤其是當惡意裝置通告上級網橋ID並強制進行根網橋選舉時,它決不能參與。
一個真實世界的例子說明了風險。運行基於Linux的橋接應用程式的使用者PC連線到接入埠。由於應用程式傳送的BPDU宣告網橋優先順序較低,因此網路選擇該PC作為根網橋。這會將整個生成樹拓撲轉移到一個供電不足的主機,導致鏈路擁塞並導致網路中斷。BPDU防護的存在正是為了防止此類故障。
PortFast會立即將接入或中繼埠從阻塞狀態直接轉換到轉發狀態,跳過偵聽和學習階段。這消除了連線到終端裝置的埠的啟動延遲,這對於希望立即訪問網路的主機(例如,在啟動時使用DHCP的工作站)來說非常重要。
PortFast僅適用於連線到單一終端站的連線埠。在連結到另一台交換器的連線埠上啟用此功能,會重新引入STP專用於防止的環路風險,因為此連線埠在STP有機會偵測到備援路徑之前便開始轉送。
BPDU防護通過強製假定已啟用PortFast的連線埠永遠不會看到BPDU來補充PortFast功能。啟用BPDU防護且連線埠收到BPDU時,交換器會立即關閉連線埠,將其置於錯誤停用狀態。這樣可通過兩種方式保護拓撲:
由於連線埠處於管理性停用狀態,而不是簡單地遭到封鎖,因此系統會提醒網路業者留意該事件,且會徹底隔離違規裝置,直到問題得到解決。
除非設定錯誤停用復原,否則置於錯誤停用中的連線埠不會自行復原。您可以手動重新啟用介面(shutdown後跟no shutdown),也可以為BPDU防護原因配置自動恢復。
以下訊息為範例:
2000 May 12 15:13:32 %SPANTREE-2-RX_PORTFAST:Received BPDU on PortFast enable port. Disabling 2/1 2000 May 12 15:13:32 %PAGP-5-PORTFROMSTP:Port 2/1 left bridge port 2/1
請考慮下一個示例:
橋接器
該拓撲包括構成核心層和接入層的三台交換機,以及一台終端裝置:
所有其他STP引數保留為預設值時,STP會按預期收斂。交換機A被選為根埠,冗餘路徑被阻塞以中斷環路,具體而言,面向交換機B的交換機C埠被置於阻塞狀態下(該鏈路上顯示為紅色「X」)。 虛線箭頭用於跟蹤通過拓撲的STP BPDU的正常流量。這可以視為穩定網路,其中PortFast可立即為裝置D提供連線,而STP則安靜地管理冗餘核心鏈路。
在PC上啟動基於Linux的橋接應用程式
此示例顯示當裝置D停止像簡單終端主機一樣行為並開始參與STP時會發生的情況,與BPDU防護旨在停止的情況完全相同。在PC(裝置D)上啟動基於Linux的橋接應用程式。 應用程式通告網橋優先順序0(或低於當前根優先順序的任何值)。 因為STP始終支援最低網橋ID,所以基於Linux的網橋將贏得根選擇,並從交換機A接管根網橋角色。
這次重新選擇將重塑整個拓撲。兩個核心交換機(A和B)之間的高速千兆乙太網鏈路轉換為阻塞鏈路(以移至核心鏈路的紅色「X」表示)。 因此,以前使用千兆核心的所有VLAN流量都強制進入速度較慢的100 Mbps路徑。當流量需求超過鏈路承載能力時,交換機開始丟棄幀,結果導致連線中斷。
BPDU防護如何防止此問題?由於交換機C在連線到裝置D的埠上啟用了PortFast,因此該埠永遠不能接收BPDU。當裝置D傳送STP BPDU時,BPDU防護會將其置於errdisable狀態來關閉埠。裝置D在影響根選舉之前被隔離,並且核心拓撲保持不變。
建議的方法是在面向接入埠的主機上同時啟用PortFast和BPDU防護。您可以基於全域性或每個介面啟用或禁用STP PortFast BPDU防護。預設情況下,STP BPDU防護處於禁用狀態。
CatSwitch-IOS(config-if)#spanning-tree portfast CatSwitch-IOS(config-if)#spanning-tree bpduguard enable
CatSwitch-IOS(config)#spanning-tree portfast bpduguard default
使用global命令,每個配置了PortFast的埠都會自動繼承BPDU防護,因此您無需在每個介面上單獨設定它。
當STP BPDU防護禁用埠時,除非該埠手動啟用,否則該埠將保持禁用狀態。您可以將連線埠設定為自動從錯誤停用狀態重新啟用。發出以下命令,設定errdisable-timeout interval並啟用timeout功能:
CatSwitch-IOS(config)#errdisable recovery cause bpduguard CatSwitch-IOS(config)#errdisable recovery interval 400
要驗證功能是處於啟用還是禁用狀態,請運行下一個適用的命令:
CatSwitch-IOS#show spanning-tree summary totals Root bridge for: none. PortFast BPDU Guard is enabled UplinkFast is disabled BackboneFast is disabled Spanning tree default pathcost method used is short Name Blocking Listening Learning Forwarding STP Active -------------------- -------- --------- -------- ---------- ---------- 1 VLAN 0 0 0 1 1 CatSwitch-IOS#
| 修訂 | 發佈日期 | 意見 |
|---|---|---|
4.0 |
05-Jun-2026
|
更新的拼寫、語法、間距和簡介。 |
3.0 |
12-May-2025
|
已更新格式以符合思科准則。 |
2.0 |
22-Mar-2024
|
已更新格式。已更正CCW警報。重新認證。 |
1.0 |
29-Nov-2001
|
初始版本 |