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