典型单路径路由协议
无线传感器网络和Adhoc网络一样,是无线自组织网络的一种,因此,它的路由协议也可以从无线Adhoc网络得到一些启发。本节首先对无线Adhoc网络的路由协议AODV进行研究,详细介绍其路由实现原理。然后详细介绍北京交通大学下一代互联网互联设备国家工程实验室代写计算机职称论文自行研制和开发的路由协议MSRP,MSRP借鉴了AODV的思想,但是又做了很大的简化。本论文所设计的多径路由机制是在MS即的基础上做了创新和改进。本节评价了它的优点和缺点,指出了需要改进的地方。
1.AODV路由协议AODVI’jj(AdhoeOndemandDistanceVectorRouting)是一种按需驱动的路由协议,它能够在移动节点之间建立动态多跳路由并维护一个Adhoc网络。AODV能让节点快速建立到新目的节点的路由,而且不需要节点维护处于非活动状态路径的路由。在链路损坏或者网络拓扑发生变化时,网络中多个移动节点能够及时做出反应,网络能够快速自愈。当网络链路出现断裂时,AODV能够通知所有受影响的节点,让它们及时删除使用该链路的路由。AODV一个很重要的创新点是对每一条路由使用了一个目的序列号,任何一个路由表项必须包含到目的节点的最新的序代写计算机硕士论文列号信息。目的节点序列号由目的节点产生。每一个目的节点在它发送给请求节点的任何路由信息中都会包含这个序列号,使用目的序列号可以保证路由无环路,也利于编程实现。当出现两条路由到达目标节点时,请求节点会选择序列号比较大的路由。节点收到任何有关报文,只要其中有关于目的序列号的信息,该目的节点的序列号就会更新。网络中的节点各自保存和维护自己的序列号。一个目的节点在下列两种情况下产生自己的序列号:1、在建立一个路由发现之前,它产代写计算机毕业论文生自己的序列号,避免与以前建立的到无线传感器网络路由协议的研究该源节点的反向路由冲突;2、在产生一个RREP回复双EQ之前,将自己节的序列号更新为目前节点的序列号和路由请求中该节点序列号两者的最大值。下一跳链路丢失时,序列号不再更新。这时候,对于使用该下一跳的每一条路由,节点都将其目的序列号加一,并将该路由标计为失效。只有再次收到“足够新”路由信息时(序列号等于或大于该记录的序列号),该节点才会将路由表中相应信息更新。AoDv定义了三种报文类型:路由请求(RREQs)、路由回复(RREPs)、路错误(计算机专业职称论文RERRs)。这些消息包装在uDP报文中,端口654,并使用通常的IP报头,请求节点使用自己的IP地址作为路由消息中的“源IP地址”字段。对于广播消息,使用IP广播地址255.255.255.255。这意味着这些消息不会被盲目的转发。但是,AODV确实需要某些报文(例如路由请求消息)能够大范围甚至在整个网络中洪,IP报文的TTL字段可以用来限定传播范围。只要通信的两个端有到对方的有效路由,那么AODV就不参与。当节点需一个到新目的节点的路由时,该节点会广播路由请求进行寻找。当该路由请求达目的节点,或者一个中间节点具有一个到目的节点的“足够新,,的路由时,这条路由便可以确定下来。每一个收到路由请求的节点都会缓存一个到源节点的反路由,这样,“路由回复”便会从最终目的节点或者满足请求条件的中间节点顺利递到源节点。节点会监测有效路由下一条链路的状态。当监测到有链路发生断裂时,节会发送路由错误消息来通知其他节点:链路已经丢失,需要重新寻找路由。“路错误”消息用来表明一些节点通过该断裂的链路己经不可达。为了采用这种错误告的机制,所有节点保存一个“前驱列表”,前驱列表包含一些邻居的IP地址,些邻居节点可能使用本节点作为到达目的地的下一跳。前驱列表的信息可以很易的在路由回复的时候获取,因为从定义上来说,“路由回复”就是要发送给前歹J表中的节点的。AODv是个路由协议,因此它有自己的路由表管理机制。即使是暂时的路信息(例如到路由请求源节点的暂时的反向路由),也需要在路由表中保存。AOD的路由表有以下几个组成部分:目的IP地址、目的序列号、有效目的序列号标以及其他的标志(如有效、无效、可修复、正在修复中)、网络接口、跳数、下跳、前驱列表、生命期(路由表的失效或删除时间)。
1AODV路由建立过程当一个节点发现自己需要路由却不存在路由信息的时候,它发起路由
请RREQ,RREQ中的目的节点序列号是从路由表中的目的节点序列号域中拷贝过来的,是最新的。如果序列号未知,那么路由请求报文中U位(未知序列号,表明发送路由请求的节点
对目的序列号一无所知)置1。路由请求报文中,源节点序列号是节点自身的序列号,在插入到该路由请求报文中之前会进行加一操作。路由请求ID也是在最新的ID号上面进行加一操作,每一个节点仅仅维护一个路由请求ID。广播路由请求之前,源节点将缓存该路由请
求ID和源节点IP地址,这样,当该节点再次收到相同的路由请求时,会忽略该请求,从而避免广播包风暴。类类型型JJJRRRGGGDDDUUU保留留跳数数路路由请求IDDD目目的IP地址址目目的序列号号源源IP地址址源源序列号号路由请求报文格式FigZ一
3RREQmessageformat节点收到RREQ之后,首先会创建或者更新到上一跳的路由,然后检查是否在PATHDISCOVERYTIME时间内收到过相同的路由请求。如果收到源IP和请求ID相同的路由请求,那么节点会直接丢弃路由请求。如果收到不同的路由请求,节点增加路由请求报文中的跳数字段,然后节点查询到源节点的反向路由,如果没有,会创建一条路由,如果找到,可能会更新路由表中的序列号。当节点接收到一个传给源节点的路由回复时,报文将沿着反向路由发送到源节点。同时,收到RREQ的中间节点,查看自己的路由表中是否有到目的节点的有效的路由,即路由表中的目的节点的序列号不小于RREQ中携带的序列号;若没有,中间节点更新路由表并向其邻居转发RREQ;若存在到目的节点的路由或该中间节点就是目
的节点,将发送RREP报文给源节点,RREP中包含新的目的序列号和路由,转发RREP的节点更新路由表。源节点收到后,就获得了到目的节点的路由。节点在以下两种情况下产生路由回复,节点本身是目的节点;2)节点是中间节点,有到目的节点的路由,该路由有效,并
且序列号等于或者大于路由请求报文中的目的序列号。无线传感器网络路由协议的研究类类型型RRRAAA保留留前缀缀跳数数目目的IP地址址目目的序列号号源源IP地址址生生命期期路由回复报文FigZ一4RREpmessageformat如果目的节点产生路由回复,并且路由请求中的序列号等于节点序列号,么节点将增加自己的序列号。目的节点将自己的序列号放入路由回复报文中,将其中的跳数字段设置为O。如果中间节点产生路由回复,那么该节点将把自
己知道的目的节点的序列号拷贝到路由回复报文中。同时,中间节点把路由表中该节点到目的节点的跳数拷贝到路由回复的跳数字段中。在路由回复向源节点递的过程中,每经过一个节点,跳数字段加一。源节点与目的节点之间可能需要建立双向通信链路,此时仅仅建立一条从节点到目的节点的路由是不够的,目的节点也需要建立一条反向路由。为此,节点将RREQ中的G位(免费路由回复标志;表明是否需要发送免费路由回复到标IP地址)设为1,这样中间节点就得知源节点需要和目的节点建立双向通信。一般来说,一个节点收到路由请求并且向源节点发送路由回复之后,会直将路由请求报文丢弃。如果路由请求报文中’G’字段
被置1,那么中间节点还需向路由请求的目的节点发送“免费路由回复”。免费路由回复从中间节点逐跳传到目的节点,就好像目的节点发起过到源节点的路由请求,中间节点发起了路回复。中间节点接收到路由回复之后,首先会在路由表中查找到上一跳的路由,果没有找到,会创建一条没有有效序列号的路由表项。然后,节点给路由回复跳数字段值加一。如果到目的地址的路由表不存在,节点会建立一条到目的地的路由表项。如果到目的节点的路由表存在,那么中间节点会比较路由表中目序列号和路由回复报文中的序列号,比较之后,更新路由表中的序列号。这样,当前节点就可以用这条路由来转发到目的节点的数据包。如果当前点不是路由请求的源节点,那么节点转发该路由回复到去往路由请求源节点的一跳。节点发送路由回复时,到目的地的前驱列表也被更新,即把路由回复的一跳节点放入到前驱列表中。AODV路由维护过程节点通过广播本地HELLO消息来提供链路的链接信息。每次经过HELLOINTERVAL时间间隔,节点检查自己在这段时间内有没有发过广播包,如果没有发过,则发送一个TTL值为1的HELLO报文。节点可以通过监听从邻居发来的HELLO数据包来确
定链路连接性。如果规定的时间内,节点收到邻居的HELLO报文,经历一段时间后再也没