大部分交換機都會有自我診斷的功能。當交換機或者交換機端口由于某些原因出現故障的時候,都會通過指示燈來告知管理員存在的錯誤。不過有些時候交換機也會存在誤診斷的情況。如交換機的端口工作指示燈明明表示正常,但是用戶卻反映網絡不通。如果只是普通的用戶,問題還不是很大。但是如果這個端口恰巧是用來進行備份的,那么情況就會比較糟。為了避免這種情況,在實際工作中很多網絡管理員都喜歡采用交換機的UDLD模式來消除交換機的這種誤診斷。
一、什么情況下會出現誤診斷?
誤診斷的情形主要是即使當鏈路或者交換機的端口指示燈正常的(即端口的狀態(tài)是UP的),但是接口仍然無法正常傳遞數據流量。通常情況才將這種錯誤稱之為單向鏈路。一般情況下,當出現接口故障、軟件故障、硬件失效或者其他異常原因的時候,就會出現這種錯誤。憑現在的技術手段,交換機還不能夠從根本上避免這種錯誤的發(fā)生。為此只有采取其他的方式,加強對交換機端口的檢測,以盡早發(fā)現這種錯誤。在思科系列的交換機上,就采用了UDLD模式來解決這種情況下的誤診斷。
UDLD從理論上來說,其是在第二層工作的協議。不過從實際情況來看,其往往跟第一層的內容有很深的關系。也就是說,UDLD模式不光光在第二層運作,其還會跟第一層的相關機制協同工作,才能夠完成。其主要的思路就是UDLD協議運行在第一、二層之間,最終確定鏈路的實際工作狀態(tài)。當發(fā)現有“鏈路UP狀態(tài)正常,但是沒有傳遞流量”的時候,UDLD協議會馬上報警。具體的說,在第一層中通過自動協商功能來觀測物理信令等相關的參數運作。而UDLD協議則會完成一些自動協商機制不能夠執(zhí)行的任務。讓自動協商發(fā)現物理信令有異常的時候,不會自動將端口從UP狀態(tài)轉換為其他狀態(tài),從而導致了單向鏈路的故障。而UDLD協議能夠接受來自自動協商機制傳遞來的參數,然后再發(fā)現故障的時候及時的將交換機端口處于關閉狀態(tài)?梢,UDLD模式所采用的不只只是一種協議,而是UDLD協議與自動協商機制相互作用的結果。如果網絡管理員要啟動UDLD模式的話,那么就必須要同時啟用UDLD協議和自動協商機制,在第一層與第二層中通過他們的各司其責、協同工作,來防止物理上或者邏輯上的單向連接,從而從根本上消除交換機的誤診斷。
網絡管理員需要明白的是,UDLD并不是交換機原有診斷體系的補充,而是一種獨立的診斷方法。也就是說,它是從另一個角度對交換機各個端口的運行狀態(tài)進行自我診斷。兩者之間基本上沒有沖突或者重疊的地方。在實際工作中,傳統(tǒng)的診斷方法與UDLD模式經常是同時使用。
二、合理配置UDLD模式下的各種參數。
如果同時啟用了UDLD協議與自動協商機制,就啟動了UDLD模式,在這種情況下,交換機的某個接口會定期的向鄰近的端口發(fā)送UDLD協議數據報。在正常情況下,交換機的這個接口會在預定計時器到期之前接收到回應的數據包。如果在這個計時器到期之前,交換機發(fā)送UDLD數據包的接口還沒有收到回應信息,則UDLD協議就會認為出現了故障,即發(fā)生了單向鏈路的故障(其實更加精確的說,應該是自動協商發(fā)現了這個故障并告知了UDLD協議)。當UDLD知道這種情況后,會馬上關閉有問題的交換機接口。
在UDLD配置的時候,首先需要考慮這個計時器。也就是說,將這個時間設置為多少為好。如果時間設置的比較短,不僅會造成不必要的數據流量,而且也有可能因為數據延遲等原因導致無法在合理的時間內接到回應的數據包。而如果將這個計時器的時間設置的比較長的話,那么就可能無法在短時間內發(fā)現問題。要知道,可能一分鐘對于用戶來說,沒有多少感覺。但是對于數據網絡傳輸來說,這個時間就很長了。默認情況下,這個計時器是15秒。在實際工作中,網絡管理員可能需要根據不同的情況來合理設置這個參數。如需要根據企業(yè)網絡的復雜情況、布線的長短來考慮。如根據以前的情況,企業(yè)可能經常會遇到網絡堵塞等情況,而這種堵塞也是暫時的,那么要適當延長這個計時器等等。筆者的建議是在剛開始的時候可以將這個計時器設置的長一點,然后慢慢的減短。最后得到一個合理的數值。
三、提高端口的適用性。
在采用普通接口的情況下,當某個接口因為接收不到UDLD回應消息時,接口就會關閉。這也有一種缺陷。如企業(yè)可能會有網絡擁塞,如因為臨時備份等等導致擁塞等等。此時在發(fā)送端可能無法在計時器到期之前收到回應的信息。那么遇到這種情況時,如果將交換機的端口就設置為關閉,顯然就會引起不比要的麻煩。網絡管理員希望能夠給網絡“改錯”的機會。為此在原有UDLD模式的基礎上,思科交換機又提出了積極UDLD模式的概念。兩個模式的差異主要就在于后者給了網絡一個改錯的機會。
在積極UDLD模式下,當交換機接口發(fā)現無法正常收到UDLD回應信息的時候,并不會馬上將這個端口設置為關閉狀態(tài),而會繼續(xù)發(fā)送UDLD數據包。通常情況下,UDLD數據包會發(fā)送八次。如故發(fā)送八次之后仍然無法收到UDLD數據包的話,那么UDLD協議就會將這個端口狀態(tài)改為Err-disable狀態(tài)。如果在這個間斷的時間內,發(fā)送端口能夠收到任何一個回應信息,就會認為是正常的。很顯然,如果采用積極UDLD模式,就可能有效的避免因為網絡擁塞而導致的誤判問題。
采用積極UDLD模式的另外一個原因就是路由黑洞。什么叫做路由黑洞呢?這個定義不怎么好說,筆者就舉一個例子。如第3層或者路由接口正在經歷單向鏈路時,此時接口匯保持在UP狀態(tài),所以交換機就會繼續(xù)將流量轉換到這個接口。但是最終的結果是數據包將永遠達不到遠端設備的對應接口之上。這就是路由黑洞的一個簡單例子。如果采用傳統(tǒng)的UDLD模式,還不能夠很好的避免這種情況下。相反,如果采用積極UDLD模式,就可以有效的避免路由黑洞導致的網絡故障。
積極的UDLD模式除了在發(fā)送信息的次數上比較特殊之外,還有以下兩個特殊的地方。一是當鏈路的一側端口發(fā)送擁塞時,積極模式的UDLD協議也會將端口設置為Error狀態(tài),并顯示相關的措施信息。而采用傳統(tǒng)UDLD模式對這種情況不會有任何反應。二是當鏈路的一側端口處于UP狀態(tài),而另一側處于Down狀態(tài)時,如果采用的是積極UDLD模式,則會顯示錯誤信息,并將端口設置為錯誤狀態(tài)。而如果采用傳統(tǒng)UDLD模式的話,則不會有任何反應。這也正是筆者上面所講的通過積極UDLD模式來解決上路有黑洞的原因。
四、故障恢復后重新啟動交換機接口。
無論采用的是傳統(tǒng)的UDLD模式,還是采用的是積極的UDLD模式,有一個共同點,即只要將端口設置為Error-disable狀態(tài)后,即使故障解決了,交換機也無法自動恢復接口。換句話說,當出現這種情況時,網絡管理員需要手工恢復接口。一般的做法是,先將端口利用命令shutdown關閉掉,然后再利用命令no shutdown進行啟用。
總之,只要交換機支持,就啟用UDLD模式,甚至可以啟用積極UDLD模式,就可以有效的避免單向鏈路的誤診情況。特別是采用積極模式的UDLD,那么路由黑洞這個網絡難題也可以迎刃而解。