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