一种数据传输方法及装置转让专利

申请号 : CN201710232774.0

文献号 : CN108696427B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 于文静周天然夏寅贲

申请人 : 华为技术有限公司

摘要 :

本申请公开了一种数据传输方法及装置,属于通信技术领域。该方法包括:当接收到数据流的第一数据包且第一数据包不是数据流的第一个数据包时,确定第一接收时间与第二接收时间之间的时间间隔,第一接收时间为接收到第一数据包的时间,第二接收时间为接收到第二数据包的时间;获取数据流的已发送数据量;基于时间间隔与已发送数据量,从多条可用的传输路径中确定第一数据包的传输路径,并通过确定的传输路径传输第一数据包。本申请通过时间间隔和已发送数据量来确定第一数据包的传输路径,避免了数据流中大量数据包密集到达时,由于相邻数据包到达发送端的时间间隔过小而没有机会重新选择传输路径的问题,有效提高了数据传输速率和传输路径利用率。

权利要求 :

1.一种数据传输方法,其特征在于,所述方法包括:

在发送端接收到数据流的第一数据包且所述第一数据包不是所述数据流的第一个数据包的情况下,确定第一接收时间与第二接收时间之间的时间间隔,所述第一接收时间为所述发送端接收到所述第一数据包的时间,所述第二接收时间为所述发送端接收到第二数据包的时间,所述第一数据包与所述第二数据包为所述数据流中相邻的数据包,且所述第二数据包在所述第一数据包之前;

所述发送端获取所述数据流的已发送数据量,所述已发送数据量为所述第一接收时间之前发送的数据量;

在所述时间间隔小于预设时间阈值且所述数据流的已发送数据量不小于预设流量阈值的情况下,所述发送端从多条可用的传输路径中选择可用带宽最大的传输路径,所述多条可用的传输路径为所述发送端可用于将所述数据流传输至所述接收端的传输路径;

所述发送端将选择的传输路径确定为所述第一数据包的传输路径,并通过确定的传输路径将所述第一数据包传输至接收端。

2.如权利要求1所述的方法,其特征在于,所述方法还包括:

在所述时间间隔小于预设时间阈值且所述数据流的已发送数据量小于预设流量阈值的情况下,所述发送端从所述多条可用的传输路径中选择传输时延最小的传输路径;

所述发送端将选择的传输路径确定为所述第一数据包的传输路径。

3.如权利要求1或2所述的方法,其特征在于,所述发送端将选择的传输路径确定为所述第一数据包的传输路径之后,还包括:所述发送端将所述数据流的已发送数据量增加所述第一数据包的数据量,以对所述数据流的已发送数据量进行更新。

4.如权利要求1所述的方法,其特征在于,所述发送端基于所述时间间隔与所述已发送数据量,从多条可用的传输路径中确定所述第一数据包的传输路径,包括:在所述时间间隔不小于预设时间阈值的情况下,所述发送端从所述多条可用的传输路径中选择传输时延最小的传输路径;

所述发送端将选择的传输路径确定为所述第一数据包的传输路径。

5.如权利要求4所述的方法,其特征在于,所述发送端将选择的传输路径确定为所述第一数据包的传输路径之后,还包括:所述发送端将所述数据流的已发送数据量更新为所述第一数据包的数据量。

6.如权利要求1、2、4或5所述的方法,其特征在于,所述在发送端接收到数据流的第一数据包之后,还包括:在所述第一数据包为所述数据流的第一个数据包的情况下,所述发送端从所述多条可用的传输路径中选择传输时延最小的传输路径;

所述发送端将选择的传输路径确定为所述第一数据包的传输路径,并将所述第一数据包传输至所述接收端。

7.如权利要求1、2、4或5所述的方法,其特征在于,所述数据流的数据包的接收时间和所述数据流的已发送数据量存储于所述数据流的流表项中,所述流表项是所述发送端在接收到所述数据流的第一个数据包建立得到。

8.一种数据传输装置,其特征在于,所述装置部署于发送端上,所述装置包括:第一确定模块,用于在接收到数据流的第一数据包且所述第一数据包不是所述数据流的第一个数据包的情况下,确定第一接收时间与第二接收时间之间的时间间隔,所述第一接收时间为接收到所述第一数据包的时间,所述第二接收时间为接收到第二数据包的时间,所述第一数据包与所述第二数据包为所述数据流中相邻的数据包,且所述第二数据包在所述第一数据包之前;

获取模块,用于获取所述数据流的已发送数据量,所述已发送数据量为所述第一接收时间之前发送的数据量;

第二确定模块,用于基于所述时间间隔与所述已发送数据量,从多条可用的传输路径中确定所述第一数据包的传输路径,并通过确定的传输路径将所述第一数据包传输至接收端,所述多条可用的传输路径为所述发送端可用于将所述数据流传输至所述接收端的传输路径;

其中,所述第二确定模块包括:

第一选择单元,用于在所述时间间隔小于预设时间阈值且所述已发送数据量不小于预设流量阈值的情况下,从所述多条可用的传输路径中选择可用带宽最大的传输路径;

第一确定单元,用于将选择的传输路径确定为所述第一数据包的传输路径。

9.如权利要求8所述的装置,其特征在于,所述第二确定模块还包括:第二选择单元,用于在所述时间间隔小于预设时间阈值且所述已发送数据量小于预设流量阈值的情况下,从所述多条可用的传输路径中选择传输时延最小的传输路径;

第二确定单元,用于将选择的传输路径确定为所述第一数据包的传输路径。

10.如权利要求8或9所述的装置,其特征在于,所述第二确定模块还包括:第一更新单元,用于将所述数据流的已发送数据量增加所述第一数据包的数据量,以对所述数据流的已发送数据量进行更新。

11.如权利要求8所述的装置,其特征在于,所述第二确定模块还包括:第三选择单元,用于在所述时间间隔不小于预设时间阈值的情况下,从所述多条可用的传输路径中选择传输时延最小的传输路径;

第三确定单元,用于将选择的传输路径确定为所述第一数据包的传输路径。

12.如权利要求11所述的装置,其特征在于,所述第二确定模块还包括:第二更新单元,用于将所述数据流的已发送数据量更新为所述第一数据包的数据量。

13.如权利要求8、9、11或12所述的装置,其特征在于,所述装置还包括:选择模块,用于在所述第一数据包为所述数据流的第一个数据包情况下,从所述多条可用的传输路径中选择传输时延最小的传输路径;

第三确定模块,用于将选择的传输路径确定为所述第一数据包的传输路径,并将所述第一数据包传输至所述接收端。

14.如权利要求8、9、11或12所述的装置,其特征在于,所述数据流的数据包的接收时间和所述数据流的已发送数据量存储于所述数据流的流表项中,所述流表项是所述发送端在接收到所述数据流的第一个数据包建立得到。

说明书 :

一种数据传输方法及装置

技术领域

[0001] 本申请涉及通信技术领域,特别涉及一种数据传输方法及装置。

背景技术

[0002] 在广域网中,当进行数据传输时,在数据的发送端和接收端之间,往往存在多条可用的传输路径。如果从该多条可用的传输路径中选择一条传输路径进行数据传输,那么,当选择的传输路径的传输性能变差时,则会导致使用该条传输路径传输数据的传输速率降低,传输时间延长,甚至会造成数据丢失。如果从该多条可用的传输路径中选择至少两条传输路径进行数据传输,那么,当该至少两条传输路径中的某一条传输路径的传输性能变差时,则可以通过其他传输性能较好的传输路径来传输剩余的数据,有效地提高了数据传输速率。基于上述原因,从多条可用的传输路径中选择至少两条传输路径进行数据传输的多路径传输方法被广泛的应用于数据传输中。
[0003] 相关技术中,当采用多路径传输方法对待传输的数据流进行传输时,发送端可以基于该数据流的接收端确定多条可用的传输路径,其中,发送端和接收端均可以为路由器。之后,发送端可以周期性的主动测量该多条可用的传输路径的拥塞值,并对该多条可用的传输路径的拥塞值不断更新。当发送端接收到该数据流的第一个数据包时,从该多条可用的传输路径中选择拥塞值最低的传输路径,并通过选择的传输路径传输第一个数据包,之后,当发送端每接收到该数据流中的一个数据包时,确定该数据包到达发送端的时间与该数据流中的前一个数据包到达发送端的时间之间的时间间隔,当该时间间隔大于预设时间阈值时,将该多条可用的传输路径中拥塞值最低的传输路径确定为该数据包的传输路径,并对该数据包进行传输;否则,通过前一个数据包使用的传输路径对该数据包进行传输。
[0004] 然而,当该数据流包含有大量的数据包,且大量的数据包中每相邻的两个数据包到达发送端的时间间隔均小于预设时间阈值时,那么后到达发送端的数据包就没有机会重新选择传输路径进行传输,而只能使用与前一个数据包相同的传输路径进行传输,也即是,该数据流中的大量的数据包将会只使用一条传输路径进行传输,这会使得该条传输路径的数据负载急剧增加,从而导致该数据流的传输完成时间增长,与此同时,其他传输路径则会由于得不到充分利用而浪费,降低了传输路径的利用率。

发明内容

[0005] 为了解决相关技术的数据流传输完成时间长且传输路径利用率低的问题,本申请提供了一种数据传输方法。所述技术方案如下:
[0006] 第一方面,提供了一种数据传输方法,所述方法包括:
[0007] 在发送端接收到数据流的第一数据包且所述第一数据包不是所述数据流的第一个数据包的情况下,确定第一接收时间与第二接收时间之间的时间间隔,所述第一接收时间为所述发送端接收到所述第一数据包的时间,所述第二接收时间为所述发送端接收到第二数据包的时间,所述第一数据包与所述第二数据包为所述数据流中相邻的数据包,且所述第二数据包在所述第一数据包之前;
[0008] 所述发送端获取所述数据流的已发送数据量,所述已发送数据量为所述第一接收时间之前发送的数据量;
[0009] 所述发送端基于所述时间间隔与所述已发送数据量,从多条可用的传输路径中确定所述第一数据包的传输路径,并通过确定的传输路径将所述第一数据包传输至接收端,所述多条可用的传输路径为所述发送端可用于将所述数据流传输至所述接收端的传输路径。
[0010] 在本发明实施例中,当发送端接收到数据流的第一数据包且该第一数据包不是该数据流的第一个数据包时,可以确定该第一数据包与上一个数据包,即第二数据包之间的时间间隔,并且可以获取已发送数据量,之后,根据该时间间隔和已发送数据量,可以从多条可用的传输路径中选择一条传输路径,对第一数据包进行传输。也即是,第一数据包的传输路径的选择不仅取决于时间间隔,还取决于已发送数据量,这样,根据时间间隔和已发送数据量的不同,可以从多条可用的传输路径中为每一个待传输的数据包选择相应的传输路径,避免了数据流中大量数据包密集到达时,由于相邻数据包到达发送端的时间间隔过小而没有机会重新选择传输路径的问题,有效地提高了数据传输速率和传输路径的利用率。
[0011] 在一种可能的设计中,所述发送端所述基于所述时间间隔与所述已发送数据量,从多条可用的传输路径中确定所述第一数据包的传输路径,包括:
[0012] 在所述时间间隔小于预设时间阈值且所述已发送数据量不小于预设流量阈值的情况下,所述发送端从所述多条可用的传输路径中选择可用带宽最大的传输路径;
[0013] 所述发送端将选择的传输路径确定为所述第一数据包的传输路径。
[0014] 需要说明的是,当第一数据包与第二数据包之间的时间间隔小于预设时间阈值时,可以继续判断已发送数据量是否小于预设流量阈值,当已发送数据量不小于预设流量阈值时,从多条可用的传输路径中选择可用带宽最大的传输路径,并将选择的传输路径确定为第一数据包的传输路径。这样,一方面,可以避免数据流中大量数据包密集到达时,由于相邻数据包到达发送端的时间间隔过小而没有机会重新选择传输路径,仅采用一条传输路径进行传输的问题,也即是,数据流中每个待传输的数据包都有机会选择合适的传输路径进行传输,提高了数据传输速率,缩短了数据流传输完成时间,提高了传输路径的利用率。另一方面,当已发送数据量不小于预设流量阈值时,可以确定该第一数据包所属的数据流为数据量较大的大数据流,而在数据传输过程中,传输路径的可用带宽是影响大数据流的传输速率的主要因素,也即是,大数据流对于传输路径的带宽要求更高。因此,当时间间隔小于预设时间阈值且已发送数据量不小于预设流量阈值时,选择可用带宽最大的传输路径来传输第一数据包,可以进一步地提高数据传输的速率,缩短数据流的传输完成时间。
[0015] 在一种可能的设计中,所述发送端基于所述时间间隔与所述已发送数据量,从多条可用的传输路径中确定所述第一数据包的传输路径,包括:
[0016] 在所述时间间隔小于预设时间阈值且所述已发送数据量小于预设流量阈值的情况下,所述发送端从所述多条可用的传输路径中选择传输时延最小的传输路径;
[0017] 所述发送端将选择的传输路径确定为所述第一数据包的传输路径。
[0018] 在本发明实施例中,当时间间隔小于预设时间阈值且已发送数据量小于预设流量阈值时,发送端为了能够及时将该第一数据包进行发送,可以暂时确定该第一数据包所属的数据流为数据量较小的小数据流,而在传输过程中,传输路径的传输时延是制约小数据流传输速率的主要因素,也即是,小数据流对传输路径的传输时延的要求更为严苛,此时,从多条可用的传输路径中选择传输时延最小的传输路径来传输第一数据包,可以进一步地提高第一数据包的传输速率,从而缩短该数据流的传输完成时间。
[0019] 在一种可能的设计中,所述发送端将选择的传输路径确定为所述第一数据包的传输路径之后,还包括:
[0020] 所述发送端将所述数据流的已发送数据量增加所述第一数据包的数据量,以对所述数据流的已发送数据量进行更新。
[0021] 需要说明的是,当确定了时间间隔小于预设时间阈值时第一数据包的传输路径之后,便于后续数据包到达时,在后续数据包与第一数据包的时间间隔仍小于预设时间阈值的情况下,为了更准确的通过已发送数据量来继续为后续数据包选择传输路径,发送端可以将已发送数据量增加第一数据包的数据量来对数据流的已发送数据量进行更新。
[0022] 在一种可能的设计中,所述发送端基于所述时间间隔与所述已发送数据量,从多条可用的传输路径中确定所述第一数据包的传输路径,包括:
[0023] 在所述时间间隔不小于预设时间阈值的情况下,所述发送端从所述多条可用的传输路径中选择传输时延最小的传输路径;
[0024] 所述发送端将选择的传输路径确定为所述第一数据包的传输路径。
[0025] 需要说明的是,当第一数据包与第二数据包之间的时间间隔不小于预设时间阈值时,也即是,数据流中的数据包并没有密集到达,此时,可以从多条可用的传输路径中选择传输时延最小的传输路径来传输第一数据包,从而提高第一数据包的传输速率。
[0026] 在一种可能的设计中,所述发送端将选择的传输路径确定为所述第一数据包的传输路径之后,还包括:
[0027] 所述发送端将所述数据流的已发送数据量更新为所述第一数据包的数据量。
[0028] 其中,在时间间隔不小于预设时间阈值的情况下,发送端为该第一数据包选择了时延最小的传输路径,实际上是发送端将该第一数据包按照处理该数据流的第一个数据包的方式进行了处理。其中,由于该数据流的第一个数据包之前并无其他数据包,因此在选择传输路径之后,发送端将已发送数据量设置为第一个数据包的数据量。同理,由于发送端将时间间隔小于预设时间阈值的情况下的第一数据包按照该数据流的第一个数据包进行处理,因此,为该第一数据包选择传输路径之后,发送端可以将之前累计的已发送数据量全部清零,并将该已发送数据量直接更新为该第一数据包的数据量。
[0029] 在一种可能的设计中,所述在所述发送端接收到数据流的第一数据包之后,还包括:
[0030] 在所述第一数据包为所述数据流的第一个数据包的情况下,所述发送端从所述多条可用的传输路径中选择传输时延最小的传输路径;
[0031] 所述发送端将选择的传输路径确定为所述第一数据包的传输路径,并将所述第一数据包传输至所述接收端。
[0032] 需要说明的是,当第一数据包是该数据流的第一个数据包时,将不存在第二数据包,也就无法确定时间间隔,并且已发送数据量也不存在,在这种情况下,发送端可以将该第一数据包所属的数据流暂时确定为小数据流,由于在传输过程中,传输路径的传输时延是制约小数据流传输速率的主要因素,也即是,小数据流对传输路径的传输时延的要求更为严苛,因此,从多条可用的传输路径中选择传输时延最小的传输路径来传输第一个数据包,保证了第一个数据包能以较快的传输速率进行传输,进而保证了该数据流的传输速率,缩短了该数据流的传输完成时间。
[0033] 在一种可能的设计中,所述数据流的数据包的接收时间和所述数据流的已发送数据量存储于所述数据流的流表项中,所述流表项是所述发送端在接收到所述数据流的第一个数据包建立得到。
[0034] 在本发明实施例中,为了便于管理数据流的数据包的接收时间以及数据流的已发送数据量,可以在接收到该数据流的第一个数据包时,为该数据流建立一个流表项,并将数据包的接收时间和数据流的已发送数据量存储于该流表项中,以便后续快捷且方便的从该流表项中获取接收时间来确定时间间隔,进而根据该时间间隔和流表项中的已发送数据量来确定第一数据包的传输路径。
[0035] 第二方面,提供了一种数据传输装置,所述数据传输装置具有实现上述第一方面中数据传输方法的功能,所述数据传输装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的数据传输方法。
[0036] 第三方面,提供了一种数据传输装置,所述数据传输装置的结构中包括处理器和存储器,所述存储器用于存储支持数据传输装置执行上述第一方面所提供的数据传输方法的程序,以及存储用于实现上述第一方面所提供的数据传输方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
[0037] 第四方面,本发明实施例提供了一种计算机存储介质,用于储存上述数据传输装置所用的计算机软件指令,或存储用于执行上述第二方面的数据传输装置所涉及的程序。
[0038] 第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的数据传输方法。
[0039] 上述本发明实施例第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
[0040] 本申请提供的技术方案带来的有益效果是:当接收到数据流的第一数据包时,确定第一数据包的接收时间和第二数据包的接收时间之间的时间间隔,其中,第二数据包是该数据流中与第一数据包相邻的数据包,且第二数据包在第一数据包之前。之后,获取已发送数据量,根据确定的时间间隔和获取的已发送数据量,从多条可用的传输路径中为第一数据包选择传输路径,并通过选择的传输路径传输第一数据包。由于第一数据包的传输路径的选择不仅仅取决于其与上一个数据包之间的时间间隔,还取决于接收到第一数据包的接收时间之前发送的数据量,这样,根据时间间隔和已发送数据量的不同,可以从多条可用的传输路径中为每一个待传输的数据包选择相应的传输路径,避免了数据流中大量数据包密集到达时,由于相邻数据包到达发送端的时间间隔过小而没有机会重新选择传输路径的问题,有效地提高了数据传输速率和传输路径的利用率。

附图说明

[0041] 图1是本发明实施例提供的一种数据传输方法的实施环境示意图;
[0042] 图2是本发明实施例提供的一种数据传输方法的流程图;
[0043] 图3是本发明实施例提供的一种数据传输装置的框图;
[0044] 图4是本发明实施例提供的一种网络设备的结构示意图。

具体实施方式

[0045] 为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
[0046] 图1是本发明实施例提供的一种数据传输方法的实施环境示意图。随着网络技术的发展,叠加(Overlay)网络得到了广泛的应用。其中,Overlay网络是建立在已有的广域网上的虚拟网络,也即是,Overlay网络的构建需要通过现有的物理网络来实现。Overlay网络主要由边缘设备、控制平面和转发平面三个部分组成,其中,Overlay网络的边缘设备可以是物理网络设备或者是虚拟网络设备,甚至可以通过运行在虚拟机上的软件来实现。本发明实施例提供的数据传输方法即可以应用到Overlay网络中。如图1所示,Overlay网络由多个虚拟路由器组成。每个用户可以通过一个虚拟路由器接入Overlay网络。如图1所示,当用户A向用户B传输数据时,用户A对应的虚拟路由器A为数据进入Overlay网络的入口路由器,也即发送端;而用户B对应的虚拟路由器B为数据输出Overlay网络的出口路由器,也即接收端。在虚拟路由器A与虚拟路由器B之间,通常存在多条可用的传输路径,该多条可用的传输路径形成用户A和用户B之间的传输路径池。当用户A发送的数据流中的数据包1和数据包2到达虚拟路由器A时,虚拟路由器A即可以通过本申请提供的数据传输方法,从虚拟路由器A和虚拟路由器B之间多条可用的传输路径中,分别为该数据包1和数据包2选择合适的传输路径,从而将该数据包1和数据包2传输至虚拟路由器B。
[0047] 当然,本申请提供的数据传输方法不仅可以用于Overlay网络中,还可以用于未部署Overlay网络的广域网。在未部署Overlay网络的广域网中,可以包括多个物理路由器。当用户A向用户B传输数据时,用户A对应的物理路由器A即为发送端,该发送端也可以通过本申请提供的数据传输方法,为用户A发送的数据流中的每个数据包选择合适的传输路径,并通过选择的传输路径将数据传输至接收端,即用户B对应的物理路由器B。
[0048] 需要说明的是,本申请提供的数据传输方法用于发送端和接收端的交互中,其中,该发送端和接收端均可以为网络设备,该网络设备可以为Overlay网络中的虚拟网络设备,该虚拟网络设备可以为嵌入在物理服务器中、基于软件虚拟化技术实现的虚拟设备,如虚拟路由器、虚拟交换机等。当然,该网络设备也可以为网络中的物理网络设备,如物理路由器、物理交换机等。
[0049] 本发明实施例提供了一种数据传输方法,该数据传输方法可以应用于发送端,参见图2,该方法包括:
[0050] 步骤201:在发送端接收到数据流的第一数据包的情况下,判断第一数据包是否为该数据流的第一个数据包,在第一数据包为该数据流的第一个数据包的情况下,执行步骤202,在第一数据包不为该数据流的第一个数据包的情况下,执行步骤203。
[0051] 由于在本发明实施例中,发送端可以通过接收到数据流中相邻两个数据包之间的时间间隔以及该数据流的已发送数据量来为该数据流的数据包选择传输路径,而对于该数据流的第一个数据包,由于不存在与上一个数据包之间的时间间隔以及该数据流的已发送数据量,因此,不能通过时间间隔和已发送数据量来选择传输路径,所以,在本发明实施例中,发送端在接收到第一数据包时,首先要判断该数据包是否为该数据流的第一个数据包,如果第一数据包为该数据流的第一个数据包,则可以通过步骤202来确定第一个数据包的传输路径,并通过确定的传输路径进行数据传输。如果第一数据包不为该数据流的第一个数据包,则可以通过步骤203-205来确定第一数据包的传输路径,并通过确定的传输路径来传输第一数据包。
[0052] 通常,一个数据流可以包括多个数据包,发送端在接收到数据流的数据包时,可以根据数据包中携带的信息确定该数据包的源网络协议(Internet Protocol,IP)地址和目的IP地址。当发送端接收到的第一数据包的源IP地址或者目的IP地址与上一个数据包不同时,则可以确定接收到的第一数据包与上一个数据包不属于同一个数据流,也即是,当前接收到的数据包是数据流的第一个数据包。当发送端接收到的第一数据包的源IP地址和目的IP地址与上一个数据包的源IP地址和目的IP地址均相同时,则可以确定接收到的第一数据包不是该数据流的第一个数据包。
[0053] 步骤202:发送端从多条可用的传输路径中选择传输时延最小的传输路径,并通过选择的传输路径传输该第一个数据包。
[0054] 当发送端确定接收到的第一数据包是数据流的第一个数据包时,可以根据该第一数据包的目标IP地址,确定接收端。之后,发送端可以获取与接收端之间的多条可用的传输路径,并且主动计算该多条可用的传输路径的传输时延和可用带宽。最后,发送端可以从该多条可用的传输路径中选择传输时延最小的传输路径,并将选择的传输路径确定为第一数据包的传输路径,从而对该第一数据包进行传输。其中,该多条可用的传输路径为发送端和接收端之间所有可以进行数据传输的传输路径。
[0055] 另外,发送端还可以在后续该数据流的传输过程中,每隔预设时间间隔,周期性的主动计算该多条可用的传输路径的传输时延和可用带宽,从而对存储的多条可用的传输路径的传输时延和可用带宽进行更新,进而保证该数据流的每个数据包均可以通过当下传输时延最小或者是可用带宽最大的传输路径进行传输。
[0056] 需要说明的是,当发送端确定第一数据包是该数据流的第一个数据包之后,由于在接收到该数据流的后续数据包时,发送端需要获取已发送数据量以及计算每相邻两个数据包之间的接收时间间隔,因此,发送端需要记录该数据流的每个数据包的接收时间和每个数据包的接收时间之前的已发送数据量。进一步地,为了便于后续管理和存储该数据流的数据包的接收时间和数据流的已发送数据量,当发送端确定第一数据包是该数据流的第一个数据包之后,可以为该数据流建立流表项。之后,将该第一个数据包的数据量确定为已发送数据量,并将该确定的已发送数据量和接收到第一个数据包的接收时间存储于该流表项中。
[0057] 当然,为了操作简便,发送端也可以不必建立该数据流的流表项,而是直接将第一个数据包的数据量确定为已发送数据量,并将该已发送数据量和第一个数据包的接收时间进行存储。也即是,通过流表项存储接收时间和已发送数据量只是一种可选的实现方式,实际应用中还可以通过其他的实现方式来存储接收时间和已发送数据量。本发明实施例以接收时间和已发送数据量存储于流表项中为例进行说明。
[0058] 当发送端接收到的第一数据包为该数据流的第一个数据包时,可以通过上述方法为第一个数据包选择传输路径,并对第一个数据包的接收时间和已发送数据量进行存储。当第一数据包不为该数据流的第一个数据包时,发送端则可以通过步骤203-205来为第一数据包选择传输路径,并通过选择的传输路径对第一数据包进行传输。
[0059] 步骤203:发送端确定第一接收时间与第二接收时间之间的时间间隔,第一接收时间为该发送端接收到第一数据包的时间,第二接收时间为该发送端接收到第二数据包的时间,第一数据包与第二数据包为该数据流中相邻的数据包,且第二数据包在第一数据包之前。
[0060] 当发送端接收到数据流的第一数据包且该第一数据包不是该数据流的第一个数据包时,发送端可以记录接收到该第一数据包的第一接收时间。由于该第一数据包不是该数据流的第一个数据包,也即是,在该第一数据包之前存在第二数据包,因此,发送端可以从流表项中获取与该第一数据包相邻的第二数据包的接收时间,即第二接收时间,并计算第一接收时间和第二接收时间之间的差,从而得到时间间隔。
[0061] 当确定第一数据包和第二数据包之间的时间间隔之后,发送端可以将该数据流的流表项中的第二接收时间直接替换为第一接收时间,以便在接收到下一个数据包时能快速的通过流表项中存储的唯一一个接收时间来确定时间间隔。当然,发送端也可以直接将该第一接收时间存储于流表项中,在这种情况下,该数据流的流表项中将存储有多个接收时间。相应地,当发送端再次接收到该数据流的数据包时,可以从该流表项存储的多个接收时间中选择距离当前时间最近的一个接收时间,并将选择的接收时间确定为第二接收时间。
[0062] 步骤204:发送端获取该数据流的已发送数据量,该已发送数据量为第一接收时间之前发送的数据量。
[0063] 当确定第一数据包和第二数据包之间的时间间隔之后,发送端可以从数据流的流表项中获取该数据流的已发送数据量。其中,该数据流的流表项中可以只存储有一个已发送数据量,该已发送数据量是距离当前时间最近一次更新的已发送数据量,当然,该数据流的流表项中也可以存储有第一接收时间之前的多个已发送数据量。当该数据流的流表项中存储有多个已发送数据量时,发送端可以从多个已发送数据量中获取存储时间距离当前时间最近的一个已发送数据量。
[0064] 步骤205:发送端基于时间间隔与已发送数据量,从多条可用的传输路径中确定第一数据包的传输路径,并通过确定的传输路径将该第一数据包传输至接收端。
[0065] 当确定时间间隔并获取到已发送数据量之后,发送端根据该时间间隔和已发送数据量,可以通过以下(1)-(3)的步骤来从多条可用的传输路径中确定第一数据包的传输路径。
[0066] (1)发送端可以判断该时间间隔是否小于预设时间阈值。在该时间间隔小于预设时间阈值的情况下,执行步骤(2)。在该时间间隔不小于预设时间阈值的情况下,执行步骤(3)。
[0067] (2)发送端判断已发送数据量是否小于预设流量阈值。在已发送数据量不小于预设流量阈值的情况下,发送端从多条可用的传输路径中选择可用带宽最大的传输路径,并将选择的传输路径确定为第一数据包的传输路径。在已发送数据量小于预设流量阈值的情况下,发送端从多条可用的传输路径中选择传输时延最小的传输路径;将选择的传输路径确定为第一数据包的传输路径。
[0068] 其中,在发送端确定第一数据包与第二数据包之间的时间间隔小于预设时间阈值,且已发送的数据量不小于预设流量阈值的情况下,发送端可以将该第一数据包所属的数据流确定为数据量较大的大数据流。由于在传输过程中,传输路径的可用带宽对大数据流的传输速率的影响要远远大于传输时延对大数据流的传输速率的影响,也即是,大数据流对传输路径的可用带宽要求更为严格。因此,当确定第一数据包所属的数据流为大数据流时,发送端可以从多条可用的传输路径中选择可用带宽最大的传输路径作为第一数据包的传输路径,并通过该选择的传输路径传输第一数据包,以此来提高第一数据包的传输速率,进而提高该数据流的传输速率,缩短该数据流的传输完成时间。
[0069] 在发送端确定第一数据包与第二数据包之间的时间间隔小于预设时间阈值,且已发送的数据量小于预设流量阈值的情况下,由于发送端此时并不能获知该数据流的总数据量是否大于预设流量阈值,因此也就不能完全确定该数据流是否为大数据流还是小数据流,但是,为了能够及时将该第一数据包进行发送,发送端可以根据该已发送数据量,暂时将该第一数据包所属的数据流确定为数据量较小的小数据流。由于在数据传输过程中,传输路径的传输时延对小数据流的传输速率的影响要远远大于可用带宽对小数据流的传输速率的影响,也即是,小数据流对传输路径的传输时延要求更为严格。在这种情况下,发送端可以从多条可用的传输路径中选择传输时延最小的传输路径作为第一数据包的传输路径,并通过该选择的传输路径来传输第一数据包,以此来提高第一数据包的传输速率,进而缩短该数据流的传输完成时间。
[0070] 进一步地,在确定第一数据包的传输路径之后,由于当前的已发送数据量并没有达到预设流量阈值,因此,如果后续数据包的时间间隔仍小于预设时间阈值时,发送端需要根据累计的已发送数据量为后续数据包选择可用带宽最大的传输路径。也即是,为了便于后续数据包到达时,可以更准确的通过已发送数据量来继续为数据包选择传输路径,发送端需要将数据流的已发送数据量增加第一数据包的数据量,以对数据流的已发送数据量进行更新。相应地,如果发送端在接收到第二数据包时,第二数据包与其上一个数据包之间的时间间隔小于预设时间阈值,那么可知,在确定第二数据包的传输路径之后,该流表项中的已发送数据量就是通过上述方法进行更新的,也即是,发送端在接收到第一数据包时从流表项中获取到的已发送数据量是第一接收时间之前多个已经发送的数据包的累计数据量。
[0071] 当然,如果发送端接收到的第一数据包是该数据流的第二个数据包,那么,发送端通过步骤204获取的已发送数据量即为第二数据包的数据量,此时,第二数据包是该数据流的第一个数据包。
[0072] (3)发送端从多条可用的传输路径中选择传输时延最小的传输路径;将选择的传输路径确定为第一数据包的传输路径。
[0073] 在发送端确定第一数据包与第二数据包之间的时间间隔大于预设时间阈值的情况下,由于不会再出现相邻数据包由于时间间隔太小而没有机会重新选择传输路径的问题,因此,发送端可以不必再判断已发送数据量是否大于预设流量阈值,而是直接从多条可用的传输路径中选择传输时延最小的传输路径作为第一数据包的传输路径。
[0074] 进一步地,在确定时间间隔大于预设时间阈值时第一数据包的传输路径之后,发送端还可以将该数据流的已发送数据量更新为第一数据包的数据量。
[0075] 在这种情况下,由于该第一数据包和第二数据包之间的时间间隔大于预设时间阈值,发送端为该第一数据包选择了传输时延最小的传输路径,也即是,发送端按照为该数据流的第一个数据包选择传输路径的方式为该第一数据包选择了传输路径,因此,在对已发送数据量进行更新时,也将该第一数据包看做第一个数据包,即将第一接收时间之前累计的已发送数据量清零,并更新为该第一数据包的数据量。相应地,如果发送端在接收到第二数据包时,第二数据包与其上一个数据包之间的时间间隔大于预设时间阈值,那么可知,在确定第二数据包的传输途径之后,该流表项中的已发送数据量就是通过上述方法进行更新的,也即是,发送端在接收到第一数据包时从流表项中获取的已发送数据量是第二数据包的数据量。
[0076] 例如,假设用户通过终端发送一个数据流,该数据流包含有20个数据包,每个数据包的数据量为100B,第19个数据包和第20个数据包之间的时间间隔为100ms,其余每相邻两个数据包之间的时间间隔均为40ms,预设时间阈值为50ms,预设流量阈值为1000B。
[0077] 当发送端接收到该数据流的第1个数据包时,从多条可用的传输路径中选择传输时延最小的传输路径作为第1个数据包的传输路径,与此同时,为该数据流建立流表项,将第1个数据包的数据量100B作为已发送数据量,与接收到第1个数据包的接收时间一起存储于该流表项。
[0078] 当发送端接收到第2个数据包时,记录第2个数据包的接收时间,然后,从流表项中读取第1个数据包的接收时间,计算第1个数据包的接收时间和第2个数据包的接收时间之间的时间间隔为40ms,从流表项中获取的已发送数据量为100B,由于该时间间隔40ms小于预设时间阈值50ms,且已发送数据量100B小于预设流量阈值1000B,因此,发送端在无法获知该数据流的总数据量的情况下,可以暂时根据该已发送数据量100B,确定该数据流为小数据流。由于小数据流对传输时延更敏感,因此,发送端从多条可用的传输路径中选择时延最小的传输路径,将选择的传输路径作为第2个数据包的传输路径,并通过第2个数据包的传输路径传输第2个数据包,与此同时,由于已发送数据量还没有达到预设流量阈值,为了后续数据包到达时,发送端能够根据已发送数据量确定该数据流为大数据流还是小数据流,从而为后续数据包选择传输路径,发送端将数据流的流表项中存储的第1个数据包的接收时间更新为第2个数据包的接收时间,将已发送数据量100B更新为200B,即将已发送数据量增加第2个数据包的数据量。
[0079] 当发送端接收到第3个数据包直到第10个数据包,都可以采用与上述同样的方法为其选择传输路径,从而进行数据传输。
[0080] 当发送端接收到第11个数据包时,根据第11个数据包的接收时间和第10个数据包的接收时间可以确定时间间隔依然为40ms,而从流表项中读取的已发送数据量为第1-10个数据包的数据量之和,即已发送数据量为1000B,已达到预设流量阈值1000B,此时,发送端可以根据该已发送数据量完全确定该数据流为大数据流,因此,可以从多条可用的传输路径中选择可用带宽最大的传输路径,将选择的传输路径作为第11个数据包的传输路径,并对地11个数据包进行传输,与此同时,由于已经可以确定该数据流为大数据流,因此,如果后续数据包的时间间隔仍小于预设时间阈值时,发送端需要根据累计的已发送数据量为后续数据包选择可用带宽最大的传输路径。在这种情况下,发送端需要将流表项中的第10个数据包的接收时间更新为第11个数据包的接收时间,将已发送数据量增加第11个数据包的数据量,即将已发送数据量更新为1100B。
[0081] 当发送端接收到第12-19个数据包时,由于已发送数据量均大于预设流量阈值,因此,均可以采用为第11个数据包选择传输路径的方法来选择传输路径。
[0082] 当发送端接收到第20个数据包时,根据第20个数据包的接收时间和从流表项中获取到的第19个数据包的接收时间,可以确定时间间隔为100ms,且从流表项中获取到的已发送数据量为1900B,此时,由于确定的时间间隔100ms大于预设时间间隔50ms,因此,发送端将第20个数据包按照该数据流的第1个数据包进行处理,不再判断该已发送数据量是否大于预设流量阈值,而是直接从多条可用的传输路径中选择时延最小的传输路径,并将选择的传输路径确定为第20个数据包的传输路径,对第20个数据包进行传输。另外,由于发送端并不能判断第20个数据包就是该数据流的最后一个数据包,因此,还需要将流表项中的接收时间更新为第20个数据包的更新时间,并且,由于发送端按照处理第1个数据包的方式对第20个数据包进行了处理,因此,当确定了第20个数据包的传输路径之后,发送端也应该按照确定第1个数据包的传输路径之后设置已发送数据量的方式更新已发送数据量,即将第20个数据包之前累计的已发送数据量清零,并将已发送数据量更新为第20个数据包的数据量。
[0083] 在本发明实施例中,发送端在接收到数据流的第一数据包,且该第一数据包不为数据流的第一个数据包时,确定第一数据包的接收时间和第二数据包的接收时间之间的时间间隔,并获取已发送数据量,其中,第二数据包是该数据流中与第一数据包相邻的数据包,且第二数据包在第一数据包之前。之后,根据该时间间隔和已发送数据量,从多条可用的传输路径中为第一数据包选择传输路径,并通过选择的传输路径传输第一数据包。由于第一数据包的传输路径的选择不仅仅取决于其与上一个数据包之间的时间间隔,还取决于第一数据包对应的第一接收时间之前发送的数据量,这样,根据时间间隔和已发送数据量的不同,可以从多条可用的传输路径中为每一个待传输的数据包选择相应的传输路径,避免了数据流中大量数据包密集到达时,由于相邻数据包到达发送端的时间间隔过小而没有机会重新选择传输路径的问题,有效地提高了数据传输速率和传输路径的利用率。
[0084] 另外,根据时间间隔和已发送数据量大小的不同,发送端可以从多条可用的传输路径中选择传输时延最小的或者是可用带宽最大的传输路径作为第一数据包的传输路径,从而使第一数据包可以通过最适合的传输路径进行传输,进一步地提高了数据流的传输速率。并且,由于发送端可以周期性的计算多条可用的传输路径的传输时延和可用带宽,来对存储的传输时延和可用带宽进行更新,因此,对于该数据流中的每个数据包,发送端均可以选择最近更新的传输时延最小的或者是可用带宽最大的传输路径来进行传输,进一步地保证了数据流的传输速率。
[0085] 参见图3,本发明实施例提供了一种数据传输装置,该数据传输装置部署于发送端上,且该数据传输装置用于执行上述图2所示的方法,该数据传输装置包括第一确定模块301、获取模块302和第二确定模块303:
[0086] 第一确定模块301,用于执行上述实施例中的步骤203;
[0087] 获取模块302,用于执行上述实施例中的步骤204;
[0088] 第二确定模块303,用于执行上述实施例中的步骤205。
[0089] 可选地,第二确定模块303包括:
[0090] 第一选择单元,用于在时间间隔小于预设时间阈值且已发送数据量不小于预设流量阈值的情况下,从多条可用的传输路径中选择可用带宽最大的传输路径;
[0091] 第一确定单元,用于将选择的传输路径确定为第一数据包的传输路径。
[0092] 可选地,第二确定模块303包括:
[0093] 第二选择单元,用于在时间间隔小于预设时间阈值且已发送数据量小于预设流量阈值时,从多条可用的传输路径中选择传输时延最小的传输路径;
[0094] 第二确定单元,用于将选择的传输路径确定为第一数据包的传输路径。
[0095] 可选地,第二确定模块303还包括:
[0096] 第一更新单元,用于将数据流的已发送数据量增加第一数据包的数据量,以对数据流的已发送数据量进行更新。
[0097] 可选地,第二确定模块303包括:
[0098] 第三选择单元,用于在时间间隔不小于预设时间阈值的情况下,从多条可用的传输路径中选择传输时延最小的传输路径;
[0099] 第三确定单元,用于将选择的传输路径确定为第一数据包的传输路径。
[0100] 可选地,第二确定模块303还包括:
[0101] 第二更新单元,用于将数据流的已发送数据量更新为第一数据包的数据量。
[0102] 可选地,该数据传输装置还包括:
[0103] 选择模块,用于在第一数据包为数据流的第一个数据包的情况下,从多条可用的传输路径中选择传输时延最小的传输路径;
[0104] 第三确定模块,用于将选择的传输路径确定为第一数据包的传输路径,并将第一数据包传输至接收端。
[0105] 可选地,数据流的数据包的接收时间和数据流的已发送数据量存储于数据流的流表项中,流表项是发送端在接收到数据流的第一个数据包建立得到。
[0106] 综上所述,在本发明实施例中,发送端在接收到数据流的第一数据包,且该第一数据包不为数据流的第一个数据包时,确定第一数据包的接收时间和第二数据包的接收时间之间的时间间隔,并获取已发送数据量,其中,第二数据包是该数据流中与第一数据包相邻的数据包,且第二数据包在第一数据包之前。之后,根据该时间间隔和已发送数据量,从多条可用的传输路径中为第一数据包选择传输路径,并通过选择的传输路径传输第一数据包。由于第一数据包的传输路径的选择不仅仅取决于其与上一个数据包之间的时间间隔,还取决于接收到第一数据包的接收时间之前已发送的数据量,这样,根据时间间隔和已发送数据量的不同,可以从多条可用的传输路径中为每一个待传输的数据包选择相应的传输路径,避免了数据流中大量数据包密集到达时,由于相邻数据包到达发送端的时间间隔过小而没有机会重新选择传输路径的问题,有效地提高了数据传输速率和传输路径的利用率。
[0107] 另外,根据时间间隔和已发送数据量大小的不同,发送端可以从多条可用的传输路径中选择传输时延最小的或者是可用带宽最大的传输路径作为第一数据包的传输路径,从而使第一数据包可以通过最适合的传输路径进行传输,进一步地提高了数据流的传输速率。并且,由于发送端可以周期性的计算多条可用的传输路径的传输时延和可用带宽,来对存储的传输时延和可用带宽进行更新,因此,对于该数据流中的每个数据包,发送端均可以选择最近更新的传输时延最小的或者是可用带宽最大的传输路径来进行传输,进一步地保证了数据流的传输速率。
[0108] 图4是本发明实施例提供的一种网络设备的结构示意图。该网络设备可以为Overlay网络中的虚拟网络设备,也可以为未部署Overlay网络的广域网中的物理网络设备。例如,图1的Overlay网络中的虚拟路由器的功能即可以通过该网络设备来实现。参见图4,该网络设备包括至少一个处理器401,通信总线402,存储器403,接收器404以及发射器
405。
[0109] 处理器401可以是一个通用中央处理器(Central Processing Unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
[0110] 通信总线402可包括一通路,在上述组件之间传送信息。
[0111] 存储器403可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,RAM))或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器403可以是独立存在,通过通信总线402与处理器401相连接。存储器403也可以和处理器401集成在一起。
[0112] 接收器404可以用于接收待传输的数据流的数据包。发射器405可以将接收到的数据包通过选择的传输路径进行传输。并且,存储器403可以用于存储用于执行该数据传输方法的一个或多个运行程序和/或模块。
[0113] 在具体实现中,作为一种实施例,处理器401可以包括一个或多个CPU,例如图2中所示的CPU0和CPU1。
[0114] 在具体实现中,作为一种实施例,该网络设备可以包括多个处理器,例如图2中所示的处理器401和处理器406。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
[0115] 在具体实现中,作为一种实施例,该网络设备还可以包括输出设备407和输入设备408输出设备407和处理器401通信,可以以多种方式来显示信息。例如,输出设备407可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备408和处理器401通信,可以以多种方式接收用户的输入。例如,输入设备408可以是鼠标、键盘、触摸屏设备或传感设备等。
[0116] 上述的网络设备可以是一个通用网络设备或者是一个专用网络设备。在具体实现中,该网络设备可以是台式机、便携式电脑、网络服务器、物理路由器、交换机、掌上电脑(Personal Digital Assistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备或者嵌入式设备。本发明实施例不限定网络设备的类型。
[0117] 其中,存储器403用于存储执行本申请方案的程序代码,并由处理器401来控制执行。处理器401用于执行存储器403中存储的程序代码409。程序代码409中可以包括一个或多个软件模块。图1中所示的Overlay网络中的虚拟路由器可以通过处理器401以及存储器403中的程序代码409中的一个或多个软件模块,来确定用于传输数据流的数据包的传输路径。
[0118] 需要说明的是:上述实施例提供的数据传输装置在进行数据传输时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将数据传输装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据传输装置与数据传输方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0119] 应理解,本文中涉及的第一、第二等各种数字编号仅为描述方便进行的区分,并不用来限制本发明实施例的范围。
[0120] 还应理解,在本申请的各种实施例中,上述各过程/步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0121] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(Digital Versatile Disc,DVD))、或者半导体介质(例如:固态硬盘(Solid State Disk,SSD))等。
[0122] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0123] 以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。