本文將介紹行動Ad Hoc網路中知名的OLSR路由協定,先說明無線Ad Hoc網路、行動Ad Hoc網路的背景知識,進而剖析Link State路由協定的設計,最後進入主題,講解OLSR路由協定的發展緣由,說明其運作方式以及該項協定所可能帶來的問題。
到目前已經介紹過許多網路技術,大多是在有線網路環境中使用。其實現在有非常多無線網路的使用時機,無線網路有許多有線網路不必考慮的問題,其背景與環境差異必須了解。
認識無線Ad Hoc網路
無線Ad Hoc網路(Wireless Ad Hoc Network,WANET)中文稱為「無線隨意網路」,是一種分散式無線網路系統,與既有的網路不同,整個網路中沒有依賴於某些特定的網路路由器、交換機甚至網路基地台。在這樣的網路中,每一個節點都扮演著這些路由器的角色,大家都需要幫忙轉發網路封包。
最早開始這樣的網路是在1970年代左右,由Defense Advanced Research Projects Agency(簡稱DARPA)所資助,後來在1990年代經過幾個改革,例如ABR(Associativity-based Routing)的產生以及DSDV(Destination Sequence Distance Vector)路由方式等等,又讓整個無線Ad Hoc網路更加進化。
DSDV是一種路由方式,主要運用在Ad Hoc的移動式網路,它的設計想法是,在路由表(Routing Table)的每一筆資料都新增一個Sequence Number(序號)的概念,這個序號用來判斷這筆資料的新舊程度。此種設計方式可以用來解決路由迴圈的問題(Routing Loop)。當收到一筆路由更新,就會去比較一下這筆資料的新舊程度來決定是否正確。這種做法是在1994年被開發出來,是基於貝爾曼福特演算法繼續改進的。不過,這種路由方式當然還是需要定期地發送廣播路由更新給所有其他的節點。而ABR也是一種路由方式,也是特別設計用在無線Ad Hoc網路之中,之後有機會再跟各位介紹。
了解行動Ad Hoc網路
行動Ad Hoc網路(Mobile Ad Hoc Network,MANET),有時會稱為「行動隨意網路」或「移動臨時網路」。它是剛才提到無線Ad Hoc網路的其中一種,基本上,就是指利用行動裝置,透過無線的方式連接,各自演進,各自協同合作所組成的無線網路。這種網路最大的特色就是每一個節點(也就是每一個行動裝置)都可以移動,能夠隨意改變連結,而與無線Ad Hoc網路一樣,每一個節點也都必須幫忙轉發整個網路上的封包,因為不會依賴任何一個路由器,即便是與自己無關的網路封包也是如此。
這種行動Ad Hoc網路的複雜度相當高,因為除了每個節點都要適度地知道整個網路的情況以便於有效地轉發網路封包之外,還要考慮到各個節點可能會移動所增加的複雜度。
AODV路由方式說明
AODV(Ad-hoc On-demand Distance Vector)路由方式特別之處在於,只有當要發送網路封包時才去查看目的地在哪裡,才去研究最佳路由,所以叫做Ad-hoc On-demand。且與DSDV類似,每個路由請求會有一個序號,大家使用這個序號以免重複發送相同的請求。
當然每個請求會有一段「生存時間」,一旦逾時,這個請求就會失效。由於這種路由方式的設計,大家應該可以想像得到,一旦這個的網路環境沒有任何的封包發送行為時,整個網路是非常靜止的,不像其他路由方式會一直想要互相發送更新以便於維護最新的路由表。
這種路由方式聽起來當然很不錯,但與之前所介紹過大部分的路由方式差距很大,因為RIP、IGRP、EIGRP甚至是IS-IS等等都是事先把網路路徑計算好,所以等到要轉發網路封包時,就已經知道要怎麼送了。可是,無線Ad Hoc和行動Ad Hoc網路有高度變化性,使得原本這些路由方式無法發揮功效,因為事先的計算看來無疑只會徒增網路的負擔,所以才會衍生出AODV和DSDV這些路由方式。所以,如何保證網路性能而減少網路封包的數量是最大的挑戰。
何謂OLSR路由協定
OLSR全名是Optimized Link State Routing,顧名思義,它是一種進化版本的Link-State路由協定,而進化的緣由就是為了行動Ad Hoc網路。既然OLSR是Link State路由協定的一種,那麼在了解OLSR之前,必須先了解什麼是Link-State路由協定。
路由協定有很多種分類方式,依據所影響範圍可以分成內部路由協定(Interior Gateway Protocol,IGP)和外部路由協定(Exterior Gateway Protocol,EGP)兩大類型。而對於內部路由協定而言,依據所採用的路由演算法來區分的話,有三種主要的類型,包括Distance Vector、Link State以及混合前面兩種的方法。
簡單來說,Link-State路由演算方式是,網路上每一個節點(也就是路由器)都會擁有自己一份的「網路地圖」,這份網路地圖顯示著從自己這個節點到網路上任何一個節點的最佳路線,而這些最佳路線都是計算出來的,所以每個節點的地圖不見得相同,也不彼此分享,而這份網路地圖也就是路由表(Routing Table)。
所謂路由演算法,就是如何選擇網路路徑以便於發送網路封包。而Link-State路由演算法,其實就是使用所謂的最短路徑優先(Shortest Path First,SPF)演算法來決定網路路徑。
顧名思義,就是以最短的網路路徑為最佳網路路經的優先考量,Link-State路由演算法就是用這種方式來維護其存放網路路徑的資料庫內容。
Link-State路由演算法的儲存資料
Link-State路由演算法會使用以下五種資訊來維護整個路由資訊,包括LSA(Link-State Advertisements)、網路拓撲資料庫(Topological Database)、最短路徑優先演算法(SPF)、最短路經優先樹狀結構、存放網路路徑的路由表。
其中,網路拓撲資料庫也被稱為Neighbor-ship Database,而最短路徑優先樹狀結構也被稱為Link-State Database,而最後用來存放網路路徑的路由表就相當於存放「最佳路徑」的地方。
經典的Link-State路由演算法有OSPF路由協定和IS-IS路由協定,其中OSPF的概念與相關詳細運作內容被定義在RFC 2328文件之中,有興趣的話可以前往閱讀,其RFC 2328的網址為「http://www.ietf.org/rfc/rfc2328.txt」。
基本上,Link-State路由演算法會從其他路由器中收集有關整個網路的路徑資訊,也就是說,整個網路內所有的路由器會互相交換,並傳遞所知的網路路徑資訊,到最後,每一台網路中的路由器設備都會對整個網路有一定的了解。因此,整個網路上的每一台路由器設備都會有整個網路的路徑表,等到收集完整個網路的路徑資訊之後,每一台路由器設備自行計算屬於自己的「最佳網路路徑」,而這樣的資訊在各個路由器設備之間不完全相同。
事實上,Link-State路由演算法這樣的設計主要是用來彌補Distance Vector路由演算法的缺點。Link-State路由演算法能夠針對網路的變化做出比較快速的回應動作。當網路有所變化時,Link-State路由演算法會發送更新過的網路路徑資訊,而平常的時候,Link-State路由演算法也會固定發送路徑更新資訊,預設上是每隔30秒做一次。根據這樣的概念,整個網路上,所有的路由器設備在時間久了之後,這些設備之間的網路拓撲資料庫內容就越能一致,因為資料會互相做同步的動作。
OLSR路由協定產生緣由
第一個推出Link-State路由協定的人是John M. McQuillan,於1979年公開這種協定的計算方式。當時,這種計算方式可以針對網路的改變,快速計算出最佳網路路線,可以讓網路的狀態趨於穩定。而後來,這種Link State路由協定的設計方式運用於階層式網路架構,更加有幫助,因為每一個節點(路由器)都不需要擁有整個網路的路由表,而只需要針對已經區分好的階層式區域(Areas)來計算路由表即可。