一种针对无线Adhoc网络的AODV路由协议的改进方法

文档序号:7851769阅读:111来源:国知局
专利名称:一种针对无线Ad hoc 网络的AODV路由协议的改进方法
技术领域
本发明涉及的是一种网络,具体地说是网络的路由协议。
背景技术
无线Ad hoc网络,又称为MANET网络。一般把基于Wireless Ad hoc Network技术的网络译为无线Ad hoc网络,或无线自组织网,移动Ad hoc网络或无线多跳网络等。无线Ad hoc网络是由众多的无线移动节点通过分布式算法自组织而成的一种独立的网络自治系统,具有自我建立、自我组织及自我管理的能力。网络中所有节点的地位是平等的,不需要设置任何固定的基础设施,具有很强的抗毁性。每个节点兼有终端和路由器的功能并且能够自由转换,这些节点可以自发地、迅速地建立通信联系,相互协作,共同完成任务,并可以在移动的、不稳定的情况下有效地利用网络资源,提供有效的通信服务。无线Ad hoc网络部署方便,建立灵活,因而在经济和商业等领域具有诱人的应用前景。无线Ad Hoc网 络中被广泛使用的AODV路由协议使用的就是最小跳数判据,由于Ad hoc网络拓扑结构和信道不断变化,使得最小跳数路由度量往往不能够找出理想的路径。并且,传统的分层设计不能灵活地做出动态调整,所以通过跨层设计来提高网络性能的思想就显得格外重要,而路由协议的性能是网络性能的一个重要指标。

发明内容
本发明的目的在于提供降低用户的平均端到端的时延和平均路由开销的一种针对无线Ad hoc网络的AODV路由协议的改进方法。本发明的目的是这样实现的本发明一种针对无线Ad hoc网络的AODV路由协议的改进方法,其特征是选取跨层路由判据参数如果一个节点已经发送了一个RTS分组或一个数据分组,却没有接收到相应的CTS或ACK应答分组,那么该节点经过退避时间后,重新发送RTS或数据分组,直到接收到相应的CTS或ACK应答分组或重传次数达到设定的最大值;在MAC层声明两个变量来分别记录RTS的重传次数和数据分组的重传次数,即NRTS_和NACK_,并初始化为0,对于RTS,当节点收到相应的CTS时令节点发送该RTS需要的重传次数NRTS_计数,每重传一次,该数值加I ;如果重传次数超过了 ShortRetryLimit即最大重传次数,就将节点发送该RTS需要的重传次数NRTS_记为ShortRetryLimit,然后就丢弃该RTS分组,同样对于数据分组,当节点收到相应的ACK时令节点发送该数据分组需要的重传次数嫩0(_正常计数,每重传一次,该数值加I ;如果重传次数超过了 LongRetryLimit即最大重传次数,将节点发送该数据包需要的重传次数NACK_记为LongRetryLimit,然后就丢弃该数据包;定义网络节点最近的分组重传率为RTRA,RTRA的计算如下所示RTRA=(NRTS_+NACK_)/(NRTS_+NACK_+2),
在网络节点需要更新反向路由时,就将接收到的RREQ分组的RTRA值更新为网络节点MAC层计算的RTRA ;在路由表更新之前,通过RREQ分组包头来携带该跨层信息,在RREQ分组中的包头中添加两个字段RTRA和rq_avRTRA,并初始化为0,rq_avRTRA是RREQ分组在传输过程中经过的节点的MAC层分组重传率的平均值,路由表中也添加字段rt_avRTRA,表示该路径中节点的平均重传率,初始化为0,rq_avRTRA 的计算如下rq_avRTRA2=(rq_avRTRAlX (rq_hop_count-l)+RTRA)/rq_hop_count,其中rq_avRTRAl为更新之前的平均重传率,初始值为0 ;rq_avRTRA2为更新后的平均重传率;rq_hop_count是RREQ分组中标示的从源节点到处理RREQ分组节点的跳数; 实现跨层路由更新在网络层获得入口指针后,添加入口指针mymac来获得MAC层接口对象,并通过调用该对象的函数实现跨层参数RTRA的传递,声明一个指针指向节点自己的路由代理对象,然后将该节点的MAC层接口对象挂在路由指针上,参数RTRA跨接口队列和逻辑链路层两层,从MAC层传递到网络层。本发明还可以包括I、所述的路由更新的方法为如果RREQ分组的源节点序列号大于收到RREQ分组的节点维护的反向路由的序列号,或者二者相等但是RREQ分组中rq_avRTRA和跳数的乘积小于反向路由中rt_avRTRA和反向路由的跳数的乘积,则将反向路由目的节点序列号更新为RREQ分组的源节点序列号;反向路由的跳数更新为RREQ分组的跳数;下一跳地址更新为发送RREQ拷贝的节点的IP地址;反向路由的平均重传率更新为RREQ分组经过的所有节点的平均重传率,并设置表项的“过时定时器”。本发明的优势在于(I)本方法适用于无线Ad hoc网络中的可移动节点的AODV路由协议。(2)本方法基于Linux平台利用C++语言开发实现,由于C++语言自身具有的特性,所以实现的方法接入速度快,计算量小,内存占用低。(3)本方法基于跨层技术对Ad Hoc网络的AODV路由协议改进,使得在路由选择的时候考虑到信道的拥塞情况,从而提高网络性能。


图I为本发明的流程图;图2为本方法中MAC层分组重传情况;图3a为传统AODV路由协议与改进后的AODV路由协议(RAODVW^比图I,图3b为传统AODV路由协议与改进后的AODV路由协议(RAODV)对比图2。具体实施方下面结合附图举例对本发明做更详细地描述结合图I 3,本方法主要是针对路由发现过程中的路由更新操作进行改进,路由协议的其余过程不变。
本发明的实施面向的是无线Ad hoc网络的AODV路由协议,它的功能是改进基于传统分层设计的路由协议,使得在路由选择的时候考虑到信道的拥塞情况,提高无线网络的性能。改进后的AODV路由协议可以应用于任意无线Ad hoc网络的移动节点中。首先,选取跨层路由判据参数。Ad Hoc网络在MAC层使用的是具有分布式协调功能的IEEE 802. 11 MAC协议。该协议的基础是载波监听多址访问与碰撞回避(CSMA/CA)协议。该协议在CSMA中结合使用RTS/CTS握手协议,即发送节点与接收节点在发送数据分组之前先进行的RTS/CTS分组的交互。如果一个节点已经发送了一个RTS分组或一个数据分组,却没有接收到相应的CTS或ACK应答分组,那么该节点经过一段退避时间后,会重新发送RTS或数据分组。其重传情况如图2所示。节点I向节点2发送RTS,只要节点I没有收到相应的CTS应答,就认为之前发送的RTS没有传送成功,然后重传RTS,直到节点I收到相应的CTS或者该RTS分组的重传次数已经达到了最大值(最大重传次数)。类似,只要节点I没有收到相应的ACK,就会重传数据分组,直到节点I收到相应的ACK或者该数据分组的重传次数已经达到了最大重传次数。因此一个节点在最近时间内的重传次数(包括RTS分组、数据分组的重传次数)反·映了信道竞争的激烈程度和局部网络的拥塞状况。在MAC层声明两个变量来分别记录RTS的重传次数和数据分组的重传次数,即■丁5_和嫩0(_,并初始化为O。对于RTS,当节点收到相应的CTS的时候说明之前的RTS传输成功,这时就让节点发送该RTS需要的重传次数NRTS_E常计数,每重传一次,该数值加I ;如果重传次数超过了 ShortRetryLimit (最大重传次数),就将节点发送该RTS需要的重传次数NRTS_记为ShortRetryLimit,然后就丢弃该RTS分组。同样,对于数据分组,当节点收到相应的ACK的时候,说明之前的数据分组传输成功,这时让节点发送该数据分组需要的重传次数嫩0(_正常计数,每重传一次,该数值加I ;如果重传次数超过了 LongRetryLimit(最大重传次数),就令就将节点发送该数据包需要的重传次数NACK_记为LongRetryLimit,然后就丢弃该数据包。这样NRTS_和NACK_就分别记录了网络节点最近一次传输RTS和数据分组时候重传的次数。定义网络节点最近的分组重传率为RTRA (Retransmit rate),每次重传之前,RTS或者数据分组都已经传输过一次,所以,RTRA的计算如下所示RTRA=(NRTS_+NACK_)/(NRTS_+NACK_+2)在网络节点需要更新反向路由时,就将接收到的RREQ分组的RTRA值更新为网络节点MAC层计算的RTRA。在路由表更新之前,通过RREQ分组包头来携带该跨层信息。在RREQ分组中的包头中添加两个字段RTRA和rq_avRTRA,并初始化为O。其中,RTRA是接收到RREQ分组的节点最近一段时间内在MAC层的分组重传率,也是从MAC获取的参数,而rq_avRTRA是RREQ分组在传输过程中经过的节点的MAC层分组重传率的平均值。路由表中也添加字段r t_avRTRA,表示该路径中节点的平均重传率,初始化为O。rq_avRTRA 的计算如下rq_avRTRA2=(rq_avRTRAlX (rq_hop_count_l)+RTRA)/rq_hop_count其中rq_avRTRAl为更新之前的平均重传率,初始值为0 ;rq_avRTRA2为更新后的平均重传率;
rq_hop_count是RREQ分组中标示的从源节点到处理RREQ分组节点的跳数。最后在路由协议AODV中,采用新的路由判据跳数与平均重传率的乘积,来选择路由。然后,实现跨层路由更新。TCP/IP各层的实现对应的都是一些类,只要得到个协议层类的入口指针就可以使相关层之间相互通信。于是只要在网络层获得入口指针,就可以在网络层调用MAC层的函数,传递MAC层的参数RTRA。在网络层获得入口指针后,需要添加一个入口指针mymac来获得MAC层接口对象,并通过调用该对象的函数实现跨层参数RTRA的传递。声明一个指针指向节点自己的路由代理对象,然后将该节点的MAC层接口对象挂在路由指针上。这样,在创建无线节点的时 候,路由模块跟MAC模块就关联到一起了。经过修改,参数RTRA就会跨接口队列和逻辑链路层两层,从MAC层传递到网络层。具体路由更新如果RREQ分组的源节点序列号大于收到RREQ分组的节点维护的反向路由的序列号,或者二者相等但是RREQ分组中rq_avRTRA和跳数的乘积小于反向路由中rt_avRTRA和反向路由的跳数的乘积,就将反向路由目的节点序列号更新为RREQ分组的源节点序列号;反向路由的跳数更新为RREQ分组的跳数;下一跳地址更新为发送RREQ拷贝的节点的IP地址;反向路由的平均重传率更新为RREQ分组经过的所有节点的平均重传率,并设置表项的“过时定时器”。类似地,节点收到RREP分组后也会做相应正向路由的更新。对RREP分组包头的修改以及正向路由更新操作的修改与收到RREQ分组的修改相同,在此不作赘述。最后,应用改进后的AODV路由协议。构建的传统AODV路由协议与改进后的AODV路由协议(RAODV)对比实验设置了两组,每一组实验设置一个参数变化,然后分别观察并分析改进前后网络性能的变化。每一组实验中,相同条件进行10次,每次随机设置一个不同的场景,分析该条件下的网络性能时,求这10次仿真的平均值即可。第一组实验设置50个移动节点,实验时间为300s。节点随机分布在1000m*1000m的平面正方形区域内,最大连接数设置为30。CBR源的发包率为每秒钟0.25个数据包,节点向任意方向随机移动,从一个位置随机移动到另一个位置的停留时间取IOs,其最大移动速度分别取 lm/s, 4m/s, 8m/s, 12m/s, 16m/s, 18m/s, 20m/s。第二组实验设置50个移动节点,实验时间为300s。节点随机分布在1000m*1000m的平面正方形区域内。CBR源的发包率为每秒钟0.25个数据包。节点向任意方向随机移动,其最大移动速度取lOm/s,从一个位置随机移动到另一个位置的停留时间分别取10s。最大连接数分别取5,10,15,20,25,28,30。如图3a所示,横坐标表示的是节点最大移动速度,纵坐标表示的是平均端到端时延。两种路由算法的端到端时延都呈增大趋势。改进后的平均端到端时延明显比改进前端到端的时延小,且变化趋势相对稳定,并没有随着最大引动速度的增大而剧烈变化。易得出,RAODV具有更好的性能。如图3b所示,横坐标表示的是节点间的最大连接数,纵坐标表示的是平均端到端时延。从图中可以看出,随着节点间的最大连接数的增加,平均端到端时延总体并没有规则变化。对比改进前后的AODV路由协议的平均端到端时延,虽然RAODV没有AODV稳定,但是平均端到端时延总体是小于AODV的。 经过多次实验,结果表明协议经过改进后,平均端到端时延明显减小,而平均路由开销也稍有减少。因此,RAODV协议平均路由开销和平均端到端时延均有改善,易得出,改进后的算法更优。
权利要求
1.一种针对无线Ad hoc网络的AODV路由协议的改进方法,其特征是 选取跨层路由判据参数 如果一个节点已经发送了一个RTS分组或一个数据分组,却没有接收到相应的CTS或ACK应答分组,那么该节点经过退避时间后,重新发送RTS或数据分组,直到接收到相应的CTS或ACK应答分组或重传次数达到设定的最大值; 在MAC层声明两个变量来分别记录RTS的重传次数和数据分组的重传次数,即NRTS_和NACK_,并初始化为0,对于RTS,当节点收到相应的CTS时令节点发送该RTS需要的重传次数NRTS_计数,每重传一次,该数值加I ;如果重传次数超过了 ShortRetryLimit即最大重传次数,就将节点发送该RTS需要的重传次数NRTS_记为ShortRetryLimit,然后就丢弃该RTS分组,同样对于数据分组,当节点收到相应的ACK时令节点发送该数据分组需要的重传次数NACK_正常计数,每重传一次,该数值加I ;如果重传次数超过了 LongRetryLimit即最大重传次数,将节点发送该数据包需要的重传次数NACK_记为LongRetryLimit,然后就丢弃该数据包; 定义网络节点最近的分组重传率为RTRA,RTRA的计算如下所示RTRA=(NRTS_+NACK_)/(NRTS_+NACK_+2), 在网络节点需要更新反向路由时,就将接收到的RREQ分组的RTRA值更新为网络节点MAC层计算的RTRA ; 在路由表更新之前,通过RREQ分组包头来携带该跨层信息,在RREQ分组中的包头中添加两个字段RTRA和rq_avRTRA,并初始化为0,rq_avRTRA是RREQ分组在传输过程中经过的节点的MAC层分组重传率的平均值,路由表中也添加字段rt_avRTRA,表示该路径中节点的平均重传率,初始化为0, rq_avRTRA的计算如下rq_avRTRA2=(rq_avRTRAlX (rq_hop_count-l)+RTRA)/rq_hop_count, 其中rq_avRTRAl为更新之前的平均重传率,初始值为0 ;rq_avRTRA2为更新后的平均重传率;rq_hop_count是RREQ分组中标示的从源节点到处理RREQ分组节点的跳数; 实现跨层路由更新 在网络层获得入口指针后,添加入口指针mymac来获得MAC层接口对象,并通过调用该对象的函数实现跨层参数RTRA的传递,声明一个指针指向节点自己的路由代理对象,然后将该节点的MAC层接口对象挂在路由指针上,参数RTRA跨接口队列和逻辑链路层两层,从MAC层传递到网络层。
2.根据权利要求I所述的一种针对无线Adhoc网络的AODV路由协议的改进方法,其特征是所述的路由更新的方法为 如果RREQ分组的源节点序列号大于收到RREQ分组的节点维护的反向路由的序列号,或者二者相等但是RREQ分组中rq_avRTRA和跳数的乘积小于反向路由中rt_avRTRA和反向路由的跳数的乘积,则将反向路由目的节点序列号更新为RREQ分组的源节点序列号;反向路由的跳数更新为RREQ分组的跳数;下一跳地址更新为发送RREQ拷贝的节点的IP地址;反向路由的平均重传率更新为RREQ分组经过的所有节点的平均重传率,并设置表项的“过时定时器”。
全文摘要
本发明的目的在于提供一种针对无线Ad hoc网络的AODV路由协议的改进方法,包括以下步骤选取跨层路由判据参数,网络节点最近的分组重传率RTRA和RREQ分组在传输过程中经过的节点的MAC层分组重传率的平均值,在网络层获得入口指针后,添加入口指针mymac来获得MAC层接口对象,并通过调用该对象的函数实现跨层参数RTRA的传递,声明一个指针指向节点自己的路由代理对象,然后将该节点的MAC层接口对象挂在路由指针上,参数RTRA跨接口队列和逻辑链路层两层,从MAC层传递到网络层。本发明降低了用户的平均端到端的时延和平均路由开销。
文档编号H04W40/24GK102781064SQ201210160270
公开日2012年11月14日 申请日期2012年5月22日 优先权日2012年5月22日
发明者冯光升, 林俊宇, 王慧强, 田苏梅, 郑晨 申请人:哈尔滨工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1