典型单路径路由协议
无线传感器网络和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报文,经历一段时间后再也没有收到该邻居发来的任何信息,那么节点会认为该邻居节点已经失效。每次节点收到来自邻居的HELLO报文,节点应该确保自己有一条到邻居的路由。如果没有的话要创建路由,如果有的话需要更新生命期。当节点检测到路由回复失败后,会将这样的节点放入到黑名单中。检测的方式可以采用链路层或者网络层的ACK。节点在经过规定的时间后会从黑名单列表中清除。一般来说,路由错误和链路断裂的处理需要一下几个步骤:l)将已有的路由表项设为无效2)列出所有受影响的路由3)决定哪一个邻居节点可能受到影响4)将合适的路由错误消息发送给相应的邻居节点路由错误消息可以多种方式传播。前驱节点个数很多情况下,一般采用广播的形式,如果前驱节点只有一个,可采用单播,如果不适合采用广播,可以依次单播到每一个前驱节点。类类型型NNN保留留不可达目的节点序列号号不不可达目的节点IP地址址不不可达目的节点序列号号其其他不可达目的节点IP地址址其其他不可达目的节点序列号路由错误报文FigZ一5RERRmessageformat节点在以下情况下会发送路由错误消息:l)在利用有效路由发送数据时检测到下一跳失效,此时,节点在自己的路由表中搜寻所有利用下一跳的路由表项;无线传感器网络路由协议的研究2)收到一个数据包,但路由表中没有相应的路由;3)收到邻居的路由错误消息。对于第一种情况,节点会搜索路由表,列出所有因为邻居失效而不可达的终目的节点。对于第二种情况,只有一个最终目的节点不可达,即数据包的最地址。对于情况三,节点也会搜索路由表,当找到邻居节点为下一跳路由时也将其加入列表。列表中的一些不可达地址可能会被邻居节点使用,因此必要时向邻居发送路由错误消息。当一条链路断裂时,如果到目的节点的跳数不超过上限,断裂的上游节点以采取本地修复的策略。节点先缓存数据包,然后把该不可达目的序列号加一,发起到该目的节点的路由请求,节点会一直等待路由回复。如果本地修复没有功,那么节点将发送路由错误消息。本地修复可能引起到目的节点的路径比较长而且可能会增加传送到目的节点的数据包的数量,因为当发送路由错误消息时,数据包是不会被丢弃的。本地修复之后再发起路由错误消息可能会让源节点找更好的路径。
2.MSRP路由协议MSRp(MieroSensorRoutingprotoeol)是北京交通大学下一代互联网互联备国家工程实验室自主开发的微型传感路由器路由协议,能够结合传感器网络特点,实现动态、自组织地寻路和数据转发。由于MS砂是一种单路由策略,某些扩展应用过程中需要解决减少路由失效带来的数据延迟和基于按需选路导的能量消耗不均匀的问题。因此,本文需要在MSRP的基础上提出一种多路径由机制,在此给出MSRP工作过程的简要描述。MSRP路由建立过程MSRP路由协议为了减少存储表项以及发送和接收报文的大小,MSRP使IEEE802定义的64比特接口标识符,而不是IPv6地址进行路由过程,IP地址根据地址映射规则,由唯一的IEEE802.15.4定义的64比特接口标识符进行定。因此IPv6微型协议栈可以根据MSRP建立的路由进行数据传输。MSRP是一个简单的单路径路山协议,路由发现时,MSRP用广播,为了广RREQ分组,通过设置目的地址为广播短地址(oxFFFF)来获得广播包。Ms不支持中间节点回复RREP分组,只允许目的节点回复RREP分组。同时,它持中间节点选择性地广播路由请求(RREQ),当发现自己有到目的节点的路由就不再广播RREQ分组,而是选择单播双EQ分组到路由表中到目的节点的下一跳节点。当节点要发送数据包却没有到目的节点的路由信息时,节点缓存数据包,发起路由查询过程,广播路由请求报文。路由请求报文(RREQ)包括目的地址、源地址、路由请求ID、跳数等。路由请求ID和源地址用于唯一标识一个RREQ。每个节点维护一个入口表用于一记录其它节点来的RREQ,入口表包括源地址和路由请求ID。当中间节点收到RREQ时,先查找入口表,如果是第一次收到该RREQ分组,则插入入口表,如果已经有相关的入口表项,则丢弃RREQ。如果第一次收到该RREQ,则查找路由表,如果有到目的节点的路由信息,则单播RREQ到路由表中下一跳节点,如果没有路由信息,就继续广播RREQ,直到目的节点。在RREQ传送到目的节点的过程中,节点建立到源节点的反向路由,这样RREP可以沿着反向路由到达源节点。当目的节点收到RREQ时,首先节点缓存RREQ分组消息,由于广播RREQ寻路过程,节点接收到多条路由发送的分组消息,所以需要等待合理时间T,进行判断多路由的优劣,这里构造了一个最优路由判断函数f(X,Y):f(X,Y)=Am+Bh+Cn…(公式l)其中m为源节点到目的节点经过的电量不足节点的个数,h为源节点到目的节点的跳数,n为从源节点到目的节点弱链路的条数。A、B、C为不同网络环境下的待定参数,均为2的非负整数次方,并满足A>>C>B。在开阔地带室外网络环境下,取A=256,B=l,C=20目的节点为每个到达的RREQ以及当前节点到达RREQ源节点的路由(如果路由表中存在的话)计算其f值,跳数X值越小并且链路质量值越大,则f值越高,选择f值最大的路由进行回复。路由回复报文(RREP)包括源节点、目的节点以及跳数。建立到目的节点的路由,然后查找到节点反向路由,转发RREP。若发送RREQ的源节点收到RREP,则发送数据。这样由建立过程就完成了。MSRP也进行简单的路由修复。当链路出现故障时,发送路由错误报文(RER给链路的上一跳节点。同时执行以下步骤:l)将直接相关的路由设为无效路由;2)统计所有受影响的路由目的节点;3)统计所有受影响的邻居节点;4)向受影响的邻居发送RERR消息。建建立到目的节节点点的路由由发发送数据据据查找到源节点的的路路路路由,转发RREPPP节点收到RREP流程图FigZ一7FlowehartofnodesreeeivingRREP2.2.3AODV和MSRP的评价AoDv[”]是一种基于距离矢量的按需路由协议。协议采用了三种报文格式RREQ、RREP、RERR,它们的结构比较复杂。还使用了序列号避免环路和HELLo消息来检测链路的连接性。AODV支持中间节点应答,能使源节点快速获得路由,有效减少了广播数,但存在过时路由问题。节点只存储需要的路由,减少了内存的需求和不必要的复制。通过使用目的序列号来避免路由环路,解决了传统的基于距离向量路由协议存在的无限计数问题。但是,AODV需要周期性地广播分组,需要消耗一定的电池能源和网络带宽,同时需要相对较长的路由建立时延。MsRP是一个简单的按需路由协议。从报文种类上,仍然使用RREQ、RREP和RERR,但是其结构十分精简。MSRP取消了序列号和HELLO消息。基于MSRP的简单性,由于传感器节点的能量有限,计算和存储能力也有限,非常适用于无线传感器网络。MSRP中间节点不可以回复RREP,但是中间节点选择性地广播RREQ,即有时广播,有时单播。它使RREQ不会无限制地广播,从一定程度上讲,它节约了能量,并且减少了引起广播风暴的可能性。但是,这种情况存在过时路由问题,只适合拓扑结构稳定的小型网络。当网络拓扑动态变化时,中间节点存储的到目的节点的路由可能就无效了,节点根据过期的路由来发送RREQ,RREQ分组到达无线传感器网络路由协议的研究不了目的节点,这样的结果是再次发起路由查询过程,造成更大的能量消耗。综上所述,MSRP是一个适用于拓扑稳定、小型网络的简单路由协议,当网规模增大以及在减少路由失效造成的数据传输延迟和能量消耗不均匀等方面,要提出更好的多路由策略,从而进一步扩大应用范围。若您对计算机毕业论文有所需求,请到计算机论文专区下载http://www.1daixie.com/dxjsjlw/