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 消息中,指明了由于