單向鏈路

單向鏈路

在信息網路城域骨幹網建設實際組網過程中,會出現一種特殊的現象,即單向鏈路(或單通道)。單向鏈路是指在由一組冗餘通道所構建的點對點傳輸模式的信息網路中,本端設備可通過鏈路層收到對端設備發送的報文,但對端設備不能收到本端設備的報文。

簡介


當鏈路僅在一個方向工作時出現一個有趣的問題。這種在一個方向工作的鏈路稱為單向鏈路(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協議數據包,並且期望在預定計時器到期之前接收到回應的數據包。如果計時器到期,那麼交換機將確定該鏈路是單向鏈路,並且關閉該埠。