空间容迟容断网络中数据传输的路由方法
技术领域
本发明主要涉及到网络通信领域,特指一种用于空间容迟容断网络中进行数据传输的路由方法。
背景技术
Internet已经在互连全球的通信设备上取得巨大的成功,它是采用TCP/IP协议簇作为一个同构的通信协议集,从而可以屏蔽网络异构性。但是,在TCP/IP中,对于底层传输协议也存在许多假设;例如:收发节点之间必须存在持续的端到端的路径、任意收发节点之间的RTT较小且相对一致、通信链路误码率及丢包率低等等。然而,近年来出现了许多新兴网络,这些网络具备非常鲜明的特点:在路径和链路特征上具有高延迟、低数据率,可能不存在稳定的端到端的连接;在网络体系结构上缺乏交互性;端***资源有限,寿命有限,所有这些特点都使得TCP/IP协议在这种网络中的性能出现急剧恶化而不再适用。
容迟容断网络(delay/disruption tolerant network,以下简称DTN)的提出最初是为了适应空间环境中的长链路延迟、高误码率以及频繁的链路中断等特征,而发展起来的一种新型体系结构,它可以有效地解决网络中节点的通信问题。DTN采用“存储-携带-转发”的传输机制来处理受限网络的通信:每个DTN节点保存发送的每个数据包的一个拷贝,直到接收到来自下一个节点的用来确认数据包已经被成功接收的ACK。这种机制确保了在网络传输过程中没有数据包丢失。后经研究学者的发展推广,目前DTN网络已经涵盖多种不同类型的网络,其体系是在多种不同类型网络的传输层之上、应用层之下添加一层——束层(bundle layer),该束层可以充分利用下层网络提供的服务进行数据传输等工作。
由于在DTN网络中,节点之间链路的延迟大、误码率高、且频繁中断,从而使得传统地面网络中的路由协议不再适用于DTN网络。和传统网络相比,最显著的困难是在源节点和目的节点之间没有确保的端到端的连通性,而且不能避免长延迟。此外,当数据通过网络传输时,网络拓扑会动态地随机改变。这些明显的特征造成在设计路由协议时有许多技术上的难题。另外,由于链路的频繁间断、长延迟,从而阻止路由协议消息的及时交换。而在空间卫星DTN网络中路由计算是更加困难的,不仅因为链路频繁中断,而且包括很长的信号传播延迟。
目前,DTN网络中的路由策略可以根据两个属性进行分类,即复制(replication)和知识(knowledge)。复制是指路由策略依赖传输报文的多个拷贝,知识是指利用网络中的信息做出路由选择。
根据这两个属性,可以把路由策略分成两大类:洪泛(flooding)和转发(forwarding)。
洪泛策略的主要原理是将报文进行多次拷贝,将报文的拷贝传送网络的中继节点,由中继节点来保存报文,直到其可以和目的相连。但是对于空间卫星DTN网络而言,由于节点资源非常有限且珍贵,因此如果采用洪泛策略会极大的浪费资源。
转发策略通过网络拓扑结构选择最佳路径,在最佳路径上转发报文,故不需要复制报文,但是转发策略需要事先知道网络的相关信息。
在采用洪泛策略的路由算法中,中间节点没有考虑链路或整个路径成功转发的预期概率,因此对于节点行为方式完全未知的情况来说,这种路由方法还是合理的。但是对于空间DTN网络而言,很明显这种路由方法会造成很大的资源浪费,同时没有有效利用空间卫星DTN网络的知识信息。
DTN路由问题有许多作为输入的变化信息,如动态拓扑变化和通信需求等,理论上获得这些全部信息就可以通过某种算法得到最优路由。研究学者可以将这些信息称为知识,并根据节点路由时采用的知识数量的不同,将算法分为三类:无知识路由、部分知识路由和完全知识路由。根据这些分类以及不同的应用需求又会有不同的DTN路由算法,但这类路由算法最终都是利用或多或少的先验知识将数据转发出去。
在DTN网络中,把节点之间在某个时间段的连接称为一个接触,因此在整个空间网络运行中,节点之间的连接关系会组成一个时变的接触图。现有针对空间DTN网络中路由技术的相关研究中比较典型的有针对行星际网络提出的接触图路由协议(Contact Graph Routing,简称CGR),该路由协议是通过一个建立在DTN体系结构上的网络中的时序的有限的通信接触图来动态计算路由;由于可以事先计划贯穿整个网络的通信机会,CGR可以利用整个网络的所有通信机会来进行路由选择,从而能够利用时序的传输机会来传递数据。设计CGR路由协议的目的是在基于DTN的空间网络中进行操作,但同时也能够应用在可以预定义时序拓扑图的陆地网络中。
对于空间DTN网络而言,如果网络中节点数目及节点运行轨道固定,那么整个卫星DTN网络拓扑会按照一定的周期重复,节点间的连接关系就组成一个时变的接触图,因此可以预先获得整个DTN网络的接触图,同时基于各种任务需求,可以规划网络中在某一时刻有多少对节点进行通信,即在节点通信开始前就可以预知在同一时刻网络中有多少数据流。
但是,不管是针对地面DTN网络的洪泛类路由策略,还是针对行星际网络的接触图路由协议,都没有充分利用网络中的接触关系图和数据流信息等相关先验知识信息,因此在整个数据的路由传输过程中可能会造成数据的传输失败。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能够提高整个网络吞吐量、节约空间节点资源、获得更高的网络性能的空间容迟容断网络中数据传输的路由方法。该方法是基于网络中节点接触关系图的空间容迟容断网络容量约束路由方法,通过预知整个网络运行过程中节点之间的接触关系图和节点对之间的数据流,可以经过计算获得从源节点到目的节点的最小延迟的路径。
为解决上述技术问题,本发明采用以下技术方案:
一种空间容迟容断网络中数据传输的路由方法,其步骤为:
(1)静态路由查找:当有节点需要传输数据时,查找从该节点到目的节点是否存在静态路由;如果发现静态路由,就将数据***到该节点相应的出口传输队列中,完成数据路由;如果没有发现静态路由,就执行步骤(2)的动态路由计算;
(2)动态路由计算:根据发送数据的源节点和目的节点进行动态路由计算,流程为:
(2.1)计算最小延迟路径:结合整个网络的接触关系图进行计算,获得所有从源节点到目的节点的路径、以及从源节点到目的节点的延迟;以各数据从源节点传输到当前节点的路径中的延迟来度量从源节点到当前节点的路径;
(2.2)测试路径容量:对步骤(2.1)所获得的路径中每一条接触的容量进行测试,通过比较当前传输的数据包和接触的剩余容量大小,评估某条路径能否传输当前数据包,从而选择出接触剩余容量能够传输当前数据包的路径;
(2.3)选取下一跳节点:对步骤(2.2)中所选取的所有路径的延迟进行比较,选择最小延迟的路径。
作为本发明的进一步改进:
所述步骤(2.1)为计算一条在当前第一跳情况下的具有最小延迟的路径,之后排除该路径第一跳,用来在下次计算时排除重复计算。
在所述步骤(2.1)中应考虑三种延迟:
①排队时间,在节点中某个出口上等待接触有效的时间;
②传输延迟,将消息完全注入到一条接触所消耗的时间;
③传播延迟,消息在链路中传输所消耗的时间。
所述计算最小延迟路径时,需要以源节点到当前节点的延迟来度量当前两个节点间的路径,进而对整个网络的接触图采用Dijkstra算法进行计算,获得从源节点到目的节点的所有路径以及路径中的延迟;即,以源节点到其他节点的延迟来度量当前的路径,把该度量值作为Dijkstra算法中的权值,同时根据节点之间的接触关系可以构建整个网络的接触图模型,基于接触图模型进行最小延迟路径计算。
作为本发明的进一步改进,如果经过上述步骤(1)和步骤(2)仍没有获得从源节点到目的节点的路由,则在当前网络运行时期和数据包有效期内无法将数据传输到目的地,可等待新的接触加入;不然就丢弃当前数据包。
所述接触是空间网络中节点之间在某个时间段内的一条连接,可以用开始节点、结束节点、开始时间、结束时间、接触带宽来标识一条接触;所述接触的容量大小是接触的持续时间与接触带宽的乘积,所述持续时间为结束时间与开始时间的差值;所述接触的剩余容量大小为当前接触的剩余时间与接触带宽的乘积、再去除当前时刻需要占用该接触的数据队列的大小。
所述测试路径容量的过程中,要根据路径中接触的容量和网络中其他节点的数据流对整条路径中接触容量的影响,确定接触的剩余容量能否传输当前数据包。
与现有技术相比,本发明的优点在于:
1、本发明是基于整个空间网络运行过程中的先验知识(节点接触图、接触带宽等)来进行路由计算,充分利用了节点之间的接触关系图,通过对经典Dijkstra算法进行适当修改,以从源节点到当前节点的延迟来度量路径,比较计算每条路径的延迟,进而从中选择在不同第一跳(源节点与邻居节点之间的接触)情况下的最小延迟路径,从而可以计算出从源节点到目的节点的所有路径。与现有技术不同,本发明充分利用了空间网络可以利用的先验知识来计算源到目的的路径,因此可以选择最小延迟的路径。
2、本发明采用对路径进行容量测试的机制,在路径选择时充分考虑了当前传输数据包的大小、网络中的数据流情况以及计算出的路径中所有接触的剩余容量情况,在计算过程中当计算到某一条接触时,首先根据当前网络中的数据流情况计算出在减去当前数据流需求容量后该接触的剩余容量,之后比较该剩余容量与当前传输数据包的大小,进而排除容量不够传输当前数据包的接触。通过这样来选择路径,从而确保了最终选择的路径可以传输当前数据包。与现有技术不同,本发明在计算路径过程中考虑了当前网络中其他数据流的传输需求,同时在计算过程中对每一条路径中的每条接触的容量都进行测试,这样就可以确保最终计算的路径可以传输当前需要传输的数据包。
3、本发明充分利用网络中的先验知识,基于这些先验知识,可以根据自己的实际需求选择相应约束下的路由,最终使得节点资源利用率、数据传输性能和整个网络的吞吐量达到尽可能最优。本发明可以根据实际网络传输需求,对相应的路径度量方法进行修改(以路径延迟、跳数、带宽等来度量路径),从而选择不同路径,使得节点资源利用率、数据传输性能和网络吞吐量尽可能达到最优。
附图说明
图1是本发明路由方法的流程示意图。
图2是本发明中动态路由计算的流程示意图。
图3是本发明空间容迟容断网络中两个节点间的接触关系示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
当网络中的一个节点要传输数据时,就可以应用本发明的路由方法。如图1所示,本发明为:上述节点首先要查询静态路由,如果存在静态路由,就直接将数据排队到本节点相应的出口队列,同时结束路由;如果没有静态路由,就执行动态路由方法。
即,本发明的具体步骤为(参见图2):
(1)静态路由查找:当有节点需要传输数据时,查找从该节点到目的节点是否存在静态路由;如果发现静态路由,就将数据***到该节点相应的出口传输队列中,完成数据路由;如果没有发现静态路由,就执行步骤(2)的动态路由计算;
(2)动态路由计算:根据发送数据的源节点和目的节点进行动态路由计算,流程为:
(2.1)计算最小延迟路径:结合整个网络的接触关系图进行计算,获得所有从源节点到目的节点的路径、以及从源节点到目的节点的延迟;以各数据从源节点传输到当前节点的路径中的延迟来度量从源节点到当前节点的路径;
(2.2)测试路径容量:对步骤(2.1)所获得的路径中每一条接触的容量进行测试,通过比较当前传输的数据包和接触的剩余容量大小,评估某条路径能否传输当前数据包,从而选择出接触剩余容量能够传输当前数据包的路径;
(2.3)选取下一跳节点:对步骤(2.2)中所选取的所有路径的延迟进行比较,选择最小延迟的路径。
通过上述步骤,即可以获得从源节点到目的节点的具有最小延迟的可靠传输路径,从而可以将数据排队到相应的出口队列中,并通过底层协议传输出去。如上所述,本发明中,最终选择的路径是以路径延迟作为度量目标,当然也可以进一步选择路径跳数和带宽等作为路径度量标准。
如果经过上述步骤(1)和步骤(2)仍没有获得从源节点到目的节点的路由,则在当前网络运行时期和数据包有效期内无法将数据传输到目的地,可等待新的接触加入;不然就丢弃当前数据包。
计算最小延迟路径(Compute Path To Destination),是采用修改后的Dijkstra算法。步骤(2.1)为计算一条在当前第一跳情况下的具有最小延迟的路径,之后排除该路径第一跳,用来在下次计算时排除重复计算。
在步骤(2.1)中应考虑三种延迟:
①排队时间,在节点中某个出口上等待接触有效的时间;
②传输延迟,将消息完全注入到一条接触所消耗的时间;
③传播延迟,消息在链路中传输所消耗的时间。
在计算最小延迟路径时,需要以源节点到当前节点的延迟来度量当前两个节点间的路径,进而对整个网络的接触图采用Dijkstra算法进行计算,获得从源节点到目的节点的所有路径以及路径中的延迟;即,以源节点到其他节点的延迟来度量当前的路径,把该度量值作为Dijkstra算法中的权值,同时根据节点之间的接触关系可以构建整个网络的接触图模型,基于接触图模型进行最小延迟路径计算。
上述接触是指空间网络中节点之间在某个时间段内的一条连接,可以用开始节点、结束节点、开始时间、结束时间、接触带宽来标识一条接触;上述接触的容量大小是指接触的持续时间与接触带宽的乘积;上述持续时间为结束时间与开始时间的差值;上述接触的剩余容量大小为当前接触的剩余时间与接触带宽的乘积、再去除当前时刻需要占用该接触的数据队列的大小。
在测试路径容量的过程中,要根据路径中接触的容量和网络中其他节点的数据流对整条路径中接触容量的影响,确定接触的剩余容量能否传输当前数据包。
基于该接触图模型所设计的最小延迟路径计算算法为:
输入:接触图G=(V,E),其中V为接触图中的节点集合,E为接触图中接触的集合。源节点s,目的节点d,当前时刻T0,时刻t从边e的开始节点传输一个消息到结束节点的时延开销ω(e,t)。
输出:传输路径J,路径J的延迟TEAD[J]。
变量:father[e]存储计算出的路径中边e的前一跳接触;current存储当前遍历到的边e的前一跳接触,final存储计算出的路径中的最终接触。
e(u,v)为起源于节点u结束于节点v的一条接触,每条接触有三个属性值:Tstart(e(u,v))为接触e(u,v)的开始时刻,Tend(e(u,v))为接触e(u,v)的结束时刻,Rate(e(u,v))为接触e(u,v)的速率。其中,ω(e,t)是在时刻t,节点u传输一个消息到节点v的时延开销。tarrival[u]为消息到达节点u的时间,J为使用Dijkstra算法计算出的一条路径;e(s,s)为构建的一条源于节点s同时结束于节点s的虚拟接触;
步骤1:初始化队列Q=V,消息到达节点s的时间tarrival[s]=T0,其他节点u≠s,tarrival[u]=∞;TEAD[J]=∞。
步骤2:若转至步骤4;否则,遍历Q中所有节点,提取到达时间最小的节点u出队列;将到达u的延迟最小的最后一条接触保存到current。
步骤3:对每一条源于u的边,若tarrival[v]>tarrival[u]+ω(e,tarrival[u]),则更新节点v的到达时间tarrival[v]=tarrival[u]+ω(e,tarrival[u]),同时保存当前边e的father[e],father[e]=current;之后判断若节点v是目的节点d,调用tryAllRoute();如果正常退出,说明该路径可以传输数据包,保存该路径最终的一条接触final=e(u,v),同时更新整条路径的延迟。
步骤4:若转至步骤5;否则,从计算出的路径的最终接触final开始前向遍历边e的father[e]数组,将其中的边***到路径列表J。
步骤5:算法结束,输出结果。
本发明通过比较从源节点到当前节点的延迟,从而在选择路径的每一跳时都选择最小延迟的接触,进而最终可以根据源节点的不同接触(即源节点与邻居节点的接触)选择若干条的最小延迟路径。
本实施例中,测试路径容量(Try All Route)为,即测试获得的路径中经过的所有接触的剩余容量,将剩余容量足够传输当前数据包的路径的第一跳节点(或者当前节点的邻居节点)保存到可传输数据包的节点列表C中。
测试路径容量是在执行修改后的Dijkstra算法时执行的,其中考虑的主要队列模型如下:
在步骤(2.1)中建立空间容迟容断网络的模型中,定义函数Q(e,t,s)为在时刻t排队在节点s上需要使用接触e的数据队列;定义Cresidual(e1)为接触e1的剩余容量;Tresidual(e1)为接触e1的剩余时间;m为当前传输的数据大小;
Q(e,t,s)=在时刻t排队在节点s使用接触e的数据队列
Q函数记录当前排队在节点s上需要使用接触e的所有数据队列的集合,这可以使在进行路由选择时避免数据拥塞。
如图3所示,假设当前节点u传输数据给节点v,会使用接触e1,e1的带宽为Rate(e1),设当数据到达节点u时,接触e1还没有结束(即tarrival[u]<Tend(e1)),那么
Tresidual(e1)=Tend(e1)-max(tarrival[u],Tstart(e1));
Cresidual(e1)=Tresidual(e1)*Rate(e1)-Q(e1,tarrival[u],u);
这里,Q(e1,tarrival[u],u)即为在节点上需要使用接触e1的数据队列的大小;通过比较m和Cresidual(e1)的大小,从而可以判断当前接触的容量是否能够传输数据。
在本发明中,当源节点进行路由时,会综合考虑当前网络中的数据流信息,对计算出的路径中的所有接触都按照上述方法进行了容量测试,因此就可以确保数据可以按照计算的路径正常传输出去。同时,即使可以利用网络中先验知识,但对于空间网络而言,各种未知的因素非常复杂繁多,为了应付网络中其他不可预知的因素(节点失效、电磁干扰等)导致的接触容量降低,对路径中的每一跳都进行路由计算,从而尽可能保证数据能够传输到目的节点。最终,将所有通过容量测试的路径的第一跳节点保存到源节点s的可传输节点列表C中,该列表保存所有可以按照预先计算的路径将数据包传输出去的邻居节点。
在该步骤中,本发明所执行的容量测试是与步骤(2.1)同时进行的,在计算路径过程中,当遍历到某条接触时,需要同时考虑当前网络中的其他可能应用到该接触的数据流的传输需求量(即路径容量占用),进而计算该接触的剩余容量,在此基础之上比较当前需要传输的数据包的大小与该接触的剩余容量大小,选择剩余容量足够的路径保存下来。
本实施例在步骤(2.3)中,选取下一跳节点(Choose Next Hop)是指从节点列表C中选取具有最小路径延迟的邻居节点作为下一跳。
对源节点s的邻居节点列表C中的所有路径J的延迟TEAD[J]进行比较,选取具有最小延迟的邻居节点作为下一跳,将数据排队到源节点的相应出口队列上。在步骤(2.3)中所执行的主要操作即是对上面步骤(2.1)和步骤(2.2)所选择的路径再进行最后的选择,主要是根据当前数据传输的需求目标,从所有路径中选择最小延迟的路径,最终通过底层协议传输出去。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。