第二章 隨意行動無線網路的相關資料
2.2 網路通訊層
2.2.1 單一擇路演算法
單一擇路演算法依照擇路產生的時間點可以分類成預先維持機制演算法 (Proactive Protocol)跟即時搜尋機制演算法(Reactive Protocol)。預先維持機制演算 法(例如 DSDV[5]跟 WRP[6])會在傳送資料封包前,週期性的利用控制封包先選 擇好到各個目標節點的路徑並維持,而預先選擇好的路徑會存在每個行動運算節 點的擇路表單之內。當某個來源節點想要傳送資料封包時,就可以直接利用擇路 表單的資訊,直接進行傳輸資料的動作。這種演算法比較強調擇路的維持機制,
所以會擁有比較可靠且不易斷裂的路徑,而且因為到目標節點的路徑已經存在擇 路表單內,所以不需要任何延遲就可以開始傳輸資料封包。但週期性的利用控制 封包維持擇路表單的正確性,當整個網路的變化比較快速的時候,維持的頻率就 必須提高,也會造成控制封包過多的問題。即時搜尋機制演算法(例如 AODV[7]、
DSR[8]、TORA[9][10]、ABR[11]跟 SSA[12])只會在行動運算節點想要傳送資料 時,才開始傳送控制封包進行搜尋路徑然後決定路徑的工作。結束搜尋並決定路 徑後,決定的路徑一樣會被存在擇路表單之內,然後才開始傳輸資料封包。這種 演算法比較強調擇路的搜尋機制,而比較不強調擇路的維持機制,所以不需要週 期性的維持擇路表單的正確性,使控制封包的數量大大減低。但由於維持的機制 較弱,所以當整個網路變化比較快速的時候,路徑就會變的相當容易斷裂,而且 因為擇路的決定是在要傳送資料封包才開始運作,所以會有時間上的延遲。另外 還 有 一 些 擇 路 演 算 法 是 合 成 上 述 二 種 擇 路 演 算 法 ( 例 如 ZRP[13][14] 、
CGSR[15][16]跟 Cedar[17]),依照不同的設計觀念,適當的混和這二種擇路演算 法,使合成後的演算法可以同時保有各自的優點。目前也有很多研究專門比較上 述這些擇路演算法的優劣[18] - [21]。
由於 GPS[22]等定位技術的進步,使每個有使用定位裝置的行動運算節點都 可以知道自己的座標。目前也有很多擇路演算法是假設知道自己的座標而進行擇 路 演 算 法 設 計 的 ( 例 如 DREAM[23] 、 LAR[24] 、 GRA[25] 、 GPSR[26] 跟
GLS[27][28])。由於多了座標的資訊,使這些演算法在搜尋或維持路徑時,可以 更節省網路資源,相對的就是提高效率,所以利用座標資訊的擇路演算法通常都 會有比較好的效能。
AODV(Ad Hoc On Demand Distance Vector Routing)演算法是一種最常見的 單一擇路演算法,擇路的流程也是最基本且易懂,所以常常被拿來當作研究的比 較對象。因此在這一小節會介紹 AODV 演算法的基本擇路流程。
AODV 演算法屬於即時搜尋機制演算法之一,所以只有在某個來源節點想 要傳送資料封包時,才會進行路徑的搜尋。路徑的搜尋是使用最簡單的擇路要求 封包(Route Request - RREQ)與擇路回應封包(Route Reply - RREQ)的往返來完成 的。AODV 演算法在決定路徑的考量參數就是到目標點的跳躍數(最短路徑)。另 外,AODV 演算法也會在每個節點都儲存一份單一擇路表單記錄擇路搜尋之後 的結果。最後要注意的就是 AODV 演算法儲存路徑的方式,AODV 演算法不會 記錄整條路徑經過哪些擇路節點,而是記錄到目標節點的下一個跳躍點(路徑上
的下一個擇路節點),因此下面提到儲存路徑都是代表儲存到該節點的下一個跳 躍點。
為了確定選擇的路徑是確實存在於網路內,而不是舊有卻以不存在的路徑,
AODV 演算法設計了排序數字(Sequence Number - SN)的觀念。對一條路徑來 說,其排序數字越大,代表上一次更新的時間越近,越能確定這條路徑是真的存 在於網路之內。尤其在網路變化速度較快的網路之內,路徑存在的時期較短,排 序數字的設計對於可以使用正確的路徑傳遞資料封包更是重要。
目標節點
RREP RREQ
來源節點
圖 2-4 AODV 演算法示意圖
當來源節點想要傳送資料封包給一個在傳輸範圍外的目標節點,首先搜尋單 一擇路表單是否已經存在有到該目標節點的路徑。若是已經存在,就代表已經有 路徑可以直接傳送資料封包,所以可以馬上開始資料封包的傳輸。但比較常見的 情況就是找不到路徑,便開始搜尋路徑的工作,來源節點會先廣播 RREQ 封包(見 圖 2-4)。由於來源節點提出搜尋路徑的要求,也代表網路內的部分路徑也會進行
更新的動作,所以必須在 RREQ 封包內放上最新的排序數字,讓有更新的路徑 也藉此更新排序數字(包括通往目標節點的最短路徑)。
當網路內的任何一個中繼節點第一次接收到這個 RREQ 封包,代表這個節 點有路徑可以通往來源節點,所以會把通往來源節點的路徑儲存在單一擇路表單 內(包括排序數字),當作之後回傳 RREP 封包的保留路徑。再來檢查自己的單一 擇路表單是否有到達目標節點的路徑。如果有,就代表來源節點可以透過這個中 繼節點傳送資料到目標節點,所以這個中繼節點就會利用到來源節點的保留路徑 回傳 RREP 封包。如果沒有,這個中繼節點就會繼續廣播這個 RREQ 封包(見圖
2-4)。另外要注意,來源節點每一次送出 RREQ 封包,都會有一個固定的編號(廣 播 ID),藉由廣播 ID,收到這個封包的節點都可以知道之前有沒有收過這個 RREQ 封包。當中繼點發現收到的 RREQ 封包是之前曾經接收過的,那就不會對這個 封包做任何動作,也不會繼續廣播這個封包。
當目標節點第一次收到 RREQ 封包時,代表目標節點有路徑可以通往來源 節點,一樣會把通往來源節點的路徑儲存在單一擇路表單內(包括排序數字),當 作回傳 RREP 封包的保留路徑。由於目標節點已經有回到來源節點的路徑,所以 直接利用單一擇路的方式沿著這條路徑回傳 RREP 到來源節點(見圖 2-4),而這 條被選擇的路徑上的中繼節點就稱為擇路節點(Router)。一樣藉由 RREQ 封包的 廣播 ID,目標節點可以知道之前有沒有收過這個 RREQ 封包。當目標節點發現 收到的 RREQ 封包是之前曾經接收過的,那就不會對這個封包做任何動作。另
外要注意,雖然目標節點所選擇的路徑就是最小的保留路徑,而保留路徑上所有 擇路節點的單一擇路表單也都存有這條保留路徑,但對這條保留路徑上的每個擇 路節點來說,這個保留路徑是通往來源節點的路徑,而非通往目標節點的路徑(因 為路徑的方向不同,所以上一個跳躍點會不同)。所以我們依然要回傳 RREP,通 知這條路徑上的節點,使這些中繼節點知道自己成為擇路節點,並得到通往目標 節點的路徑,而保留路徑的功用只是提供回傳 RREP 的路徑。
當被選擇路徑上的擇路節點接收到 RREP 封包時,代表這個節點有路徑通往 目標節點,而且已經是被目標節點決定要使用的路徑,所以要把這條通往目標節 點的路徑儲存在單一擇路表單,這樣才能在之後傳遞由來源節點所傳出的資料封 包。接著再利用單一擇路表單找出通往來源節點的保留路徑(之前在 RREQ 廣播 所儲存的),繼續傳遞 RREP,反覆步驟直到來源節點收到 RREP 為止。當來源節 點收到 RREP 之後,代表來源節點已經有路徑通往目標節點,把路徑的儲存在單 一擇路表單內之後,就可以開始資料封包傳輸的工作。
AODV 演算法其實也有一些簡單的維持機制。在網路內的所有行動節點會 週期性的廣播一個跳躍數的維持訊息(Maintain Message)封包,藉此確定網路內任 意二點間的連結是否斷裂。在這種會不斷確定二點間的連結的機制下,當路徑上 的某個連結斷裂時,在這個連結上比較靠近來源節點的擇路節點會知道這條路徑 已經斷裂,就回傳通知封包告知來源節點路徑斷裂的訊息。但這是屬於比較簡單 的維持機制,所以 AODV 演算法依舊被歸類在及時搜尋機制演算法內。