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