移動Ad Hoc下按需距離矢量路由協議AODV實驗報告

移動Ad Hoc下按需距離矢量路由協議AODV實驗報告

一、實驗內容

通過分析AODV路由幀類型及作用,並仿真網絡建立、節點間通信、節點加入、節點退出,進一步分析各幀在其中工作流程,通過Python仿真實現代碼,介紹改算法的優缺點及個人思考。

二、實驗原理

AODV是爲快速移動自組網設計的數據包路由協議,較適用於中小規模的無線自主網絡,按需路由協議,只有當到達某目的節點的路由不存在時纔會激活該協議發起路由請求,使用節點序列號機制避免環路產生,傳輸層使用的是UDP協議,網絡各節點使用IP地址統一編址,每一個節點維護一個包含到達目的節點路由信息的路由表

AODV路由幀類型主要包括:

1、RREQ – 路由請求幀2、RREP – 路由應答幀3、RERR – 路由錯誤幀4、HELLO – 活躍路由鏈路監測幀

1.1 RREQ 報文

a. 對RREQ 的處理
接收到RREQ 的結點做如下處理:
(1)創建一個表項,先不分配有效序列號,用於記錄反向路徑。(2)如果在“路由發現定時”內已收到一個具有相同標識的RREQ 報文,則拋棄該報文,不做任何處理;否則,對該表項進行更新如下:
I.下一跳結點=廣播RREQ 的鄰居。
II.跳數=RREQ 報文的“跳計數”字段值。
III.設置表項的“過時計時器”。
(3)如果滿足以下條件,則結點產生“路由回答報文”RREP,併發送到信源;否則更新RREQ 報文並廣播更新後的RREQ 報文。
I.該結點是信宿。
II.結點的路由表中有到信宿的活動表項,且表項的信宿序列號大於RREQ中的信宿序列號。
(4)更新RREQ 報文並廣播更新後的RREQ 報文
I.信宿序列號=本結點收到的信宿相關的最大序列號。
II.跳計數加1。

1.2 RREP 報文

(1)信宿結點產生RREP執行如下操作:
I.如果收到相應的RREQ 的信宿序列號與信宿維護的當前序列號相等,則信宿將自己維護的序列號加1,否則不變。
II.跳計數=0。
III.定時器值。
(2)中間結點產生的RREP 執行如下操作:
I.本結點獲取的該信宿的最大序列號。
II.跳計數=本結點到信宿的跳數(查相應表項即可得到)。
III.更新本結點維護的“前向路由表項”的下一跳和“反向路由表項”的前一跳
b. 對RREP 的處理
結點對接收到的RREP 作如下處理。
(1)如果沒有與RREP 報文中的信宿相匹配的表項,則先創建一個“前向路表”空表項。
(2)否則,滿足如下條件對已有表項進行更新。
條件:
I.現有表項的信宿序列號小於RREP 報文中的序列號。
II.現有的表項沒有激活。
III.信宿序列號相同,但RREP 報文的“跳計數”值小於表項相對應的值;通過更新或創建,產生一個新的前向路由。
更新:
IV.下一跳=廣播RREP 的鄰居結點。
V.信宿序列號=RREP 中的信宿序列號。
VI.跳計數加1。
(3)按照上述的過程,任何轉發RREP 的結點,都記錄了到信宿的下一跳,當RREP到達信源時。結點地址匹配,不再轉發RREP,信源到信宿的前向路由已經建立起來了。信源可以沿這條前向路徑進行數據傳輸。

1.3 RRER 報文

鄰居間週期性的互相廣播“Hello”報文,用來保持聯繫,若在一段時間內沒有收到“Hello”報文,則認定爲鏈路斷。例如當結點X、Y 之間鏈路產生斷路使數據無法通過此條鏈路傳至信宿,則結點X 會產生RRER 報文向信源報告此情況。RRER 通過廣播形式傳送,維護路由表的結點收到此報文會更新路由表(將X、Y間的路由設成無效),並轉發RRER 報文。

1.4 Hello消息

定義:Hello消息幀其實就是TTL=1時的RREP幀,Hello消息幀用於監測活躍路徑上相鄰節點的鏈接狀況。
例如:1、活躍路徑節點以HELLO_INTERVAL爲週期發送Hello消息2、當某節點ALLOWED_HELLO_LOSS * HELLO_INTERVAL毫秒時間內沒有收到該路徑上的鄰居節點發送來的Hello消息幀或其他任何幀時,該節點就認爲與它與鄰居節點的鏈路已斷3、在DELETE_PERIOD的時間內沒有收到來自鄰居節點的Hello消息,則認爲該鏈路已失效S
AODV路由請求的發起流程圖
AODV對路由控制信息的控制流程圖

三、實驗環境

烏班圖系統、python3.7、pycharm

四、實驗步驟

網絡拓撲結構結構

1、仿真移動Ad Hoc網絡構建
a)AODV路由發現

AODV路由協議是一種典型的按需驅動路由協議,該算法可被稱爲純粹的需求路由獲取系統,那些不在活躍路徑上的節點不會維持任何相關路由信息,也不會參與任何週期路由表的交換。此外,節點沒有必要去發現和維持到另一節點的路由,除非這兩個節點需要進行通信。移動節點間的局部連接性可以通過幾種方法得到,其中包括使用局部廣播Hello消息。這種算法的主要目的是:在需要時廣播路由發現分組一般的拓撲維護;區別局部連接管理(鄰居檢測)和一般的拓撲維護;向需要連接信息的鄰居移動節點散播拓撲變化信息。
AODV使用廣播路由發現機制,它依賴中間節點動態建立路由表來進行分組的傳送。爲了維持節點間的最新路由信息,AODV協議借鑑了DSDV中的序列號的思想,利用這種機制就能有效地防止路由環的形成。當源節點想與另外一個節點通信,而它的路由表中又沒有相應的路由信息時,它就會發起路由發現過程。每一個節點維持兩個獨立的計數器:節點序列號計數器和廣播標識。源節點通過向自己的鄰居廣播 RREQ(Route Requests)分組來發起一次路由發現過程。

(b)AODV協議反向路由的建立

在RREQ分組中包含了兩個序列號:源節點序列號和源節點所知道的最新的目的序列號?源節點序列號用於維持到源的反向路由的特性,目的序列號表明了到目的地的最新路由。當RREQ分組從一個源節點轉發到不同的目的地時,沿途所經過的節點都要自動建立到源節點的反向路由。
節點通過記錄收到的第一個RREQ分組的鄰居地址來建立反向路由,這些反向路由將會維持一定時間,一該段時間足夠RREQ分組在網內轉發以及產生的RREP分組返回源節點。當RREQ分組到達了目的節點,目的節點就會產生RREP分組,並利用建立的反向路由來轉發RREP。

©、AODV協議正向路由的建立

RREQ分組最終將到達一個節點,該節點可能就是目的節點,或者這個節點有到達目的節點的路由。如果這個中間節點有到達目的的路由項,它就會比較路由項裏的目的序列號和RREQ分組裏的目的序列號的大小來判斷自己已有的路由是否是比較新的。
如果RREQ分組裏的目的序列號比路由項中的序列號大,則這個中間節點不能使用己有的路由來響應這個RREQ分組,只能是繼續廣播這個RREQ分組。中間節點只有在路由項中的目的序列號不小於RREQ中的目的序列號時,才能直接對收到的RREQ分組做出響應?如果節點有到目的地的最新路由,而且這個RREQ還沒有被處理過,這個節點將會沿着建立的反向路由返回RREP分組。
在RREP轉發回源節點的過程中,沿着這條路徑上的每一個.節點都將建立到目的節點的同向路由,也就是記錄下RREP是從哪一個鄰居節點來的地址,然後更新有關源和目的路由的定時器信息以及記錄下RREP中目的節點的最新序列號。對於那些建立了反向路由,但RREP分組並沒有經過的節點,它們中建立的反向路由將會在一定時間(Active-Route-Timeout)後自動變爲無效。收到RREP分組的節點將會對到某一個源節點的第一個RREP分組進行轉發,對於其後收到的到同一個源的RREP分組,只有當後到的RREP分組中包含了更高的目的序列號或雖然有相同的目的序列號但所經過的跳數較少時,節點才一會重新更新路由信息,以及把這個RREP分組轉發出去。
網絡建立過程及路由表變化過程

2、仿真消息發送

① 源節點希望向某個目的節點發送數據,但當前路由表中並無該節點的路由信息時,啓動路由發現過程;
② 源節點向其鄰居廣播一個 RREQ(路由請求)消息,進行路由探測;
③ 每個收到RREQ消息的節點向其鄰居擴散該消息,直至消息到達一個知曉目的節點路由的節點(中間節點或目的節點);同時建立反向路由;
④ 該中間節點或目的節點向源節點發送一個 RREP(路由響應)消息,當RREP消息到達源節點時,建立起源節點到目的節點的路由。
仿真消息n1-n5發送過程

3、仿真節點的加入

仿真n6節點加入路由表變化及信息交流變化

4、仿真節點的刪除

不在活動路徑上的節點的移動不會影響到到該路徑的目的地的路由。如果源節點在活動會話期間移動,它可以重新啓動路由發現過程,以建立到目標的新路由。當目標節點或某些中間節點移動時,將向受影響的源節點發送一個特殊的RREP。週期性的hello消息可用於確保對稱鏈接,以及檢測鏈接失敗。或者,使用鏈路層確認(LLACKS)可以檢測到此類故障,而且延遲要小得多。如果嘗試將數據包轉發到下一跳失敗,也會指示鏈接失敗。一旦無法到達下一跳,中斷的上游節點將傳播一個具有新序列號(即,一個大於先前已知序列號1的序列號),並對所有活動的上游鄰居跳轉計數爲1。這些節點隨後將該消息轉發給它們的活動鄰居,以此類推。
在這裏插入圖片仿真節點n5被刪除路由表變化描述
在這裏插入圖片描述

節點間因n5節點刪除導致通信變化

五、輸入輸出樣例

在這裏插入圖片描述

程序界面

在這裏插入圖片描述

控制檯及各節點控制入口

在這裏插入圖片描述在這裏插入圖片描述

發送信息時路由表的變化

 Log文件記錄節點所發送的消息

六、遇到的問題及解決辦法

① AODV協議中如何解決路由廣播消息的循環發生問題?
答:AODV協議中爲了解決廣播消息的循環問題需要需要採用時間控制策略機制來實現。以時間作爲目標序列號來解決環路的發生。其主要思想是對於消息項序列的重新設計,添加時間,避免因爲節點休眠重啓或者路由超時刪除時,路由消息項序號重新計數引發的重複的廣播過期路由消息項的問題。按照路由的更新的原則,選擇消息序列號的最新消息項,從根本上解決了路由消息循環傳輸的問題,確保在任何時刻網絡中都不會存在路由消息循環。這樣,在網絡結構發生改變時,有效的避免了路由廣播消息的循環發生問題。
② AODV 協議如何進行路由發現和路由建立?
答:在節點需要對某一位置的目的節點進行通信而沒有可用路由時啓動路由發現過程,在網絡中廣播PREQ消息。
AODV優點:AODV在中小規模Ad Hoc網絡優勢較爲明顯,路由發現和維護過程都是按需的,節點只存儲需要的路由,減少了內存的需求和不必要的複製。
AODV缺點:路由表僅維護一條到指定目的節點的路由,當某條鏈路失效時,信源節點必須要重新發起路由發現過程,這在網絡拓撲快速變化的場景下,尤其重要。
總結:目前,隨着物聯網的發展,AODV無論在民用(車載自組織網絡等)、軍用都有很大的使用範圍,而AODV的擁塞控制、能耗控制、時延控制等仍是研究的熱點。

七、實驗源碼

各文件作用結構圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章