无线传感器网络路由协议AODV(Ad hoc on-demand distance vector routing)

AODV(Ad hoc on-demand distance vector routing)是一种源驱动路由协议。当一个节点需要给网络中的其他节点传送信息时,如果没有到达目标节点的路由,则必须先以多播的形式发出RREQ(路由请求)报文。RREQ报文中记录着发起节点和目标节点的网络层地址,邻近节点收到RREQ,首先判断目标节点是否为自己。如果是,则向发起节点发送RREP(路由回应);如果不是,则首先在路由表中查找是否有到达目标节点的路由,如果有,则向源节点单播RREP,否则继续转发RREQ进行查找。

AODV协议能够确保找到的路径不含环路并且最短,当路由错误时还能动态适应以便寻找新的路由。

下面看图一步一步说明AODV协议

  • 需要建立到目的节点(dst)的路由时,源节点(src)广播路由请求(RREQ)给所有邻居结点。
  • 源节点等待路由回应(RREP)
这两步可以看下面三张图片:

无线传感器网络路由协议AODV(Ad hoc on-demand distance vector routing)_第1张图片  无线传感器网络路由协议AODV(Ad hoc on-demand distance vector routing)_第2张图片  无线传感器网络路由协议AODV(Ad hoc on-demand distance vector routing)_第3张图片

路由请求(RREQ,Route Request)

路由请求包含序列号信息,每个结点生成自己的序列号。当邻接点发生变化(比如链路断开),序列号增加。对每一个路由,目的序列号(DSN)都会存储在路由表中。源节点将最近一次收到的目的结点序列号和源节点序列号一起放在RREQ中发送给目的节点。


RREQ不会收集沿途经过的节点的信息,它只会记录所经过的跳数。

而收到RREQ的节点会更新自己的路由表:

  • 记录向自己发来RREQ的邻居节点的地址(n1)。
  • 如果一会收到路由回应(RREP),那么就会把这个回应发给邻居结点n1。
  • 同时也会记录向自己发来RREP的那个邻居结点的地址,把这个地址当做去目的节点(dst)的下一跳地址
                           

                               无线传感器网络路由协议AODV(Ad hoc on-demand distance vector routing)_第4张图片

AODV的路由表中只会记录到达目的结点的下一跳地址。如下图

无线传感器网络路由协议AODV(Ad hoc on-demand distance vector routing)_第5张图片


路由回应(RREP,Route Reply)

当一个含有到达目的节点路由表的节点收到路由请求后,首先判断RREQ中的目的节点序列号(DSN)和自己路由表中的DSN是否一样。如果RREQ中的DSN比较大,说明当前路右表不是很新,就继续广播请求。否则就返回RREP给源节点。

总的来说,路由的建立是在RREQ广播到目的节点和RREP返回到源节点这两个过程完成后建立的。下面几幅图描绘了这两个过程:

图例说明:白色空心箭头表示路由请求RREQ。绿色空心箭头表示路由回应RREP。实心箭头表示建立的路由。


无线传感器网络路由协议AODV(Ad hoc on-demand distance vector routing)_第6张图片

无线传感器网络路由协议AODV(Ad hoc on-demand distance vector routing)_第7张图片

无线传感器网络路由协议AODV(Ad hoc on-demand distance vector routing)_第8张图片

无线传感器网络路由协议AODV(Ad hoc on-demand distance vector routing)_第9张图片

无线传感器网络路由协议AODV(Ad hoc on-demand distance vector routing)_第10张图片

===============================================================================================================


最后建立起了源节点到目的节点的路由,如下图:

无线传感器网络路由协议AODV(Ad hoc on-demand distance vector routing)_第11张图片

你可能感兴趣的:(无线传感器网络路由协议AODV(Ad hoc on-demand distance vector routing))