一种数据传输方法及装置与流程

文档序号:16686123发布日期:2019-01-22 18:20阅读:199来源:国知局
一种数据传输方法及装置与流程

本发明涉及计算机通信技术领域,尤其涉及一种数据传输方法及装置。



背景技术:

目前,越来越多的终端设备配备多个网络接口,同时网络业务对高带宽的需求急剧增加,因此,如何提高数据传输的效率和质量,是本领域的技术难题。

现有技术中,多路径传输控制协议(multipathtcp,mptcp)作为tcp的扩展,是一种端到端的传输层协议,该协议通过设置多条固定数量的子流(tcp连接),并将不同的子流配置到路径上,从而实现聚合多条路径的带宽来提升传输速率和传输质量的目的。

但是,现有技术中的mptcp是一种端到端的传输层协议,缺乏对下层网络状态的感知,同一连接的不同子流可能会被分配到同一条路径上,从而导致子流冲突,甚至网络拥塞;由于不同子流具有不同的传输时延,接收端接收到的数据包会出现乱序现象;并且,mptcp的子流数量是固定的,使得网络资源未能被充分利用,基于上述几点原因,最终导致数据传输效率较低。



技术实现要素:

本发明的目的是提供一种数据传输方法及装置,解决了现有技术中数据传输效率低的技术问题。

为了解决上述技术问题,一方面,本发明提供一种数据传输方法,应用于基于sdn的mptcp中,包括:

获取当前网络的不相交路径集;

基于所述不相交路径集,获取子流数量;并将所述子流数量发送给数据发送终端,以供所述数据发送终端建立目标子流;

接收所述数据发送终端通过所述目标子流发送的路径分配数据包;并基于所述路径分配数据包为所述目标子流分配所述不相交路径集中的路径,以供所述数据发送终端根据分配的路径进行数据传输。

另一方面,本发明提供一种数据传输装置,应用于基于sdn的mptcp中,包括:

获取模块,用于获取当前网络的不相交路径集;

计算模块,用于基于所述不相交路径集,获取子流数量;并将所述子流数量发送给数据发送终端,以供所述数据发送终端建立目标子流;

分配模块,用于接收所述数据发送终端通过所述目标子流发送的路径分配数据包;并基于所述路径分配数据包为所述目标子流分配所述不相交路径集中的路径,以供所述数据发送终端根据分配的路径进行数据传输。

再一方面,本发明提供一种sdn控制器,应用于基于sdn的mptcp中,包括数据传输装置,所述数据传输装置包括:

获取模块,用于获取当前网络的不相交路径集;

计算模块,用于基于所述不相交路径集,获取子流数量;并将所述子流数量发送给数据发送终端,以供所述数据发送终端建立目标子流;

分配模块,用于接收所述数据发送终端通过所述目标子流发送的路径分配数据包;并基于所述路径分配数据包为所述目标子流分配所述不相交路径集中的路径,以供所述数据发送终端根据分配的路径进行数据传输。

又一方面,本发明提供一种用于数据传输的电子设备,包括:

存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述的方法。

又一方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。

本发明提供的数据传输方法及装置,从全局的视角定期收集网络状态,根据服务需求和网络资源能力来确定合适的子流数量,充分利用了网络带宽、减缓了数据接收端数据包乱序的情况,从而实现高效的数据传输。

附图说明

图1为依照本发明实施例的数据传输方法示意图;

图2为依照本发明实施例的数据传输装置示意图;

图3为本发明实施例提供的用于数据传输的电子设备的结构示意图。

具体实施方式

为了使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为依照本发明实施例的数据传输方法示意图,如图1所示,本发明实施例提供一种数据传输方法,应用于基于sdn的mptcp中,包括:

步骤s101、获取当前网络的不相交路径集;

步骤s102、基于所述不相交路径集,获取子流数量;并将所述子流数量发送给数据发送终端,以供所述数据发送终端建立目标子流;

步骤s103、接收所述数据发送终端通过所述目标子流发送的路径分配数据包;并基于所述路径分配数据包为所述目标子流分配所述不相交路径集中的路径,以供所述数据发送终端根据分配的路径进行数据传输。

具体的,首先,对当前网络拓扑进行收集,并计算以带宽为权重的不相交路径集,所述不相交路径集中包含多条不相交的最优路径。获取不相交路径集的具体方法如下:

a、sdn控制器发送lldp(linklayerdiscoveryprotocol)消息给所有交换机,从而收集交换机间的链路信息,生成拓扑图g,并保存在sdn控制器中;

b、sdn控制器计算每一段链路的可用带宽,由此计算两终端(数据发送终端和数据接收终端)间所有可用路径的可用带宽;

c、以带宽为权重用dijkstra算法计算最优路径,并保存到路径集m中;

d、从拓扑图g中删除保存到路径集m中的路径,重复步骤c,直到无法计算出拓扑图g的可用路径,得到不相交的路径集m。

然后,基于所述不相交路径集m,获取子流数量;并将所述子流数量发送给数据发送终端,以供所述数据发送终端建立目标子流,即,sdn控制器计算每条路径的时延,并根据带宽、时延的限制计算子流数量。计算子流数量的具体方法如下:

a、获取不相交路径集m中每一路径的可用带宽和传输时延;

b、如果不相交路径集m中所有路径的可用总带宽小于等于传输数据所需带宽(传输数据所需带宽的大小由传输数据的类型,码率,以及具体的应用来决定,本实施例不做说明),则选择不相交路径集m中的所有路径,将不相交路径集m中路径的总数量反馈给数据发送终端,作为子流数量;

c、如果不相交路径集m中所有路径的可用总带宽大于所需带宽,计算每条路径的时延、所有路径的平均时延,以及每条路径的时延与平均时延的差值;每次计算出差值最大的路径,并在不相交路径集m中去除该路径,迭代此步骤,直到不相交路径集m中路径的可用总带宽小于传输数据所需带宽,将最终不相交路径集m中剩余路径的数量反馈给数据发送终端,作为子流数量。

最后,sdn控制器接收数据发送终端通过目标子流发送的路径分配数据包;并基于路径分配数据包为目标子流分配不相交路径集m中的路径,以供数据发送终端根据分配的路径进行数据传输。为子流分配路径的具体方法如下:

a、交换机每一条新建子流的首个数据包提交给sdn控制器,该数据包主要用于路径分配,sdn控制器收到路径分配数据包后,解析路径分配数据包,提取出数据包的包头选项信息;

b、如果提取出包头选项为mp_capable,将不相交路径集m中时延最低的第一条路径分配给该目标子流;

c、如果提取出包头选项为mp_join,通过token字段判断该子流是否与其他子流属于同一连接,如果为同一连接,则将不相交路径集m中的下一条路径分配给该目标子流。

为所有子流分配完路径以后,数据发送终端根据分配的路径进行数据传输。

本发明实施例提供的数据传输方法,从全局的视角定期收集网络状态,根据服务需求和网络资源能力来确定合适的子流数量,充分利用了网络带宽、减缓了数据接收端数据包乱序的情况,从而实现高效的数据传输。

在上述实施例的基础上,进一步地,所述获取当前网络的不相交路径集,具体为:

获取所述当前网络的拓扑图;

获取所述拓扑图中每一对终端间所有可用路径的可用带宽;

基于所述拓扑图中的所有可用路径的可用带宽,获取所述拓扑图中的最优路径,作为目标不相交路径,并将所述目标不相交路径保存到所述不相交路径集中;

从所述拓扑图中删除所述目标不相交路径,获取更新后的拓扑图,重复获取所述更新后的拓扑图的最优路径,作为新的目标不相交路径,并将所述新的目标不相交路径保存到所述不相交路径集中,直到无法获取当前拓扑图的可用路径。

具体的,对当前网络拓扑进行收集,并计算以带宽为权重的不相交路径集,具体方法如下:

a、sdn控制器发送lldp(linklayerdiscoveryprotocol)消息给所有交换机,从而收集交换机间的链路信息,生成拓扑图g,并保存在sdn控制器中;

b、sdn控制器计算每一段链路的可用带宽,由此计算两终端间所有可用路径的可用带宽;

c、以带宽为权重用dijkstra算法计算最优路径,并保存到路径集m中;

d、从拓扑图g中删除保存到路径集m中的路径,重复步骤c,直到无法计算出拓扑图g的可用路径,得到不相交的路径集m。

利用sdn控制器全局视角、集中管控的优势,定期向所有交换机发送lldp消息,来获取交换机端口以及链路信息,在sdn控制器里用网络工具networkx保存网络拓扑g(v,e),并计算每段链路的可用带宽,由此可得每条路径的可用带宽,具体计算公式如下:

bwk=min{bwl,l∈k}

其中,bwk表示两个终端之间某一路径的可用带宽,k表示两个终端之间的第k条路径,l表示第k条路径上的每段链路。

与带宽类似,测量每段链路的时延,由此可得每条路径的时延,具体计算公式如下:

其中,delayk表示两个终端之间的第k条路径的时延,delayl表示第k条路径上的第l条链路的时延,u是路径k上链路的数量。

sdn控制器以带宽为权重利用dijkstra算法计算两个终端之间的最优路径,为了得到不相交的路径,从原图g(v,e)中删除当前计算的最优路径得到新的拓扑图,依次迭代,直到没有可用路径,将所有不相交路径保存至路径集m中,具体不相交路径集收集算法如下:

输入:网络拓扑g(v,e),源节点s,目的节点d;

输出:路径集m;

本发明实施例提供的数据传输方法,从全局的视角定期收集网络状态,根据服务需求和网络资源能力来确定合适的子流数量,充分利用了网络带宽、减缓了数据接收端数据包乱序的情况,从而实现高效的数据传输。

在以上各实施例的基础上,进一步地,所述基于所述不相交路径集,获取子流数量,具体为:

获取所述不相交路径集中每一路径的可用带宽和传输时延;

若判断获知所述不相交路径集中所有路径的可用带宽的总和小于等于传输数据所需带宽,则将所述不相交路径集中路径的总数量作为所述子流数量;

若判断获知所述不相交路径集中所有路径的可用带宽的总和大于传输数据所需带宽,则基于所述不相交路径集中每一路径的可用带宽和传输时延,从所述不相交路径集中选择若干条路径,作为最优路径,并以所述最优路径的数量作为所述子流数量,其中,所有最优路径的可用带宽的总和大于等于传输数据所需带宽。

具体的,基于所述不相交路径集,获取子流数量;并将所述子流数量发送给数据发送终端,以供所述数据发送终端建立目标子流,即,sdn控制器计算每条路径的时延,并根据带宽、时延的限制计算子流数量。计算子流数量的具体方法如下:

a、获取不相交路径集m中每一路径的可用带宽和传输时延;

b、如果不相交路径集m中所有路径的可用总带宽小于等于传输数据所需带宽(传输数据所需带宽的大小由传输数据的类型,码率,以及具体的应用来决定,本实施例不做说明),则选择不相交路径集m中的所有路径,将不相交路径集m中路径的总数量反馈给数据发送终端,作为子流数量;

c、如果不相交路径集m中所有路径的可用总带宽大于所需带宽,计算每条路径的时延、所有路径的平均时延,以及每条路径的时延与平均时延的差值;每次计算出差值最大的路径,并在不相交路径集m中去除该路径,迭代此步骤,直到不相交路径集m中路径的可用总带宽小于传输数据所需带宽,将最终不相交路径集m中剩余路径的数量反馈给数据发送终端,作为子流数量。

本发明实施例提供的数据传输方法,从全局的视角定期收集网络状态,根据服务需求和网络资源能力来确定合适的子流数量,充分利用了网络带宽、减缓了数据接收端数据包乱序的情况,从而实现高效的数据传输。

在以上各实施例的基础上,进一步地,所述从所述不相交路径集中选择若干条路径,作为最优路径,具体为:

计算所述不相交路径集中所有路径的平均时延;

计算所述不相交路径集中每一路径的时延与所述平均时延之差的绝对值;

按照所述绝对值从小到大的顺序对所述不相交路径集中的路径进行排序,若判断获知所述排序中前n条路径的可用带宽的总和小于等于传输数据所需带宽,且前(n+1)条路径的可用带宽的总和大于传输数据所需带宽,则将所述排序中前(n+1)条路径作为最优路径。

具体的,

如果所有路径带宽和不满足服务需求,则使用路径集m中所有的路径,尽最大努力提供服务。

不失一般性,网络提供的带宽基本上会满足用户需求。因此,需要从不相交路径集m中选择质量好,并且路径差异较小的路径,作为最优路径,进而减缓接收端数据包乱序的情况。

由上述实施例中计算获得的时延信息,sdn控制器计算所有路径的平均时延以及每条路径时延di与平均值的差值每次选择差值最大的路径存入路径集s中,并从原路径集中删除路径集s,以此迭代,直到路径总带宽和小于所需带宽,从而确定出当前最优的子流数量n,并将n值反馈给数据发送终端。获取最优路径的具体算法如下:

输入:路径集m,路径集m中路径i的带宽bwi和di,服务所需带宽bwreq;

输出:路径集n和路径集n中路径的数量n;

上述计算最优路径的算法,还可以用另一种形式的等同方法计算,具体如下:

按照不相交路径集中每一路径的时延与平均时延之差的绝对值,从小到大的顺序对不相交路径集中的路径进行排序,若判断获知排序中前n条路径的可用带宽的总和小于等于传输数据所需带宽,且前(n+1)条路径的可用带宽的总和大于传输数据所需带宽,则将排序中前(n+1)条路径作为最优路径。

以上两种算法,均能够获得最优的路径,是等同算法,效果相同。并且,获取到的最优路径,路径差异较小,进而减缓接收端数据包出现乱序的情况。

本发明实施例提供的数据传输方法,从全局的视角定期收集网络状态,根据服务需求和网络资源能力来确定合适的子流数量,充分利用了网络带宽、减缓了数据接收端数据包乱序的情况,从而实现高效的数据传输。

在以上各实施例的基础上,进一步地,所述基于所述路径分配数据包为所述目标子流分配所述不相交路径集中的路径,具体为:

解析所述路径分配数据包,获取包头选项信息;

若判断获知所述包头选项信息为第一指示信息,则将所述不相交路径集中时延最低的路径分配给所述目标子流,所述第一指示信息用于指示所述目标子流为所述数据发送终端建立的第一条子流。

若判断获知所述包头选项信息为第二指示信息,则基于所述第二指示信息中的目标字段确定所述目标子流是否与上一子流属于同一连接,只有当所述目标子流与上一子流属于同一连接时,才将所述不相交路径集中的路径分配给所述目标子流,所述第二指示信息用于指示所述目标子流为所述数据发送终端建立的非第一条子流。

具体的,接收数据发送终端通过目标子流发送的路径分配数据包;并基于路径分配数据包为目标子流分配不相交路径集m中的路径,以供数据发送终端根据分配的路径进行数据传输。为子流分配路径的具体方法如下:

a、交换机每一条新建子流的首个数据包提交给sdn控制器,该数据包主要用于路径分配,sdn控制器收到路径分配数据包后,解析路径分配数据包,提取出数据包的包头选项信息;

b、如果提取出包头选项为mp_capable,将不相交路径集m中时延最低的第一条路径分配给该目标子流;

c、如果提取出包头选项为mp_join,通过token字段判断该子流是否与其他子流属于同一连接,如果为同一连接,则将不相交路径集m中的下一条路径分配给该目标子流。

当mptcp第一条子流的第一个数据包到达交换机,交换机通过openflow协议中的packet_in消息将数据包发送给sdn控制器,sdn控制器提取mptcp的头部选项信息为mp_capable,mp_capable为第一指示信息,sdn控制器头部选项信息为mp_capable时,获知目标子流为数据发送终端建立的第一条子流,从路径集n中选出第一条路径并分配给该目标子流,优选的,第一条路径为路径集n中时延最小的路径,其中,路径集n为上述实施例中获取的最优路径的集合,路径集n可能与不相交路径集m相同,也可能是不相交路径集m的子集。

之后,加入一条新子流时,sdn控制器提取头部选项信息为mp_join,mp_join为第二指示信息,sdn控制器头部选项信息为mp_join时,获知目标子流为数据发送终端建立的非第一条子流,并根据token字段来判断新建子流与之前的子流是否属于同一连接,如果是同一连接,在路径集n中选择下一条路径分配给该子流,路径分配的具体算法如下:

输入:提取mptcp数据包选项mp_capable或mp_join,路径集n;

mptcp数据包的转发过程中,初始化建立一条mptcp连接时,数据发送终端发送含有mp_capable选项的syn数据包,交换机通过packet_in消息将数据包发送给sdn控制器,控制器根据上述实施例中的不相交路径获取算法获取不相交可用路径,根据上述实施例中的子流数量计算算法获取最优子流数量,然后根据上述实施例中的路径分配算法下发流规则分配路径;新建一条子流时,数据发送终端发送含有mp_join选项的syn数据包,根据路径分配算法提取token字段并发流规则分配路径。

本发明实施例提供的数据传输方法,从全局的视角定期收集网络状态,根据服务需求和网络资源能力来确定合适的子流数量,充分利用了网络带宽、减缓了数据接收端数据包乱序的情况,从而实现高效的数据传输。

图2为依照本发明实施例的数据传输装置示意图,如图2所示,本发明实施例提供一种数据传输装置,用于完成上述实施例中所述的方法,具体包括获取模块201、计算模块202和分配模块203,其中,

获取模块201用于获取当前网络的不相交路径集;

计算模块202用于基于所述不相交路径集,获取子流数量;并将所述子流数量发送给数据发送终端,以供所述数据发送终端建立目标子流;

分配模块203用于接收所述数据发送终端通过所述目标子流发送的路径分配数据包;并基于所述路径分配数据包为所述目标子流分配所述不相交路径集中的路径,以供所述数据发送终端根据分配的路径进行数据传输。

本发明实施例提供一种数据传输装置,用于完成上述实施例中所述的方法,通过本实施例提供的数据传输装置完成上述实施例中所述的数据传输方法的具体步骤与上述实施例相同,此处不再赘述。

本发明实施例提供的数据传输装置,从全局的视角定期收集网络状态,根据服务需求和网络资源能力来确定合适的子流数量,充分利用了网络带宽、减缓了数据接收端数据包乱序的情况,从而实现高效的数据传输。

本发明实施例公开sdn控制器,应用于基于sdn的mptcp中,包括数据传输装置,所述数据传输装置包括:

获取模块,用于获取当前网络的不相交路径集;

计算模块,用于基于所述不相交路径集,获取子流数量;并将所述子流数量发送给数据发送终端,以供所述数据发送终端建立目标子流;

分配模块,用于接收所述数据发送终端通过所述目标子流发送的路径分配数据包;并基于所述路径分配数据包为所述目标子流分配所述不相交路径集中的路径,以供所述数据发送终端根据分配的路径进行数据传输。

本发明实施例提供的sdn控制器,从全局的视角定期收集网络状态,根据服务需求和网络资源能力来确定合适的子流数量,充分利用了网络带宽、减缓了数据接收端数据包乱序的情况,从而实现高效的数据传输。

图3为本发明实施例提供的用于数据传输的电子设备的结构示意图,如图3所示,所述设备包括:处理器301、存储器302和总线303;

其中,处理器301和存储器302通过所述总线303完成相互间的通信;

处理器301用于调用存储器302中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:

获取当前网络的不相交路径集;

基于所述不相交路径集,获取子流数量;并将所述子流数量发送给数据发送终端,以供所述数据发送终端建立目标子流;

接收所述数据发送终端通过所述目标子流发送的路径分配数据包;并基于所述路径分配数据包为所述目标子流分配所述不相交路径集中的路径,以供所述数据发送终端根据分配的路径进行数据传输。

本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:

获取当前网络的不相交路径集;

基于所述不相交路径集,获取子流数量;并将所述子流数量发送给数据发送终端,以供所述数据发送终端建立目标子流;

接收所述数据发送终端通过所述目标子流发送的路径分配数据包;并基于所述路径分配数据包为所述目标子流分配所述不相交路径集中的路径,以供所述数据发送终端根据分配的路径进行数据传输。

本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:

获取当前网络的不相交路径集;

基于所述不相交路径集,获取子流数量;并将所述子流数量发送给数据发送终端,以供所述数据发送终端建立目标子流;

接收所述数据发送终端通过所述目标子流发送的路径分配数据包;并基于所述路径分配数据包为所述目标子流分配所述不相交路径集中的路径,以供所述数据发送终端根据分配的路径进行数据传输。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的装置及设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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