一种基于链路拥塞度的动态多径olsr路由方法

文档序号:7890205阅读:128来源:国知局
专利名称:一种基于链路拥塞度的动态多径olsr路由方法
技术领域
本发明涉及一种移动Ad Hoc网络的路由方法,特别是涉及一种基于链路拥塞度的动态多径OLSR路由方法。
背景技术
移动Ad Hoc网络(移动自组织网络),又称MANET (Mobile Ad Hoc Networks),是由多个带有无线收发信装置的移动节点组成的一个无线移动通信网络,它本身是临时组建的,不依赖于任何固定的基础设施。网络中的各节点之间地位平等,都参与路由发现与路由维护。移动Ad Hoc网络比有中心的无线网络更坚固耐用、具有更高的抗毁性,比较适用于会议、战场、抢险、救援、探险、危险环境中的目标监控等临时场合的通信。因此,对移动Ad Hoc网络进行研究具有重要的意义。最优链路状态路由协议(OptimizedLink State Routing Protocol, 0LSR)是由因特网工程任务组(Internet Engineering Task Force, IETF)MANET工作组为无线移动 Ad Hoc网络提出的一种标准化的表驱动式优化链路状态路由协议,它是为了适应无线移动自组织网的需求,对纯链路状态路由算法进行优化而形成的。OLSR实质上是先应式路由,网络中每个节点实时维护到其他节点的路由,所以在数据转发之前节点的路由表中就已经存在到目的节点的路由,这使得OLSR路由协议具有寻路时延小的优点。OLSR路由表中存储的是单径路由信息,然而单径路由很容易造成一条路径的过度使用,这不但会导致拥塞的产生,还会导致该路径上的节点由于能量的过度消耗而失效,发生链路中断,导致拓扑结构变化;而多径路由采用多条路径进行数据量分流,将原本集中在一条路径上的负载分配到多条路径上,这样不仅可以缓解拥塞,平衡网络负载,而且还能降低由于能量消耗殆尽导致的网络分割或拓扑变化发生的概率。因此,研究OLSR多径路由协议具有重要意义。但是,多径机制下要提高网络性能必然增加节点开销,表驱动路由协议若为每个节点计算并保存到达所有其他节点的多条路径,则随着节点数目的增长,仅仅一次路由更新的开销都将是巨大的,因此,本专利的重点主要集中在保持OLSR路由协议中多径路由机制优点的基础上降低多径机制在表驱动路由协议中的开销上。

发明内容
本发明提出基于链路拥塞度的动态多径OLSR路由方法(Link Congestion Degree based Dynamic Multipath 0LSR, LCDDM-OLSR),目的是在传统 OLSR 路由协议的基础上, 通过融合链路拥塞度信息和多径机制,减少网络中拥塞的发生。本发明首先引入链路拥塞度信息来反映节点的负载状况,在节点转发数据前参考下一跳节点的负载状况,使得 LCDDM-0LSR路由方法具有负载自适应性;其次,引入多径机制,并将其与链路拥塞度信息相融合,提出基于链路拥塞度的动态多径机制,该机制结合了按需路由的思想,在链路拥塞度信息、源节点到目的节点的数据传输量大小以及源节点一跳范围内的局部区域负载满足一定条件时动态启用多径机制按需地进行路由发现,路由发现过程可自动避开负载过重节点。在规模较大的网络环境中,动态多径机制能够明显减少传统多径机制在表驱动路由协议中的路由更新与维护开销。在多径机制启用之前,节点仍然采用单径机制进行数据转发。实现本发明目的的技术解决方案为(I)引入链路拥塞度信息LCD (Link Congestion Degree)来反映节点的负载状况。 链路拥塞度指的是节点MAC层接口缓存队列中已被占用空间与总空间的比值,即是所有未处理消息的总字节数与缓存队列容量字节数的比值,通过MAC层为网络层提供的服务接口可以获得MAC层缓存队列中已被占用空间大小以及队列总空间大小,继而计算出LCD值。为IXD设定一个阈值Ta,Ta G (0,I)。若IXD G (0,Tj,则称该节点为负载正常节点;g!XD G (Ta,I),则称该节点为即将拥塞节点,如果节点继续接收数据,那么缓冲区就会被占满,之后到来的数据包就会被丢弃;若LCD = I,则该节点为拥塞节点。(2)对于要传输的数据而言,节点分为源节点、中间节点与目的节点。源节点是产生数据的节点,中间节点是转发数据的节点,目的节点是最终接收数据的节点。传输数据时源节点执行的是源节点路由算法,中间节点执行的是中间节点路由算法,目的节点收到数据后交付应用层进行处理。当源节点满足多径机制的启用条件时动态启用多径机制,而中间节点采用的永远是单径机制。其中,多径机制的启用条件包括原路由下一跳节点LCDS (Ta,l]、源节点到目的节点的同批数据量大小超过下一跳节点缓存队列总空间大小以及源节点所在的一跳范围的局部区域负载正常。对于源节点所在的一跳范围的局部区域负载情况,引入平均链路拥塞度@来反映,@是节点自身的拥塞度及其所有邻居节点拥塞度的平均值,其计算方法如公式(I) 所示。LCD = ~~(LCD(node) +X LCD(Iieighbour1))(I)
m + 1tt其中m为节点node的邻居节点数目,IXD (node)为节点node的拥塞度, LCD(Iieighbouri)为节点node的第i个邻居节点Iieighbouri的拥塞度。为@设定一个阈值Tb,TbG (0,I)。若@ >Tb,则认为节点一跳范围内的局部区域负载过重,发生拥塞的可能性较高,因此不适合采用新的路由发现机制以免进一步加重网路负载,导致拥塞;否则,认为一跳范围内的局部区域负载正常,存在某一个或某几个邻居节点其负载较轻,可以通过它们寻找新的无拥塞路径以平衡网络负载,缓解拥塞状况。(3)当源节点原路由下一跳节点负载过重而又达不到多径机制的启用条件时,启用旁路路由机制寻找可以避开下一跳即将拥塞节点的无拥塞旁路来代替原路由进行数据转发。中间节点的下一跳节点负载过重时,也采用旁路路由机制。这里的节点负载过重指的是IXD值大于Ta。本发明所涉及的数据结构介绍如下。节点在原有OLSR协议的基础上,需要附加存储的表结构如下。I)局部拥塞度表,格式为〈节点地址,节点链路拥塞度IXD〉。该表格中第一项用于记录节点自身的拥塞度信息,会定时计算更新,后面各项用于记录邻居节点的拥塞度信息, 会根据来自邻居节点的Hello消息所携带的LCD值更新。2)路由请求表,格式为〈源节点地址,路由请求序列号,标志 >。该表格用于保存最近收到的路由请求分组信息。3)路由应答表,格式为〈目的节点地址,路由请求序列号,标志 >。该表格用于保存最近收到的路由应答分组信息。其中路由请求序列号为与该路由应答分组相对应的路由请求分组携带的路由请求序列号。4)源路由缓存表,格式为〈目的节点地址,到目的节点的完整节点地址序列,路径条目生存周期 >。该表格用于保存旁路路由机制和多径路由机制寻找到的可达目的节点的无拥塞路径。每个路由条目都设有生存时间,定时删除,以保证所存路径的无拥塞性。在原有OLSR协议的基础上,需要修改的消息格式如下。I)将原有OLSR协议Hello消息8比特的保留字段更改为IXD字段,用于携带链路拥塞度信息,其它字段与原有OLSR协议相同。2)路由请求分组和应答分组是在原有DSR协议的基础上,添加了一个标志Flag, 用于标识产生路由请求分组的节点进行的路由发现是多径路由发现还是旁路路由发现。 Flag = O为旁路路由发现,Flag = I为多径路由发现。本发明路由方法的总体流程如下。I)源节点要发送数据时,先查看本地OLSR路由表中是否已经存在到达目的节点的路径,若不存在则表示目的节点不可达,不进行数据发送,结束;若存在路径,查看本地维护的局部拥塞度表中路径的下一跳节点的链路拥塞度IXD,若IXD ( Ta,Ta是IXD的阈值且 Ta e (0,I),则按照查找到的路径转发数据;否则转到(2);2)若源节点到目的节点的数据量大小超过下一跳节点缓存队列总空间大小,则转到(3),否则转到(5);3)查找本地源路由缓存表,若有到目的节点的多条路由记录,则使用这些记录中的前N条路由进行并行数据转发,N是预先设定的路径条数;否则转到(4);4)计算源节点所在的一跳范围的平均链路拥塞度而^LCD £(0,况,1;是1^ 的阈值且Tb e (O, I),则启用多径路由机制寻找多条无拥塞不相交多径,并使用多条路径进行并行数据转发;否则,降低发送速率;5)查找本地源路由缓存表,若有到目的节点的路由记录,则使用表中第一条记录中的路由进行数据转发;否则,启用旁路路由机制寻找到目的节点的一条旁路进行数据转发;6)中间节点收到数据分组时,先查看本地OLSR路由表中是否已经存在到达目的节点的路径,若不存在,丢弃数据分组,结束;若存在路径,查看本地维护的下一跳节点的链路拥塞度IXD,若IXD ( Ta,则按照查找到的路径转发数据;若IXD > Ta,查找本地源路由缓存表,若有到目的节点的路由记录,则使用表中第一条记录中的路由进行数据发送;否则, 启用旁路路由机制寻找到目的节点的一条旁路进行数据转发;7)后续转发数据的中间节点按照步骤(3)继续转发数据,直至数据包到达目的节点。本发明与现有技术相比,其显著优点本发明在保留多径机制本身的平衡网络负载、避免或缓解拥塞、增大网络吞吐量、减少端到端延时等优点的基础上,采用动态多径机制,只在满足启用条件时按需地进行多径路由发现与路由维护,大大降低多径机制在表驱动路由协议中路由更新与维护开销。同时,采用链路拥塞度信息、源节点到目的节点的数据传输量大小以及源节点一跳范围内的局部区域负载作为多径机制的启用条件,使得动态多径机制更加高效。另外,按需路由发现过程自动避开负载过重节点,使其不参与之后的数据转发,可以进一步平衡网络负载,避免或缓解拥塞。











具体实施例方式本发明一种基于链路拥塞度的动态多径OLSR路由方法,(I)源节点要发送数据时,先查看本地OLSR路由表中是否已经存在到达目的节点的路径,若不存在则表示目的节点不可达,不进行数据发送,结束;若存在路径,查看本地维护的局部拥塞度表中路径的下一跳节点的链路拥塞度IXD,若IXD ( Ta,Ta是IXD的阈值且 Ta G (0,I),则按照查找到的路径转发数据;否则转到步骤(2);(2)若源节点到目的节点的数据量大小超过下一跳节点缓存队列总空间大小,则转到步骤(3),否则转到步骤(5);(3)查找本地源路由缓存表,若有到目的节点的多条路由记录,则使用这些记录中的前N条路由进行并行数据转发,N是预先设定的路径条数;否则转到步骤(4);(4)计算源节点所在的一跳范围的平均链路拥塞度若G(0,Tb], Tb是 @的阈值且TbE (0,I),则启用多径路由机制寻找多条无拥塞不相交多径,并使用多条路径进行并行数据转发;否则,降低发送速率;(5)查找本地源路由缓存表,若有到目的节点的路由记录,则使用表中第一条记录中的路由进行数据转发;否则,启用旁路路由机制寻找到目的节点的一条旁路进行数据转发;(6)中间节点收到数据分组时,先查看本地OLSR路由表中是否已经存在到达目的节点的路径,若不存在,丢弃数据分组,结束;若存在路径,查看本地维护的下一跳节点的链路拥塞度IXD,若IXD ( Ta,则按照查找到的路径转发数据;若IXD > Ta,查找本地源路由缓存表,若有到目的节点的路由记录,则使用表中第一条记录中的路由进行数据发送;否则, 启用旁路路由机制寻找到目的节点的一条旁路进行数据转发;(7)后续转发数据的中间节点按照步骤(3)继续转发数据,直至数据包到达目的节点。本发明一种基于链路拥塞度的动态多径OLSR路由方法,所述链路拥塞度LCD是节点MAC层接口缓存队列中已被占用空间与总空间的比值,即是所有未处理消息的总字节数与缓存队列容量字节数的比值;平均链路拥塞度@反映节点所在的一跳范围的局部区域负载情况,是节点自身的拥塞度及其所有邻居节点拥塞度的平均值,其计算方法如公式(I) 所示LCD = ~~(LCD(node) +X LCD(Iieighbour1))(2)
m + 1tt其中m为节点node的邻居节点数目,IXD (node)为节点node的拥塞度, LCD(Iieighbouri)为节点node的第i个邻居节点Iieighbouri的拥塞度。本发明一种基于链路拥塞度的动态多径OLSR路由方法,节点在原有OLSR协议的基础上,需要附加存储的表结构如下I)局部拥塞度表,格式为〈节点地址,节点链路拥塞度IXD> ;该表格中第一项用于记录节点自身的拥塞度信息,会定时计算更新,后面各项用于记录邻居节点的拥塞度信息, 会根据来自邻居节点的Hello消息所携带的LCD值更新;2)路由请求表,格式为〈源节点地址,路由请求序列号,标志〉;该表格用于保存最近收到的路由请求分组信息;3)路由应答表,格式为〈目的节点地址,路由请求序列号,标志 > ;该表格用于保存最近收到的路由应答分组信息;其中路由请求序列号为与该路由应答分组相对应的路由请求分组携带的路由请求序列号;4)源路由缓存表,格式为〈目的节点地址,到目的节点的完整节点地址序列,路径条目生存周期 > ;该表格用于保存旁路路由机制和多径路由机制寻找到的可达目的节点的无拥塞路径;每个路由条目均设有生存时间;在原有OLSR协议的基础上,需要修改的消息格式如下5)将原有OLSR协议Hello消息8比特的保留字段更改为IXD字段,用于携带链路拥塞度信息,其它字段与原有OLSR协议相同;6)路由请求分组和应答分组是在原有DSR协议的基础上,添加了一个标志Flag, 用于标识产生路由请求分组的节点进行的路由发现是多径路由发现还是旁路路由发现; Flag = O为旁路路由发现,Flag = I为多径路由发现。本发明基于链路拥塞度的动态多径OLSR路由方法,N表示预先设定的路径条数且 N > 1,η表示已经找到的路径条数且初值为0,多径路由机制的具体步骤如下(I)源节点启用多径路由发现过程,构造并向周围广播路由请求分组RREQ,同时启用计时器对路由发现过程进行计时,转到(2);(2)判断计时器是否计时结束,若计时结束,转到(3),否则转到(6);(3)查看η大小,若η = 0,则路由发现失败,转到(4),否则用η条路径进行并行数据传输,结束;(4)查看OLSR路由表中原路由是否仍然存在,若存在转到(5),否则不进行数据发送,结束;(5)查看下一跳节点的IXD,若IXDSTa,则用原路由发送数据,结束;否则,降低发送速率,结束;(6)查看是否收到路由应答分组RREP,若是,转到(7),否则转到⑵;
(7)将RREP中“应答分组路由”字段携带的路由信息保存到源路由缓存表中,并将找到的路径条数η加1,转到(8);(8)若11 < N,转到(2),否则用N条路径进行并行数据传输,结束;其中,并行数据传输采用加权循环调度算法将数据流分配到多条不同的路径上进行传输。本发明一种基于链路拥塞度的动态多径OLSR路由方法,所述旁路路由机制的具体步骤如下(I)启用路由发现过程,向周围广播路由请求分组RREQ,同时启用计时器,对路由发现过程进行计时,转到(2);(2)若在计时时间内收到路由应答分组RREP,转到(3),否则路由发现失败,转到 ⑷;(3)将该RREP中“应答分组路由”字段携带的路由信息保存到源路由缓存表中,并采用源路由缓存表中的路由进行数据转发,结束;(4)查看OLSR路由表中原路由是否仍然存在,若存在,转到(5),否则丢弃数据包, 结束;(5)查看原路由下一跳节点IXD,若等于1,则降低发送速率,结束;否则,按照原路由转发数据,结束。本发明一种基于链路拥塞度的动态多径OLSR路由方法,所述路由请求分组RREQ 的处理流程如下(I)查看本节点的链路拥塞度信息,若LCD ( Ta,转到(2);否则不转发RREQ而直接丢弃,结束;(2)查看该RREQ的Flag字段值,若为0,按照旁路路由请求分组处理算法进行处理,结束;若为1,按照多径路由请求分组处理算法进行处理,结束。本发明基于链路拥塞度的动态多径OLSR路由方法,所述旁路路由请求分组的处理算法如下(I)检查路由请求表中是否已经有该RREQ分组的记录,若有,则直接丢弃,结束; 否则转到⑵;(2)若RREQ的目的节点为节点本身,则构造并向源节点发送路由应答分组RREP, 结束;否则在RREQ中加入本节点地址并继续转发该RREQ,结束。本发明一种基于链路拥塞度的动态多径OLSR路由方法,所述多径路由请求分组处理算法如下(I)若路由请求分组的目的节点为节点本身,则构造并发送路由应答分组RREP, 结束;否则转到⑵;(2)检查路由请求表中是否已经有该RREQ分组的记录,若有,则直接丢弃,结束; 否则在RREQ中加入该节点地址并继续转发该RREQ,结束。本发明一种基于链路拥塞度的动态多径OLSR路由方法,所述路由应答分组RREP 的处理流程如下(I)查看该节点是否为路由应答分组RREP的目的节点,若是,则保存RREP中携带的路由信息,结束;否则转到⑵;
(2)查看RREP的Flag字段,若Flag = 0,转发该RREP,结束;否则,转到(3);(3)查看路由应答表,若路由应答表中已经记录有该RREP,丢弃该RREP,结束;否则,转发RREP,结束。下面结合附图进一步详细说明本发明。图I是Hello消息格式示意图。本发明在原有OLSR协议Hello消息格式的基础上,将原来的8比特的保留字段更改为LCD字段,用于携带链路拥塞度信息,其它字段与原有OLSR协议一样。节点在计算出自己的LCD值后只取小数点后两位再乘以100放到Hello 消息中。这样,Hello消息中IXD字段的取值为0 100,节点收到Hello消息后取出IXD 字段的值除以100写入局部拥塞度表中。本发明只对Hello消息一个字段内容作了修改, 在没有增加任何额外控制开销的基础上,将本节点的链路拥塞度扩散出去。图2和图3分别是本发明的路由请求分组和应答分组的格式示意图。本发明在原有DSR协议的路由请求和应答分组基础上,添加了一个标志Flag,用于标识产生路由请求分组的节点进行的路由发现是多径路由发现还是旁路路由发现,Flag = 0为旁路路由发现,Flag = I为多径路由发现。另外,由于收到路由请求分组RREQ的中间节点不构造路由应答分组RREP,而只由目的节点构造RREP,那么RREP返回到RREQ源节点需要经过的节点序列将恰好是RREP源路由记录中从源节点到目的节点的完整节点序列的反序。图4是源节点路由算法流程图。产生数据的节点执行源节点路由算法,其具体步骤如下。(I)查看本地OLSR路由表中是否已经存在到达目的节点的路径,若不存在则表示目的节点不可达,不进行数据发送,结束;若存在路径,则转到(2);(2)查看本地维护的局部拥塞度表中路径的下一跳节点的拥塞度LCD,若 LCD ( Ta,则按照原路径转发数据,结束;否则转到(3);(3)若源节点到目的节点的数据量大小超过下一跳节点缓存队列总空间大小(同构网络中所有节点缓存队列容量相等,则下一跳节点缓存队列容量等于本节点缓存队列容量,本节点通过MAC层为网络层提供的服务接口就可以获得其缓存队列容量),则转到(4), 否则,转到(6);(4)查找本地源路由缓存表,若有到目的节点的多条路由记录,则使用这些记录中的前n条(n ( N)路由进行并行数据传输,结束;否则转到(5);(5)计算源节点一跳范围内的局部区域的平均链路拥塞度@。若@ > Tb,降低源节点发送速率,结束;否则,启用多径路由机制进行路径发现与数据发送,结束;(6)查找本地源路由缓存表,若有到目的节点的路由记录,则使用表中第一条记录中的路由进行数据发送,结束;否则,启用旁路路由机制,寻找到目的节点的一条旁路进行数据发送,结束。图5是中间节点路由算法流程图。数据传输过程中进行数据转发的中间节点执行中间节点路由算法,其具体步骤如下。(I)提取数据分组中的目的节点地址,查找本地OLSR路由表中是否已经存在到达目的节点的路由,若没有表示路由已经失效,链路发生中断,丢弃数据分组,结束;若有路径,则转到⑵;(2)查看本地维护的下一跳节点的链路拥塞度IXD,若IXD ( Ta,则按照查找到的路径转发数据,结束;否则转到(3);(3)查找本地源路由缓存表,若有到目的节点的路由记录,则使用表中第一条记录中的路由进行数据发送,结束;否则,启用旁路路由机制,寻找到目的节点的一条旁路进行数据发送,结束。图6是旁路路由机制算法流程图。旁路路由机制的目的是寻找一条可以避开下一跳负载过重节点的到目的节点的无拥塞旁路代替原路由进行数据转发,其具体步骤如下。(6)启用路由发现过程,向周围广播路由请求分组RREQ,同时启用计时器,对路由发现过程进行计时,转到(2);(7)若在计时时间内收到路由应答分组RREP,转到(3),否则路由发现失败,转到 ⑷;(8)将该RREP中“应答分组路由”字段携带的路由信息保存到源路由缓存表中,并采用源路由缓存表中的路由进行数据转发,结束;(9)查看OLSR路由表中原路由是否仍然存在,若存在,转到(5),否则丢弃数据包, 结束;(10)查看原路由下一跳节点IXD,若等于1,则降低发送速率,结束;否则,按照原路由转发数据,结束。图7是多径路由机制算法流程图。多径路由机制的目的是寻找可以避开下一跳即将拥塞节点到达目的节点的多条无拥塞路径(路径条数为N,N> I)进行数据发送,用η表示已经找到的路径数,其初值为O。多径路由机制的具体步骤如下。(9)源节点启用多径路由发现过程,构造并向周围广播路由请求分组RREQ,同时启用计时器对路由发现过程进行计时,转到(2);(10)判断计时器是否计时结束,若计时结束,转到(3),否则转到(6);(11)查看η大小,若η = 0,则路由发现失败,转到(4),否则用η条路径进行并行数据传输,结束;(12)查看OLSR路由表中原路由是否仍然存在,若存在转到(5),否则不进行数据发送,结束;(13)查看下一跳节点的IXD,若IXD ( Ta,则用原路由发送数据,结束;否则,降低发送速率,结束;(14)查看是否收到路由应答分组RREP,若是,转到(7),否则转到⑵;(15)将RREP中“应答分组路由”字段携带的路由信息保存到源路由缓存表中,并将找到的路径条数η加1,转到(8);(16)若11 < N,转到(2),否则用N条路径进行并行的数据传输,结束。其中,并行数据传输采用加权循环调度算法将数据流分配到多条不同的路径上进行传输。图8是路由请求分组RREQ的处理流程图。在源路由发现的过程中,中间节点可能会重复收到同一个RREQ,为了对此进行检测以免重复处理RREQ,每个节点需要维护路由请求表,用于保存最近收到的路由请求分组的〈源节点地址,路由请求序列号,标志 >,节点在收到RREQ后要先检查路由请求表中是否有对应的记录,若有,说明已经接收并处理过该 RREQ,直接丢弃即可;若没有,则将该RREQ分组记录到路由请求表中,并采用如下的算法进行处理。(3)查看本节点的链路拥塞度信息,若LCD STa,转到⑵;否则该节点为即将拥塞节点或者拥塞节点,不转发RREQ而直接丢弃,结束;(4)查看该RREQ的Flag字段值,若为0,说明该RREQ为旁路路由请求分组,按照旁路路由请求分组处理算法进行处理,结束;若为1,说明该RREQ为多径路由请求分组,按照多径路由请求分组处理算法进行处理,结束。其中旁路路由请求分组的处理算法如下。(3)检查路由请求表中是否已经有该RREQ分组的记录,若有,说明已经接收并处理过该路由请求分组,直接丢弃,结束;否则转到(2);(4)若RREQ的目的节点为节点本身,则构造并向源节点发送路由应答分组RREP, 结束;否则在RREQ中加入本节点地址并继续转发该RREQ,结束。多径路由请求分组处理算法如下。(3)若路由请求分组的目的节点为节点本身,则构造并发送路由应答分组RREP, 结束;否则转到⑵;(4)检查路由请求表中是否已经有该RREQ分组的记录,若有,说明已经接收并处理过该路由请求分组,直接丢弃,结束;否则在RREQ中加入该节点地址并继续转发该RREQ,结束。图9是路由应答分组的处理流程图。节点收到路由应答分组RREP后,需要根据 Flag的不同取值进行不同的处理。为了保证多径路由发现的多条路径节点不相交,每个节点需要维护一张路由应答表,用于保存最近收到的RREP的〈目的节点地址,路由请求序列号,标志〉,其中路由请求序列号为与该路由应答分组相对应的路由请求分组携带的路由请求序列号。节点在收到RREP后采用如下的算法进行处理。(4)查看该节点是否为路由应答分组RREP的目的节点,若是,则保存RREP中携带的路由信息,结束;否则转到⑵;(5)查看RREP的Flag字段,若Flag = 0,表示该RREP为旁路路由应答分组,转发该RREP,结束;否则,转到(3);(6)查看路由应答表,若路由应答表中已经记录有该RREP,说明在多条路径中出现了相交节点,本发明考虑使用节点不相交多径,故丢弃该RREP,结束;否则,转发RREP,结束。
权利要求
1.一种基于链路拥塞度的动态多径OLSR路由方法,其特征在于1)源节点要发送数据时,先查看本地OLSR路由表中是否已经存在到达目的节点的路径,若不存在则表示目的节点不可达,不进行数据发送,结束;若存在路径,查看本地维护的局部拥塞度表中路径的下一跳节点的链路拥塞度IXD,若IXD ( Ta,Ta是IXD的阈值且 Ta e (0,I),则按照查找到的路径转发数据;否则转到步骤(2);2)若源节点到目的节点的数据量大小超过下一跳节点缓存队列总空间大小,则转到步骤(3),否则转到步骤(5);3)查找本地源路由缓存表,若有到目的节点的多条路由记录,则使用这些记录中的前 N条路由进行并行数据转发,N是预先设定的路径条数;否则转到步骤(4);4)计算源节点所在的一跳范围的平均链路拥塞度Εδ ;若@ e (O,Tb],Tb是@的阈值且Tb e (O, I),则启用多径路由机制寻找多条无拥塞不相交多径,并使用多条路径进行并行数据转发;否则,降低发送速率;5)查找本地源路由缓存表,若有到目的节点的路由记录,则使用表中第一条记录中的路由进行数据转发;否则,启用旁路路由机制寻找到目的节点的一条旁路进行数据转发;6)中间节点收到数据分组时,先查看本地OLSR路由表中是否已经存在到达目的节点的路径,若不存在,丢弃数据分组,结束;若存在路径,查看本地维护的下一跳节点的链路拥塞度IXD,若IXD ( Ta,则按照查找到的路径转发数据;若IXD > Ta,查找本地源路由缓存表, 若有到目的节点的路由记录,则使用表中第一条记录中的路由进行数据发送;否则,启用旁路路由机制寻找到目的节点的一条旁路进行数据转发;7)后续转发数据的中间节点按照步骤(3)继续转发数据,直至数据包到达目的节点。
2.根据权利要求I所述的一种基于链路拥塞度的动态多径OLSR路由方法,其特征在于所述链路拥塞度LCD是节点MAC层接口缓存队列中已被占用空间与总空间的比值,即是所有未处理消息的总字节数与缓存队列容量字节数的比值;平均链路拥塞度@反映节点所在的一跳范围的局部区域负载情况,是节点自身的拥塞度及其所有邻居节点拥塞度的平均值,其计算方法如公式(I)所示LCD = ~~(LCD(node) + [ LCD(Iieighbour1))(I)m + 1tt其中m为节点node的邻居节点数目,IXD (node)为节点node的拥塞度, LCD(Iieighbouri)为节点node的第i个邻居节点Iieighbouri的拥塞度。
3.根据权利要求I所述的一种基于链路拥塞度的动态多径OLSR路由方法,其特征在于节点在原有OLSR协议的基础上,需要附加存储的表结构如下1)局部拥塞度表,格式为〈节点地址,节点链路拥塞度LCD〉;该表格中第一项用于记录节点自身的拥塞度信息,会定时计算更新,后面各项用于记录邻居节点的拥塞度信息,会根据来自邻居节点的Hello消息所携带的LCD值更新;2)路由请求表,格式为〈源节点地址,路由请求序列号,标志〉;该表格用于保存最近收到的路由请求分组信息;3)路由应答表,格式为〈目的节点地址,路由请求序列号,标志〉;该表格用于保存最近收到的路由应答分组信息;其中路由请求序列号为与该路由应答分组相对应的路由请求分组携带的路由请求序列号;4)源路由缓存表,格式为〈目的节点地址,到目的节点的完整节点地址序列,路径条目生存周期 > ;该表格用于保存旁路路由机制和多径路由机制寻找到的可达目的节点的无拥塞路径;每个路由条目均设有生存时间;在原有OLSR协议的基础上,需要修改的消息格式如下1)将原有OLSR协议Hello消息8比特的保留字段更改为LCD字段,用于携带链路拥塞度信息,其它字段与原有OLSR协议相同;2)路由请求分组和应答分组是在原有DSR协议的基础上,添加了一个标志Flag,用于标识产生路由请求分组的节点进行的路由发现是多径路由发现还是旁路路由发现;Flag =O为旁路路由发现,Flag = I为多径路由发现。
4.根据权利要求I所述的一种基于链路拥塞度的动态多径OLSR路由方法,其特征在于N表示预先设定的路径条数且N > 1,η表示已经找到的路径条数且初值为0,多径路由机制的具体步骤如下1)源节点启用多径路由发现过程,构造并向周围广播路由请求分组RREQ,同时启用计时器对路由发现过程进行计时,转到(2);2)判断计时器是否计时结束,若计时结束,转到(3),否则转到(6);3)查看η大小,若η= 0,则路由发现失败,转到(4),否则用η条路径进行并行数据传输,结束;4)查看OLSR路由表中原路由是否仍然存在,若存在转到(5),否则不进行数据发送,结束;5)查看下一跳节点的LCD,若LCD( Ta,则用原路由发送数据,结束;否则,降低发送速率,结束;6)查看是否收到路由应答分组RREP,若是,转到(7),否则转到⑵;7)将RREP中“应答分组路由”字段携带的路由信息保存到源路由缓存表中,并将找到的路径条数η加1,转到⑶;8)若η< N,转到⑵,否则用N条路径进行并行数据传输,结束;其中,并行数据传输采用加权循环调度算法将数据流分配到多条不同的路径上进行传输。
5.根据权利要求I所述的一种基于链路拥塞度的动态多径OLSR路由方法,其特征在于所述旁路路由机制的具体步骤如下1)启用路由发现过程,向周围广播路由请求分组RREQ,同时启用计时器,对路由发现过程进行计时,转到(2);2)若在计时时间内收到路由应答分组RREP,转到(3),否则路由发现失败,转到(4);3)将该RREP中“应答分组路由”字段携带的路由信息保存到源路由缓存表中,并采用源路由缓存表中的路由进行数据转发,结束;4)查看OLSR路由表中原路由是否仍然存在,若存在,转到(5),否则丢弃数据包,结束;5)查看原路由下一跳节点IXD,若等于1,则降低发送速率,结束;否则,按照原路由转发数据,结束。
6.根据权利要求I所述的一种基于链路拥塞度的动态多径OLSR路由方法,其特征在于所述路由请求分组RREQ的处理流程如下1)查看本节点的链路拥塞度信息,若LCD( Ta,转到(2);否则不转发RREQ而直接丢弃,结束;2)查看该RREQ的Flag字段值,若为0,按照旁路路由请求分组处理算法进行处理,结束;若为1,按照多径路由请求分组处理算法进行处理,结束。
7.根据权利要求I或6所述的一种基于链路拥塞度的动态多径OLSR路由方法,其特征在于所述旁路路由请求分组的处理算法如下1)检查路由请求表中是否已经有该RREQ分组的记录,若有,则直接丢弃,结束;否则转到⑵;2)若RREQ的目的节点为节点本身,则构造并向源节点发送路由应答分组RREP,结束; 否则在RREQ中加入本节点地址并继续转发该RREQ,结束。
8.根据权利要求I或6所述的一种基于链路拥塞度的动态多径OLSR路由方法,其特征在于所述多径路由请求分组处理算法如下1)若路由请求分组的目的节点为节点本身,则构造并发送路由应答分组RREP,结束; 否则转到⑵;2)检查路由请求表中是否已经有该RREQ分组的记录,若有,则直接丢弃,结束;否则在 RREQ中加入该节点地址并继续转发该RREQ,结束。
9.根据权利要求I所述的一种基于链路拥塞度的动态多径OLSR路由方法,其特征在于所述路由应答分组RREP的处理流程如下1)查看该节点是否为路由应答分组RREP的目的节点,若是,则保存RREP中携带的路由信息,结束;否则转到⑵;2)查看RREP的Flag字段,若Flag= 0,转发该RREP,结束;否则,转至IJ (3);3)查看路由应答表,若路由应答表中已经记录有该RREP,丢弃该RREP,结束;否则,转发RREP,结束。
全文摘要
本发明公开了一种基于链路拥塞度的动态多径OLSR路由方法,在原有OLSR路由算法的基础上,首先引入链路拥塞度信息来反映节点的负载状况,节点在转发数据前需参考下一跳节点的负载状况,使得该方法具有负载自适应性;其次,引入多径机制,并将其与链路拥塞度信息相融合,提出基于链路拥塞度的动态多径机制,该机制结合了按需路由的思想,在链路拥塞度信息、源节点到目的节点的数据传输量大小以及源节点一跳范围内的局部区域负载满足一定条件时动态启用多径机制按需地进行路由发现,路由发现过程可自动避开负载过重节点。采用此方法可以平衡网络负载、避免或缓解链路拥塞、增大网络吞吐量、减少端到端延时、延长网络生存时间。
文档编号H04W40/04GK102595504SQ20121004456
公开日2012年7月18日 申请日期2012年2月24日 优先权日2012年2月24日
发明者兰少华, 吕建勇, 吴歉歉, 杨余旺, 董萍, 魏晓飞 申请人:南京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1