■ 枝江市職業教育中心 楊華 李善斌
編者按:本文系統探討了造成網絡物理環路的成因以及相關的檢測機制,并通過模擬大量實驗,對比了主要廠家設備的特點。
關于物理環路,大家很自然想到生成樹STP協議。其實STP主要是為了實現鏈路冗余,而現實中物理環路的情況非常復雜,而STP 只是解決了其中一種,如圖1 ~3所示。STP 協議只能解決圖中部分的環路,如果交換機下聯的傻瓜交換機出現環路,一樣會影響到上級交換機造成上層交換機網絡癱瘓,并且STP協議無法解決這種問題,此時必須使用其他解決方案來解決。而不同的設備廠商也有不同的技術措施。
筆者根據多年的實踐經驗,利用手中現有真實設備,模擬了大量實驗,并總結如下。
如圖1 ~3所示。
圖1 設備下掛網絡環路
圖2 設備所在網絡環路
圖3 設備接口自環路
在此物理環境下,思科交換機有多種檢測機制可以檢測,有時系統會直接給出如下內存錯誤提示信息。登錄監控系統查看這臺交換機各個端口的使用率,有的端口占用率竟然高達90%。
主要原因是環路引發的廣播風暴崩潰了系統,還來不及顯示精確的錯誤信息(是由哪種機制檢測出來的),但可以通過err-disabled項查詢,如圖4 所示。
(1)環路自檢測
以上信息就明確表示由于檢測到第37 端口出現了環路,所以將該端口置于了err-disable 狀態。
(2)思科獨有二層鄰居發現協議CDP
以上信息就明確表示由于檢測到第29 端口收到自己發出的CDP 協議包,認定此端口號下聯環境有環路存,所以將該端口置于了err-disable 狀態。
(3)思科獨有二層動態中繼協議DTP
以上信息明確表示由于檢測到第35 端口收到自己發出的DTP 協議包,本來是用來發出去進行中繼,但又轉回來了,認定此端口號下聯環境有環路存,所以將該端口置于err-disable 狀態。
(4)生成樹協議端口保護功能
在全局或在接口號下開啟portfast:
圖4 通過err-disabled 項查詢下連設備物理自環
圖5 通過端口流量發現環路風暴
以上信息就明確表示由于檢測到第45 端口收到自己發出的BPDU 協議包,本來是用來防止下聯端口接入了其它的交換機設備,改變了之前的生成樹的拓樸結構,但因為環路又轉回來了,認定此端口號下聯環境有生產樹產生的BPDU,所以將該端口置于了err-disable 狀態。
注意:以上幾種情況可能根據思科具體產品不同觸發機制會不一樣了,再加上人為修改了觸發時間,可能也不一樣了。
端口直接不會UP 起來,不清楚是什么原理。思科的設備不知做了什么技術偵測,直接跟DOWN,可能它認為,自環本身就是一個錯誤,直接不讓它發生。
如圖5 所示。
(1)如果只有一臺設備的一個端口出入方向流量較大,可能是單端口環回。
(2)如果只有一臺設備的兩個端口流量較大,可能是本設備兩個端口環回,如上所示。
(3)如果某端口只有單方向流量,需要重點排查,該端口下設備可能存在環路。
分析:使用體驗不好,因為真正發生環路風暴后,交換機系統CPU 使用過載,無法正常使用命令調試查看。
對于端口配置了廣播抑制,或單環、半環場景,流量無法產生風暴,則還可通過MAC 漂移檢測來判斷是否存在環路,任何二層環路都會伴隨持續MAC 地址漂移。如下所示,如果設備一直打印該告警,GE3/0/5 和GE3/0/6端口之間可能存在環路。
華為主要是通過Loop Detection 以及Loopback Detection 這兩種技術來檢測各種二層環路。它們都是一種通過周期性發送環路檢測報文來檢設備下掛網絡環路、設備所在網絡環路、設備接口自環路,并能及時發送告警,自動找出問題的接口受控,從而減小環路對本設備乃至網絡的影響。
這個應該是一個公共協議判斷,所有設備都支持,雖然其本意不是判斷環路。
如下所示,在端口10 上發現了BPDU 報文,迅速把它置于blocked 狀態。
H3C 與華為設備的環路檢測比較相似,下面探討一下關于對于不同端口屬性的環路處理。
在全局下開啟環路檢測并設置檢測間隔時間:
當網絡中真出現環路時,可以用以下命令查看環路來自哪個端口:
缺省情況下,系統只在Trunk 端口或Hybrid 端口所屬的缺省VLAN 內進行環回監測。如果要對trunk 或hybrid 接口上的所有VLAN 進行環路檢測,則需要使用以下命令開啟多VLAN 檢測功能。注意,loop back-detection per-vlan enable 命令對Access端口無效。
例如,如果想讓交換機trunk 端口g1/0/16 下的所有VLAN 中執行網絡環回監測操作,必須進行以下配置操作:
進入接口視圖:int G1/0/16
輸入命令:loopback-det ection per-vlan enable
或loopback-detection enable vlan
交換機就能在Hybrid 端口和Trunk 端口所屬的所有VLAN 中執行網絡環路監測。
當檢測到端口存在環回后,首先會上報錯誤信息,提示某端口在某VLAN 中存在環回情況。如果配置了端口要進入受控狀態,則會設置該端口不再學習MAC 地址,端口的流量和其它端口隔離,從而進入該端口下存在環路而不影響其它端口的狀態。
推薦配置:
設備的上行端口(trunk)打開環回檢測,但是配置該端口不受控。這樣,當該端口檢測到某個VLAN 存在環路后,僅僅上報環回的trap,但不會使端口進入受控狀態。這樣,一些VLAN 的環路則不會影響別的VLAN 中的業務。
對于下行端口和用戶端口,打開環路檢測,且配置端口受控。
RLDP 技術是銳捷自己研發的一種鏈路監測機制,一般應用在接入交換機,它不僅僅能夠檢測環路故障,還可以檢測單側鏈路故障和雙側鏈路故障。
環路故障原理:交換機某個端口可以收到自己的探測報文。
以下是完整的配置命令:
Rujijie(config)#rldp enable 全局開啟RLDP 功能
Rujijie(config)# inter face range g0/1-24 對于下聯PC 或HUB 的端口需要開啟,不要在接入交換機的上聯口開啟該功能
Rujijie(config-if-ra nge) #rldp port loop-dete ct shutdown-port 接口開啟RLDP 功能,如果檢測出環路后showdow 該端口
Rujijie(config)# err disable recovery interval 300 如果端口被RLDP 檢測并shutdown,再過300 s 后會自動恢復,重新檢測是否有環路
建議:環路檢測處理機制是當系統檢測到端口出現環路時不同廠商設備都有不同的處理機制,比如上報錯誤信息、處于阻塞狀態、直接Shutdown、自動恢復、生成日志信息等。選擇合適的處理機制,將會影響到整個網絡的性能。當網絡中存在環路時,為防止大量報文的沖擊,設備會丟棄部分報文。而如果環路檢測報文也被丟棄,設備在端口狀態自動恢復功能的作用下會誤判定環路已消除。在這種情況下,建議將環路檢測的處理模式配置為Shutdown 模式,或當設備提示出現環路時通過手工排查來消除環路。
從以上幾個廠商的設備分析不難看出,華為針對二層的環路故障做了很多技術保障,在細節上很用心,為不同用戶都提供了合適的解決方案;華三也是在基于端口的特征及VLAN 屬性上進行精準檢測,但在實驗上感覺不是很明確,可能沒有達到一定的規模。CISCO 設備在鏈路故障檢測和設備智能化的配置上下足了功夫,對設備后期的維護很精準,當然對設備本身的硬件配置提出了更高要求,再就是部分協議是私有的,不具有通用性,與其它廠商設備在一起可能會導致一些不確定故障。