簡介
當鏈路僅在一個方向工作時出現一個有趣的問題。這種在一個方向工作的鏈路稱為單向鏈路(UDL),由於它們需要交換信息(例如PPP配置訊息),因此很多協定在這種情況下不能正常運行。為了解決這種問題提出了一種標準,可在輔助Internet接口上創建隧道,它可與UDL操作相結合。典型情況是由衛星提供下行流量(流向用戶)而形成一條Internet連線,或者是數據機提供上行流量而形成一條撥號鏈路。這在衛星連線的用戶主要是下載而不是上傳的情況下是有用的,並且通常用於早期的衛星Internet連線。它使用GRE將鏈路層的上行流量封裝在IP分組中。
為了在接收方自動建立和維護隧道,規定了一種動態隧道配置協定(DTCP)。DTCP涉及在下行鏈路中傳送組播Hello訊息,因此任何有興趣的接收方都可知道已有UDL及其MAC和IP位址。另外,Hello訊息表示網路中一個隧道端點的接口,它可通過用戶端的輔助接口到達。在用戶選擇隧道端點之後,DTCP在GRE隧道中將同一MAC作為UDL封裝返回流量。服務提供商接收由GRE封裝的這些第2層幀(通常是乙太網),將它們從隧道中提取並適當轉發。因此,上游(提供商)UDL需要手工配置隧道,下游(很多用戶)自動配置隧道。注意,這種UDL處理方法實際上是為上層協定不對稱地“隱藏”鏈路。因此,這條鏈路“兩個”方向上的性能(延遲、頻寬)可能非常不對稱,並可能對高層協定產生不利影響 。
產生原因
在實際組網過程中,為確保網路的高可用性和穩定性,通常在骨幹網網路建設環節採用冗餘傳輸通道部署的方式,即設備與設備之間互聯不只是通過單條光纖通道,而是存在2條或更多的光通道共同組建傳輸通道,即由多條物理鏈路共同組成1條邏輯鏈路以實現通信目的,由此產生多鏈路通道狀態檢測的問題。單向鏈路產生原因示意如圖1所示。由圖1可知,網路設備A與網路設備B之間通過2組光纖通道組建的傳輸通道進行互聯通信。當通信通道所連線網路設備的其中一組光通道中的TX中斷,另一組中的RX中斷時,2台網路設備捆綁了冗餘鏈路,因此之間的互聯通道不會中斷,從而使網路設備A(本端)能接收網路設備B(對端)傳送的報文信息,但網路設備B(對端)無法接收到網路設備A(本端)傳送的報文信息,給網路故障點的排查工作造成一定影響和干擾,同時還會引起網路環路等問題。
單向鏈路的產生原因主要有2種:①任意一組光纖中的一條未連線或斷路;②任意2組光纖之間交叉連線。圖1為任意一組光纖中的1條未連線或斷路的情況。單向鏈路類型示意如圖2所示。由圖2可知,正常情況下,由2條物理鏈路(收、發4對)所組成的邏輯鏈路可滿足網路設備A與網路設備B之間的數據高速、穩定傳輸;後2種情況表明,一旦物理鏈路存在問題或故障,均會導致單向鏈路傳輸的現象。實際套用中由於組網結構過於複雜,鏈路傳輸介質不單一等因素,均會產生單向鏈路問題,且對網路尤其是環網鏈路的生成樹協定(Spanning Tree Protocol,STP)、開放式最短路徑 優先(Open Shortest Path First, OSPF)協定收斂等造成一定影響。所以一旦發生,應及時排查和消除隱患,同時考慮實際運行環境的複雜性,在實際運維中需要具體情況具體分析,逐項排查。
單向鏈路的檢測
單向鏈路檢測(UDLD)用於檢測和禁用光纖接口上由錯誤的光纖連線或者連線埠故障所導致的單相鏈路。
UDLD協定使通過光纖或銅線(例如:第5類電纜)乙太網線纜連線的設備可以監控線纜的物理配置,檢查是否存在單向鏈路。檢測到單向鏈路時,UDLD協定會關閉受影響的連線埠並向用戶發出警報。
UDLD是一種第2層協定,它與第1層機制協同工作來確定鏈路的物理狀態。在第1層中,自動協商功能將照顧 到物理信令和故障監測。UDLD能夠執行自動協商不能執行的任務,例如監測鄰居身份和關閉連線不當的連線埠。當同時啟用自動協商和UDLD的時候,第1層和第2層監測將協同工作來防止物理或邏輯上的單向連線,並且還可以其他協定的故障。
兩種模式
UDLD有兩種模式:通常模式和廣泛模式。通常模式是默認的,當監測吉比特接口出現了故障,它會監測到單向性鏈路,防止出現問題。如果某個連線埠連線正確沒有故障,但只是傳輸是單向的,UDLD不會監測到單向鏈路,因為第1層機制沒有問題,它也不會非法這個連線埠。
廣泛模式下,當出現一下情況時,它會監測到單向鏈路,它將非法連線埠:
•一個光纖吉比特連線埠或雙絞線鏈路中,其中一個連線埠不能傳送或接收數據包
•一個光纖吉比特連線埠或雙絞線鏈路中,其中一個連線埠斷了而其他連線埠是活動
•一個光纖線纜的一頭連線錯誤
積極模式UDLD是UDLD的一種變種,它能夠提供額外的好處。在啟用積極模式UDLD的情況下,當連線埠停止接收UDLD數據包的時候,UDLD將嘗試重 新建立與鄰居的連線。但如果嘗試次數超過8次之後,那么連線埠狀態就將變更為“error-disable”狀態,它將有效地禁用連線埠。
udld的算法
學習鄰居的信息並將信息保存在一個本地cache中,一但檢測到一個新的鄰居或一個鄰居請求重新同步cache時,就傳送一系列的udld probe/echo(hello)包。
UDLD在所有連線埠上持續的傳送probe/echo信息,當在連線埠上收到一個UDLD回響信息時觸發一個“detection-phase”和驗證進程。如果所有的有效條件都達滿足(連線埠是雙向連線,並且線纜正確),這個連線埠被啟用。否則,該連線埠被禁用,並觸發如下所示的syslog信息:
"udld-3-disable: unidirectional link detected on port mod/port. port disabled"()
"udld-4-onewaypath: a unidirectional link from port mod/port to port mod/port of device [chars] was detected"
一但一個鏈路建立起來並被標誌為雙向的,UDLD會繼續每隔15秒傳送一個probe/echo信息。
1.鄰居資料庫維護(neighbor database maintenance)
UDLD在每個活動的接口上周期性的傳送probe/echo包,以維護鄰居快取的完整性。一端收到一個hello信息,將它快取到記憶體中,並保存一個通過hold-time定義的時間間隔。如果一個hold-time逾時,相應的cache被清空,如果在hold-time定義的時間間隔內收到新的hello信息,則新的替代老的,並將計時器清零。
為了維護udld cache的完整性,一旦一個啟用了UDLD的接口被禁用,或該接口上的設備被重啟,該接口存在的所有快取均會被清除,UDLD傳送至少一個信息讓鄰居清空回響的快取條目。
2.回顯監測機制
回顯機制構成了檢測算法的基礎。一旦一個UDLD設備學習到了一個新的鄰居或從一個非同步狀態的鄰居收到一了個重新同步的請求。它將啟動或重啟本端的檢測視窗,並傳送一個完全同意的回顯信息。由要求所有的鄰居都必須有這個相應的行為,回顯的傳送者期待收到一個回響的echos。如果檢測視窗結束,而沒有合法的回響信息收到,這個鏈路被認為是單向連線。就觸發鏈路重連線或連線埠shutdown進程。
在啟用UDLD的情況下,交換機將定期地向鄰居傳送UDLD協定數據包,並且期望在預定計時器到期之前接收到回應的數據包。如果計時器到期,那么交換機將確定該鏈路是單向鏈路,並且關閉該連線埠。