DLDP技術白皮書
Copyright © 2012 杭州華三通信技術有限公司 版權所有,保留一切權利。 非經本公司書麵許可,任何單位和個人不得擅自摘抄、複製本文檔內容的部分或全部, 並不得以任何形式傳播。本文檔中的信息可能變動,恕不另行通知。 |
在實際組網中,有時會出現單通現象,即一條鏈路上的兩個接口,有且隻有一端可收到另一端發來的鏈路層報文,此鏈路便稱為單向鏈路。圖1以光纖連接為例,示意了兩種單通情形:一種是光纖交叉相連,另一種是一條光纖未連接或斷路。
物理層的檢測機製(如自動協商機製)負責進行物理信號和故障的檢測。而在單向鏈路中,由於物理層仍處於連通狀態,因此物理層檢測機製無法發現設備間的通信異常,從而會導致錯誤轉發、環路等問題。而DLDP(Device Link Detection Protocol,設備鏈路檢測協議)能夠通過在鏈路層監控光纖或網線的鏈路狀態,檢測鏈路連接是否正確、鏈路兩端可否正常交互報文。當發現單向鏈路時,DLDP會根據用戶配置自動關閉或由用戶手工關閉相關接口,以防止網絡問題的發生。
作為鏈路層協議,DLDP可以在鏈路層進行對端設備識別、單向鏈路識別以及關閉單通接口等工作:
· 如果鏈路兩端在物理層都能獨立正常工作,DLDP會在鏈路層檢測該鏈路的連接是否正確、鏈路兩端可否正常交互報文,這種檢測不能通過自動協商機製實現。
· DLDP還可與物理層的檢測機製協同工作以監控鏈路狀態。物理層的自動協商機製可以進行物理信號和故障的檢測,二者協同工作,便可以檢測並避免物理和邏輯的單向連接。
假設接口A和B同處一條鏈路上,若A能收到B發來的鏈路層報文,便將B稱為A的DLDP鄰居,能夠互相收發報文的兩個接口互為鄰居。DLDP鄰居的狀態如表1所示。
表1 DLDP鄰居狀態
狀態 | 說明 |
Confirmed(確定) | 鏈路雙通時的DLDP鄰居狀態 |
Unconfirmed(未確定) | 發現新鄰居但未確認鏈路雙通時的DLDP鄰居狀態 |
使能了DLDP功能的接口簡稱DLDP接口。DLDP接口可以有一或多個DLDP鄰居,其狀態與各DLDP鄰居的狀態相關,具體如表2所示。
表2 DLDP接口狀態
狀態 | 說明 |
Initial(初始) | 當接口已使能DLDP,但全局尚未使能DLDP時的接口狀態 |
Inactive(非活動) | 當接口和全局均已使能DLDP,但鏈路物理down時的接口狀態 |
Bidirectional(雙通) | 當接口和全局均已使能DLDP,且有至少一個處於確定狀態下的鄰居時的接口狀態 |
Unidirectional(單通) | 當接口和全局均已使能DLDP,且沒有處於確定狀態下的鄰居時的接口狀態,處於此狀態的接口隻能收發DLDP報文 |
DLDP在工作過程中使用到的定時器如表3所示。
表3 DLDP定時器
定時器 | 說明 |
Advertisement發送定時器 | Advertisement報文的發送間隔(缺省為5秒,可配) |
Probe發送定時器 | Probe報文的發送間隔(固定為1秒) |
Echo等待定時器 | 對鄰居進行探測時會啟動此定時器(固定為10秒) |
鄰居老化定時器 | 每個新鄰居的加入都要建立鄰居表項,當鄰居處於確定狀態時啟動鄰居老化定時器,當收到鄰居的Advertisement報文時刷新鄰居表項的鄰居老化定時器。鄰居老化定時器的值是Advertisement發送定時器的值的3倍 |
加強探測定時器 | 若鄰居老化定時器超時,則啟動該鄰居的加強探測定時器(固定為1秒),同時啟動Echo等待定時器 |
DelayDown定時器 | 接口物理down時不會立即刪除所有鄰居,而是先啟動DelayDown定時器(缺省為1秒,可配),該定時器超時後再核對接口的物理狀態:若為down,則刪除DLDP鄰居信息;若為up,則不進行任何處理 |
恢複探測定時器 | RecoverProbe報文的發送間隔(固定為2秒)。處於單通狀態的接口會定期發送RecoverProbe報文來檢測單向鏈路是否恢複 |
進行DLDP認證,可以防止網絡攻擊和惡意探測,DLDP的認證模式如表4所示。
表4 DLDP認證模式
認證模式 | DLDP報文發送端的處理 | DLDP報文接收端的處理 |
不認證 | 將DLDP報文的認證字字段置為全0 | 將接收的DLDP報文的認證信息與本端配置進行比較,若一致則認證通過,否則丟棄該報文 |
明文認證 | 將DLDP報文的認證字字段置為明文認證密碼 | |
MD5認證 | 將DLDP報文的認證字字段置為用MD5算法加密後的密碼摘要 |
當兩台設備通過光纖或網線直接相連時,可以在這兩台設備之間啟用DLDP來檢測單向鏈路,此時這兩台設備的接口互為DLDP鄰居,因此稱為單鄰居檢測。下麵分兩種情況分別介紹單鄰居的單向鏈路檢測過程。
如圖2所示,在DLDP使能之前,Device A和Device B之間的光纖就已交叉連接。當DLDP使能後,處於up狀態的四個接口都進入單通狀態,並向外發送RecoverProbe報文。下麵以Port 1為例介紹單向鏈路的檢測過程:
· Port 1收到Port 4發來的RecoverProbe報文後,回複RecoverEcho報文。
· 由於Port 4無法收到Port 1發來的RecoverEcho報文,因此不會與Port 1建立鄰居關係。
· Port 3雖能收到Port 1發來的RecoverEcho報文,但由於該報文並不是回複給Port 3的,因此Port 3也不會與Port 1建立鄰居關係。
其它三個接口上的檢測過程與Port 1類似,這四個接口將始終處於單通狀態。
如圖3所示,Device A和Device B通過光纖相連。在DLDP使能之後,光纖連接起初是正常的,Port 1與Port 2之間的雙通鄰居建立過程如下:
· 處於物理up狀態的Port 1先進入單通狀態,向外發送RecoverProbe報文。
· Port 2收到RecoverProbe報文後,回複RecoverEcho報文。
· Port 1收到RecoverEcho報文後,發現該報文中攜帶的鄰居信息與本機的相同,於是與Port 2建立確定的鄰居關係,接口狀態由單通變為雙通,啟動該鄰居的老化定時器並定期發送Advertisement報文。
· Port 2收到Advertisement報文後與Port 1建立未確定的鄰居關係,為該鄰居啟動Echo等待定時器和Probe發送定時器,定期發送Probe報文。
· Port 1收到Probe報文後,回複Echo報文。
· Port 2收到Echo報文後,發現該報文中攜帶的鄰居信息和本機保存的相同,於是將鄰居狀態由未確定切換為確定,接口狀態則由單通切換為雙通,啟動該鄰居的老化定時器並定期發送Advertisement報文。
至此,Port 1與Port 2之間的雙通鄰居關係建立完畢。
此後,假設Port 2的Rx端突發故障而無法接收信號,該接口將物理down並進入非活動狀態,但此時由於其Tx端尚能發送信號給Port 1,因此Port 1還處於up狀態。Port 1在鄰居老化定時器超時後,將啟用加強探測定時器和Echo等待定時器,並向鄰居Port 2發送Probe報文;而由於Port 1的Tx端已斷路,Echo等待定時器超時後將收不到Port 2回複的Echo報文,於是Port 1進入單通狀態,並發送Disable報文通知對端。同時,Port 1刪除鄰居Port 2,並啟動恢複探測定時器以檢測鏈路是否恢複。在此過程中,Port 2將一直處於非活動狀態。
當多台設備通過Hub相連時,也可以在這些設備之間啟用DLDP協議來檢測單向鏈路,此時每個接口都會檢測到一個以上的DLDP鄰居,因此稱為多鄰居檢測。在多鄰居組網環境中,為了能正確檢測出單向鏈路,要求在所有與Hub相連的接口上都啟用DLDP,接口一旦發現沒有確定的鄰居,便進入單通狀態。
如圖4所示,Device A~Device D都通過一台Hub相連,各設備都支持DLDP。當Port 1、Port 2和Port 3發現與Port 4的連接出錯後,都將刪除該鄰居,但仍保持雙通狀態。
當DLDP檢測到單向鏈路時,可以采用以下兩種方式關閉單通接口:
· 自動模式:在此模式下,當DLDP檢測到單向鏈路時會自動關閉單通接口。
· 手動模式:在此模式下,當DLDP檢測到單向鏈路時不會直接關閉單通接口,而是需要用戶手工將其關閉;當單向鏈路恢複為雙向鏈路後,還需要用戶手工將其打開。當網絡性能較差、設備業務量較大或CPU利用率較高時,都容易造成DLDP對單通的誤判而自動關閉接口,手動模式就是為了避免這種誤判而采取的一種折中方案。
當單向鏈路恢複雙通後,可以通過以下兩種方式使接口恢複正常工作:
· 對於被網絡管理員手動關閉的接口,需要使用undo shutdown命令手工打開。
· 對於被係統自動設置為DLDP DOWN狀態的接口,鏈路自動恢複機製可自動檢測到DLDP鄰居恢複並重新打開該接口。
其中,鏈路自動恢複機製可使處於DLDP DOWN狀態的接口在鏈路恢複後自動從此狀態中恢複,具體過程如下:
(1) 處於DLDP DOWN狀態的接口每2秒向外發送一次RecoverProbe報文,該報文中隻攜帶本接口的信息。
(2) 對端接口如果收到該報文,則回複RecoverEcho報文作為應答。
(3) 本端接口收到RecoverEcho報文後,檢查該報文中攜帶的鄰居信息是否與本接口的信息相同。如果相同,便建立鄰居表項,設置鄰居狀態為Confirmed,本端接口的狀態從Unidirectional遷移到Bidirectional,並開始定期發送Advertisement報文。
在應用DLDP時需要注意:
· 為了防止網絡攻擊和惡意探測,用戶可以對DLDP報文進行認證,認證方式分為明文認證和MD5認證。為確保檢測出單向鏈路,要保證兩端設備的認證方式和認證口令相同。
· 為確保檢測出單向鏈路,要保證兩端設備的DLDP處於使能狀態、Advertisement報文發送時間間隔相等。
· 為了使DLDP在不同的網絡環境下都能及時發現單向鏈路,需要合理調整Advertisement報文的時間間隔。如果設定的時間太長,DLDP協議不能及時關閉單向鏈路;如果設定的時間太短,會增加協議報文數量,並且在網絡環境不好的情況下,由丟失協議報文導致的誤檢測幾率會提高。
· DLDP運行在聚合和STP之下,協議報文的收發不受聚合非選中以及STP阻塞的影響。
· 使能了DLDP功能的設備之間可以通過透傳設備(如Hub或未啟用DLDP的設備)相連。透傳設備將DLDP協議報文作為數據報文處理,此時聚合非選中以及STP阻塞會影響DLDP協議報文的轉發,進而可能會引起DLDP狀態機震蕩。
典型的DLDP組網應用如圖5所示。Device A和Device B通過光纖相連,Port 2的Rx端所在線路斷路,Port 2處於物理down狀態。但是,由於Port 1檢測不到這種情況,仍向Port 2發送數據報文,這樣就會造成數據報文的丟失。
為了檢測出此單通情況,可以在這兩台設備上都配置DLDP功能。當DLDP檢測出單向鏈路後,會自動斷開單向鏈路,就避免了數據報文的丟失。在網絡管理員修複鏈路之後,單向鏈路會自動恢複為正常狀態,繼續轉發報文。
圖5 DLDP典型應用組網圖