本文將介紹何謂隨意網路(Ad Hoc Network),並附帶說明什麼叫無線Ad Hoc網路以及行動Ad Hoc網路,接著詳細講解Ad Hoc網路的路由協定,解釋主動式路由表更新路由方式與被動式路由表更新路由方式的區別,並闡述這些路由方式設計的理念和分類等等。
DSDV
DSDV全名是Destination Sequence Distance Vector,是一種路由方式。主要運用在Ad-hoc的移動式網路。其設計想法是,在路由表的每一筆資料都新增一個Sequence Number(序號)的概念,這個序號用來判斷這筆資料的新舊程度。這個設計方式可以用來解決路由迴圈的問題(Routing Loop)。所以一旦收到一筆路由更新,就會去比較這筆資料的新舊程度來決定是否正確。這種做法是在1994年被開發出來,是基於貝爾曼福特演算法繼續改進的。不過,這種路由方式當然還是需要大家定期地發送廣播路由更新給所有其他的節點。
Babel
Babel路由協定是一種距離向量路由協定,能夠同時在無線網路和有線網路的環境之中都達到很高效率,並且具備高度自動化的路由操作,可同時支援IPv4和IPv6等環境。
基本上,Babel路由協定是從DSDV(Destination Sequenced Distance Vector)路由方式、AODV(Ad-hoc On-Demand Distance Vector)路由方式、Cisco EIGRP路由方式等三種設計演變而來的。
但不同的是,Babel路由協定所採用的路由標準是混合式的。Babel路由協定的設計很聰明,在有線網路環境中預設上是採用必須經過的網路設備數目(Hops Count)當作標準。而在無線網路的環境中則是採用ETX的方式。
不過,當然可以根據使用情況自行設定要用什麼當作標準。更厲害的是,這個路由協定還可以根據網路的速度自動切換不同的評判標準。所以,Babel路由協定是一個擁有高效率並且具備高度自動化的路由協定。Babel路由協定主要有以下四種不同的實作方式:
1. 單獨運作的參考模式
2. 整合在FRR路由套件中的方式
3. 透過Python簡單地重新實作
4. 在BIRD路由系統中製作延伸套件
DREAM
DREAM的全名是Distance Routing Effect Algorithm for Mobility,是使用Location-based的方式來做路由的動作。一般來說,這種方式會有一系列已經訂好的規則,這些規則會根據發送方的位置來決定如何傳送,也就是如何執行路由的動作。這就像是有些公司的客服電話雖然只有一個號碼,但是當使用者打過去的時候,這個系統會根據來電者的電話號碼自動選取當地最接近的分店並且轉接過去,這概念是類似的。
BATMAN
BATMAN的全名是Better Approach To Mobile Ad-hoc Network。如同其名,這個路由協定是應用在行動Ad Hoc網路之中,其設計的理念是,整個網路上沒有任何一個節點擁有所有的路由資訊,而是藉由一起協同合作來完成路由,每一個節點只知道接收到網路封包以及發送網路封包的「方向」。其設計的緣由就是想要用來取代OLSR路由協定。這個網路協定由一個德國Freifunk社群所開發和維護,目前在Linux 2.6.38版本中已經支援。
被動式依照需求的路由方式
這種路由方式只有當有網路封包發送的需求時,才去了解如何執行路由的動作,執行方式可能是直接對整個網路做大量Flooding的發送。很明顯地,這樣的缺點是當有這樣的需求時,需要一段時間才會知道應該要如何執行路由,而且也很可能因為Flooding的行為讓整個網路堵塞。比較常見的路由演算法是ABR、AODV、DSR、DSRFLOW等等。底下也針對幾個常見的路由演算法做個簡單的介紹:
ABR
ABR全名是Associativity-based routing,也是設計用在無線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這些路由方式。所以,如何保證網路性能而減少網路封包的數量,是最大的挑戰。
DSR
DSR是Dynamic Source Routing的縮寫。DSR路由協定一樣也是設計用在無線Ad Hoc網路,與AODV很類似,只是DSR路由協定是根據來源端來做路由,也被稱為Source Routing(來源路由),而不是根據路由表的資訊。
Source Routing路由方式是指發送端可以指定在網路之中應該要如何去被轉發,與一般提到的路由不同,一般來說都是讓路由器來決定如何路由。好處是發生問題時的疑難排解會比較容易,路由追蹤也比較容易。
DSRFLOW
簡單來說,DSRFLOW是DSR路由協定的延伸設計,目標是提供所有Source Routing的優點。細節將在以後的文章慢慢為各位解釋。
混合式路由方式
顧名思義,混合式就是去混合主動式與被動式兩種路由方式的優點,一開始會用主動式路由方式建立一些路由資料,之後則用被動式的方式來處理更多的路由需求。目前,使用這種混合式路由方式的路由演算法有ZRP、ZHLS等等。
結語
這篇文章著重在無線Ad Hoc網路環境之中的路由方式,因為無線Ad Hoc網路的特性,使得一般使用在有線網路的路由協定並不太適用,主要是由於網路中各個節點的品質不確定性與高度移動性,也不希望因為路由的計算占據太多網路資源,畢竟這些網路資源與有線網路是不同的。而在行動Ad Hoc網路中,有更多的事情要考量,例如電力消耗、路由計算等等。這裡先大略介紹一些使用在這樣網路環境中的路由協定,讓大家有基本的了解。至於細節的部分,以後有機會再做介紹。
<本文作者:胡凱智,目前在Solera Holdings Inc.擔任亞太區首席技術長,曾於美商Mozilla擔任全球技術專案總監,並在趨勢科技任職七年多,有兩年美國矽谷工作經驗,在美國專利局擁有軟體專利。讀者交流建議:https://www.facebook.com/khu.page>