基于业务分配的动态多径路由方法与流程

文档序号:22685379发布日期:2020-10-28 12:51阅读:198来源:国知局
基于业务分配的动态多径路由方法与流程

本发明属于通信技术领域,更进一步涉及一种多径路由方法,可用于卫星网络通信。



背景技术:

近年来,网络通信技术取得了快速的发展,与此同时人们对于信息传输的需求急剧增长。如果仅仅依靠于地面通信网络,将会受限于各种极端地形以及自然灾害等多种因素,根本无法满足人们对于网络通信的高要求。所以卫星网络应运而生,卫星网络是一个由高空网络、空间以及地面构成的综合通信系统,不仅可以实现地球表面的全覆盖,还能提供高带宽保证数据的传输速率,且近乎不受地理因素以及各种自然灾害的影响。这些特征使得卫星网络成为了通信网络发展的主要趋势,其中网络路由技术是需要深入研究的关键性问题。

现有的网络路由方法主要目的是在源节点和目的节点之间维护一条最优路径,所有的业务都通过这条维护的最优路径进行传输,用这种直接运用单路径路由方法查找卫星网络中的最短时延路径会存在以下两个问题:

第一,当源节点需要发送的业务量很大时,业务的传输可能会跨多个连通时间段,导致等待链路连通的时延增加,造成不必要的路由开销。

第二,卫星网络中的节点以及链路资源有限,如果所有的业务都通过一条最优路径进行传输,无法并行的传输数据,将导致数据传输的压力集中在最优路径上,很容易发生网络拥塞,严重时甚至会造成数据丢失。



技术实现要素:

本发明的目的在于针对上述单路径路由方法的不足,提出一种基于业务分配的动态多径路由方法,以将传输业务的压力分摊到多条链路上,减小节点的压力,充分利用了网络中的链路资源,减少网络拥塞的发生,提高卫星网络传输的可靠性。

为实现上述目的,本发明的实现步骤包括如下:

(1)通过节点和链路信息构造连续时间聚合图g=(v,l),其中v是节点集合,l是链路集和;

(2)初始化参数:给定业务量为m,定义link(s,d)表示从源节点s传输给定业务量到目的节点d的动态多径路由,初始化为空;定义dbest(s,d)存储源节点s到目的节点d的最短时延,即按照link(s,d)中存储的动态多径路由进行传输需要花费的时延,初始化为∞,定义s的邻居节点集合p,用来存储源节点s的所有邻居节点,p={n1,n2,n3,...};

(3)判断集合p是否为空:

若为空,则表明源节点s的所有邻居节点都已经参与了计算,得到网络中固定传输起始时间下从源节点传输给定业务量到目的节点的最优多径路由link(s,d)和通过该路径传输需要耗费的时延dbest;

否则,从集合p中提取邻居节点ni,执行(4);

(4)在源节点s到其某个邻居节点ni之间的链路上,计算给定业务量m的传输结束的时刻并统计传输时间段在链路的连通时间段序列i中所跨的连通时间段个数n,其中tstart表示传输开始时刻,表示链路的容量函数;

(5)根据n的大小,得到最优路径数目k以及业务量分配情况:

当n=1时,业务通过单路径进行传输,即有k=1,执行(6);

当n=2时,业务通过双路径进行传输,即k=2,两条路径上分配的业务量m1和m2分别为第一、二个连通时间段传输的业务量,执行(7);

当n>2时,业务通过三条路径进行传输,即有k=3,需根据业务量m在链路lsni上的分布时间段序列之间的间隔,选择间隔最大和次大的两个时间间隔将业务量m划分为m1、m2和m3三部分,分别表示这三条路径上分配的业务量,执行(8);

(6)在连续时间聚合图g中,计算从源节点s开始传输给定业务量m经过邻居节点ni后,发送到目的节点d的最短路径pathi及该路径耗费的时延di,得到单路径路由link′=pathi和该单路径路由耗费的时延di;

(7)计算业务通过两条路径进行传输的双路径路由link′和耗费的时延di:

(7a)在连续时间聚合图g中,计算从源节点s开始传输第一条路径上分配的业务量m1经过邻居节点ni后,发送到目的节点d的最短路径path1i和该路径耗费的时延d1i;

(7b)将(7a)中的最短路径path1i所涉及的链路从连续时间聚合图g中删除,得到剩余连续时间聚合图g′=(v,l′),其中l′是剩余链路集合;再在剩余图g′中计算从源节点s传输第二条路径上分配的业务量m2到达目的节点d的最短路径path2i和该路径耗费的时延d2i;

(7c)根据(7a)和(7b)的结果,得到双路径路由link′={path1i,path2i}和该双路径路由耗费的时延di=max(d1i,d2i);

(8)计算业务通过三条路径进行传输的三条路径路由link′和耗费的时延di:

(8a)在连续时间聚合图g中,计算从源节点s开始传输第一条路径上分配的业务量m1经过邻居节点ni后,发送到目的节点d的最短路径path1i和该路径耗费的时延d1i;

(8b)将(8a)中的最短路径path1i所涉及的链路从连续时间聚合图g中删除,得到剩余连续时间聚合图g′=(v,l′),再在剩余图g′中计算从源节点s传输第二条路径上分配的业务量m2到达目的节点d的最短路径path2i和该路径耗费的时延d2i;

(8c)将(8b)中的最短路径path2i所涉及的链路从剩余连续时间聚合图g′中删除,得到二次剩余连续时间聚合图g″=(v,l″),其中l″是二次剩余链路集合;然后在二次剩余图g″中计算从源节点s传输第三条路径上分配的业务量m3到达目的节点d的最短路径path3i和该路径耗费的时延d3i;

(8d)根据(8a)、(8b)和(8c)的结果,得到三条路径路由link′={path1i,path2i,path3i}和该三条路径路由耗费的时延di=max(d1i,d2i,d3i);

(9)将此时耗费的时延di与当前最短时延dbest进行比较;若di<dbest,则更新dbest=di,link=link′,再执行(11),否则,不进行更新,直接执行(11);

(10)从集合p中删除邻接节点ni,返回(3);

与现有技术相比,本发明具有以下优点:

第一,本发明将需要跨多个连通时间段传输的业务,以等待链路连通时延最小为目标,将部分业务量转移到其他路径上,减少了业务等待链路连通的时延,进而降低了网络的传输时延;

第二,本发明将传输业务的压力分摊到多条链路上,并行传输数据,减小了节点的压力,充分利用了网络中的链路资源,减少了网络拥塞的发生,进一步提高卫星网络传输的可靠性。

附图说明

图1是本发明使用的场景示例图;

图2是本发明的实现流程图;

图3是本发明中的连续时间聚合图;

图4是本发明的仿真结果图。

具体实施方式

下面结合附图对本发明的实施例和效果做进一步的描述。

参照图1,本实施例使用的场景是一个通信网络,该网络中包括两个地面站和三个中继星,即第一地面站s、第二地面站d、第一中继星a、第二中继星b和第三中继星c这五个网络节点。网络中第一地面站s、第二地面站d分别与第一中继星a、第二中继星b、第三中继星c之间各有一条通信链路,即第一地面站s与第一中继星a之间的通信链路lsa,第一地面站s与第二中继星b之间的通信链路lsb,第一地面站s与第三中继星c之间的通信链路lsc,第二地面站d与第一中继星a之间的通信链路lad,第二地面站d与第二中继星b之间的通信链路lbd,第二地面站d与第三中继星c之间的通信链路lcd。当一个业务从第一地面站s向第二地面站d发送时,需要找出耗费时延最小的动态多径路由。

参照图2,本实施例的具体步骤如下:

步骤1,生成连续时间聚合图。

1.1)用网络中的五个节点构成节点集合v={s,a,b,c,d},用五个节点之间的链路构成链路集合l={lsa,lsb,lsc,lad,lbd,lcd,};将链路上的信息用(i,c(t),d(t))表示,其中c(t)表示链路的容量函数,d(t)表示链路的传播时延函数,表示链路的连通时间段序列,链路只有在连通时间段内才是连通的状态,在其他时间段链路时断开的状态;

1.2)根据上述参数生成连续时间聚合图g=(v,l),如图3所示。

图3中,(isa,csa(t),dsa(t))表示节点s和节点a之间的链路连通时间段序列、链路容量和链路传播时延;

(isb,csb(t),dsb(t))表示节点s和节点b之间的链路连通时间段序列、链路容量和链路传播时延;

(isc,csc(t),dsc(t))表示节点s和节点c之间的链路连通时间段序列、链路容量和链路传播时延;

(iad,cad(t),dad(t))节点a和节点d之间的链路连通时间段序列、链路容量和链路传播时延;

(ibd,cbd(t),dbd(t))表示节点b和节点d之间的链路连通时间段序列、链路容量和链路传播时延,

(icd,ccd(t),dcd(t))表示节点c和节点d之间的链路连通时间段序列、链路容量和链路传播时延。

步骤2,初始化参数。

设业务量为m,定义link(s,d)为存储从源节点s传输给业务量到目的节点d的动态多径路由,初始化为空;定义dbest(s,d)存储源节点s到目的节点d的最短时延,即按照link(s,d)集合中存储的动态多径路由进行传输需要花费的时延,初始化为∞。定义s的邻居节点集合p,用来存储源节点s的所有邻居节点,p={a,b,c};

步骤3,根据集合p的当前状态,选择不同的操作。

判断集合p是否为空:若为空,则表明源节点s的所有邻居节点都已经参与了计算,得到网络中固定传输起始时间下从源节点传输给定业务量到目的节点的最优多径路由link(s,d)和通过该路径传输需要耗费的时延dbest;否则,从集合p中提取邻居节点ni,执行步骤4。

步骤4,统计连通时间段个数n,选择最优路径数目k进行业务量分配。

4.1)在源节点s到其某个邻居节点ni之间的链路上,计算给定业务量m的传输结束的时刻其中tstart表示传输开始时刻,表示链路的容量函数;再统计传输时间段在链路的连通时间段序列i中所跨的连通时间段个数n;

4.2)根据n的大小,得到最优路径数目k及业务量分配情况:

当n=1时,表示业务量m在链路上能够在一个连通时间段内传输完成,此时业务通过单路径进行传输,即有k=1,执行步骤5;

当n=2时,表示业务量m在链路的连通时间段序列中跨了两个连通时间段,此时业务通过双路径进行传输,即有k=2,其中第一部分业务量m1为第一个连通时间段传输的业务量,第二部分业务量m2为第二个连通时间段传输的业务量,执行步骤6;

当n>2时,表示业务量m在链路的连通时间段序列中跨了2个以上的连通时间段,此时业务通过三条路径进行传输,即有k=3,需根据业务量m在链路上的分布时间段序列之间的间隔,选择间隔最大和次大的两个时间间隔将业务m划分为m1、m2和m3三个部分,再执行步骤7。

步骤5,计算业务通过单路径进行传输的单路径路由link′和该路由所耗费的时延di。

5.1)在连续时间聚合图g中,计算从源节点s开始传输给定业务量m经过邻居节点ni后,发送到目的节点d的最短路径pathi及该路径耗费的时延di;

(5.1.1)初始化:设所有节点的业务完全到达时刻为∞,所有节点的父节点为空,创建确定最短路径节点集合q,用来存储已经找到最短路径的节点,其初值设置为创建未知最短路径节点集合t,用来存储还没有找到最短路径的节点,其初值设置为所有节点;

(5.1.2)计算源节点s到其邻居节点ni的传输结束时刻,更新邻居节点ni的业务完全到达时刻,将邻居节点ni从未知最短路径节点集合t中删除并将其加入到确定最短路径节点集合q中,更新邻居节点ni的父节点为源节点s,并将邻居节点ni作为当前节点;

(5.1.3)根据下一跳的链路容量与上一跳链路容量的大小关系,分三种情况计算下一跳的业务传输结束时刻

第一种情况:当下一跳链路容量小于或等于上一跳链路容量时,`其业务传输结束时刻的传输结束时刻为:

其中,表示业务片段在链路ljr的传输起始时刻,cjr(t)表示链路ljr的容量函数,表示上一跳链路最后一个连通时间段上的业务传输片段量;

第二种情况:当下一跳的链路容量大于上一跳链路容量且下一跳链路在业务片段传输过程中未断开时的传输结束时刻为:

其中,表示业务以最大容量传输时的传输结束时刻,表示业务在链路lij上的传输结束时刻,表示链路lij在时的传播时延,表示链路ljr第x个连通时间段的开始时刻,表示链路lij在最后一个连通时间段的传输开始时刻,表示链路lij在时的传播时延,表示链路ljr第x-1个业务片段传输结束的时刻,cjr(t)和cij(t)分别表示链路ljr和lij的容量函数,tstart表示业务传输起始时间,m表示需要传输的总业务量;

第三种情况:当下一跳的链路容量大于上一跳链路容量且下一跳链路在业务片段传输过程中断开时的传输结束时刻为:

其中,是链路ljr在第x个连通时间段内传输的业务片段量,表示链路lij在最后一个连通时间段的传输开始时刻,表示链路ljr第x-1个连通时间段的结束时刻,表示链路lij在时的传播时延。

(5.1.4)判断业务传输结束时刻与传播时延之和是否小于业务完全到达时间:

若小于,则将节点的业务完全到达时间更新为业务传输结束时刻与传播时延之和,并将其父节点更新为当前节点,执行(5.1.5);

否则,不进行更新,直接执行(5.1.5);

(5.1.5)从未知最短路径节点集合t中删除业务完全到达时间最小的节点,并将其加入到确定最短路径节点集合q中,再判断当前未知最短路径节点集合t是否为空,若为空,则继续进行(5.1.6),否则,将该业务完全到达时间最小的节点作为新的当前节点,返回(5.1.3);

(5.1.6)采用“倒序追踪”的方法,即依次找到目的节点d的父节点,再找到父节点的父节点,一直追溯到源节点,得到源节点到目的节点d的最短路径pathi,该路径耗费的时延di即为节点d的业务完全到达时间与业务传输起始时刻tstart之差;

5.2)根据5.1)的结果,得到单路径路由link′=pathi和该单路径路由耗费的时延di。

步骤6,计算业务通过两条路径进行传输的双路径路由link′和耗费的时延di:

6.1)在连续时间聚合图g中,计算从源节点s开始传输第一条路径上分配的业务量m1经过邻居节点ni后,发送到目的节点d的最短路径path1i和该路径耗费的时延d1i;

(6.1.1)初始化:设所有节点的业务完全到达时刻为∞,所有节点的父节点为空,创建确定最短路径节点集合q,用来存储已经找到最短路径的节点,其初值设置为创建未知最短路径节点集合t,用来存储还没有找到最短路径的节点,其初值设置为所有节点;

(6.1.2)计算源节点s到其邻居节点ni的传输结束时刻,更新邻居节点ni的业务完全到达时刻,将邻居节点ni从未知最短路径节点集合t中删除并将其加入到确定最短路径节点集合q中,更新邻居节点ni的父节点为源节点s,并将邻居节点ni作为当前节点;

(6.1.3)根据下一跳的链路容量与上一跳链路容量的大小关系,分三种情况计算下一跳的业务传输结束时刻

第一种情况:当下一跳链路容量小于或等于上一跳链路容量时,`其业务传输结束时刻的传输结束时刻为:

其中,表示业务片段在链路ljr的传输起始时刻,cjr(t)表示链路ljr的容量函数,表示上一跳链路最后一个连通时间段上的业务传输片段量;

第二种情况:当下一跳的链路容量大于上一跳链路容量且下一跳链路在业务片段传输过程中未断开时的传输结束时刻为:

其中,表示业务以最大容量传输时的传输结束时刻,表示业务在链路lij上的传输结束时刻,表示链路lij在时的传播时延,表示链路ljr第x个连通时间段的开始时刻,表示链路lij在最后一个连通时间段的传输开始时刻,表示链路lij在时的传播时延,表示链路ljr第x-1个业务片段传输结束的时刻,cjr(t)和cij(t)分别表示链路ljr和lij的容量函数,tstart表示业务传输起始时间,m1表示需要传输的业务量;

第三种情况:当下一跳的链路容量大于上一跳链路容量且下一跳链路在业务片段传输过程中断开时的传输结束时刻为:

其中,是链路ljr在第x个连通时间段内传输的业务片段量,表示链路lij在最后一个连通时间段的传输开始时刻,表示链路ljr第x-1个连通时间段的结束时刻,表示链路lij在时的传播时延。

(6.1.4)判断业务传输结束时刻与传播时延之和是否小于业务完全到达时间:

若小于,则将节点的业务完全到达时间更新为业务传输结束时刻与传播时延之和,并将其父节点更新为当前节点,执行(6.1.5);

否则,不进行更新,直接执行(6.1.5);

(6.1.5)从未知最短路径节点集合t中删除业务完全到达时间最小的节点,并将其加入到确定最短路径节点集合q中,再判断当前未知最短路径节点集合t是否为空:若为空,则继续进行(6.1.6),否则,将该业务完全到达时间最小的节点作为新的当前节点,返回(6.1.3);

(6.1.6)采用“倒序追踪”的方法,即依次找到目的节点d的父节点,再找到父节点的父节点,一直追溯到源节点,得到源节点到目的节点d的最短路径path1i,该路径耗费的时延d1i即为节点d的业务完全到达时间与业务传输起始时刻tstart之差;

6.2)计算从源节点s传输第二条路径上分配的业务量m2到达目的节点d的最短路径path2i和该路径耗费的时延d2i:

(6.2.1)将6.1)中的最短路径path1i所涉及的链路从连续时间聚合图g中删除,得到剩余连续时间聚合图g′=(v,l′),其中l′是剩余链路集合;

(6.2.2)初始化:设所有节点的业务完全到达时刻为∞,所有节点的父节点为空,创建确定最短路径节点集合q,用来存储已经找到最短路径的节点,其初值设置为创建未知最短路径节点集合t,用来存储还没有找到最短路径的节点,其初值设置为所有节点;

(6.2.3)计算源节点s到其所有邻居节点的传输结束时刻,并更新源节点s的其所有邻居节点的父节点和业务完全到达时刻,从未知最短路径的节点集合t中删除业务完全到达时刻最小的节点j,并将其加入到确定最短路径的节点集合q中;

(6.2.4)将节点j作为当前节点,根据下一跳的链路容量与上一跳链路容量的大小关系,分三种情况计算下一跳的业务传输结束时刻

第一种情况:当下一跳链路容量小于或等于上一跳链路容量时,`其业务传输结束时刻的传输结束时刻为:

其中,表示业务片段在链路ljr的传输起始时刻,cjr(t)表示链路ljr的容量函数,表示上一跳链路最后一个连通时间段上的业务传输片段量;

第二种情况:当下一跳的链路容量大于上一跳链路容量且下一跳链路在业务片段传输过程中未断开时的传输结束时刻为:

其中,表示业务以最大容量传输时的传输结束时刻,表示业务在链路lij上的传输结束时刻,表示链路lij在时的传播时延,表示链路ljr第x个连通时间段的开始时刻,表示链路lij在最后一个连通时间段的传输开始时刻,表示链路lij在时的传播时延,表示链路ljr第x-1个业务片段传输结束的时刻,cjr(t)和cij(t)分别表示链路ljr和lij的容量函数,tstart表示业务传输起始时间,m2表示需要传输的业务量;

第三种情况:当下一跳的链路容量大于上一跳链路容量且下一跳链路在业务片段传输过程中断开时的传输结束时刻为:

其中,是链路ljr在第x个连通时间段内传输的业务片段量,表示链路lij在最后一个连通时间段的传输开始时刻,表示链路ljr第x-1个连通时间段的结束时刻,表示链路lij在时的传播时延;

(6.2.5)判断业务传输结束时刻与传播时延之和是否小于业务完全到达时间:

若小于,则将节点的业务完全到达时间更新为业务传输结束时刻与传播时延之和,并将其父节点更新为当前节点,执行(6.2.6);

否则,不进行更新,直接执行(6.2.6);

(6.2.6)从未知最短路径节点集合t中删除业务完全到达时间最小的节点,并将其加入到确定最短路径节点集合q中,再判断当前未知最短路径节点集合t是否为空,若为空,则继续进行(6.2.7),否则,将该业务完全到达时间最小的节点作为新的当前节点,返回(6.2.4);

(6.2.7)采用“倒序追踪”的方法,即依次找到目的节点d的父节点,再找到父节点的父节点,一直追溯到源节点,得到源节点到目的节点d的最短路径path2i,该路径耗费的时延d2i即为节点d的业务完全到达时间与业务传输起始时刻tstart之差;

6.3)根据6.1)和6.2)的结果,得到双路径路由link′={path1i,path2i}和该双路径路由耗费的时延di=max(d1i,d2i)。

步骤7,计算业务通过三条路径进行传输的三条路径路由link′和耗费的时延di。

7.1)在连续时间聚合图g中,计算从源节点s开始传输第一条路径上分配的业务量m1经过邻居节点ni后,发送到目的节点d的最短路径path1i和该路径耗费的时延d1i:

(7.1.1)初始化:设所有节点的业务完全到达时刻为∞,所有节点的父节点为空,创建确定最短路径节点集合q,用来存储已经找到最短路径的节点,其初值设置为创建未知最短路径节点集合t,用来存储还没有找到最短路径的节点,其初值设置为所有节点;

(7.1.2)计算源节点s到其邻居节点ni的传输结束时刻,更新邻居节点ni的业务完全到达时刻,将邻居节点ni从未知最短路径节点集合t中删除并将其加入到确定最短路径节点集合q中,更新邻居节点ni的父节点为源节点s,并将邻居节点ni作为当前节点;

(7.1.3)根据下一跳的链路容量与上一跳链路容量的大小关系,分三种情况计算下一跳的业务传输结束时刻

第一种情况:当下一跳链路容量小于或等于上一跳链路容量时,`其业务传输结束时刻的传输结束时刻为:

其中,表示业务片段在链路ljr的传输起始时刻,cjr(t)表示链路ljr的容量函数,表示上一跳链路最后一个连通时间段上的业务传输片段量;

第二种情况:当下一跳的链路容量大于上一跳链路容量且下一跳链路在业务片段传输过程中未断开时的传输结束时刻为:

其中,表示业务以最大容量传输时的传输结束时刻,表示业务在链路lij上的传输结束时刻,表示链路lij在时的传播时延,表示链路ljr第x个连通时间段的开始时刻,表示链路lij在最后一个连通时间段的传输开始时刻,表示链路lij在时的传播时延,表示链路ljr第x-1个业务片段传输结束的时刻,cjr(t)和cij(t)分别表示链路ljr和lij的容量函数,tstart表示业务传输起始时间,m1表示需要传输的业务量;

第三种情况:当下一跳的链路容量大于上一跳链路容量且下一跳链路在业务片段传输过程中断开时的传输结束时刻为:

其中,是链路ljr在第x个连通时间段内传输的业务片段量,表示链路lij在最后一个连通时间段的传输开始时刻,表示链路ljr第x-1个连通时间段的结束时刻,表示链路lij在时的传播时延;

(7.1.4)判断业务传输结束时刻与传播时延之和是否小于业务完全到达时间:

若小于,则将节点的业务完全到达时间更新为业务传输结束时刻与传播时延之和,并将其父节点更新为当前节点,执行(7.1.5);

否则,不进行更新,直接执行(7.1.5);

(7.1.5)从未知最短路径节点集合t中删除业务完全到达时间最小的节点,并将其加入到确定最短路径节点集合q中,再判断当前未知最短路径节点集合t是否为空,若为空,则继续进行(7.1.6),否则,将该业务完全到达时间最小的节点作为新的当前节点,返回(7.1.3);

(7.1.6)采用“倒序追踪”的方法,即依次找到目的节点d的父节点,再找到父节点的父节点,一直追溯到源节点,得到源节点到目的节点d的最短路径path1i,该路径耗费的时延d1i即为节点d的业务完全到达时间与业务传输起始时刻tstart之差;

7.2)计算从源节点s传输第二条路径上分配的业务量m2到达目的节点d的最短路径path2i和该路径耗费的时延d2i:

(7.2.1)将7.1)中的最短路径path1i所涉及的链路从连续时间聚合图g中删除,得到剩余连续时间聚合图g′=(v,l′);

(7.2.2)初始化:设所有节点的业务完全到达时刻为∞,所有节点的父节点为空,创建确定最短路径节点集合q,用来存储已经找到最短路径的节点,其初值设置为创建未知最短路径节点集合t,用来存储还没有找到最短路径的节点,其初值设置为所有节点;

(7.2.3)计算源节点s到其所有邻居节点的传输结束时刻,并更新源节点s的其所有邻居节点的父节点和业务完全到达时刻,从未知最短路径的节点集合t中删除业务完全到达时刻最小的节点j,并将其加入到确定最短路径的节点集合q中;

(7.2.4)将节点j作为当前节点,根据下一跳的链路容量与上一跳链路容量的大小关系,分三种情况计算下一跳的业务传输结束时刻

第一种情况:当下一跳链路容量小于或等于上一跳链路容量时,`其业务传输结束时刻的传输结束时刻为:

其中,表示业务片段在链路ljr的传输起始时刻,cjr(t)表示链路ljr的容量函数,表示上一跳链路最后一个连通时间段上的业务传输片段量;

第二种情况:当下一跳的链路容量大于上一跳链路容量且下一跳链路在业务片段传输过程中未断开时的传输结束时刻为:

其中,表示业务以最大容量传输时的传输结束时刻,表示业务在链路lij上的传输结束时刻,表示链路lij在时的传播时延,表示链路ljr第x个连通时间段的开始时刻,表示链路lij在最后一个连通时间段的传输开始时刻,表示链路lij在时的传播时延,表示链路ljr第x-1个业务片段传输结束的时刻,cjr(t)和cij(t)分别表示链路ljr和lij的容量函数,tstart表示业务传输起始时间,m2表示需要传输的业务量;

第三种情况:当下一跳的链路容量大于上一跳链路容量且下一跳链路在业务片段传输过程中断开时的传输结束时刻为:

其中,是链路ljr在第x个连通时间段内传输的业务片段量,表示链路lij在最后一个连通时间段的传输开始时刻,表示链路ljr第x-1个连通时间段的结束时刻,表示链路lij在时的传播时延。

(7.2.5)判断业务传输结束时刻与传播时延之和是否小于业务完全到达时间:

若小于,则将节点的业务完全到达时间更新为业务传输结束时刻与传播时延之和,并将其父节点更新为当前节点,执行(7.2.6);

否则,不进行更新,直接执行(7.2.6);

(7.2.6)从未知最短路径节点集合t中删除业务完全到达时间最小的节点,并将其加入到确定最短路径节点集合q中,再判断当前未知最短路径节点集合t是否为空,若为空,则继续进行(7.2.7),否则,将该业务完全到达时间最小的节点作为新的当前节点,返回(7.2.4);

(7.2.7)采用“倒序追踪”的方法,即依次找到目的节点d的父节点,再找到父节点的父节点,一直追溯到源节点,得到源节点到目的节点d的最短路径path2i,该路径耗费的时延d2i即为节点d的业务完全到达时间与业务传输起始时刻tstart之差;

7.3)计算从源节点s传输第三条路径上分配的业务量m3到达目的节点d的最短路径path3i和该路径耗费的时延d3i:

(7.3.1)将7.2)中的最短路径path2i所涉及的链路从剩余连续时间聚合图g′中删除,得到二次剩余连续时间聚合图g″=(v,l″),其中l″是二次剩余链路集合;

(7.3.2)初始化:设所有节点的业务完全到达时刻为∞,所有节点的父节点为空,创建确定最短路径节点集合q,用来存储已经找到最短路径的节点,其初值设置为创建未知最短路径节点集合t,用来存储还没有找到最短路径的节点,其初值设置为所有节点;

(7.3.3)计算源节点s到其所有邻居节点的传输结束时刻,并更新源节点s的其所有邻居节点的父节点和业务完全到达时刻,从未知最短路径的节点集合t中删除业务完全到达时刻最小的节点j,并将其加入到确定最短路径的节点集合q中;

(7.3.4)将节点j作为当前节点,根据下一跳的链路容量与上一跳链路容量的大小关系,分三种情况计算下一跳的业务传输结束时刻

第一种情况:当下一跳链路容量小于或等于上一跳链路容量时,`其业务传输结束时刻的传输结束时刻为:

其中,表示业务片段在链路ljr的传输起始时刻,cjr(t)表示链路ljr的容量函数,表示上一跳链路最后一个连通时间段上的业务传输片段量;

第二种情况:当下一跳的链路容量大于上一跳链路容量且下一跳链路在业务片段传输过程中未断开时的传输结束时刻为:

其中,表示业务以最大容量传输时的传输结束时刻,表示业务在链路lij上的传输结束时刻,表示链路lij在时的传播时延,表示链路ljr第x个连通时间段的开始时刻,表示链路lij在最后一个连通时间段的传输开始时刻,表示链路lij在时的传播时延,表示链路ljr第x-1个业务片段传输结束的时刻,cjr(t)和cij(t)分别表示链路ljr和lij的容量函数,tstart表示业务传输起始时间,m3表示需要传输的业务量;

第三种情况:当下一跳的链路容量大于上一跳链路容量且下一跳链路在业务片段传输过程中断开时的传输结束时刻为:

其中,是链路ljr在第x个连通时间段内传输的业务片段量,表示链路lij在最后一个连通时间段的传输开始时刻,表示链路ljr第x-1个连通时间段的结束时刻,表示链路lij在时的传播时延。

(7.3.5)判断业务传输结束时刻与传播时延之和是否小于业务完全到达时间:

若小于,则将节点的业务完全到达时间更新为业务传输结束时刻与传播时延之和,并将其父节点更新为当前节点,执行(7.3.6);

否则,不进行更新,直接执行(7.3.6);

(7.3.6)从未知最短路径节点集合t中删除业务完全到达时间最小的节点,并将其加入到确定最短路径节点集合q中,再判断当前未知最短路径节点集合t是否为空,若为空,则继续进行(7.3.7),否则,将该业务完全到达时间最小的节点作为新的当前节点,返回(7.3.4);

(7.3.7)采用“倒序追踪”的方法,即依次找到目的节点d的父节点,再找到父节点的父节点,一直追溯到源节点,得到源节点到目的节点d的最短路径path3i,该路径耗费的时延d3i即为节点d的业务完全到达时间与业务传输起始时刻tstart之差;

7.4)根据7.1)、7.2)和7.3)的结果,得到三条路径路由link′={path1i,path2i,path3i}和该三条路径路由耗费的时延di=max(d1i,d2i,d3i);

步骤8,确定是否对当前最短时延dbest和动态多径路由link进行更新。

将上述计算的耗费的时延di与当前最短时延dbest进行比较;

若di<dbest,则更新dbest=di,link=link′,再执行步骤9,

否则,不进行更新,直接步骤9。

步骤9,从集合p中删除邻接节点ni,返回步骤3。

下面结合仿真实验对本发明的效果做进一步的说明:

1.仿真实验条件:

本发明的仿真实验的硬件平台为:处理器为intelpentiumcpu,主频为3.30ghz,内存8gb。

本发明的仿真实验的软件平台为:windows7操作系统和matlab。

本实验搭建了一个dtn低轨卫星网络作为仿真场景,该卫星网络的节点数目为14颗,网络的运行周期固定为100分钟,且发送业务的传输起始时间是固定的。节点间链路的变化以及随机通断由时变的容量函数以及传播时延函数两个变量进行表征,当链路的容量为0或者链路的传播时延为∞时,表明链路暂时处于断开的状态。

2.仿真内容:

在上述实验条件下,用本发明仿真在不同的发送速率下,当数据从源节点发送到目的节点时,比较使用本发明方法和单路径路由方法的传输时延,由此得到在使用不同路由方法的情况下,传输时延随数据发送速率变化的曲线,结果如图4所示。

从图4可以看出,在同一种路由方法中,网络的平均端到端时延随着发送数据的速率的增加而增加。这是由于当数据的发送速率增加时,有更多的数据需要进行传输,网络中节点需要缓存处理的消息变多,导致消息的排队时间增加,消息可能因此错失预先选择好的最优链路,造成平均端到端时延增加。

从图4还可以看出,当数据的发送速率相同时,本发明的传输时延比现有技术使用单路径路由方法的传输时延要小得多。这是由于本发明是基于业务分配的动态多径路由方法,通过多条路径传输业务,可以充分利用网络链路资源,进而大大缩短了传输时延。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1