MAC Layer:MAC层有CMU实现了 IEEE802.11中的DCF MAC协议。
3 AODV协议的仿真
3.1 AODV协议原理
AODV在每个中间节点隐式保存了路由请求和应答的结果,并利用扩展环搜索的办法来限制搜索发现过的目的节点的范围。AODV使用3种消息作为控制消息:RouteRequest(RREQ),RouteReply(RREP)和RouteError(RERR)。
当源节点需要和目的节点通信时,如果在路由表中已经存在了对应的路由时,AODV不会进行任何操作。而当不存在路由时,节点就会发起路由发现过程(过程如图3.1所示),通过广播RREQ信息来查找相应路由。当这个RREQ到达目的节点本身或者一个拥有足够新的到目的节点路由的中间节点时,路由就可以确定了。其中“足够新”是通过目的序列号来进行判断的。目的节点或者中间节点通过原路返回一个RREP消息来向源节点确定路由的可用性。在文护路由表的过程中,当路由不再被使用时,节点就会从路由表中删除相应的项。同时,节点会监视一个活动路由中下一跳的状况。当发现链路断开时,节点就会使用RERR消息通知上游的节点,而上游的节点就会使用该RERR分组拷贝通知更上游的节点。在RERR消息中,指明了由于断链而导致无法到达的目的节点。每个节点都保存一个“前驱列表”来帮助完成错误报告的功能。在路由表中,针对每一个表项,需要记录相应的特征内容。其中,序列号是防止路由环路的关键所在。当发生断链时,通过增加序列号和度量值(跳数)来使路由表项无效。下面介绍AODV运行过程中几个重要的过程:
图3.1 AODV协议运行基本过程
a) AODV路由发现——反向路由的建立
路由发现RREQ分组中包含了两个序列号:源节点序列号和源节点所知道的最新的目的节点序列号。源节点用于文持到源的反向路由的特性,目的序列号表明了到目的地的最新路由。当RREQ分组从一个源节点转发到不同的目的地时,沿途所经过的节点都要自动建立到源节点的反向路由。节点通过记录收到的第一个RREQ分组的邻居地址来建立反向路由,这些反向路由捡回文持一定时间——这段时间足够RREQ分组在网内转发以及产生的RREP分组返回源节点。当RREQ分组到达了目的节点时,目的节点就会产生RREP分组,并利用建立的反向路由来转发RREP。
b) AODV路由发现——正向路由的建立:
RREQ分组最终到达一个节点,该节点可能就是目的节点或者这个节点有到达目的节点的路由。如果这个中间节点有到达目的节点的路由项,它就会比较路由项里的目的节点的序列号和RREQ分组里的目的序列号的大小来判断自己已有的路由是否是比较新的。如果RREQ分组里的目的序列号比路由项中的序列号大,则这个中间节点不能使用已有的路由来响应这个RREQ分组,只能是继续广播这个RREQ分组。中间节点只能在路由项中的目的序列号小于RREQ中的目的序列号时,才能直接对收到的RREQ分组做出响应。如果节点有到目的地的最新路由,而且这个RREQ还没有被处理过,这个节点就会沿着建立的反向路由返回RREP分组。
在RREP转发回源节点的过程中,沿着这条路径上的每一个节点都将建立到目的节点的同向路由,也就是记录下RREP是从哪一个邻居节点来的地址,然后更新有关源和目的路由的定时信息以及记录下RREP中目的节点的最新序列号。对于那些建立了反向路由,但RREP分组并没有经过的节点,它们中建立的反向路由将会在一定时间后自动变为无效。收到RREP分组的节点将会对到某一个源节点的第一个RREP分组进行转发,对于其后收到的到同一源节点的RREP分组,只有当后到的RREP分组中包含了更高的目的序列号或虽然有相同的目的序列号但经过的跳数较少时,节点才会重新更新路由信息,以及把这个RREP分组转发出去。 基于网络编码的路由协议的实现与仿真(4):http://www.youerw.com/tongxin/lunwen_4858.html