自組織網(wǎng)絡(luò)Ad Hoc之AODV協(xié)議詳解

一、AODV 概念
AODV 是按需路由協(xié)議,當(dāng)一個(gè)節(jié)點(diǎn)需要給網(wǎng)絡(luò)中的其他節(jié)點(diǎn)傳送信息時(shí),如果沒有到達(dá)目標(biāo)節(jié)點(diǎn)的路由,則必須先以多播的形式發(fā)出 RREQ 報(bào)文,鄰居節(jié)點(diǎn)收到 RREQ,首先判斷目標(biāo)節(jié)點(diǎn)是否是自己,如果是,則向發(fā)起節(jié)點(diǎn)發(fā)送 RREP,如果不是,首先在路由表中查找是否有到達(dá)目標(biāo)節(jié)點(diǎn)的路由,如果有,則向源節(jié)點(diǎn)單播 RREP,否則繼續(xù)轉(zhuǎn)發(fā) RREQ 進(jìn)行查找。
在網(wǎng)絡(luò)資源充分的情況下,AODV 協(xié)議可以通過定期廣播 HELLO 報(bào)文來維護(hù)路由,一旦發(fā)現(xiàn)某一個(gè)鏈路斷開,節(jié)點(diǎn)就發(fā)送 ERROR 報(bào)文通知那些因?yàn)殒溌窋嚅_而不可到達(dá)的節(jié)點(diǎn),刪除相應(yīng)的記錄或者對已經(jīng)存在的路由修復(fù)。
AODV 特點(diǎn)如下:
-
節(jié)點(diǎn)只存儲需要的路由
-
盡量減少廣播的需要
-
減少內(nèi)存需求和不必要的重復(fù)
-
對活動路由中鏈路斷裂的快速響應(yīng)
-
使用目標(biāo)序列號維護(hù)的無循環(huán)路由
-
可擴(kuò)展到大量節(jié)點(diǎn)群
二、AODV 功能
AODV 是在多個(gè)移動節(jié)點(diǎn)中建立和維護(hù)一個(gè)動態(tài)的、自啟動的、多跳路由的專屬網(wǎng)絡(luò),使得移動節(jié)點(diǎn)能夠快速獲得通向新的目的節(jié)點(diǎn)的路由,并且節(jié)點(diǎn)僅需要維護(hù)通向鄰居節(jié)點(diǎn)的路由,更遠(yuǎn)節(jié)點(diǎn)的路由信息則不需要維護(hù)。
其路由表字段包括:
- 目的節(jié)點(diǎn)IP地址
- 目的節(jié)點(diǎn)序列號
- 目的節(jié)點(diǎn)序列號的有效標(biāo)志位
- 下一跳節(jié)點(diǎn)IP地址
- 本節(jié)點(diǎn)到達(dá)目的節(jié)點(diǎn)的跳數(shù)
- 前驅(qū)節(jié)點(diǎn)列表
- 生存時(shí)間
- 網(wǎng)絡(luò)層接口
- 其他的狀態(tài)和路由標(biāo)志位(比如:有效,無效,可修復(fù),正在修復(fù))。
路由表特征如下:
-
路由表每項(xiàng)只記錄下一跳路由信息,而不是整條路由信息,簡化了路由表的建立和維護(hù)。
-
源節(jié)點(diǎn)和目的節(jié)點(diǎn)都維護(hù)各自的序列號,序列號是用來標(biāo)識路由信息新舊程度,當(dāng)源節(jié)點(diǎn)發(fā)起路由請求RREQ或者目的節(jié)點(diǎn)返回路由應(yīng)答RREP時(shí),都要更新各自的序列號。
-
中間節(jié)點(diǎn)依據(jù)序列號的大小判斷路由的新舊。
三、AODV 術(shù)語
-
發(fā)起節(jié)點(diǎn):發(fā)出 AODV 路由請求消息的節(jié)點(diǎn)
-
轉(zhuǎn)發(fā)節(jié)點(diǎn):愿意為其他節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包的節(jié)點(diǎn),轉(zhuǎn)發(fā)節(jié)點(diǎn)會將數(shù)據(jù)包轉(zhuǎn)發(fā)給下一個(gè)節(jié)點(diǎn)。
-
目的節(jié)點(diǎn):當(dāng)一個(gè)節(jié)點(diǎn)看到自己的 IP 地址和數(shù)據(jù)包 IP 頭特定字段的 IP 地址一樣時(shí),認(rèn)定自己是數(shù)據(jù)包的目的節(jié)點(diǎn)。
-
活躍路由:能夠有效通向目的節(jié)點(diǎn)的路由,只有活躍路由能夠轉(zhuǎn)發(fā)數(shù)據(jù)包
-
返回路由:用于轉(zhuǎn)發(fā)回復(fù)包的路由,就是從目的節(jié)點(diǎn)返回到發(fā)起節(jié)點(diǎn)的路由。
-
無效路由:有效路由失效以后,會作為無效路由在路由表中保存一段時(shí)間,并不能轉(zhuǎn)發(fā)數(shù)據(jù)包。
四、AODV 消息格式
AODV 有三種基本的協(xié)議報(bào)文類型:RREQ(路由請求)報(bào)文、RREP(路由應(yīng)答)報(bào)文和 RRER(路由錯(cuò)誤)報(bào)文。
4.1 RREQ 路由請求報(bào)文
在兩個(gè)節(jié)點(diǎn)之間的路由有效,通信正常的情況下,AODV 路由協(xié)議不起任何作用,只有當(dāng)源節(jié)點(diǎn) S 需要向目的節(jié)點(diǎn) D 發(fā)送數(shù)據(jù)包,但是又沒有 D 節(jié)點(diǎn)的路由入口時(shí),才會發(fā)起路由請求(RREQ)。
當(dāng) RREQ 在網(wǎng)絡(luò)中傳播時(shí),中間節(jié)點(diǎn)會更新各自到源節(jié)點(diǎn)的路由,稱為反向路由,RREQ 請求報(bào)文中包含源節(jié)點(diǎn)以前記錄的到目的節(jié)點(diǎn)的序列號,但是此序列號可能不是最新的,中間節(jié)點(diǎn)如果有到目的節(jié)點(diǎn)的路由時(shí),只有該節(jié)點(diǎn)記錄的目的節(jié)點(diǎn)的序列號比 RREQ 中目的節(jié)點(diǎn)序列號更大,才認(rèn)為這條路由是有效的。
報(bào)文格式說明:
- Type:1
- J:加入標(biāo)志,為多播保留。
- R:修復(fù)標(biāo)志,為多播保留。
- G 免費(fèi)路由回復(fù)標(biāo)志:是否向目標(biāo)節(jié)點(diǎn)IP地址域指定的節(jié)點(diǎn)發(fā)一個(gè)免費(fèi)路由回復(fù)消息。
- D 僅允許目的節(jié)點(diǎn)回復(fù)標(biāo)志:標(biāo)志位則僅允許目的節(jié)點(diǎn)回復(fù)本條路由請求。
- U 未知序列號:指的是目標(biāo)節(jié)點(diǎn)序列號未知。
- Reserved:填充0,接收端忽略此字段。
- 跳數(shù):從發(fā)起節(jié)點(diǎn)到處理該請求的節(jié)點(diǎn)的跳數(shù)。
- 路由請求標(biāo)識:這是一個(gè)序列號,用它和源節(jié)點(diǎn)IP可以唯一標(biāo)識一個(gè)RREQ消息。
4.2 RREP 路由應(yīng)答報(bào)文
當(dāng) RREQ 最終到達(dá)目的節(jié)點(diǎn)時(shí),目的節(jié)點(diǎn)通過向該反向路由(RREQ 傳播路線)發(fā)送 RREP 應(yīng)答報(bào)文,建立通向目的節(jié)點(diǎn)的前向路由。
只有以下的情況節(jié)點(diǎn)才會產(chǎn)生 RREP 報(bào)文:
-
該節(jié)點(diǎn)本身就是目的節(jié)點(diǎn)。
-
該節(jié)點(diǎn)為中間節(jié)點(diǎn),但是它有通向目的節(jié)點(diǎn)的活躍路徑。
當(dāng) RREP 傳播到源節(jié)點(diǎn)時(shí),中間節(jié)點(diǎn)根據(jù)該 RREP 更新他們各自指向目的節(jié)點(diǎn)的路由信息。節(jié)點(diǎn)只對第一次收到的 RREQ 發(fā)送 RREP 應(yīng)答報(bào)文。
報(bào)文格式說明:
- Type:2
- R:修復(fù)標(biāo)志,用于多播
- A:需要確認(rèn)
- Reserved:填充0,接受端忽略此字段。
- Prefix Size:前綴長度,如果非零,代表下一跳節(jié)點(diǎn)可以作為任有具有相同路由前綴的節(jié)點(diǎn)被請求時(shí)的目的節(jié)點(diǎn)。
- 跳數(shù):從發(fā)起節(jié)點(diǎn)到目的節(jié)點(diǎn)的跳數(shù)。
- 生命期:路由生命時(shí)間,在這個(gè)時(shí)間內(nèi),接收RREP的節(jié)點(diǎn)會認(rèn)為這條路由是有效的。
4.3 RERR 路由錯(cuò)誤報(bào)文
報(bào)文格式說明:
- Type:3
- N:不必刪除標(biāo)志,當(dāng)一個(gè)節(jié)點(diǎn)已經(jīng)對這條連接做了本地修復(fù)時(shí),上游的幾點(diǎn)就不用刪除這條路由。
- Reserved:保留字段,填充0,接收端不做處理。
- DestCount:本消息內(nèi)包含的不可達(dá)的目的節(jié)點(diǎn)的數(shù)目,至少為1。
- Unreachable Destination IP Address:因?yàn)檫B接斷開而不可達(dá)的目的節(jié)點(diǎn)的IP地址。
- Unreachable Destination Sequence Number:路由表項(xiàng)里不可達(dá)目的節(jié)點(diǎn)的序列號。
五、AODV 工作過程
5.1 AODV 工作流程圖
5.2 路由發(fā)現(xiàn)過程
-
廣播 RREQ 路由請求幀。
-
中間節(jié)點(diǎn)更新各自到源節(jié)點(diǎn)的路由表。
-
如果收到 RREQ 的節(jié)點(diǎn)不是目的節(jié)點(diǎn),并且沒有到達(dá)目的節(jié)點(diǎn)的更新的有效路由,則轉(zhuǎn)發(fā)該 RREQ。
-
中間節(jié)點(diǎn)維護(hù)指向路由源節(jié)點(diǎn)的反向路由。
-
目的節(jié)點(diǎn)或存在到目的節(jié)點(diǎn)有效路由的中間節(jié)點(diǎn)產(chǎn)生 RREP 路由應(yīng)答幀。
-
RREP 通過之前建立的反向節(jié)點(diǎn)單播至源節(jié)點(diǎn)。
-
源節(jié)點(diǎn)收到 RREP 應(yīng)答幀,至此源節(jié)點(diǎn)可以向目的節(jié)點(diǎn)發(fā)送數(shù)據(jù)包。
5.3 路由發(fā)現(xiàn)算法
源節(jié)點(diǎn):應(yīng)用層有數(shù)據(jù)發(fā)送請求,并且指向目的節(jié)點(diǎn)的路由有效,直接通過該路由發(fā)送數(shù)據(jù)包,如果沒有到達(dá)目的節(jié)點(diǎn)的有效路徑,則產(chǎn)生 RREQ 廣播幀,RREQ 的序列號、ID 字段加1,將源節(jié)點(diǎn)的 IP,序列號、目的節(jié)點(diǎn)的 IP、序列號等信息添加到 RREQ 中,廣播至網(wǎng)絡(luò)。
中間節(jié)點(diǎn):如果中間節(jié)點(diǎn)路由表中記錄的到目的節(jié)點(diǎn)的路由有效,并且記錄的目的節(jié)點(diǎn)的序列號大于或者等于 RREQ 中的目的節(jié)點(diǎn)序列號,則該中間節(jié)點(diǎn)可以產(chǎn)生路由應(yīng)答幀。如果該中間節(jié)點(diǎn)不產(chǎn)生應(yīng)答幀,更改RREQ 中的目的節(jié)點(diǎn)序列號至當(dāng)前最大,跳數(shù)字段加1,然后轉(zhuǎn)發(fā)。
目的節(jié)點(diǎn):目的節(jié)點(diǎn)的序列號加1,產(chǎn)生 RREP 應(yīng)答幀(包括源節(jié)點(diǎn) IP、目的節(jié)點(diǎn) IP 和更新后的序列號),單播發(fā)送至源節(jié)點(diǎn)。
5.4 路由維護(hù)算法
Hello 消息:Hello 消息幀就是 TTL=1時(shí)的 REEP 幀,Hello 消息幀用于檢測活躍路徑上相鄰節(jié)點(diǎn)的鏈接狀況。只有當(dāng)某節(jié)點(diǎn)位于某活躍路徑之上時(shí),他才能發(fā)送 Hello 消息幀?;钴S路徑節(jié)點(diǎn)以 HELLO_INTERVAL 為周期發(fā)送 Hello 消息。
-
在DELETE_PERIOD的時(shí)間內(nèi)沒有收到來自鄰居節(jié)點(diǎn)的Hello消息,則認(rèn)為 該鏈路失效;發(fā)起一次指向該鄰居節(jié)點(diǎn)的局部修復(fù)。
-
路由修復(fù)超時(shí)以后,路有錯(cuò)誤信息RERR向源節(jié)點(diǎn)和目的節(jié)點(diǎn)發(fā)送。
-
RERR在傳播過程中,各中間節(jié)點(diǎn)刪除該失效路徑上相應(yīng)的路由信息。
5.5 路由信息新舊判斷
AODV 依賴網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)維護(hù)自身的序列號,源節(jié)點(diǎn)在廣播路由請求幀 RREQ 之前要更新自己的序列號,即將序列號加1,目的節(jié)點(diǎn)在產(chǎn)生 RREP 應(yīng)答幀之前也要將自身的序列號加1,每個(gè)節(jié)點(diǎn)在對各自的序列號加1的時(shí)候,是將其視為無符號數(shù)進(jìn)行的。
通過比較來自目的節(jié)點(diǎn)路由控制幀中的序列號 SN1 和本節(jié)點(diǎn)維護(hù)的目的節(jié)點(diǎn)的序列號 SN2,就可以確定本鏈路的新舊程度。如果 SN2-SN1<0(有符號數(shù)相減),說明路由表中的維護(hù)信息已過時(shí),應(yīng)將路由信息更新至路由控制幀最新的路由信息。
六、擁塞控制
源節(jié)點(diǎn)在發(fā)送 RREQ 后,在規(guī)定的時(shí)間內(nèi)沒有收到來自目的節(jié)點(diǎn)的RREP時(shí),他可以選擇再次發(fā)送 RREQ 路由請求幀。
在嘗試了 RREQ_RETRIES 次之后,如果依舊收不到 RREP,則在路由表中標(biāo)記該目的節(jié)點(diǎn)不可達(dá),通知應(yīng)用層。每次在重新發(fā)送 RREQ 請求幀時(shí),等待 RREP 應(yīng)答幀的時(shí)間要在原來時(shí)間的基礎(chǔ)上乘以2,避免擁塞。
到此這篇關(guān)于自組織網(wǎng)絡(luò)Ad Hoc之AODV協(xié)議詳解的文章就介紹到這了,更多相關(guān)AODV協(xié)議內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
三大網(wǎng)絡(luò)管理協(xié)議:SNMP、NETCONF、RESTCONF介紹
本文將詳細(xì)介紹三種主要的協(xié)議:SNMP(Simple Network Management Protocol)、NETCONF(Network Configuration Protocol)和RESTCONF,需要的朋友可以參考下2024-02-13- 常見的網(wǎng)絡(luò)協(xié)議有:TCP/IP協(xié)議、UDP協(xié)議、HTTP協(xié)議、FTP協(xié)議等,本文就詳細(xì)的介紹一下常見的網(wǎng)絡(luò)協(xié)議,通過這些具體的協(xié)議更深刻的認(rèn)識整體網(wǎng)絡(luò)的傳輸流程及相關(guān)網(wǎng)絡(luò)原理,2023-05-30
- 本文主要介紹了L2TP和PPTP的區(qū)別,主要的前區(qū)別在于用途不同、使用要求不同,下面就來介紹一下L2TP和PPTP的聯(lián)系與區(qū)別,感興趣的可以了解一下2023-05-30
自組織網(wǎng)絡(luò)Ad Hoc之OLSR 協(xié)議詳解
這篇文章主要介紹了自組織網(wǎng)絡(luò)Ad Hoc之OLSR 協(xié)議詳解,需要的朋友可以參考下2023-05-08自組織網(wǎng)絡(luò)Ad Hoc之AODV協(xié)議詳解
這篇文章主要介紹了自組織網(wǎng)絡(luò)Ad Hoc之AODV協(xié)議詳解,需要的朋友可以參考下2023-05-08自組織網(wǎng)絡(luò)Ad Hoc 網(wǎng)絡(luò)基礎(chǔ)知識
自組織網(wǎng)絡(luò)(Ad Hoc)是一種移動通信和計(jì)算機(jī)網(wǎng)絡(luò)相結(jié)合的網(wǎng)絡(luò),是移動計(jì)算機(jī)網(wǎng)絡(luò)的一種,用戶終端可以在網(wǎng)絡(luò)內(nèi)隨意移動而保持通信2023-05-08- 瀏覽器輸入一個(gè)URL回車后,會發(fā)生什么呢?這里就為大家分享一下,需要的朋友可以參考下2022-10-19
- 本篇主要是對網(wǎng)絡(luò)協(xié)議進(jìn)行一個(gè)歸納總結(jié),方便后續(xù)查閱及復(fù)習(xí),當(dāng)然如有新的認(rèn)知或新的理解,也會持續(xù)更新2022-10-19
- 今日回顧網(wǎng)絡(luò)知識時(shí),發(fā)現(xiàn)自己專門整理過一篇關(guān)于日常生活中常見的網(wǎng)絡(luò)協(xié)議知識以及作用的梳理,特發(fā)此一貼,也當(dāng)給自己鞏固網(wǎng)絡(luò)知識了,如有錯(cuò)誤,望各大佬指正2022-10-19
- HTTP即超文本傳輸協(xié)議,是一種實(shí)現(xiàn)客戶端和服務(wù)器之間通信的響應(yīng)協(xié)議,它是用作客戶端和服務(wù)器之間的請求,需要的朋友可以參考下2022-10-19