BPDU Guard:防止將交換設備意外連接到啟用PortFast的端口。 將交換機連接到啟用了PortFast的端口可能會導致第2層環路或拓撲更改。
BPDU filtering:限制交換機向Access端口發送不必要的BPDU。
Root Guard: 防止連接在配置為Access端口上的交換機成為根交換機。
Loop Guard:Loop Guard STP功能通過防止橋接環路來提高第2層網絡的穩定性。
UDLD: UDLD檢測並禁用單向l鏈路。
1、BPDU防護(BPDU Guard)
當配置為STP PortFast的接口收到BPDU時,BPDU Guard會將其為置於err-disable狀態。 BPDU Guard禁用接口作為預防步驟,以避免潛在的危險橋接環。 BPDU保護功能用於保護生成樹域免受外部影響。 BPDU Guard默認情況下處於禁用狀態,但建議已啟用portfast功能的所有端口使用BPDU Guard。這樣可以防止將錯誤信息注入禁用了生成樹的端口上的生成樹域中。
當端口僅連接了主機設備時,我們將啟用portfast,這將加快端口初始化過程並使端口立即進入轉發狀態。如果沒有繞過STP並且端口進入了偵聽和學習狀態,這可以消除30秒鍾的延遲。因為主機是工作站,所以它不發送BPDU,因此在這樣的端口上禁用生成樹不是問題。
如果我們刪除了此端口的此終端主機並連接了交換機。這個新的交換機將開始生成BPDU,並且可以像網絡的根網橋一樣接管,或者如果它的另一條鏈路連接到網絡的另一部分,則可能在我們的網絡中引起環路。
因此,BPDU Guard將提供對無效配置或未經授權的交換機到我們的網絡的安全響應,因為管理員必須在修復無效的配置或從網絡中刪除未經授權的交換機后手動重新啟用禁用了錯誤的接口。還可以設置超時間隔,在此間隔之后,交換機將自動嘗試重新啟用接口。但是,如果無效的配置或交換機仍然存在,則交換機會再次錯誤禁用接口。
開啟和關閉BPDU Guard使用如下命令:
switch(config-if)#spanning-tree bpduguard enable switch(config)#[no] spanning-tree portfast edge bpduguard default
確認是否開啟:
switch#show spanning-tree summary totals
Root bridge for: none. PortFast BPDU Guard is enabled UplinkFast is disabled BackboneFast is disabled Default pathcost method used is short
2、BPDU Filter
在端口上啟用PortFast時,該端口將發出BPDU,並將接受並處理收到的BPDU。 BPDU Guard 功能可防止端口接收任何BPDU,但不會阻止其發送它們。如果收到任何BPDU,則該端口將被禁用。 BPDU Filter功能通過阻止選定端口發送或接收任何BPDU來有效地禁用其上的STP。
BPDU Filter支持阻止交換機在啟用PortFast的接口上發送BPDU的功能。為PortFast功能配置的端口通常連接到主機設備。主機不參與STP,因此會丟棄收到的BPDU。結果,BPDU Filter防止不必要的BPDU被發送到主機設備。
全局啟用BPDU過濾會產生以下影響;
- 它會影響在所有PortFast的端口。
- 如果接口收到BPDU,則該端口將失去其PortFast狀態,禁用BPDU Filter,並且STP會在該端口上發送和接收BPDU,就像在交換機上的任何其他STP端口一樣。
- 啟動后,端口將傳輸十個BPDU。如果此端口在此期間收到任何BPDU,則禁用PortFast和PortFast BPDU Filter。
在單個端口上啟用BPDU過濾后,會產生以下影響:
- 它忽略所有收到的BPDU。
- 它不發送BPDU。
如果在與BPDU Filter相同的接口上啟用BPDU Guard,則BPDU Guard無效,因為BPDU Filter優先於BPDU Guard。
如何配置開啟BPDU Filter,全局和接口下
switch(config)#spanning-tree portfast bpdufilter default switch(config-if)#spanning-tree bpdufilter enable
如何查看BPDU Filter是開啟:
switch#show spanning-tree summary Switch is in pvst mode Root bridge for: none Extended system ID is enabled Portfast Default is disabled PortFast BPDU Guard Default is disabled Portfast BPDU Filter Default is enabled
switch# show spanning-tree interface fastEthernet 0/1 detail Port 196 (FastEthernet0/1) of VLAN0010 is forwarding Port path cost 1000, Port priority 160, Port Identifier 160.196. Designated root has priority 32768, address 00d0.00b8.140a Designated bridge has priority 32768, address 00d0.00b8.140a Designated port id is 160.196, designated path cost 0 Timers:message age 0, forward delay 0, hold 0 Number of transitions to forwarding state:1 The port is in the portfast mode by portfast trunk configuration Link type is point-to-point by default Bpdu filter is enabled BPDU:sent 0, received 0
3、Root Guard
Root Guard在避免網絡異常期間的第2層環路方面很有用。根防護功能強制接口成為指定端口,以防止周圍的交換機成為根交換機。換句話說,Root Guard提供了一種在網絡中強制根橋放置的方法。根防護功能可防止指定端口成為根端口。如果Root Guard功能的端口接收到更高優先級的BPDU,會將其變換為到root-inconsistent狀態(實際上等於偵聽listening 狀態),從而保持當前的根網橋狀態。
switch(config-if)#spanning-tree guard root switch# show spanning-tree inconsistentports Name Interface Inconsistency ——————– ———————- —————— VLAN0001 FastEthernet0/1 Port Type Inconsistent VLAN0001 FastEthernet0/2 Port Type Inconsistent VLAN0002 FastEthernet0/1 Port Type Inconsistent VLAN0002 FastEthernet0/2 Port Type Inconsistent
根防護功能可防止端口成為根端口,從而確保該端口始終是指定端口。與其他STP增強功能(也可以在全局范圍內啟用)不同,必須在不應出現根網橋的所有端口上手動啟用Root Guard。因此,在LAN中設計和實現STP時,保證確定性的拓撲非常重要。在端口上啟用Root Guard功能后,交換機不會使該端口成為STP根端口。該端口保留為STP指定的端口。此外,如果在端口上收到更好的BPDU,則Root Guard會禁用(err-disable)端口,而不是處理BPDU。如果未經授權的設備開始發送具有更好網橋ID的BPDU,則正常的STP進程會將新交換機選為根交換機。如此通過禁用端口,可以保護網絡拓撲。
當前的設計建議是在所有Access端口上啟用Root Guard,以便不通過這些端口建立根網橋。端口停止接收上級BPDU后,該端口將再次解除阻塞,並經歷listening 和learning的常規STP過渡,並最終進入forwarding 狀態。恢復是自動的;無需干預。
開啟Root Guard:
switch(config-if)#spanning-tree guard root switch# show spanning-tree inconsistentports Name Interface Inconsistency ——————– ———————- —————— VLAN0001 FastEthernet0/1 Port Type Inconsistent VLAN0001 FastEthernet0/2 Port Type Inconsistent VLAN0002 FastEthernet0/1 Port Type Inconsistent VLAN0002 FastEthernet0/2 Port Type Inconsistent
4、Loop Guard
Loop Guard提供了針對第2層轉發環路(STP環路)的附加保護。當冗余拓撲中的STP阻塞端口錯誤地轉換為轉發狀態時,就會發生橋接環路。這通常是由於物理冗余拓撲的端口之一(不一定是STP阻止端口)已停止接收STP BPDU所致。在STP中,取決於端口角色,交換機依賴於BPDU的連續接收或傳輸。 (指定端口發送BPDU,而非指定端口接收BPDU。)
如果交換機鏈路已建立並且未收到BPDU(由於單向鏈路),則交換機將認為可以安全地建立此鏈路,並且端口將轉換為轉發狀態,並開始中繼已接收的BPUD。如果將交換機連接到鏈路的另一端,則會有效地產生生成樹環路。
借助Loop Guard功能,交換機在過渡到STP轉發狀態之前會進行其他檢查。如果啟用了Loop Guard功能的交換機停止在非指定端口上接收BPDU,則交換機會將端口置於STP loop-inconsistent的阻塞狀態,而不是通過偵聽,學習和轉發狀態。如果交換機在STP loop-inconsistent的狀態下在端口上收到BPDU,則端口會根據收到的BPDU在STP狀態下進行轉換。結果,恢復是自動的,不需要手動干預。
實施Loop Guard時,應了解以下實施准則;
- 無法在啟用了Root Guard的交換機上啟用Loop Guard
- Loop Guard不會影響Uplink Fast或Backbone Fast操作
- 必須僅在點對點鏈接上啟用Loop Guard
- 生成樹計時器不影響Loop Guard操作
- Loop Guard實際上無法檢測到單向鏈接
- 無法在Portfast或動態VLAN端口上啟用Loop Guar
您可以按端口配置Loop Guard功能,盡管該功能可以按VLAN阻止不一致的端口。 例如,在中繼端口上,如果僅針對一個特定的VLAN未收到BPDU,則交換機僅阻止該VLAN(即,將該VLAN的端口移至環路不一致的STP狀態)。 對於以太通道接口,對於不接收BPDU的特定VLAN,屬於該通道組的所有端口的通道狀態將進入不一致狀態。 在所有非指定的端口上啟用環路保護功能,而不僅僅是阻止端口。 更准確地說,對於活動拓撲的所有可能組合,應在根端口和備用端口上啟用Loop Guard。 但是,在啟用Loop Guard之前,請考慮所有可能的故障轉移方案。
配置Loop Guard
全局開啟:
Switch(config)# spanning-tree loopguard default Switch(config)# end Switch# show spanning tree interface 4/4 detail Switch# show spanning-tree interface fastethernet 4/4 detail Port 196 (FastEthernet4/4) of VLAN0010 is forwarding Port path cost 1000, Port priority 160, Port Identifier 160.196. Designated root has priority 32768, address 00d0.00b8.140a Designated bridge has priority 32768, address 00d0.00b8.140a Designated port id is 160.196, designated path cost 0 Timers:message age 0, forward delay 0, hold 0 Number of transitions to forwarding state:1 The port is in the portfast mode by portfast trunk configuration Link type is point-to-point by default Bpdu filter is enabled Loop guard is enabled by default on the port BPDU:sent 0, received 0
接口下配置:
Switch(config)# interface fastEthernet 4/4 Switch(config-if)# spanning-tree guard loop Switch(config-if)# ^Z Switch# show spanning-tree interface fastEthernet 4/4 detail Port 196 (FastEthernet4/4) of VLAN0010 is forwarding Port path cost 1000, Port priority 160, Port Identifier 160.196. Designated root has priority 32768, address 00d0.00b8.140a Designated bridge has priority 32768, address 00d0.00b8.140a Designated port id is 160.196, designated path cost 0 Timers:message age 0, forward delay 0, hold 0 Number of transitions to forwarding state:1 The port is in the portfast mode by portfast trunk configuration Link type is point-to-point by default Bpdu filter is enabled Loop guard is enabled on the port BPDU:sent 0, received 0 Switch#
4、UDLD
當僅在一個方向上在鄰居之間傳輸流量時,會發生單向鏈接。單向鏈路檢測是第2層協議。 UDLD執行第1層機制無法執行的任務,例如自動協商。啟用UDLD和自動協商后,第1層和第2層檢測將一起工作,以防止物理和邏輯單向連接以及其他協議的故障。單向鏈接可能會導致生成樹拓撲循環。 UDLD使設備能夠檢測到何時存在單向鏈路並關閉受影響的接口。 UDLD在光纖端口上很有用,可防止網絡問題導致配線架接線錯誤,從而導致鏈路處於啟動/啟動狀態,但BPDU丟失。
啟用UDLD后,交換機會定期向其鄰居發送UDLD協議數據包,並期望在預定計時器到期之前回送這些數據包。如果計時器到期,則交換機確定鏈路是單向的,並關閉端口。如果在超時間隔(45秒)內未收到消息,則端口被禁用。每隔默認時間間隔(15秒)發送一次消息。
檢測單向鏈路和禁用端口所需的45秒時間少於STP將端口轉換為轉發狀態所花費的50秒時間,該時間基於最大年齡的20秒+聽力和學習的30秒。這樣可以避免由於缺少接收到的BPDU而導致STP將端口轉換為轉發狀態而導致的環路。
UDLD是在相鄰交換機之間啟用的第2層協議。它使用MAC 01-00-0c-cc-cc-cc和子網類型為0x0111的子網訪問協議(SNAP)高級數據鏈路控制(HDLC)協議。 UDLD數據包包含有關發送端口的設備ID和端口ID以及鄰居的設備ID和端口ID的信息。啟用了UDLD的鄰居設備會發送相同的Hello消息。如果雙方的設備都收到彼此的UDLD數據包,則該鏈接為雙向。如果端口在特定的持續時間(超時間隔)內未在傳入的UDLD數據包中看到其自己的設備和端口ID,則該鏈接被視為單向且被禁用。
由於以下原因,此UDLD echo算法允許單向鏈路檢測:
- 當鏈接兩端都連接好時; 但是,數據包僅由一側接收
- 當接收和發送光纖未連接到遠程側的同一端口時
UDLD框架由以下字段組成:
- Device ID – This field contains the MAC address of the sending device.
- Port ID – This field contains the module and port number of the sending device.
- Echo – This field contains the module and port pair known by the sending device.
- Message Interval – This field contains the transmit interval of the sending device.
- Timeout Interval – This field contains the timeout interval of the sending device.
- Device Name – This field contains the CDP Device ID string of the sending device.
- Sequence Number – This field contains the number used to validate discovery packets.
- Reserved – These fields are reserved for future use.
一旦UDLD檢測到單向鏈路,相應的端口將被禁用並保持禁用狀態,直到手動重新啟用它,或直到errdisable超時到期(如果已配置)為止。 UDLD可以在normal or aggressive下運行。
在normal模式下,如果UDLD停止從其直接連接的鄰居接收UDLD消息,則僅將啟用UDLD的端口更改為undetermined 狀態。 aggressive模式UDLD是UDLD的一種變體,當端口停止接收UDLD數據包時,UDLD會嘗試與鄰居重新建立連接。 重試八次失敗后,端口狀態將變為err-disable狀態,從而有效地禁用了端口。
在UDLD normal模式下,當檢測到單向鏈接條件時,允許端口繼續工作。 UDLD僅將端口標記為不確定狀態並生成系統日志消息。 換句話說,在正常模式下,UDLD不會采取任何操作,並且允許端口根據其生成樹狀態繼續運行。
在點對點鏈接上配置了UDLD aggressive模式。 在UDLD鄰居停止從其相鄰對等方接收UDLD更新之后,此模式開始起作用。 在主動模式下,本地設備將嘗試重新建立UDLD連接八次。 如果交換機無法在此時間內重新建立連接,它將禁用端口。
aggressive模式是配置UDLD的首選方法。 通過阻止這種單向通信,UDLD在生成樹網絡中很有用。 當由於硬件故障導致單向通信而應關閉鏈接時,請使用UDLD。 在EtherChannel捆綁軟件中,UDLD僅關閉發生故障的物理鏈路。 當端口卡住(一側既不發送也不接收;但是,鏈路在兩端都up)或鏈路在一側up而在另一側down 時,UDLD主動模式增加了額外的檢測。 僅在光纖連接上使用,因為銅纜端口通常不易受到此類問題的影響,因為銅纜端口使用以太網鏈路脈沖來監視鏈路。
要在將端口置於錯誤禁用狀態后將其up起來,在錯誤糾正之后,shu/no shu該受影響的接口即可。
針對全局或單個接口開啟UDLD
針對接口:
Switch(config-if)# udld enable [aggressive]
全局(為所有接口開啟):
Switch(config)# udld { enable | aggressive }
查看:
SwitchA#show udld gigabitEthernet 0/1 Interface Gi0/1 — Port enable administrative configuration setting: Enabled / in aggressive mode Port enable operational state: Enabled / in aggressive mode Current bidirectional state: Bidirectional Current operational state: Advertisement – Single neighbor detected Message interval: 15 Time out interval: 5 Entry 1 — Expiration time: 38 Device ID: 1 Current neighbor state: Bidirectional Device name: FOX01590RW1 Port ID: Gi1/1 Neighbor echo 1 device: FOX0872A001 Neighbor echo 1 port: Gi0/1 Message interval: 15 Time out interval: 5 CDP Device name: SwitchB
比較Aggressive Mode UDLD和Loop Guard。
Loop Guard和主動模式UDLD的功能重疊,因為它們都可以防止由單向鏈接引起的STP故障。 但是,這兩個功能在解決問題的方法和功能上是不同的。
主動模式UDLD與Loop Guard之間最明顯的區別在於STP。主動模式UDLD無法檢測到由未發送BPDU的指定交換機中的軟件問題引起的故障。攻擊性模式UDLD在檢測EtherChannel上的單向鏈路方面具有更強大的功能。 Loop Guard通過將EtherChannel設置為VLAN或所有VLAN的環路不一致狀態來阻止EtherChannel的所有接口發生故障,而激進模式UDLD會禁用出現問題的單個端口。此外,主動模式UDLD不依賴於STP,因此它也支持第3層鏈接。 Loop Guard不支持在交換機啟動時單向的共享鏈接或接口。如果端口在交換機啟動時是單向的,則該端口將永遠不會接收BPDU並成為指定端口。 Loop Guard不支持此方案,因為該行為與正常的STP操作無法區分。積極模式UDLD確實提供了針對此類故障情況的保護。
同時啟用主動模式UDLD和Loop Guard,可提供最高級別的保護,以防止多層交換網絡中的橋接環路和黑洞。
Refer to:http://ericleahy.com/index.php/bpdu-guard-bpdu-filter-root-guard-loop-guard-udld/