引言: 近期,單位的局域網出現兩個樓層辦公室無法訪問網絡的現象,經過排查,是因為交換機端口出現errdisable故障,導致端口不能正常工作。這種故障不是常見的網絡故障,因此排除故障需要針對具體情況來處理。
周一上班時,正是網絡使用高峰時段,有兩個樓層的辦公室人員反映上不了網。通過Ping兩個樓層的交換機管理地址,不通。到現場檢查,這兩個樓層的其他設備工作正常,故障樓層各有一臺交換機上聯的光端口指示燈熄滅,懷疑近期單位安裝樓道監控設備,在施工時不小心將機柜中光纖配線架上其中的一對光纖扯斷,導致中心機房到樓層的光纖線路中斷,或是因為光模塊故障,導致設備上聯鏈路不通,與此相連的終端無法訪問局域網。
由于是網絡使用高峰時間,必須盡快使網絡恢復暢通。筆者采用了應急的辦法,到現場用網線或Console線登錄到故障交換機,將其中一個以太網端口設為Trunk口作為上聯端口,將原來的上聯光模塊的端口Shutdown防止環路產生,并將同一樓層的另一臺正常上網交換機其中一個以太網端口設為Trunk口,兩個端口用一根網線連接,將故障交換機的業務流量合并到另外一臺交換機上,訪問局域網。另外一個樓層也采取同樣方法,設定好以后,兩個樓層辦公室都能正常上網。

圖1 端口故障
隨后,請專業的光纖施工人員到現場檢查光纖,從中心機房的光纖配線架到故障樓層機柜的光纖配線架,找出故障的一對光纖。這是一對多模光纖,跳線為62.5/125 3M ST-SC光纖,通過一邊打光,另一端用肉眼能看到對端發過來的光,測量光衰為15.4db,屬正常。樓層交換機光模塊是Cisco的GLC-SX-MM的SFP模塊,波長850NM,傳輸距離550m,用備份同型號光模塊替換后,在非生產時間打開交換機端口測試,故障依舊。初步可以排除中心機房至樓層配線間的光纖線路問題和樓層交換機及上聯光模塊問題。
到中心機房核心交換機處,檢查連接以上兩個故障樓層的光纖連接的交換機端口,發現這兩個端口 為tenGigabitEthernet 2/2/5和tenGigabit Ethernet2/2/6,它們都在同一個交換機模塊上(Cisco DCEF2T4port 40GE/16 port 10GE WS-X6904-40G),端口指示燈顯示橙色,而連接其他樓層交換機的端口指示燈為綠色,說明這兩個交換機端口處于errdisable狀態(如圖 1)。
通過查閱資料,交換機端口出現errdisable有以下幾個常見的原因:
1.Ether Channelmisconfiguration,當FEC兩端配置不匹配的時候就會出現err-disable。假設一端交換機把FEC模式配置為on,這時它不會發送PAgP包和相連的另一臺交換機去協商FEC的,如果另一臺交換機沒有配置FEC,當超過1分鐘后,這臺交換機的STP就認為有環路出現,因此也就出現了err-disable。解決辦法是,把FEC的模式配置為channel-group1mode desirable non-silent,這個意思是只有當雙方的FEC協商成功后才建立channel,否則接口還處于正常狀態。
2.Duplex mismatch,就是由于兩端雙工模式不匹配,導致鏈路errdisable。解決方法是,將兩端設置雙工模式一致,如都設成fullduplex。
3.BPDU port guard。與portfast和BPDU guard有關。如果一個接口配置了portfast,那也就是說這個接口應該和一個PC連接,PC是不會發送spanningtree的BPDU幀,管理員又在同一接口上配置了BPDU guard來防止未知的BPDU幀以增強安全性,如果把一臺交換機接到這個同時配置了portfast和BPDU guard接口上,于是這個接口接到了BPDU幀,因為配置了BPDU guard,這個接口自然要進入到err-disable狀態。解決辦法是 :no spanningtree portfast bpduguard default,或者直接把portfast關掉。
4.UDLD UDLD是Cisco的私有二層協議,用于監聽利用光纖或雙絞線連接的以太鏈路的物理配置,當出現單向鏈路(只能向一個方向傳輸,比如我能把數據發給對端,對端也能收到,但是對端發給我的數據收不到)時,UDLD可以檢測出這一狀況,關閉相應接口并發送警告信息。當AB兩端都配置好UDLD后,A給B發送一個包含自己port id的UDLD幀,B收到后會返回一個UDLD幀,并在其中包含了收到的A的port id,當A接收到這個幀并發現自己的port id也在其中后,認為這鏈路是好的。反之就變成err-disable狀態了。假設A配置了UDLD,而B沒有配置UDLD:A給B發送一個包含自己 port id的幀,B收到后并不知道這個幀是什么,也就不會返回一個包含A的port id的UDLD幀,那么這時候A就認為這條鏈路是一個單向鏈路,自然也就變成errdisable狀態了。
5.Link-flap error就是鏈路的抖動,當鏈路在10秒內反復Up、Down五次,那么就進入err-disable狀態。
6.Loopback error在12.1EA之前,默認情況下交換機會在所有接口都發送keepalive信息,如果一個接口又收到了自己發出的keepalive,說明存在環路,這個接口就會變成errdisable了。解決辦法是,把keepalive關掉,或者把iOS升到12.2SE。
7.Portsecurity violation Cisco port security violation有三種模式:(1)protect(2)restrict(3)shutdown,前兩種模式只丟棄違規的數據流量,不違規的正常轉發,shutdown是默認模式,當違規時,將接口變成error-disabled并shut down,并且接口指示燈會關閉,也 會發 SNMP trap,并會記錄syslog。如果端口errdisable,就是由于配置了port-security violation shutdown。
發生端口errdisable后,可以通過show interfaces status err-disabled查找產生的具體原因,比如是loopback造成的,在排除環路后,可在配置模式下errdisable recovery cause loopback,恢復時間一般為300秒,不用重啟交換機的情況下,使交換機端口恢復到正常狀態。
但是,當輸入命令sh interface status errdisabled時,顯示兩個端口故障原因是diagnostics(如圖2),不能使用命令errdisable recovery cause ?來恢復端口,輸入命令sh logging查看日志,結果顯示有兩個端口進入errdisable狀態,再輸入命令sh diagnostic result switch all failure detail和 sh module switch 2,結果如圖3所示。

圖2 err-disable原因及系統日志

圖3 診斷信息
由此可見,由于兩臺Mar 05 2017 17:08:28做TestPortTxMonitoring在線監測時,由于switch2module 2(DCEF2T4port 40GE/16 port 10GE),其中switch2的WS-X6904-40G模塊硬件故障,導致Switch2Module 2的Te2/2/5和Te2/2/6端口測試首次失敗。在連續進行了5次測試都失敗后,系統將Te2/2/5和Te2/2/6兩端口設成errdisable狀態。Cisco 6506E組成一個VSS虛擬交換機系統,系統于

圖4 修復后VSS狀態
知道了故障產生的原因后,問題就迎刃而解。分別進入核心交換機tenGigabitEthernet 2/2/5和tenGigabitEthernet 2/2/6接口,在接口配置模式下,shut,no shut,然后輸入命令 :sh interface status err-disabled,發現沒有端口處于errdisable狀態了,輸入sh diagnostic result switch2module2failure,結果顯示 PASS,輸入 sh module switch 2,結果顯示switch2的模塊1、2、5的在線診斷狀態均為Pass(如圖4),說明模塊和端口故障解除。當樓層交換機上聯光端口no shut恢復后,發現在核心交換機端仍然不能Ping通樓層交換機管理地址,于是將核心交換機重啟,問題徹底解決,核心及兩個故障的樓層交換機均能正常通信。
出現交換機端口errdisable狀態時,不能按照常規思路去排查問題,而要從實際情況入手,查明原因,再排除故障。上面一例既不是因為網絡中出現環路,也不是因為端口抖動等原因導致errdisable,如果一味地查找網絡有無環路,或有無抖動,就會誤入歧途。要充分利用Cisco設備提供的sh命令和日志功能查找故障原因,做到有的放矢,針對不同的故障采取不同的辦法,使問題盡快解決。