AODV路由協(xié)議的入手指南
對于AODV路由協(xié)議我們常常和Ad hoc無線網(wǎng)絡(luò)聯(lián)系在一起。那么這種專屬于這類網(wǎng)絡(luò)的路由協(xié)議有什么特別之處呢?現(xiàn)在我們就針對這些問題來簡單認(rèn)識一下AODV協(xié)議吧。首先還是讓我們了解一下它的基本概念。
AODV是由Nokia研究中心的Charles E.Perkins和加利福尼亞大學(xué)Santa Barbara的Elizabeth M.Belding-Roryer以及Cincinnati大學(xué)Samir R.Das等共同開發(fā),已經(jīng)被 IETF MANET工作組于2003年7月正式公布為自組網(wǎng)路由協(xié)議的RFc標(biāo)準(zhǔn)。
AODV實質(zhì)上就是DSR和DSDV的綜合,它借用了DSR中路由發(fā)現(xiàn)和路由維護(hù)的基礎(chǔ)程序,及DSDV的逐跳(Hop-by-HoP)路由、目的節(jié)點序列號和路由維護(hù)階段的周期更新機(jī)制,以DSDV為基礎(chǔ),結(jié)合DSR中的按需路由思想并加以改進(jìn)。AODV在每個中間節(jié)點隱式保存了路由請求和應(yīng)答的結(jié)果,并利用擴(kuò)展環(huán)搜索的辦法來限制搜索發(fā)現(xiàn)過的目的節(jié)點的范圍。
AODV支持組播功能,支持Qos,而且AODV中可以使用IP地址,實現(xiàn)同Internet連接,但是不支持單向信道。和DSDV保存完整的路由表不同的是,AODV通過建立基于按需路由來減少路由廣播的次數(shù),這是AODV對DSDV的重要改進(jìn)。和DSR相比,AODV路由協(xié)議的好處在于源路由并不需要包括在每一個數(shù)據(jù)分組中,這樣會使路由協(xié)議的開銷有所降低。
AODV是一個純粹的按需路由系統(tǒng),那些不在路徑內(nèi)的節(jié)點不保存路由信息,也不參與路由表的交換。AODV路由協(xié)議可以實現(xiàn)在移動終端間動態(tài)的、自發(fā)的路由,使移動終端很快獲得通向所需目的的路由,同時又不用維護(hù)當(dāng)前沒有使用的路由信息,并且還能很快對斷鏈的拓?fù)渥兓龀龇磻?yīng)。
AODV的操作是無環(huán)路的,在避免了通常Bellman-ford算法的無窮計數(shù)問題的同時,還提供了很快的收斂速度。AODV的路由表中每個項都使用了目的序列號(Destination Sequence Number)。目的序列號是目的節(jié)點創(chuàng)建,并在發(fā)給發(fā)起節(jié)點的路由信息中使用的。使用目的序列號可以避免環(huán)路的發(fā)生。
AODV使用3種消息作為控制信息 :RouteRequest(RREQ),RouteReply(RREP)和 RouteError(RERR)。這些消息都在UDP上使用654端口號。
當(dāng)源節(jié)點需要和目的節(jié)點通信時,如果在路由表中已經(jīng)存在了對應(yīng)的路由時,AODV不會進(jìn)行任何操作。當(dāng)源節(jié)點需要和新的目的通信時,它就會發(fā)起路由發(fā)現(xiàn)過程,通過廣播RREQ信息來查找相應(yīng)路由。當(dāng)這個RREQ到達(dá)目的節(jié)點本身,或者是一個擁有足夠新的到目的節(jié)點路由的中間節(jié)點時,路由就可以確定了。所謂“足夠新"就是通過目的序列號來判斷的。
目的節(jié)點或中間節(jié)點通過原路返回一個RREP信息來向源節(jié)點確定路由的可用性。在維護(hù)路由表的過程中,當(dāng)路由不再被使用時,節(jié)點就會從路由表中刪除相應(yīng)的項。同時,節(jié)點會監(jiān)視一個活動路由(activeroute,有限跳的,可用于數(shù)據(jù)轉(zhuǎn)發(fā)的路由表)中,下一跳節(jié)點的狀況。
當(dāng)發(fā)現(xiàn)有鏈路斷開的情況時,節(jié)點就會使用RERR通知上游的節(jié)點,而上游的節(jié)點就會使用該RERR分組拷貝通知更上游的節(jié)點。在RERR消息中,指明了由于斷鏈而導(dǎo)致無法達(dá)到目的節(jié)點。每個節(jié)點都保留了一個“前驅(qū)列表"(precursor list)來幫助完成錯誤報告的功能,這個列表中保存了把自己作為到當(dāng)前不可達(dá)節(jié)點的下一跳的相鄰節(jié)點(可以通過記錄RERR很容易地獲得)。
AODV路由協(xié)議的路由表中,針對每一個表項,需要記錄相應(yīng)的的特征內(nèi)容。其中,序列號是防止路由環(huán)路的關(guān)鍵所在。當(dāng)發(fā)生斷鏈時,通過增加序列號和度量值(跳數(shù))來使路由表項無效。