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