一種基于aodv路由協(xié)議本地修復(fù)機(jī)制的改進(jìn)方法
【專利摘要】移動Ad?Hoc網(wǎng)絡(luò)中,每個(gè)移動終端兼?zhèn)渲鳈C(jī)和路由器兩種功能,可以通過無線連接構(gòu)成任意的網(wǎng)絡(luò)拓?fù)?,Ad?Hoc網(wǎng)絡(luò)需要適用于其自身特點(diǎn)的路由協(xié)議。AODV路由協(xié)議借鑒了DSR中路由發(fā)現(xiàn)和路由維護(hù)的機(jī)制,又綜合了DSDV逐跳路由、順序編號和路由維護(hù)階段的周期更新機(jī)制,形成了一種適合Ad?Hoc網(wǎng)絡(luò)的獨(dú)特協(xié)議,其在鏈路失效的情況下發(fā)揮著很大的作用。傳統(tǒng)的源節(jié)點(diǎn)重新發(fā)起的路由恢復(fù)策略和本地修復(fù)路由恢復(fù)策略都有其局限性,無法在不同的情況下都保持良好的性能表現(xiàn)。本發(fā)明根據(jù)本地修復(fù)策略存在的缺陷問題對其算法進(jìn)行了改進(jìn),提出了解決避免地方修復(fù)中出現(xiàn)路由環(huán)路的方法,并取得了一定的成功。
【專利說明】—種基于AODV路由協(xié)議本地修復(fù)機(jī)制的改進(jìn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于AODV路由協(xié)議本地修復(fù)機(jī)制的改進(jìn)方法,AODV路由協(xié)議是移動AdHoc網(wǎng)絡(luò)的一種路由協(xié)議,屬于無線通信領(lǐng)域。
【背景技術(shù)】
[0002]Ad Hoc網(wǎng)絡(luò)是一種沒有有線基礎(chǔ)設(shè)施支持的移動網(wǎng)絡(luò),網(wǎng)絡(luò)中的節(jié)點(diǎn)均由移動主機(jī)構(gòu)成。Ad Hoc網(wǎng)絡(luò)最初應(yīng)用于軍事領(lǐng)域,它的研究起源于戰(zhàn)場環(huán)境下分組無線網(wǎng)數(shù)據(jù)通信項(xiàng)目。由于無線通信和終端技術(shù)的不斷發(fā)展,Ad Hoc網(wǎng)絡(luò)在民用環(huán)境下也得到了發(fā)展,如需要在沒有有線基礎(chǔ)設(shè)施的地區(qū)進(jìn)行臨時(shí)通信時(shí),可以很方便地通過搭建Ad Hoc網(wǎng)絡(luò)實(shí)現(xiàn)。
[0003]Ad Hoc網(wǎng)絡(luò)可以看作是移動通信和計(jì)算機(jī)網(wǎng)絡(luò)的交叉。在Ad Hoc網(wǎng)絡(luò)中,使用計(jì)算機(jī)網(wǎng)絡(luò)的分組交換機(jī)制,而不是電路交換機(jī)制。通信的主機(jī)一般是便攜式計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)等移動終端設(shè)備。Ad Hoc網(wǎng)絡(luò)不同于目前因特網(wǎng)環(huán)境中的移動IP網(wǎng)絡(luò)。在移動IP網(wǎng)絡(luò)中,移動主機(jī)可以通過固定有線網(wǎng)絡(luò)、無線鏈路和撥號線路等方式接入網(wǎng)絡(luò),而在Ad Hoc網(wǎng)絡(luò)中只存在無線鏈路一種連接方式。在移動IP網(wǎng)絡(luò)中,移動主機(jī)通過相鄰的基站等有線設(shè)施的支持才能通信,在基站和基站(代理和代理)之間均為有線網(wǎng)絡(luò),仍然使用因特網(wǎng)的傳統(tǒng)路由協(xié)議。而Ad Hoc網(wǎng)絡(luò)沒有這些設(shè)施的支持。此外,在移動IP網(wǎng)絡(luò)中移動主機(jī)不具備路由功能,只是一個(gè)普通的通信終端。當(dāng)移動主機(jī)從一個(gè)區(qū)移動到另一個(gè)區(qū)時(shí)并不改變網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),而Ad Hoc網(wǎng)絡(luò)中移動主機(jī)的移動將會導(dǎo)致拓?fù)浣Y(jié)構(gòu)的改變。
[0004]Ad Hoc網(wǎng)絡(luò)的路由協(xié)議大致可以分為先驗(yàn)式(Proactive)路由協(xié)議、反應(yīng)式(Reactive)路由協(xié)議。先驗(yàn)式路由協(xié)議又稱為表驅(qū)動路由協(xié)議,在這種路由協(xié)議中,每個(gè)節(jié)點(diǎn)維護(hù)一張包含到達(dá)其它節(jié)點(diǎn)的路由信息的路由表。當(dāng)檢測到網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)發(fā)生變化時(shí),節(jié)點(diǎn)在網(wǎng)絡(luò)中發(fā)送更新消息,收到更新消息的節(jié)點(diǎn)將更新自己的路由表,以維護(hù)及時(shí)的、準(zhǔn)確的路由信息,所以路由表可以準(zhǔn)確地反映網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。源節(jié)點(diǎn)一旦要發(fā)送報(bào)文,可以立即獲得到達(dá)目的節(jié)點(diǎn)的路由。因此這種路由協(xié)議的時(shí)延較小,但是路由協(xié)議的開銷較大;反應(yīng)式路由協(xié)議,又稱為按需路由協(xié)議,是一種當(dāng)需要發(fā)送數(shù)據(jù)時(shí)才查找路由的路由算法。在這種路由協(xié)議中,節(jié)點(diǎn)不需要維護(hù)及時(shí)準(zhǔn)確的路由信息,當(dāng)向目的節(jié)點(diǎn)發(fā)送報(bào)文時(shí),源節(jié)點(diǎn)才在網(wǎng)絡(luò)中發(fā)起路由查找過程,找到相應(yīng)的路由。與先驗(yàn)式路由協(xié)議相比,反應(yīng)式路由協(xié)議的開銷較小,但是數(shù)據(jù)報(bào)傳送的時(shí)延較大。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提出了一種基于AODV路由協(xié)議本地修復(fù)機(jī)制的改進(jìn)方法,通過AODV路由協(xié)議的分析,提出了 AODV路由協(xié)議地方修復(fù)機(jī)制,同時(shí),根據(jù)地方修復(fù)機(jī)制,提出了改進(jìn)后的AODV路由協(xié)議。發(fā)明了避免地方修復(fù)中出現(xiàn)路由環(huán)路的方法。為了避免環(huán)路,斷鏈中的活躍節(jié)點(diǎn)不應(yīng)接受來自其下游節(jié)點(diǎn)的RREQ。我們需要修改AODV協(xié)議中收到RREQ后的動作,加強(qiáng)產(chǎn)生路由應(yīng)答的條件。該條件為:[0006]1.在本地修復(fù)的模式中,當(dāng)節(jié)點(diǎn)收到RREQ時(shí),提取RREP中的目標(biāo)節(jié)點(diǎn)IP地址(dest_IP_addr),和發(fā)送此報(bào)文的源地址(sour_addr)。
[0007]2.跟據(jù)目標(biāo)節(jié)點(diǎn)IP地址(dest_IP_addr)查找相應(yīng)路由表項(xiàng)。此表項(xiàng)的下一條地址為節(jié)點(diǎn)的下游節(jié)點(diǎn)地址。
[0008]3.比較下游節(jié)點(diǎn)的地址和源地址。
[0009]4.如果兩者相等,則說明發(fā)送該RREP的節(jié)點(diǎn)即為此節(jié)點(diǎn)的下游節(jié)點(diǎn),為了避免環(huán)路,應(yīng)將該報(bào)文丟棄。如果不相等,則不是下游節(jié)點(diǎn),接著可步入先前定義的地方修復(fù)流程
[0010]具體實(shí)現(xiàn)為:在本地修復(fù)模式下,調(diào)用recvRequestO函數(shù),添加進(jìn)一個(gè)新的條件如下:
[0011]rt&&(rt- > rt_hops ! = INFINITY2) &&(rt- > rt_seqno > = rq- > rq_dst_seqno)&&(rt- > rt_nexthop ! = Ih- > saddr ())
【專利附圖】
【附圖說明】
[0012]圖1反向路由的建立
[0013]圖2正向路由的建立
[0014]圖3鏈路中斷時(shí)調(diào)用本地修復(fù)
[0015]圖4地方修復(fù)時(shí)出現(xiàn)的路由環(huán)路現(xiàn)象
[0016]圖5改進(jìn)的本地修復(fù)機(jī)制
[0017]實(shí)施方式
[0018]一、AODV路由協(xié)議的分析
[0019]A、AODV路由協(xié)議概述
[0020]AODV是由諾基亞研究中心的Charles E.Perkins和加利福尼亞大學(xué)的ElizabethM.Belding-Roryer 以及 Cincinnati 大學(xué) Samir R.Das 等共同開發(fā),已經(jīng)被IETF MANET工作組于2003年7月正式公布為自組網(wǎng)路由協(xié)議的RFc標(biāo)準(zhǔn)。AODV實(shí)質(zhì)上就是DSR和DSDV的綜合,它借用了 DSR中路由發(fā)現(xiàn)和路由維護(hù)的基礎(chǔ)程序,及DSDV的逐跳(Hop-by-Hop)路由、目的節(jié)點(diǎn)序列號和路由維護(hù)階段的周期更新機(jī)制,以DSDV為基礎(chǔ),結(jié)合DSR中的按需路由思想并加以改進(jìn)。
[0021]AODV 使用 3 種消息作為控制:RouteRequest (RREQ), RouteReply (RREP)和RouteError (RERR)。當(dāng)源節(jié)點(diǎn)需要和目的節(jié)點(diǎn)通信時(shí),如果在路由表中已經(jīng)存在了對應(yīng)的路由時(shí),AODV不會進(jìn)行任何操作。當(dāng)源節(jié)點(diǎn)需要和新的目的通信時(shí),它就會發(fā)起路由發(fā)現(xiàn)過程,通過廣播RREQ信息來查找相應(yīng)路由。當(dāng)這個(gè)RREQ到達(dá)目的節(jié)點(diǎn)本身,或者是一個(gè)擁有足夠新的到目的節(jié)點(diǎn)路由的中間節(jié)點(diǎn)時(shí),路由就可以確定了。所謂“足夠新”就是通過目的序列號來判斷的。目的節(jié)點(diǎn)或中間節(jié)點(diǎn)通過原路返回一個(gè)RREP信息來向源節(jié)點(diǎn)確定路由的可用性。在維護(hù)路由表的過程中,當(dāng)路由不再被使用時(shí),節(jié)點(diǎn)就會從路由表中刪除相應(yīng)的項(xiàng)。同時(shí),節(jié)點(diǎn)會 監(jiān)視一個(gè)活動路由(activeixmte,有限跳的,可用于數(shù)據(jù)轉(zhuǎn)發(fā)的路由表)中,下一跳節(jié)點(diǎn)的狀況。當(dāng)發(fā)現(xiàn)有鏈路斷開的情況時(shí),節(jié)點(diǎn)就會使用RERR通知上游的節(jié)點(diǎn),而上游的節(jié)點(diǎn)就會使用該RERR分組拷貝通知更上游的節(jié)點(diǎn)。在RERR消息中,指明了由于斷鏈而導(dǎo)致無法達(dá)到目的節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)都保留了一個(gè)“前驅(qū)列表”(precursor list)來幫助完成錯誤報(bào)告的功能,這個(gè)列表中保存了把自己作為到當(dāng)前不可達(dá)節(jié)點(diǎn)的下一跳的相鄰節(jié)點(diǎn)(可以通過記錄RERR很容易地獲得)。在路由表中,針對每一個(gè)表項(xiàng),需要記錄相應(yīng)的的特征內(nèi)容。其中,序列號是防止路由環(huán)路的關(guān)鍵所在。當(dāng)發(fā)生斷鏈時(shí),通過增加序列號和度量值(跳數(shù))來使路由表項(xiàng)無效。
[0022]B、路由發(fā)現(xiàn)過程
[0023]AODV路由協(xié)議是一種典型的按需驅(qū)動路由協(xié)議,該算法可被稱為純粹的需求路由獲取系統(tǒng),那些不在活躍路徑上的節(jié)點(diǎn)不會維持任何相關(guān)路由信息,也不會參與任何周期路由表的交換。此外,節(jié)點(diǎn)沒有必要去發(fā)現(xiàn)和維持到另一節(jié)點(diǎn)的路由,除非這兩個(gè)節(jié)點(diǎn)需要進(jìn)行通信。移動節(jié)點(diǎn)間的局部連接性可以通過幾種方法得到,其中包括使用局部廣播Hello消息。這種算法的主要目的是:在需要時(shí)廣播路由發(fā)現(xiàn)分組一般的拓?fù)渚S護(hù);區(qū)別局部連接管理(鄰居檢測)和一般的拓?fù)渚S護(hù);向需要連接信息的鄰居移動節(jié)點(diǎn)散播拓?fù)渥兓畔ⅰODV使用廣播路由發(fā)現(xiàn)機(jī)制,它依賴中間節(jié)點(diǎn)動態(tài)建立路由表來進(jìn)行分組的傳送。為了維持節(jié)點(diǎn)間的最新路由信息,AODV借鑒了 DSDV中的序列號的思想,利用這種機(jī)制就能有效地防止路由環(huán)的形成。當(dāng)源節(jié)點(diǎn)想與另外一個(gè)節(jié)點(diǎn)通信,而它的路由表中又沒有相應(yīng)的路由信息時(shí),它就會發(fā)起路由發(fā)現(xiàn)過程。每一個(gè)節(jié)點(diǎn)維持兩個(gè)獨(dú)立的計(jì)數(shù)器:節(jié)點(diǎn)序列號計(jì)數(shù)器和廣播標(biāo)識。源節(jié)點(diǎn)通過向自己的鄰居廣播RREQ(Route Requests)分組來發(fā)起一次路由發(fā)現(xiàn)過程。
[0024]a.反向路由的建立
[0025]反向路由的建立見圖1,在RREQ分組中包含了兩個(gè)序列號:源節(jié)點(diǎn)序列號和源節(jié)點(diǎn)所知道的最新的目的序列號。源節(jié)點(diǎn)序列號用于維持到源的反向路由的特性,目的序列號表明了到目的地的最新路由。當(dāng)RREQ分組從一個(gè)源節(jié)點(diǎn)轉(zhuǎn)發(fā)到不同的目的地時(shí),沿途所經(jīng)過的節(jié)點(diǎn)都要自動建立到源節(jié)點(diǎn)的反向路由。節(jié)點(diǎn)通過記錄收到的第一個(gè)RREQ分組的鄰居地址來建立反向路由,這些反向路由將會維持一定時(shí)間,一該段時(shí)間足夠RREQ分組在網(wǎng)內(nèi)轉(zhuǎn)發(fā)以及產(chǎn)生的RREP分組返回源節(jié)點(diǎn)。當(dāng)RREQ分組到達(dá)了目的節(jié)點(diǎn),目的節(jié)點(diǎn)就會產(chǎn)生RREP分組,并利用建立的反向路由來轉(zhuǎn)發(fā)RREP。
[0026]b.正向路由的建立
[0027]正向路由的建立見圖2,RREQ分組最終將到達(dá)一個(gè)節(jié)點(diǎn),該節(jié)點(diǎn)可能就是目的節(jié)點(diǎn),或者這個(gè)節(jié)點(diǎn)有到達(dá)目的節(jié)點(diǎn)的路由。如果這個(gè)中間節(jié)點(diǎn)有到達(dá)目的的路由項(xiàng),它就會比較路由項(xiàng)里的目的序列號和RREQ分組里的目的序列號的大小來判斷自己已有的路由是否是比較新的。如果RREQ分組里的目的序列號比路由項(xiàng)中的序列號大,則這個(gè)中間節(jié)點(diǎn)不能使用己有的路由來響應(yīng)這個(gè)RREQ分組,只能是繼續(xù)廣播這個(gè)RREQ分組。中間節(jié)點(diǎn)只有在路由項(xiàng)中的目的序列號不小于RREQ中的目的序列號時(shí),才能直接對收到的RREQ分組做出響應(yīng)。如果節(jié)點(diǎn)有到目的地的最新路由,而且這個(gè)RREQ還沒有被處理過,這個(gè)節(jié)點(diǎn)將會沿著建立的反向路由返回RREP分組。
[0028]在RREP轉(zhuǎn)發(fā)回源節(jié)點(diǎn)的過程中,沿著這條路徑上的每一個(gè).節(jié)點(diǎn)都將建立到目的節(jié)點(diǎn)的同向路由,也就是記錄下RREP是從哪一個(gè)鄰居節(jié)點(diǎn)來的地址,然后更新有關(guān)源和目的路由的定時(shí)器信息以及記錄下RREP中目的節(jié)點(diǎn)的最新序列號。對于那些建立了反向路由,但RREP分組并沒有經(jīng)過的節(jié)點(diǎn),它們中建立的反向路由將會在一定時(shí)間(Active-Route-Timeout)后自動變?yōu)闊o效。收到RREP分組的節(jié)點(diǎn)將會對到某一個(gè)源節(jié)點(diǎn)的第一個(gè)RREP分組進(jìn)行轉(zhuǎn)發(fā),對于其后收到的到同一個(gè)源的RREP分組,只有當(dāng)后到的RREP分組中包含了更高的目的序列號或雖然有相同的目的序列號但所經(jīng)過的跳數(shù)較少時(shí),節(jié)點(diǎn)才一會重新更新路由信息,以及把這個(gè)RREP分組轉(zhuǎn)發(fā)出去。這種方法有效地抑制了向源節(jié)點(diǎn)轉(zhuǎn)發(fā)的RREP分組數(shù),而且確保了最新及最快的路由信息。源節(jié)點(diǎn)將在收到第一個(gè)RREP分組后,就開始向目的節(jié)點(diǎn)發(fā)送數(shù)據(jù)分組。如果以后源節(jié)點(diǎn)了解到的更新的路由,它就會更新自己的路由信息。
[0029]C.路由的維護(hù)
[0030]如果節(jié)點(diǎn)的移動不是沿著活躍路徑進(jìn)行的,那么就不會影響已經(jīng)建立的路由。如果一個(gè)源節(jié)點(diǎn)在活躍路徑上移動,它就要向目的節(jié)點(diǎn)重新發(fā)起一次路由發(fā)現(xiàn)過程。如果移動的節(jié)點(diǎn)是中間節(jié)點(diǎn)或目的節(jié)點(diǎn),那么一個(gè)特殊的RREP分組將轉(zhuǎn)發(fā)到那些受移動影響的源節(jié)點(diǎn)。周期性發(fā)送的Hello分組可以用來確保鏈路的對稱性,并檢測不能用的鏈路。如果不用Hello分組,也可以采用鏈路層通告機(jī)制來報(bào)告鏈路的無效性,這樣可以減少延遲。此外,節(jié)點(diǎn)在嘗試向下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)分組失敗后,也能檢測出鏈路的不可用性。
[0031]一旦一個(gè)節(jié)點(diǎn)的下一跳節(jié)點(diǎn)變得不可達(dá),這時(shí)它就要向利用該損壞鏈路的活躍上游節(jié)點(diǎn)發(fā)送未被請求的RREp(RERR)分組,這個(gè)RREP(RERR)分組帶有一個(gè)新的序列號(即在目的序列號上加I),并將跳數(shù)值設(shè)置為二。收到這個(gè)RREP (RERR)分組的節(jié)點(diǎn)再依次將RREP (RERR)分組轉(zhuǎn)發(fā)到它們各自的活躍鄰居,這個(gè)過程持續(xù)到所有的與損壞鏈路有關(guān)的活躍節(jié)點(diǎn)都被通知到為止。源節(jié)點(diǎn)在收到斷鏈的通知后,如果它還要與目的節(jié)點(diǎn)聯(lián)系,它就需要再次發(fā)起新的路由發(fā)現(xiàn)過程。這時(shí),它將會廣播一個(gè)RREQ分組,這個(gè)RREQ分組中的目的序列號要在源節(jié)點(diǎn)已知的最新目的序列號之上加1,以確保那些還不知道目的節(jié)點(diǎn)最新位置的中間節(jié)點(diǎn)對這個(gè)RREQ分組做出響應(yīng),從而能保證建立一條新的、有效的路由。
[0032]二、AODV路由協(xié)議地方修復(fù)機(jī)制
[0033]A.本地修復(fù)策略
[0034]在無線網(wǎng)絡(luò)中,節(jié)點(diǎn)的移動時(shí)常發(fā)生,而由于無線自組織網(wǎng)絡(luò)中節(jié)點(diǎn)同時(shí)也會擔(dān)當(dāng)為其它節(jié)點(diǎn)作中繼的路由器,節(jié)點(diǎn)的移動就會引起斷路的發(fā)生。針對斷路的問題,現(xiàn)有的AODV采取的是本地修復(fù)的辦法。當(dāng)一條活動路由中發(fā)生一條鏈中斷的時(shí)候,如果鏈路中斷處距離目的節(jié)點(diǎn)不是很遠(yuǎn)(不大于最大修復(fù)長度),那么鏈路中斷處的上行節(jié)點(diǎn)就可以選擇本地修復(fù)這條中斷鏈。為了修復(fù)鏈路,節(jié)點(diǎn)增加關(guān)于目的節(jié)點(diǎn)的序列號,然后廣播關(guān)于目的節(jié)點(diǎn)的RREQ。發(fā)起修復(fù)的節(jié)點(diǎn)等待路由發(fā)現(xiàn)周期來獲得對RREQ進(jìn)行響應(yīng)的RREP。在本地修復(fù)過程中數(shù)據(jù)報(bào)文應(yīng)該進(jìn)行緩存。如果路由發(fā)現(xiàn)周期結(jié)束仍然沒有收到關(guān)于目的地節(jié)點(diǎn)的RREP (或者其它建立或更新路由的控制消息),則發(fā)送關(guān)于該目的地節(jié)點(diǎn)的RERR。另一方面,如果節(jié)點(diǎn)在路由發(fā)現(xiàn)期間收到一個(gè)或多個(gè)RREP (或者其它建立或更新到期望目的地節(jié)點(diǎn)路由的控制消息),它首先將新路由的跳數(shù)與關(guān)于目的地節(jié)點(diǎn)無效路由表項(xiàng)的跳數(shù)值進(jìn)行比較。如果新確定的到目的地節(jié)點(diǎn)的路由的跳數(shù)大于原來知道路由的跳數(shù),則節(jié)點(diǎn)發(fā)出關(guān)于該目的地節(jié)點(diǎn)的RERR,如果RERR是從沿著這條路由的下一跳發(fā)送過來的,并且到目的節(jié)點(diǎn)的路由有一個(gè)或者多個(gè)先驅(qū)節(jié)點(diǎn),它所需要做的只是重傳這條信息。圖3為本地修復(fù)的模擬圖。
[0035]B.本地修復(fù)機(jī)制中存在的路由環(huán)路問題
[0036]AODV要求當(dāng)路由失效處離目標(biāo)節(jié)點(diǎn)較近時(shí)(小于網(wǎng)絡(luò)直徑的1/3),中間節(jié)點(diǎn)應(yīng)首先嘗試局部的路由重建,把待發(fā)送數(shù)據(jù)包存入路由緩存隊(duì)列(而不是馬上丟棄),然后進(jìn)行Localrepair:首先在小范圍內(nèi)廣播路由請求消息(RREQ),然后等待一段時(shí)間,如鏈路仍未能恢復(fù)才將數(shù)據(jù)包丟棄,并發(fā)送路由出錯消息(RERR)在等待期間接收到的所有數(shù)據(jù)包均被加入路由緩存隊(duì)列。RREQ消息廣播的范圍由TTL控制,取值為:
[0037]max(MINREPAIRTTL,0.5*#hops)+L0CAL_ADDTTL.[0038]#hops為中間節(jié)點(diǎn)到源節(jié)點(diǎn)的跳數(shù),MINREPAIRTTL為中間節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的跳數(shù),LOCALesADDeeTTL取值2。在發(fā)生地方修復(fù)是時(shí),因?yàn)橹虚g節(jié)點(diǎn)離源節(jié)點(diǎn)比較,TTL的取值范圍一般為:MINREPAIRTTL+LOCAL-ADD-TTL <= TTL < #hops.所以 RREQ 消息不會被源節(jié)點(diǎn)收到。
[0039]采用本地修復(fù)可以獲得更低的數(shù)據(jù)分組丟失率。在節(jié)點(diǎn)移動性不高的情況下出現(xiàn)斷鏈時(shí),使用本地修復(fù)可以減小時(shí)延,提高數(shù)據(jù)傳輸?shù)男?。但本地修?fù)仍存在一定的缺陷。那便是,本地修復(fù)有時(shí)會造成路由環(huán)路。圖4所示為地方修復(fù)時(shí)出現(xiàn)的路由環(huán)路現(xiàn)象。
[0040]設(shè)想以下的情況,當(dāng)斷鏈發(fā)生時(shí),處于斷鏈上游的節(jié)點(diǎn)會采取地方修復(fù)的措施,假設(shè)此節(jié)點(diǎn)為節(jié)點(diǎn)4,包的流向?yàn)閺墓?jié)點(diǎn)6流向節(jié)點(diǎn)1.路由協(xié)議進(jìn)入地方修復(fù)后,節(jié)點(diǎn)4將廣播RREQ分組,他的鄰居節(jié)點(diǎn)3和5都收到了這個(gè)請求,并進(jìn)行回復(fù),發(fā)出RREP,但是來自節(jié)點(diǎn)6的RREP先被節(jié)點(diǎn)4收到,節(jié)點(diǎn)位即將路由表更新為正常狀態(tài),之后再收到節(jié)點(diǎn)3的RREP,如果該RREP的目的序列號不大于節(jié)點(diǎn)4當(dāng)前的序列號,那么節(jié)點(diǎn)4不會更新任何路由信息。由于之前節(jié)點(diǎn)4已經(jīng)將來自節(jié)點(diǎn)5的RREP視為正確的應(yīng)答,所以被緩存在節(jié)點(diǎn)4的數(shù)據(jù)報(bào)文將被轉(zhuǎn)發(fā)到節(jié)點(diǎn)5上。然而節(jié)點(diǎn)5的嚇一跳節(jié)點(diǎn)正是節(jié)點(diǎn)4,因此該數(shù)據(jù)報(bào)文將始終在節(jié)點(diǎn)4和5之間循環(huán)傳遞,直至TTL值被消耗殆盡。地方修復(fù)宣告失敗由于環(huán)路的出現(xiàn)。
[0041]三、針對地方修復(fù)改進(jìn)后的AODV協(xié)議 [0042]A.避免地方修復(fù)中出現(xiàn)路由環(huán)路的方法
[0043]分析得知,造成路由環(huán)路的核心問題在于,發(fā)起地方修復(fù)的節(jié)點(diǎn)接受了來自其上游節(jié)點(diǎn)的應(yīng)答信息?;蛘邠Q句話說,為了避免環(huán)路,斷鏈中的活躍節(jié)點(diǎn)不應(yīng)接受來自其下游節(jié)點(diǎn)的RREQ。要做到這點(diǎn),我們需要修改AODV協(xié)議中收到RREQ后的動作,加強(qiáng)產(chǎn)生路由應(yīng)答的條件。該條件為:
[0044]1、在本地修復(fù)的模式中,當(dāng)節(jié)點(diǎn)收到RREQ時(shí),提取RREP中的目標(biāo)節(jié)點(diǎn)IP地址(dest_IP_addr),和發(fā)送此報(bào)文的源地址(sour_addr)。
[0045]2、跟據(jù)目標(biāo)節(jié)點(diǎn)IP地址(dest IP_addr)查找相應(yīng)路由表項(xiàng)。此表項(xiàng)的下一條地址為節(jié)點(diǎn)的下游節(jié)點(diǎn)地址。
[0046]3、比較下游節(jié)點(diǎn)的地址和源地址。
[0047]4、如果兩者相等,則說明發(fā)送該RREP的節(jié)點(diǎn)即為此節(jié)點(diǎn)的下游節(jié)點(diǎn),為了避免環(huán)路,應(yīng)將該報(bào)文丟棄。如果不相等,則不是下游節(jié)點(diǎn),接著可步入先前定義的地方修復(fù)流程
[0048]具體實(shí)現(xiàn)為:在本地修復(fù)模式下,調(diào)用recvRequestO函數(shù),添加進(jìn)一個(gè)新的條件如下:
[0049]rt&&(rt- > rt_hops ! = INFINITY2) &&(rt- > rt_seqno > = rq- > rq_dst_seqno)&&(rt- > rt_nexthop ! = Ih- > saddr ())
[0050]該條件語句主要用于判斷發(fā)送RREP的節(jié)點(diǎn)是否為下游節(jié)點(diǎn)。改進(jìn)后的本地修復(fù)機(jī)制如圖5所示。[0051]由于移動Ad-hoc網(wǎng)絡(luò),MANET的移動性,節(jié)點(diǎn)可以自由加入或離開網(wǎng)絡(luò),導(dǎo)致拓?fù)浣Y(jié)構(gòu)頻繁發(fā)生不可預(yù)期的變化。在這種環(huán)境下,斷鏈時(shí)常發(fā)生,因而路由協(xié)議具備良好的路由修復(fù)機(jī)制極為重要,AODV協(xié)議下的地方修復(fù)機(jī)制在修復(fù)斷鏈時(shí)起到了很大的作用,然而該機(jī)制存在路由環(huán)路問題,在一些情況下會導(dǎo)致網(wǎng)絡(luò)性能的下降,本發(fā)明提出了改進(jìn)方案,并在仿真環(huán)境中取得了成功,改進(jìn)后的協(xié)議在一定程度上的提高了網(wǎng)絡(luò)性能。然而現(xiàn)實(shí)環(huán)境與仿真環(huán)境有很大不同,因此基于AODV本地修復(fù)機(jī)制的改善仍需要不斷的探索。
【權(quán)利要求】
1.一種基于AODV路由協(xié)議本地修復(fù)機(jī)制的改進(jìn)方法,通過AODV路由協(xié)議的分析,提出了 AODV路由協(xié)議地方修復(fù)機(jī)制。
2.根據(jù)權(quán)利要求1所述的基于AODV路由協(xié)議本地修復(fù)機(jī)制的改進(jìn)方法,根據(jù)地方修復(fù)機(jī)制,提出了改進(jìn)后的AODV路由協(xié)議。
3.根據(jù)權(quán)利要求1所述的基于AODV路由協(xié)議本地修復(fù)機(jī)制的改進(jìn)方法,其特征在于提出了避免地方修復(fù)中出現(xiàn)路由環(huán)路的具體方法。
【文檔編號】H04W40/02GK103945481SQ201310023508
【公開日】2014年7月23日 申請日期:2013年1月18日 優(yōu)先權(quán)日:2013年1月18日
【發(fā)明者】杜月林 申請人:杜月林