在談路由協議之前,我們先來看一下路由器的結構:
路由器是一種具有多個輸入端口和多個輸出端口的專用計算機,其任務是轉發分組。
路由選擇部分的核心是路由處理機,路由處理機可以根據選定的路由協議構造出路由表,同時經常或定期和相鄰路由器交換路由信息來更新和維護自身的路由表。
分組轉發部分包括一組輸入端口、交換結構和一組輸出端口。交換結構又稱交換組織,它的作用就是根據轉發表把收到的IP數據報從路由器合適的端口轉發出去。交換結構可看成一個在路由器中的網絡。
因為筆者主要研究WMN,所以首先從WMN的路由協議說起,但是WMN路由協議很多都是借鑒有線網絡的路由協議,所以目的在於讓讀者對於網絡層的路由協議有個全局的認識。本篇雖然有一些專業術語,但基本都在上下文可以找到解釋。如果有些內容遺漏或解釋不到位,請讀者自己搜尋資料,請見諒。
WMN的動態性,多跳性使得傳統的路由協議不能夠很好的處理無線網狀網中拓撲結構和鏈路狀態的快速變化。
WMN由Ad hoc網絡發展而來,Ad hoc網絡重點在移動,而WMN重點在無線。目前主流的WMN路由協議也是從Ad hoc網絡路由協議發展而來。主要包括三種類型的路由協議:先驗式路由協議、反應式路由協議、混合式路由協議。
在先驗式路由協議中,無論是否有通信需求,每個節點采用周期性的路由分組廣播維護一張包含到達其他節點的路由信息的路由表,當檢測到網絡拓撲結構變化的時候,節點在網絡中交換並更新路由表。源節點一旦要送分組,可以立即獲得指向目的節點的路由。
這類的路由協議通常是通過修改現有的有線路由協議來適應 Ad Hoc無線網絡要求,如通過修改路由信息協議(RIP)得到的目的節點序列距離矢量協議(DSDV)。 因此這種路由協議的時延較小,但是協議需要大量的路由控制報文路由,協議的開銷較大。 常用的先驗式路由協議有 DSDV,HSR,GSR,WRP等。
DSDV協議
DSDV協議的基本原理是:每一個節點維持一個到其它節點的路由表,表的內容為路由的“下一跳”節點。DSDV創新之處是為每一條路由設置一個序列號,序列號大的路由為優選路由,序列號相同時,跳數少的路由為優選路由。正常情況下,節點廣播的序列號是單調遞增的偶數,當節點B發現到節點D的路由(路由序列號為s)中斷后,節點B就廣播一個路由信息,告知該路由的序列號變為s+l,並把跳數設置為無窮大,這樣,任何一個通過B發送信息的節點A的路由表中就包括一個無窮大的距離,這一過程直到A收到一個到達D的有效路由(路由序列號為s+1-1)為止。
使用分層次的路由選擇方法,可將因特網的路由協議划分為:
內部網關協議IGPI(nterior Gateway Protocol):具體的協議有多種,如:RIP和OSPF等。
外部網關協議EGP(External Gateway Protocol):目前使用的協議就是BGP
下面我們分別介紹:
路由信息協議RIP(RoutingInformation Protocol)
RIP采用距離向量算法,最大優點是簡單。在實際使用中已經較少適用。RIP協議允許一條路徑最多只能包含15個路由器。因此,“距離”等於16時即相當於不可達。可見RIP只適用於小型互聯網。對於規模較大的網絡應當使用OSPF協議。RIP不能在兩個網絡之間同時使用多條路由。RIP選擇一條具有最少路由器的路由(即最短路由),哪怕還存在另一條高速(低時延)但路由器較多的路由。RIP進程使用UDP的520端口來發送和接收RIP分組。RIP分組每隔30s以廣播的形式發送一次,為了防止出現“廣播風暴”,其后續的的分組將做隨機延時后發送。在RIP中,如果一個路由在180s內未被刷,則相應的距離就被設定成無窮大,並從路由表中刪除該表項。RIP分組分為兩種:請求分組和響應分組。
RIP協議的特點是:
僅和相鄰路由器交換信息
路由器交換的信息是當前本路由器所知道的全部信息,即自己的路由表
按照固定的時間間隔交換路由信息
RIP協議存在的一個問題是:當網絡出現故障時,要經過比較長的時間才能將此信息傳送到所有的路由器。
開放最短路徑優先OSPF(OpenShortest Path First)
OSPF原理簡單,實現復雜,使用了Dijkstra提出的最短路徑算法SPF。
OSPF最主要特征是使用分布式鏈路狀態協議,而不是像RIP那樣的距離向量協議。和RIP協議相比,OSPF的三個要點和RIP都不一樣。
1、 向本自治系統中所有路由器發送信息。這里使用的方法是洪泛法(Flooding)
洪泛法(Flooding)
在OSPF協議中,當鏈路狀態發生變化時要用Flooding向所有路由器發送信息。
例如,源節點希望發送一段數據給目標節點。源節點首先通過網絡將數據副本傳送給它的每個鄰居節點,每個鄰居節點再將數據傳送給各自的除發送數據來的節點之外的其他。如此繼續下去,直到數據傳送目標節點或者數據設定的生存期限為0為止。
2、 發送的信息就是與本路由器相鄰的所有路由器的鏈路狀態,但這只是路由器所知道的部分信息,“鏈路狀態”包括本路由器和哪些路由器相鄰,以及鏈路的一些度量信息。而RIP協議發送的是到所有路由器的距離和下一跳路由器。
3、 只有當鏈路狀態發生變化時,路由器才向所有路由器用洪泛法發送此信息。
由於各路由器之間頻繁的交換路由信息,因此所有路由器最終都能建立一個鏈路狀態數據庫,這個數據庫實際上就是全網的拓撲結構圖。RIP協議中的每一個路由器雖然知道所有網絡的距離以及下一跳路由器,但卻不知道全網的拓撲結構(只有到了下一跳路由器,才能知道再下一跳應當怎樣走)。
OSPF的更新過程收斂的快是其重要優點。(“收斂”就是在自治系統中所有的節點都得到正確的路由選擇信息的過程)
OSPF不用UDP而是直接用IP數據報傳送(其IP數據報首部的協議字段值為89)
OSPF共有以下5種分組類型:
1、問候(Hello)分組,用來發現和維持鄰站的可達性。
2、數據庫描述(Database Description)分組,向鄰站發出自己鏈路狀態數據庫中所有鏈路狀態項目的摘要信息。
3、鏈路狀態請求(Link State Request)分組,像對方請求發送某些鏈路狀態項目的詳細信息。
4、鏈路狀態更新(Link State Update)分組,用洪泛法對全網更新鏈路狀態。
5、鏈路狀態確認(Link State Acknowledgment)分組,對鏈路更新分組的確認。
為了使OSPF能夠用於規模很大的網絡,OSPF將一個自治系統再划分為若干個更小的范圍,叫做區域。下圖表示一個自治系統划分為4個區域。每個區域都有一個32位的區域標志符(用點分十進制表示)
當然,一個區域也不能太大,一個區域內的路由器最好不超過200個。
划分區域的好處就是把利用洪泛法交換鏈路狀態信息的范圍局限於每一個區域而不是整個自治系統,這就減少了整個網絡上的通信量。
外部網關協議BGP
BGP是不同AS(Area System)的路由器之間交換路由信息的協議。
邊界網關協議BGP只能是力求尋找一條能夠到達目的網絡且比較好的路由(不能兜圈子),而並非要尋找一條最佳路由。BGP采用了路徑向量路由選擇協議。
一般說來,兩個BGP發言人都是通過一個共享網絡連接起來的。一個BGP發言人要與其他自治系統的BGP發言人交換路由信息,就要先建立TCP連接(端口號為179),然后在此連接上交換BGP報文以建立BGP會話,利用BGP會話交換路由信息。
在RFC4271中規定了BGP-4的4種報文:
1、OPEN(打開)報文,用來與相鄰的另一個BGP發言人建立關系,使通信初始化。
2、UPDATE(更新)報文,用來通告某一路由的信息,以及列出要撤銷的多條路由。
3、KEEPALIVE(保活報文),用來周期性的證實鄰站的連通性。
4、NOTIFICATION(通知)報文,用來發送檢測到的差錯。
在RFC2918中增加了ROUTER—REQUEST報文,用來請求對等端重新通告。
反應式路由協議
反應式路由協議又稱為隨選型路由協議或者按需路由協議。是專門針對移動自組織網絡工作組MANET(Mobile Ad-hoc NETworks)環境提出來的。與表驅動路由協議相反,該類協議並不事先生成路由,而是僅在源節點需要時才這樣做。因此,路由表信息是按需建立的,它可能僅僅是整個拓撲結構信息的一部分。
節點並不保存整個網絡的及時准確的路由信息。當源節點要向目的節點發送報文時,源節點在網絡中發起路由查找過程,找到相應的路由后,才開始發送報文。為了提高效率,節點可以將找到的路由保存在緩存中供后續發送使用。反應式路由協議按需路由的特點可以較好地適應節點移動較為頻繁的無線網絡環境,節點發生移動后,只需要更新需要發送數據的相關路徑的路由信息即可。
混合式路由協議
混合式路由是將先驗式路由協議和反應式路由協議兩種路由方式的組合,在局部范圍內使用先驗式路由協議,維護准確的路由信息,並可以縮小路由控制消息傳播的范圍。當目標節點較遠時,則使用反應式路由協議查找發現路由。ZRP協議就是混合式路由協議的代表。
ZRP協議是一種專為多變的通信環境(如可重構無線網絡,RwN)設計的平鋪式路由協議。在每個節點定義一個區域,此區域包含一些節點,這些節點的距離(也就是跳數)在一個限定的范圍之內。這個距離被成為區域半徑rzone。每一個節點只需要知道它的路由區域內的拓撲結構,而且其路由信息隨着區域內的拓撲更新而更新。這樣,盡管網絡很大,但更新僅僅在局部區域進行。由於距離大於1,這樣區域就有大量重疊。
參考資料:
1、無線網狀網絡的路由協議分析 .TechTarget[引用日期2016-6-27]
2、謝希仁. 計算機網絡(第5版)[M]. 北京:電子工業出版社, 2012.