发明名称 基于移动预测的动态多径路由算法
摘要 本发明公开了一种应用于高速移动的无线Mesh网络中的基于移动预测的动态多径路由算法。主要包括以下步骤:首先利用节点的移动信息预测路由生存时间,将路由生存时间的思想引入DSR协议的路由发现过程;然后利用路由生存时间和多径路由之间的不相关性产生的综合评价值对从源节点到目的节点的多条路径进行路由选择,并且利用路由生存时间改善路由维护、选择、缓存机制。本发明能够为高速移动的无线Mesh网络中的节点寻找相对稳定的路由,并且寻找到的多条路径的不相关性较大,减少了路由发现的次数,有效的降低了路由开销,改善了原有的DSR协议性能,使其能够适应高速移动的网络环境。
申请公布号 CN101827413A 申请公布日期 2010.09.08
申请号 CN200910021387.8 申请日期 2009.03.05
申请人 赵欣 发明人 赵欣;陈琳琳;刘乃安
分类号 H04W40/02(2009.01)I;H04W84/18(2009.01)I;H04L12/56(2006.01)I 主分类号 H04W40/02(2009.01)I
代理机构 代理人
主权项 1.一种基于移动预测的动态多径路由算法。其特征在于:所述动态多径路由算法包括如下步骤:1)路由发现过程当源节点S要发送分组给目的节点D时,S首先会检查它的路由缓存中是否有到D的路由。如果有的话,S就会选择合适的路由传送。如果没有的话,源节点就会发起一个路由发现过程来尝试发现一条到达目的节点的路由。在DSR协议的路由请求信息(RouteRequest,RREQ)分组内扩展出节点的移动信息包括当前位置(x,y)、当前速度v、当前方向θ、传输半径r、路由生存时间域RET,令RET初始化为网络中节点之间能够保持连接的最大时间。一个节点M收到一个RREQ后,首先判断自己是否为此RREQ的目的节点。1.1)当节点M为中间节点时,节点M按照以下步骤处理RREQ:1.1.1)当一个中间节点M从上一跳节点N收到RREQ包,先判断该节点M的地址是否与路由记录列表中的任一地址匹配。若是,则证明出现路由环路,节点丢弃这个RREQ。如果没有出现环路路由,则搜索节点的路由请求列表,检查该节点是否收到过相同的RREQ。RREQ分组中的请求ID与路由发起者地址一起用于唯一标识一个路由请求分组,网络中的每个节点会维护一个{路由发起者地址,请求ID}对的路由请求表,记录这个节点最近发起或转发的路由请求信息。1.1.2)若节点M是第一次收到该RREQ,节点M从RREQ包中取出上一个节点N的位置、速度、运动方向和传输半径,然后再从链路层获得该节点自身的相关信息来预测这个节点和上个节点保持连接的时间(LET<sub>M</sub>)。假设移动网络中的所有节点均处于一个自由空间传播模型当中,信号强度仅与传送距离有关。同时假设所有节点的时间同步。对于某一时刻网络中任意两节点,若二者之间的距离不大于有效传输距离,即可认为两节点在此时能够保持连接。假定节点i向相邻的节点j传输数据,令(x<sub>i</sub>,y<sub>i</sub>)、(x<sub>j</sub>,y<sub>j</sub>)分别为移动节点i、j的坐标,v<sub>i</sub>、v<sub>j</sub>分别是是节点i和j的移动速度,θ<sub>i</sub>、θ<sub>j</sub>(0<θ<sub>i</sub>,θ<sub>j</sub><2π)分别是节点i、j的移动方向,将移动速度分解为x轴和y轴方向的分量,即节点i、j的运动速度分别为(v<sub>ix</sub>,v<sub>iy</sub>)、(v<sub>jx</sub>,v<sub>jy</sub>,经过时间t后,节点i、j的坐标分别为(x<sub>i</sub>+tv<sub>ix</sub>,y<sub>i</sub>+tv<sub>iy</sub>)、(x<sub>j</sub>+tv<sub>jx</sub>,y<sub>j</sub>+tv<sub>jy</sub>)。设r<sub>i</sub>为节点i的传输半径,当两个节点间的距离达到节点i的传输半径算式(1)是:((x<sub>i</sub>+tv<sub>ix</sub>)-(x<sub>j</sub>+tv<sub>jx</sub>))<sup>2</sup>+((y<sub>i</sub>+tv<sub>iy</sub>)-(y<sub>j</sub>+tv<sub>jy</sub>))<sup>2</sup>=r<sub>i</sub><sup>2</sup>(1)由上式(1)解得t,t为此条链路的生存时间LET,对于一条有n条链路组成的路由,它的路由生存时间RET,RET=min(LET<sub>1</sub>,…,LET<sub>i</sub>,…,LET<sub>n</sub>)(2)如果LET<sub>M</sub>小于当前路由请求分组中的路由持续时间(RET<sub>N</sub>),则令RET<sub>M</sub>=LET<sub>M</sub>,否则RET<sub>M</sub>=RET<sub>N</sub>。若节点M不是第一次收到该RREQ,则直接转到1.1.6)。1.1.3)判断当前路由请求分组中的连接持续时间(RET<sub>M</sub>)是否小于规定的危险阈值T<sub>th</sub>。若RET<sub>M</sub>≤T<sub>th</sub>,则说明该链路不可靠,应不再做任何处理,丢弃该RREQ;反之,则执行步骤1.1.4)1.1.4)当前节点M会用自身的相关移动信息覆盖REEQ中上一跳节点N的移动信息,将<!-- SIPO <DP n="1"> -->自身地址添加到路由记录列表中,将这个RREQ广播出去,并且将该RREQ包中的{路由发起者地址,请求ID}记录入路由请求列表中。同时设置t<sub>max</sub>=RET<sub>M</sub>。。然后执行步骤1.15)1.1.5)启动定时计数器T<sub>e</sub>,等待其他相同的RREQ。1.1.6)节点M搜索的路由请求列表,发现该节点已经收到过包含相同{路由发起者地址,请求ID}标识的RREQ,则检查定时器T<sub>e</sub>是否已归零。若定时器已经归零,则丢弃该RREQ;反之,则使用该RREQ中包含的上一跳节点N的移动信息和本地节点的相关信息来预测这个节点和上个节点保持连接的时间(LET<sub>Mi</sub>)。如果LET<sub>Mi</sub>小于当前REEQ分组中的连接时间RET<sub>X</sub>(X为上一跳节点的编号),令RET<sub>Mi</sub>=LET<sub>M</sub><sub>i</sub>,否则RET<sub>Mi</sub>=RET<sub>X</sub>。然后判断当前包中的连接时间RET<sub>Mi</sub>是否小于该节点记录中的t<sub>max</sub>。若RET<sub>Mi</sub><t<sub>max</sub>,则丢弃该RREQ;反之,则当前节点M会用自身的相关移动信息覆盖上一跳节点的移动信息,将自身地址添加到路由记录列表中,将这个RREQ广播出去。同时设置t<sub>max</sub>=RET<sub>Mi</sub>。。1.1.7)结束。与DSR算法不同的是,即使中间节点的路由存储器中存有到达目的节点的路由也不允许该节点返回路由应答(RouteReply,RREP),而是要继续转发RREQ,这样目的节点才能够得到更多的路由信息。1.2)当目的节点D收到该RREQ时,按照以下步骤处理RREQ:1.2.1)目的节点D搜索节点的路由请求列表,检查该节点是否收到过相同的RREQ。若该RREQ分组是第一个到达的目的节点的RREQ分组,则执行步骤1.2.2)。若该节点已经收到过相同的RREQ,则执行步骤(6)。1.2.2)目的节点D收到第一个RREQ后,从RREQ包取出包中上一个节点的位置、速度、运动方向和传输半径,然后再从链路层获得该节点自身的相关信息来预测这个节点和上个节点保持连接的时间(LET<sub>D</sub>),。如果LET<sub>D</sub>小于当前路由请求分组中的路由持续时间RET<sub>C</sub>(X为上一跳节点的编号),则令RET<sub>D</sub>=LET<sub>D</sub>,否则RET<sub>D</sub>=RET<sub>C</sub>。然后执行步骤1.2.3)。1.2.3)判断当前包中的连接时间RET是否小于危险阈值T<sub>th</sub>。若RET<sub>D</sub>≤T<sub>th</sub>,则不再做任何处理,丢弃该RREQ;反之,节点D会产生相对应的路由应答分组(RREP)并将其发送给源节点S。然后把该路由存入缓存中,标记为主路由,用于和后到的备份路由作比较。并且将该RREQ包中的{路由发起者地址,请求ID}记录入路由请求列表中。同时设置t<sub>max</sub>=RET<sub>D</sub>。若节点D不是第一次收到该RREQ,则直接转到1.2.5)1.2.4)启动定时计数器T<sub>d</sub>,等待其他相同的RREQ。1.2.5)若节点D搜索的路由请求列表,发现该节点已经收到过包含有相同{路由发起者地址,请求ID}标识的RREQ,则检查定时器T<sub>d</sub>是否已归零。若定时器已经归零,则丢弃该RREQ;反之,则利用该RREQ中包含的上一跳节点移动信息和节点自身的相关信息来预测本节点和上个节点保持连接的时间(LET<sub>Di</sub>)。如果这个时间小于当前RREP分组中的连接时间RET<sub>X</sub>(X为上一跳节点的编号),令RET<sub>Di</sub>=LET<sub>Di</sub>,否则RET<sub>Di</sub>=RET<sub>X</sub>。然后判断当前包中的连接时间RET<sub>Di</sub>是否小于该节点记录中的t<sub>max</sub>。若RET<sub>Mi</sub><t<sub>max</sub>,则丢弃该RREQ;反之,则将该RREQ包中的路由记录存入目的节点的路由缓存中,并且将t<sub>max</sub>替换成dRREQ包中的RET<sub>Mi</sub>。1.2.6)结束。需要注意的是,目的节点D找到第一个满足条件的RREQ时,则向源节点发送RREP,同时<!-- SIPO <DP n="2"> -->将该RREQ中携带的路由记录存入高速缓存中,同时启动定时器T<sub>d</sub>。在计时器T<sub>d</sub>未归零时收到的满足限制条件的RREQ,并不立即向源节点发送RREP,而是只将RREQ中携带的路由记录存入高速缓存中,等待计时器归零以后做进一步的处理。在计时器归零以后,节点D将路由缓存中的备份路由和主路由进行比较,如果路由缓存中只存在1条的非主路由的路由记录,则目的节点产生RREP,将该路由的相关信息发送给源节点。若路由缓存中存在2条或者是多于2条的非主路由的路由记录,则利用公式(3)选择综合评价值最C大的路由向源节点发送RREP。<maths num="0001"><![CDATA[<math><mrow><msub><mi>C</mi><mi>i</mi></msub><mo>=</mo><mfrac><msub><mi>RET</mi><mi>i</mi></msub><msub><mi>RET</mi><mi>main</mi></msub></mfrac><mo>+</mo><mfrac><msub><mi>N</mi><mrow><mi>i</mi><mo>,</mo><mi>main</mi></mrow></msub><msub><mi>N</mi><mi>main</mi></msub></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,C<sub>i</sub>是第i条非主路由的路由综合评价值,RET<sub>i</sub>是第i条非主路由的路由持续时间,RET<sub>main</sub>是主路由的路由持续时间,N<sub>i,mam</sub>是第i条非主路由的路由与主路由相比不同的节点数目,N<sub>main</sub>是主路由包含的节点数。目的节点向发源节点送RREP的过程可以是目的节点D使用自己缓存中的路由,也可以是D发起新的路由发现过程寻找到达S的路由,还可以是在双向链路的情况下,目的节点将RREQ中的路由列表逆转从而生成一条从D到达S的路由。该协议中的RREP不仅要包含RREQ包中的路由记录,而且要在扩展域中加入RET。2)路由维护过程在引入移动预测思想后,本协议的路由维护机制会分为主动预测和被动调整两个部分同时进行。2.1)主动预测路由生存时间RET会随着路由回复分组(RREP)被发送到源节点S。S在使用这条路由发送数据的时候,当RET减小到危险阈值T<sub>th</sub>时,S会搜索路由缓存,看是否有其他已知的到达D的路由,如果没有的话,就会提前发起新的路由发现过程来找到一条新的到达D的路由。当S在缓存中或者通过路由发现过程找到一条新的到达D的路由时,就会采用这条路由,将旧的路由从缓存中删除掉。主动预测进行路由维护过程所需的时间主要由发送路由警告和寻找新路由的过程组成。考虑最坏的情况下即路由警告过程所经过的跳数是该网络的直径(Net_Hops),同时源节点的路由缓存中没有到达同一目的的其它路由,必须重新进行路由发现,而路由发现过程所经过的路由跳数也是该网络的直径(Net_Hops)。由于路由发现由路由请求和路由应答两个过程组成,在忽略运算和其它的时间开销后,整个路由维护所经过的总的路由跳数为3×Net_Hops。设经过每跳节点所需要的时间为Perhop_Time,那么整个路由重建过程所需的时间可以由公式表达为;T<sub>th</sub>=3×Net_Hops×Perhop_Time(4)2.2)被动调整本协议沿用DSR协议原本的方法做出被动的调整。当节点发现本节点到下一跳节点的链路由于各种原因出现故障时,就会发送一个路由错误分组RRER给这个分组源节点S,指明这条链路出现了故障。同时,该节点检测自己的路由表,若表中存在通向目的节点的路由,则此节点将替换原始源路由为其路由表中的路由,继续转发分组。源节点收到路由错误分组的节点会删除所有包含该故障链路的路由。然后检查自己的路由缓存,看是否有其他<!-- SIPO <DP n="3"> -->到达目的节点的路由,如果有,则用其他的路由继续传送数据分组;如果没有,则发起新一轮的路由发现过程。3)路由选择和路由缓存策略本协议通过引入路由生存时间,改进DSR协议的路由选择和路由缓存策略,使移动节点能更有针对性的选择路由和管理路由缓存。3.1)路由选择策略当源节点S要发送一个数据分组给D时,它会搜索自己的路由缓存,如果路由缓存中不包含通往目的地D的路由,则发起路由发现过程,并且当收到第一个路由回复分组RREP的时候,它会直接采用这条路由。如果S搜索路由缓存发现存在多条到达目的地D的路由的话,它会在这多条路由中进行选择,而不是简单的选择缓存中的第一条路由。●它的第一个判断标准设定为RET,S会选用RET最大的路由作为新的路由;●当出现几条RET相差不大的路由时,判断准则为|RET<sub>i</sub>-RET<sub>j</sub>|<Perhop_Time,S会选用这几条路由中跳数较小的路由,作为新的路由。这种选择路由的策略同样适用于路由维护的情况(如果正在使用的路由,由于接近危险阈值T<sub>th</sub>或者不可预测的原因断裂时,S就需要搜索自己的路由缓存查询是否有替代的路由)。3.2)路由缓存策略DSR的缓存超时的设置是选择静态值。当缓存中的路由在缓存中的时间超过事先设置的时间值时,就把这一路由信息去掉。在引入路由生存时间RET之后,我们可以精确地对每条路由选择它的缓存超时。当路由加入时间加上此路由的RET小于等于当前时间时,证明此条路由已经失效,从路由缓存中清除。在缓存信息的抛弃策略上,如果缓存中的信息达到容量的上限,而又有新的条目需要加入的情况下,缓存策略会计算每个条目的路由加入时间与此路由的RET的和,将这个和最接近于当前时间的路由(即最接近超时的路由)删除,以便加入新的路由。这样,就能保证在路由缓存中留下来的路由都是可用的。2、如权利要求1所述的一种基于移动预测的动态多径路由算法,其主要特征在于:该算法能够为高速移动的无线Mesh网络中的节点寻找相对稳定的路由,并且寻找到的多条路径的不相关性较大,减少了重建路由的次数,有效地降低了路由开销和网络拥塞。
地址 710071 陕西省西安市太白南路2号