掌桥专利:专业的专利平台
掌桥专利
首页

多路径传输方法、装置、设备、可读存储介质及程序产品

文献发布时间:2024-04-18 19:58:21


多路径传输方法、装置、设备、可读存储介质及程序产品

技术领域

本申请涉及计算机技术领域,尤其涉及一种多路径传输方法、装置、设备、可读存储介质及程序产品。

背景技术

数据中心网络的任意服务器节点之间都是有多条物理路径的,而且往往这些路径都是等长的。在规模更大的网络中(如汇聚层交换机和核心层的平面数目增大),两个不同的网络层级之间的物理链路的数量将会更大。一般情况下,交换机会先使用路由表,根据目的网际互连协议(Internet Protocol,IP)获取候选出端口操作。在有多个候选出端口的情况下,交换机会对数据包的包头的五元组(即源/目的IP、源/目的端口号和协议号)进行哈希计算以选定一个候选出端口,使得五元组相同的数据包会从相同的出端口发出去,也就是五元组相同的数据包的物理路径一般是相同的。这样的路由设置可以在一定程度上让一个节点对(源服务器和目标服务器)的不同数据流走不同的路径,进行负载均衡。而在上述过程中,哈希结果往往是不均匀的,甚至可能会出现哈希极化的现象,使得可能出现传输数据包的物理路径有部分重叠(即经过相同的链路),甚至可能出现多条子链路完全一致的情况,导致多物理路径的失效,即,不能有效地利用可用带宽,减少了物理路径冗余的可靠性。而且物理路径中子链路的重复,导致若重复的子链路中出现故障时,会导致包括出故障的子链路的物理路径都会中断服务,降低了链路的可用性。

发明内容

本申请实施例提供了一种多路径传输方法、装置、设备、可读存储介质及程序产品,可以提高链路可靠性及可用性。

本申请实施例一方面提供了一种多路径传输方法,该方法包括:

源服务器获取f个链路类型;f为正整数;一个链路类型是指在一次数据跳转中所经过的链路的类型;

获取f个链路类型分别对应的独立链路数量,基于独立链路数量对f个链路类型分别进行H次编码,得到f个链路类型分别对应的H个分段码值;H为正整数;

基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成H个路径编码;每个路径编码包括f个链路类型分别对应的一个分段码值;

基于H个路径编码,将目标数据包发送至目标服务器。

本申请实施例一方面提供了一种多路径传输方法,该方法包括:

路径交换机获取目标数据包;目标数据包是由源服务器基于H个路径编码所发送的;H个路径编码是由源服务器基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成的;f个链路类型分别对应的H个分段码值是由源服务器基于f个链路类型分别对应的独立链路数量,对f个链路类型分别进行H次编码所得到的;一个链路类型是指在一次数据跳转中所经过的链路的类型;f为正整数;H为正整数;

基于目标数据包所指示的目标路径编码,将目标数据包发送至目标服务器;H个路径编码包括目标路径编码。

本申请实施例一方面提供了一种多路径传输装置,该装置包括:

链路获取模块,用于源服务器获取f个链路类型;f为正整数;一个链路类型是指在一次数据跳转中所经过的链路的类型;

链路编码模块,用于获取f个链路类型分别对应的独立链路数量,基于独立链路数量对f个链路类型分别进行H次编码,得到f个链路类型分别对应的H个分段码值;H为正整数;

编码生成模块,用于基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成H个路径编码;每个路径编码包括f个链路类型分别对应的一个分段码值;

数据发送模块,用于基于H个路径编码,将目标数据包发送至目标服务器。

其中,该链路编码模块,包括:

数据获取单元,用于获取f个链路类型中第i个链路类型对应的独立链路数量;

第一编码单元,用于若第i个链路类型对应的独立链路数量大于或等于H,则采用p至q对第i个链路类型进行H次编码,得到第i个链路类型所对应的H个分段码值;i为小于或等于f的正整数;p与q的差值为H-1,且q大于p;

第二编码单元,用于若第i个链路类型对应的独立链路数量小于H,则采用第i个链路类型对应的独立链路数量,对第i个链路类型进行循环编码,得到第i个链路类型所对应的H个分段码值;

码值获取单元,用于当i为f时,得到f个链路类型分别对应的H个分段码值。

其中,该链路编码模块,包括:

初始编码单元,用于获取f个链路类型中的第i个链路类型对应的独立链路数量,基于第i个链路类型对应的独立链路数量,对i个链路类型进行H次编码,得到第i个链路类型所对应的H个初始分段码值;i为小于或等于f的正整数;

编码偏移单元,用于获取第i个链路类型所对应的编码偏移数据,基于第i个链路类型所对应的编码偏移数据,对第i个链路类型对应的H个初始分段码值分别进行编码偏移处理,得到第i个链路类型所对应的H个分段码值;

该码值获取单元,还用于当i为f时,得到f个链路类型分别对应的H个分段码值。

其中,该数据发送模块,包括:

数据获取单元,用于获取初始数据包;

路径选取单元,用于对H个路径编码进行路径调度,得到目标路径编码;

信息生成单元,用于基于目标路径编码生成路径信息字段;

包更新单元,用于将路径信息字段添加至初始数据包的包头,生成目标数据包;

链路选择单元,用于从目标路径编码中获取本地上行链路的分段码值,基于本地上行链路的分段码值,确定本地上行链路所对应的独立链路;本地上行链路是指由源服务器至接入层交换机的链路类型;

数据发送单元,用于基于本地上行链路所对应的独立链路,将目标数据包发送至接入层交换机,以使接入层交换机基于目标数据包中的路径信息字段,将目标数据包发送至目标服务器。

其中,该路径选取单元,包括:

发送请求子单元,用于向轮询数据路径请求发送数据包;H个路径编码分别对应的独立数据路径包括轮询数据路径;轮询数据路径是指当前轮询到的数据路径;

路径确定子单元,用于若轮询数据路径满足带宽传输条件,则将轮询数据路径所对应的路径编码确定为目标路径编码;

路径轮询子单元,用于若轮询数据路径不满足带宽传输条件,则将轮询数据路径的下一个独立数据路径,确定为轮询数据路径,返回执行向轮询数据路径请求发送数据包的过程。

其中,该信息生成单元,包括:

数据确定子单元,用于从目标路径编码中获取目标编码标识,以及一个或多个路径交换机在f个链路类型中所指向的链路类型的分段码值;一个或多个路径交换机包括接入层交换机;

信息组成子单元,用于获取源服务器所对应的传输跳数,将目标编码标识、一个或多个路径交换机在f个链路类型中所指向的链路类型的分段码值,以及源服务器所对应的传输跳数,生成路径信息字段。

其中,该装置还包括:

心跳发送模块,用于源服务器以心跳检测周期为基准,在H个路径编码分别对应的独立数据路径中,向目标服务器发送心跳包;

状态更新模块,用于若超出心跳确认时间阈值,源服务器未获取到目标服务器所发送的心跳确认数据,则将H个独立数据路径的路径状态更新为路径检查状态;

路径检查模块,用于在路径检查状态中,对H个独立数据路径进行检测处理;

异常更新模块,用于若H个独立数据路径中存在异常数据路径,则对异常数据路径进行更新。

其中,该路径检查模块,包括:

检查发送单元,用于在路径检查状态中,源服务器基于第j个独立数据路径向目标服务器发送检查包;j为小于或等于H的正整数;

正常确定单元,用于若源服务器接收到目标服务器所发送的检查确认数据,则确定第j个独立数据路径的正向数据路径正常,等待第j个独立数据路径的反向数据路径更新,在第j个独立数据路径更新后的反向数据路径正常时,确定第j个独立数据路径为正常数据路径;

状态更新单元,用于若源服务器在经过检查确认时间阈值后,未接收到目标服务器所发送的心跳确认数据,则将第j个独立数据路径的路径状态更新为路径探测状态,确定第j个独立数据路径为异常数据路径;路径探测状态用于指示第j个独立数据路径所对应的路径交换机中存在故障。

其中,该异常更新模块,包括:

异常获取单元,用于若H个独立数据路径中存在异常数据路径,则获取异常数据路径所对应的异常路径编码;异常数据路径的路径状态为路径探测状态;

更新获取单元,用于获取第i个链路类型在异常路径编码中所对应的分段码值的更新分段码值,将第i个链路类型在异常路径编码中所对应的分段码值更新为更新分段码值,得到异常数据路径所对应的更新路径编码i;i为小于或等于f的正整数;

更新探测单元,用于在更新路径编码i所对应的更新数据路径i中,源服务器向目标服务器发送探测包;

编码更新单元,用于若接收到目标服务器针对探测包的探测确认数据,则将H个路径编码中的异常路径编码替换为更新数据路径i,得到更新后的H个路径编码,将异常数据路径的路径状态更新为路径正常状态;

后续探测单元,用于若在经过探测确认时间阈值后,源服务器未接收到目标服务器针对探测包的探测确认数据,则对第(i+1)个链路类型进行探测;

无效确定单元,用于当对f个链路类型在异常路径编码中分别对应的链路类型全部探测完成,且异常数据路径处于路径探测状态时,确定异常路径编码为无效编码。

本申请实施例一方面提供了一种多路径传输装置,该装置包括:

数据获取模块,用于路径交换机获取目标数据包;目标数据包是由源服务器基于H个路径编码所发送的;H个路径编码是由源服务器基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成的;f个链路类型分别对应的H个分段码值是由源服务器基于f个链路类型分别对应的独立链路数量,对f个链路类型分别进行H次编码所得到的;一个链路类型是指在一次数据跳转中所经过的链路的类型;f为正整数;H为正整数;

数据发送模块,用于基于目标数据包所指示的目标路径编码,将目标数据包发送至目标服务器;H个路径编码包括目标路径编码。

其中,该数据发送模块,包括:

包数据获取单元,用于从目标数据包中获取路径信息字段及五元组;

端口确定单元,用于基于路径信息字段及五元组,从路径交换机所关联的候选出端口中确定目标出端口;路径信息字段用于指示目标路径编码;

数据发送单元,用于基于目标出端口,将目标数据包发送至目标服务器。

其中,路径信息字段包括传输跳数字段及编码字段;编码字段的值是根据路径信息字段所指示的目标路径编码确定的;

该端口确定单元,包括:

跳数更新子单元,用于对路径信息字段中的传输跳数字段的值进行更新,得到更新跳数;

哈希获取子单元,用于获取五元组的第一哈希;

码值获取子单元,用于获取更新跳数在编码字段中对应的目标分段码值;

端口确定子单元,用于根据第一哈希及目标分段码值,从路径交换机所关联的候选出端口中确定目标出端口。

其中,该哈希获取子单元,具体用于:

对五元组进行等价多路径哈希处理,得到五元组的第一哈希;

该端口确定子单元,包括:

数量获取子单元,用于获取路径交换机所关联的候选出端口的候选数量,获取第一哈希与目标分段码值的数据总和;

端口确定子单元,用于将数据总和与候选数量的余数所对应的候选出端口,确定为目标出端口。

本申请实施例一方面提供了一种计算机设备,包括处理器、存储器、输入输出接口;

处理器分别与存储器和输入输出接口相连,其中,输入输出接口用于接收数据及输出数据,存储器用于存储计算机程序,处理器用于调用该计算机程序,以使包含该处理器的计算机设备执行本申请实施例一方面中的多路径传输方法。

本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本申请实施例一方面中的多路径传输方法。

本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例一方面中的各种可选方式中提供的方法。换句话说,该计算机指令被处理器执行时实现本申请实施例一方面中的各种可选方式中提供的方法。

实施本申请实施例,将具有如下有益效果:

在本申请实施例中,源服务器可以获取f个链路类型;f为正整数;一个链路类型是指在一次数据跳转中所经过的链路的类型;获取f个链路类型分别对应的独立链路数量,基于独立链路数量对f个链路类型分别进行H次编码,得到f个链路类型分别对应的H个分段码值;H为正整数;基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成H个路径编码;每个路径编码包括f个链路类型分别对应的一个分段码值;基于H个路径编码,将目标数据包发送至目标服务器。通过以上过程,可以确定f个链路类型,也就是说,数据包在节点对(即源服务器与目标服务器)之间进行一次完整发送时,所经过的链路的类型,通过这些链路类型所对应的独立链路数量,对f个链路类型分别进行编码,从而可以得到代表在源服务器与目标服务器之间进行数据包传输的逻辑路径的路径编码,可以相当于是源服务器与目标服务器之间的实际的物理路径的指代,由于该编码是基于独立链路数量的,使得得到的路径编码之间是相互独立的,不同的路径编码之间相当于是无重叠的,使得在进行数据包传输时,可以直接基于已有的路径编码进行传输,从而达到最大程度的带宽利用和传输的可靠性。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1a是本申请实施例提供的一种多路径传输的网络拓扑示意图;

图1b是本申请实施例提供的一种数据传输场景示意图;

图2是本申请实施例提供的一种多路径传输场景示意图;

图3是本申请实施例提供的一种多路径传输的方法流程图;

图4是本申请实施例提供的一种物理路径示意图;

图5是本申请实施例提供了一种另一种物理路径示意图;

图6是本申请实施例提供的一种路径调度场景示意图;

图7是本申请实施例提供的一种路径信息字段示意图;

图8是本申请实施例提供的一种路径检查流程示意图;

图9是本申请实施例提供的一种交换机数据传输流程示意图;

图10是本申请实施例提供的一种数据交互场景示意图;

图11是本申请实施例提供的一种多路径传输装置示意图;

图12是本申请实施例提供的另一种多路径传输装置示意图;

图13是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

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

其中,若在本申请中需要收集对象(如用户等)数据,则在收集前、收集中,显示提示界面或者弹窗,该提示界面或者弹窗用于提示用户当前正在搜集XXXX数据,仅仅在获取到用户对该提示界面或者弹窗发出确认操作后,开始执行数据获取的相关的步骤,否则结束。而且,对于获取到的用户数据,会在合理合法的场景或用途等上进行使用。可选的,在一些需要使用用户数据但未得到用户授权的场景中,还可以向用户请求授权,在授权通过时,再使用用户数据。

可选的,本申请可以采用云存储技术对本申请中所涉及的数据进行存储,如各个服务器所获取的路径编码等,可以采用大数据技术进行数据传输等。

其中,云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。

目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。

存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。

其中,大数据(Big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着云时代的来临,大数据也吸引了越来越多的关注,大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。

在本申请实施例中,请参见图1a,图1a是本申请实施例提供的一种多路径传输的网络拓扑示意图,本申请实施例中的网络拓扑可以认为是由服务器与多种类型的交换机所组成,可选的,可以将多种类型的交换机统称为路径交换机。可选的,如图1a所示,该网络拓扑可以包括服务器、接入层、汇聚层及核心层等,也就是说,图1a的网络拓扑中多种类型的交换机可以认为包括接入层交换机、汇聚层交换机及核心层交换机等。其中,可以直接进行数据交互的两种类型的交换机可以认为是相邻的,例如,接入层交换机可以认为是汇聚层交换机的邻接交换机,且是该汇聚层交换机的输入邻接交换机;该核心层交换机可以认为是汇聚层交换机的邻接交换机,且是该汇聚层交换机的输出邻接交换机;汇聚层交换机是接入层交换机及核心层交换机的邻接交换机,其中,可以认为是接入层交换机的输出邻接交换机,是核心层交换机的输入邻接交换机。其中,如图1a所示,任意两个设备(包括服务器及交换机等)之间的连线,表示该两个设备之间的一个物理链路,例如,接入层交换机12与服务器0之间的连线,用于表示该服务器0与接入层交换机12之间的一个物理链路,其中,物理链路可以认为是双向的,也就是说,物理链路关联的两个设备之间可以相互进行数据的发送及接收等。可选的,任意一个节点对(即两个服务器,可以称为源服务器与目标服务器)之间的物理路径可以由多个物理链路组成。举例来说,对于服务器0至服务器15的一条物理路径为“服务器0—>接入层交换机12—>汇聚层交换机8—>核心层平面0(核心层交换机0/核心层交换机1)—>汇聚层交换机32—>接入层交换机39—>服务器15”,该物理路径包括物理链路“服务器0—>接入层交换机12”、物理链路“接入层交换机12—>汇聚层交换机8”、…及物理链路“接入层交换机39—>服务器15”等,其中,上述的物理路径反向则可以认为是由服务器15至服务器0的物理路径。

其中,该网络拓扑可以包括一个或至少两个传输单位(Point of delivery,Pod),如图1a中的传输单位0(Pod0)、传输单位1(Pod1)、传输单位2(Pod2)及传输单位3(Pod3),一个传输单位可以认为是用于进行数据传输的单位,可以由服务器加交换机组成。该传输单位可以包括一个或至少两个服务器、一个或至少两个接入层交换机及一个或至少两个汇聚层交换机,图1a中是一种可能的网络拓扑架构图。其中,核心层可以包括一个或至少两个平面,如图1a中所示,可以包括平面0、平面1、平面2及平面3等,每个平面中可以包括一个或至少两个核心层交换机,如图1a中,平面0可以包括核心层交换机0及核心层交换机1,平面1可以包括核心层交换机2及核心层交换机3等,平面2可以包括核心层交换机4及核心层交换机5等,平面3可以包括核心层交换机6及核心层交换机7等。可选的,一般情况下,核心层所包括的平面的数量,可以与一个传输单位中所包括的汇聚层交换机的数量相同,这是由于汇聚层与核心层是基于平面进行数据交互的,当然,可以基于需求,核心层所包括的平面的数量,与一个传输单位中所包括的汇聚层交换机的数量也可以不同。也就是说,本申请中所涉及的设备的数量或集群(如传输单位或平面等)的数量等均不做限制,如一个传输单位中所包括的服务器的数量、接入层交换机的数量及汇聚层交换机的数量等,一个平面中所包括的核心层交换机的数量、网络拓扑中所包括的传输单位的数量(如图1a中为4,也可以是5或3等),以及网络拓扑中核心层所包括的平面的数量(如图1a中为4,也可以是8或9等)等,在本申请中均是不做限制的,可以基于网络部署进行变化。可选的,服务器或路径交换机的独立链路数量,也可以是基于网络部署进行确定,如图1a中,该服务器的独立链路数量为2,即,服务器0对应2个独立链路,如“服务器0—接入层交换机12”及“服务器0—接入层交换机13”等,也就是说,可以认为该服务器的独立链路数量为N,N为正整数。其中,该独立链路可以认为是上述的物理链路。

可选的,在进行数据包的发送时,可以将源服务器发送数据包时关联的接入层交换机记作源接入层交换机,将源服务器发送数据包时关联的汇聚层交换机记作源汇聚层交换机;将目标服务器接收数据包时关联的接入层交换机记作目标接入层交换机,将目标服务器接收数据包时关联的汇聚层交换机记作目标汇聚层交换机等。当然,若后续的网络拓扑发生变化,也就是说,网络拓扑中所包括的层级或各个层级中所包括的设备(如交换机或服务器等)等发生变化,则也可以采用本申请中的方案。

进一步可选的,可以参见图1b,图1b是本申请实施例提供的一种数据传输场景示意图。如图1b所示,在一个连接下,发送侧与接收侧之间可以通过获取到的H个路径编码分别对应的逻辑路径进行数据包的发送,其中,一个连接可以认为是一个节点对(两个服务器)之间的连接,H为正整数。举例来说,源服务器与目标服务器之间需要进行数据通信时,可以与目标服务器之间建立一条连接,可以记作连接1,该连接1会包括多条物理路径,用于源服务器与目标服务器之间进行数据传输。其中,该连接1中发送侧的源服务器可以基于H个逻辑路径,确定在连接1所包括的多条物理路径中进行传输的目标物理路径,在目标物理路径中,将数据包通过网络侧(也就是路径交换机),发送至连接1中接收侧的目标服务器。例如,假定源服务器确定基于逻辑路径2进行数据发送,则源服务器可以基于该逻辑路径2发送至网络侧,目标服务器可以基于该逻辑路径2从网络侧接收数据包。

具体的,请参见图2,图2是本申请实施例提供的一种多路径传输场景示意图。如图2所示,源服务器可以获取f个链路类型,f为正整数,一个链路类型是指在一次数据跳转中所经过的链路的类型,也就是说,一次完整的数据发送过程所包括的各个设备之间的路径分段,也就是说,一个链路类型关联两种类型的设备,该设备可以是服务器或交换机,或者说网络拓扑中相邻两个层级之间可以组成一个链路类型(或者说是路径分段),可以认为任意一个完整的数据发送过程中均可以由f个链路类型所对应的物理链路组成。如图2中所示,假定该网络拓扑中可以包括网络拓扑层级1、网络拓扑层级2、网络拓扑层级3及网络拓扑层级4等,也就是说,一个完整的数据发送过程可以经过“服务器—第一类型交换机—第二类型交换机—服务器”,可以将该数据发送过程所经过的设备组成的路径称为链路跳转路径,可以认为如图2所示的网络拓扑,网络拓扑层级1包括服务器2011,网络拓扑层级2包括第一类型交换机2012,网络拓扑层级3包括第二类型交换机2013,网络拓扑层级4包括服务器2014等。其中,可以认为链路跳转路径是指在一次数据传输过程中,所经过的网络拓扑层级的跳转路径,一个链路跳转路径可以包括多个链路类型,一次数据传输过程可以包括多次数据跳转。如图2所示,网络拓扑层级1与网络拓扑层级2之间组成一个链路类型(可以记作链路类型1),网络拓扑层级2与网络拓扑层级3之间组成一个链路类型(可以记作链路类型2)等。

具体的,一种可能的场景下,源服务器可以获取该f个链路类型,获取该f个链路类型分别对应的独立链路数量,如链路类型1对应的独立链路数量1、链路类型2对应的独立链路数量2、及链路类型f对应的独立链路数量f等。进一步地,可以基于f个链路类型分别对应的独立链路数量,对f个链路类型分别进行H次编码,得到f个链路类型分别对应的H个分段码值,H为正整数。举例来说,基于独立链路数量1对链路类型1进行H次编码,得到链路类型1对应的H个分段码值2021,如分段码值11、分段码值12及分段码值1H等;基于独立链路数量2对链路类型2进行H次编码,得到链路类型2对应的H个分段码值2022,如分段码值21、分段码值22及分段码值2H等;…;基于独立链路数量f对链路类型f进行H次编码,得到链路类型f对应的H个分段码值202f,如分段码值f1、分段码值f2及分段码值fH等。进一步地,可以基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成H个路径编码203,如由分段码值11、分段码值21及分段码值f1组成路径编码1;由分段码值12、分段码值22及分段码值f2组成路径编码2;…;由分段码值1H、分段码值2H及分段码值fH组成路径编码H等。进一步地,源服务器可以基于该H个路径编码203,将目标数据包发送至目标服务器204。

通过以上过程,使得可以在进行数据包的发送时,源服务器可以基于f个链路类型分别对应的独立链路数量,对f个链路类型进行编码,以得到f个链路类型分别对应的H个分段码值,可以将f个链路类型分别对应的H个分段码值组成H个路径编码,其中,该H个路径编码可以认为是由源服务器至目标服务器的H个逻辑路径,该H个逻辑路径可以认为是独立的路径。使得源服务器在进行数据包的发送时,可以直接基于该H个路径编码进行数据包发送,多路径(即H个逻辑路径)相互独立,可以最大化利用多路径,从而提高链路的可靠性及可用性。

可以理解的是,随着科技的发展,本申请实施例中所提及的服务器或交换机可以是一种电子设备,包括但不限于手机、平板电脑、台式电脑、笔记本电脑、掌上电脑、车载设备、增强现实/虚拟现实(Augmented Reality/Virtual Reality,AR/VR)设备、头盔显示器、智能电视、可穿戴设备、智能音箱、数码相机、摄像头及其他具备网络接入能力的移动互联网设备(mobile internet device,MID),或者火车、轮船、飞行等场景下的终端设备等。其中,以上所提及的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、车路协同、内容分发网络(Content DeliveryNetwork,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。

可选的,本申请实施例中所涉及的数据可以存储在计算机设备中,或者可以基于云存储技术或区块链网络对该数据进行存储,在此不做限制。

进一步地,请参见图3,图3是本申请实施例提供的一种多路径传输的方法流程图。如图3所示,该源服务器可以是任意一个服务器,目标服务器可以是除源服务器之外的任意一个服务器。在图3所描述的方法实施例中,该多路径传输过程包括如下步骤:

步骤S301,源服务器获取f个链路类型。

在本申请实施例中,源服务器可以获取f个链路类型,f为正整数,该链路类型也可以认为是路径分段,一个链路类型是指在一次数据跳转中所经过的链路的类型。具体的,可以获取链路跳转路径,获取链路跳转路径所指示的网络拓扑层级的数量,确定链路类型数量,该链路类型数量为f。具体的,可以基于链路跳转路径所指示的网络拓扑层级,对该链路跳转路径进行分段处理,得到f个链路类型。举例来说,如图1a所示的网络拓扑架构,该链路跳转路径为“服务器—接入层—汇聚层—核心层—汇聚层—接入层—服务器”,基于该链路跳转路径所指示的网络拓扑层级,对该链路跳转路径进行分段处理,得到f个链路类型,其中,该f个链路类型可以包括由“服务器—接入层”组成的本地上行链路(Local Uplink,LU)类型、由“接入层—汇聚层”组成的接入上行链路(Edge Uplink,EU)类型、由“汇聚层—核心层”组成的汇聚上行链路(Aggregation Uplink,AU)类型、由“核心层—汇聚层”组成的核心下行链路(Core Downlink,CD)类型、由“汇聚层—接入层”组成的汇聚下行链路(Aggregation Downlink,AD)类型、及由“接入层—服务器”组成的接入下行链路(EdgeDownlink,ED)类型等。其中,任意两个服务器之间在进行数据交互时,在各个链路类型中可以对应多个物理链路。举例来说,如图1a所示的网络拓扑架构中,服务器0与服务器15之间在进行数据交互时,LU类型对应的物理链路可以包括“服务器0—接入层交换机12”及“服务器0—接入层交换机13”等;假定服务器0通过接入层交换机12将目标数据包发送至服务器15,该EU类型对应的物理链路可以包括“接入层交换机12—汇聚层交换机8”、“接入层交换机12—汇聚层交换机9”、“接入层交换机12—汇聚层交换机10”及“接入层交换机12—汇聚层交换机11”等。

其中,一条物理路径可以包括多个物理链路,每个物理链路都可以对应至一个链路类型,举例来说,以服务器0至服务器15的一条物理路径“服务器0—>接入层交换机12—>汇聚层交换机8—>核心层交换机0—>汇聚层交换机32—>接入层交换机38—>服务器15”为例,包括LU类型对应的物理链路“服务器0—>接入层交换机12”、EU类型对应的物理链路“接入层交换机12—>汇聚层交换机8”、AU类型对应的物理链路“汇聚层交换机8—>核心层交换机0”、CD类型对应的物理链路“核心层交换机0—>汇聚层交换机32”、AD类型对应的物理链路“汇聚层交换机32—>接入层交换机38”,以及ED类型对应的物理链路“接入层交换机38—>服务器15”等。

步骤S302,获取f个链路类型分别对应的独立链路数量,基于独立链路数量对f个链路类型分别进行H次编码,得到f个链路类型分别对应的H个分段码值。

在本申请实施例中,源服务器可以获取f个链路类型分别对应的独立链路数量,基于f个链路类型分别对应的独立链路数量,对f个链路类型分别进行H次编码,得到f个链路类型分别对应的H个分段码值。可选的,可以采用C

举例来说,如图1a所示的网络拓扑架构,该f个链路类型可以表示为[C

其中,在该网络拓扑架构中,交换机组成高度规则的层次排列,任意一对服务器之间都具有多条物理路径,而这些物理路径的长度(或者说跳数)可以认为是相同的,相当于是由f个链路类型所确定的,如图1a中所示的网络拓扑架构,从源服务器出发到目标服务器,其中,从源服务器的接入层交换机出发,到目标服务器的接入层交换机,可以认为是包括多条区域物理路径的,其中,从该多条区域物理路径中可以获取到多条相互独立(即无重叠)的区域物理路径。的可选的,以图1a所示的服务器的数量及各种类型的交换机的数量来说,假定源服务器为服务器0,目标服务器为服务器15,以源服务器0的接入层交换机12至目标服务器15的接入层交换机39为例,可以认为接入层交换机12与接入层交换机39之间可以获取到4条相互独立的区域物理路径,如下所示:

①接入层交换机12—>汇聚层交换机8—>核心层交换机0/1—>汇聚层交换机32—>接入层交换机39;

②接入层交换机12—>汇聚层交换机9—>核心层交换机2/3—>汇聚层交换机33—>接入层交换机39;

③接入层交换机12—>汇聚层交换机10—>核心层交换机4/5—>汇聚层交换机34—>接入层交换机39;

④接入层交换机12—>汇聚层交换机11—>核心层交换机6/7—>汇聚层交换机35—>接入层交换机39。

其中,服务器与接入层交换机之间可以存在N个独立链路,N为正整数。如图1a所示,服务器和接入层交换机之间存在两条接入链路,也就是说,图1a中N为2,相当于服务器对应的独立链路数量为2,从源服务器的接入层交换机到目标服务器的接入层交换机来说,可以认为完全无冲重叠的区域物理路径的数量为4。其中,可以将源服务器进行发送的交换机称为源交换机,将目标服务器进行接收的交换机称为目标交换机,也就是说,一条物理路径可以为“源服务器—>源接入层交换机—>源汇聚层交换机—>核心层交换机—>目标汇聚层交换机—>目标接入层交换机—>目标服务器”等,后续不再进行重复说明。

具体的,可以获取f个链路类型分别对应的独立链路数量,该独立链路数量可以认为对应的链路类型的一个发送侧设备所关联到下一个网络拓扑层级的接入链路(即物理链路)的数量,例如,第i个链路类型的独立链路数量为第i个链路类型的一个发送侧设备所关联到下一个网络拓扑层级的接入链路的数量。参见图4,图4是本申请实施例提供的一种物理路径示意图,如图4所示,各个服务器所对应的独立链路数量为2,也就是说,LU类型的发送侧设备为服务器,该LU类型所对应的独立链路数量为2,可以采用进行C

进一步地,可以基于f个链路类型分别对应的独立链路数量,对f个链路类型分别进行H次编码,得到f个链路类型分别对应的H个分段码值。可选的,可以获取业务对象(如业务人员等)所提交的编码次数,即H的值,也就是将H的值确定为该编码次数;或者,可以获取一个传输单位中所包括的汇聚层交换机的数量,基于该汇聚层交换机的数量确定编码次数,即将H的值确定为该编码次数,例如,可以将H(即编码次数)确定为小于或等于该汇聚层交换机的数量的正整数;或者,可以获取服务器的接入链路的数量,将该服务器的接入链路的数量的倍数,确定为该编码次数,可选的,可以将该服务器的接入链路的数量的倍数中的偶数,确定为该编码次数;或者可以从服务器的接入链路的数量的倍数中,获取小于或等于一个传输单位中所包括的汇聚层交换机的数量的最大倍数,将该最大倍数确定为编码次数等,在此不做限制。

一种编码方式(1)下,以第i个链路类型为例,获取到第i个链路类型对应的独立链路数量。若第i个链路类型对应的独立链路数量大于或等于H,则采用p至q对第i个链路类型进行H次编码,得到第i个链路类型所对应的H个分段码值;i为小于或等于f的正整数;p与q的差值为H-1,且q大于p。其中,可以认为对该第i个链路类型进行连续编码,将p至q依次确定为该第i个链路类型所对应的H个分段码值,例如,C

若第i个链路类型对应的独立链路数量小于H,则采用第i个链路类型对应的独立链路数量,对第i个链路类型进行循环编码,得到第i个链路类型所对应的H个分段码值。具体的,可以基于该第i个链路类型对应的独立链路数量确定基础码值,对该基础码值进行循环,得到第i个链路类型所对应的H个分段码值。例如,假定第i个链路类型对应的独立链路数量为2,则假定确定基础码值为“0,1”,对基础码值“0,1”进行循环编码,得到第i个链路类型所对应的H个分段码值,例如,C

举例来说,LU类型对应的独立链路为N,可以采用0至(N-1)对LU类型进行H次编码,得到LU类型对应的H个分段码值。以图1a或图4中所示的网络拓扑架构为例,N为2,假定H为4,N小于H,可以获取LU类型的基础码值,假定为“0,1”,采用该基础码值“0,1”对LU类型进行H次编码,即进行交织覆盖编码,得到LU类型的H个分段码值,即“C

一种编码方式(2)下,以第i个链路类型为例,获取到第i个链路类型对应的独立链路数量。基于第i个链路类型对应的独立链路数量,对i个链路类型进行H次编码,得到第i个链路类型所对应的H个初始分段码值;i为小于或等于f的正整数。具体的,若第i个链路类型对应的独立链路数量大于或等于H,则采用p至q对第i个链路类型进行H次编码,得到第i个链路类型所对应的H个初始分段码值;i为小于或等于f的正整数;p与q的差值为H-1,且q大于p。若第i个链路类型对应的独立链路数量小于H,则采用第i个链路类型对应的独立链路数量,对第i个链路类型进行循环编码,得到第i个链路类型所对应的H个初始分段码值。具体可以参见编码方式(1)。其中,可以认为该f个链路类型分别对应的H个初始分段码值组成H个初始路径编码。进一步地,可以获取第i个链路类型所对应的编码偏移数据,基于第i个链路类型所对应的编码偏移数据,对第i个链路类型对应的H个初始分段码值分别进行编码偏移处理,得到第i个链路类型所对应的H个分段码值。例如,将该第i个链路类型所对应的编码偏移数据记作D

步骤S303,基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成H个路径编码。

在本申请实施例中,可以基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成H个路径编码,也就是说,将f个链路类型分别对应的第j个分段码值,组成第j个路径编码,同理,得到H个路径编码。可选的,可以获取H个编码标识,基于H次编码的编码顺序,将H个编码标识及f个链路类型分别对应的H个分段码值组成H个路径编码。

具体的,如图1a或图4所示的网络拓扑架构,一种编码方式(1)下,该H个路径编码可以为:

[编码标识=0,C

[编码标识=1,C

[编码标识=2,C

[编码标识=3,C

一种编码方式(2)下,该H个路径编码可以为:

[编码标识=0,C

[编码标识=1,C

[编码标识=2,C

[编码标识=3,C

通过以上过程,可以看出,各个不同的路径编码所对应的逻辑路径之间是相互独立的,不同的路径编码所对应的逻辑路径之间相当于无重叠,可以利用数据中心网络等价多路径的特点,充分利用多路径的带宽,物理上,在两条接入链路的网络最多可以提高100%的带宽,在N条接入链路的网络最多可以提高(N-1)*100%的带宽,在生产运作中的拥塞场景,多条独立的逻辑路径可以大幅提高连接的可用带宽,平均增幅基于可以达到100%以上。同时,由于逻辑路径的相互独立,对于服务器的接入链路的故障,单链路的故障最多可能导致(H/N)条路径失效,对于非服务器的接入链路的故障,单链路的故障最多可能导致一条路径失效,可以大幅度提高数据传输的可靠性及可用性。

步骤S304,基于H个路径编码,将目标数据包发送至目标服务器。

在本申请实施例中,可以从H个路径编码中获取目标路径编码,具体的,可以对H个路径编码进行路径调度,得到目标路径编码。基于该目标路径编码,将该目标数据包发送至目标服务器。其中,该路径调度可以包括但不限于拥塞调度、均等调度(通过调度,使得每个路径编码所对应的独立数据路径发送一样数据量的数据包)或随机调度等。

其中,可以参见图4所示,图4是本申请实施例提供的一种独立路径示意图,如图4所示,该服务器0至服务器15之间可以包括多条相互独立的物理路径,该多条物理路径可以认为是与H个路径编码分别对应的逻辑路径相对应。例如,以LU类型为例,C

①图4中的黑色实线所指示的路径,该物理路径可以为服务器0—>接入层换机12—>汇聚层交换机8—>核心层交换机0/1—>汇聚层交换机32—>接入层交换机38—>服务器15;

②如图4中的黑色短虚线所指示的路径,该物理路径可以为服务器0—>接入层交换机13—>汇聚层交换机9—>核心层交换机2/3—>汇聚层交换机33—>接入层交换机39—>服务器15;

③如图4中的黑色长虚线所指示的路径,该物理路径可以为服务器0—>接入层交换机12—>汇聚层交换机10—>核心层交换机4/5—>汇聚层交换机34—>接入层交换机38—>服务器15;

④如图4中的黑色点线所指示的路径,该物理路径可以为服务器0—>接入层交换机13—>汇聚层交换机11—>核心层交换机6/7—>汇聚层交换机35—>接入层交换机39—>服务器15。

参见图5,图5是本申请实施例提供的另一种物理路径示意图。如图5所示,假定服务器的独立链路数量为1,则该服务器0至服务器15之间可以包括多条相互独立的物理路径,该多条物理路径可以如下所示:

①图5中的黑色实线所指示的路径,该物理路径可以为服务器0—>接入层换机12—>汇聚层交换机8—>核心层交换机0/1—>汇聚层交换机32—>接入层交换机39—>服务器15;

②如图5中的黑色短虚线所指示的路径,该物理路径可以为服务器0—>接入层交换机12—>汇聚层交换机9—>核心层交换机2/3—>汇聚层交换机33—>接入层交换机39—>服务器15;

③如图5中的黑色长虚线所指示的路径,该物理路径可以为服务器0—>接入层交换机12—>汇聚层交换机10—>核心层交换机4/5—>汇聚层交换机34—>接入层交换机39—>服务器15;

④如图5中的黑色点线所指示的路径,该物理路径可以为服务器0—>接入层交换机12—>汇聚层交换机11—>核心层交换机6/7—>汇聚层交换机35—>接入层交换机39—>服务器15。

具体的,源服务器可以获取初始数据包,对H个路径编码进行路径调度,得到目标路径编码,基于目标路径编码将目标数据包发送至目标服务器。具体的,可以基于目标路径编码生成路径信息字段。将路径信息字段添加至初始数据包的包头,生成目标数据包。从目标路径编码中获取本地上行链路(即本地上行链路类型,LU类型)的分段码值,基于本地上行链路的分段码值,确定本地上行链路所对应的独立链路,也就是从本地上行链路所对应的接入链路中,确定独立链路;本地上行链路是指由源服务器至接入层交换机(即源接入层交换机)的链路类型。例如,假定获取到目标路径编码为路径编码2,从该路径编码2中获取本地上行链路(或者称为本地上行链路类型)的分段码值为0(即C

可选的,在对H个路径编码进行路径调度,得到目标路径编码时,向轮询数据路径请求发送数据包;H个路径编码分别对应的独立数据路径包括轮询数据路径;轮询数据路径是指当前轮询到的数据路径(即逻辑路径)。举例来说,将该轮询数据路径记作数据路径k,k为小于或等于H的正整数,可以获取该轮询数据路径的空闲带宽,若该空闲带宽大于或等于数据传输阈值,则确定该轮询数据路径满足带宽传输条件;若该空闲带宽小于数据传输阈值,则确定该轮询数据路径不满足带宽传输条件。或者,可以获取该轮询数据路径的可用带宽,若该可用带宽大于初始数据包的数据包占用空间,则确定该轮询数据路径满足带宽传输条件;若该可用带宽小于或等于初始数据包的数据包占用空间,则确定该轮询数据路径不满足带宽传输条件。或者,H个路径编码分别对应一个路径控制模块,该路径控制模块用于对对应的路径编码进行路径调度,若轮询数据路径对应的路径控制模块确定数据发送许可,则确定该轮询数据路径满足带宽传输条件;若轮询数据路径对应的路径控制模块拒绝数据发送,则确定该轮询数据路径不满足带宽传输条件等。或者,可以获取H个路径编码分别对应的独立数据路径所传输的历史数据包的历史传输数量,若该轮询数据路径所传输的历史传输数量小于H个历史传输数量中的最大值,则可以确定该轮询数据路径满足带宽传输条件;若该轮询数据路径所传输的历史传输数量为H个历史传输数量中的最大值,则可以确定该轮询数据路径不满足带宽传输条件等,在此不做限制。

进一步地,若轮询数据路径满足带宽传输条件,则将轮询数据路径所对应的路径编码确定为目标路径编码,将轮询数据路径的下一个独立数据路径,确定为轮询数据路径;若轮询数据路径不满足带宽传输条件,则将轮询数据路径的下一个独立数据路径,确定为轮询数据路径,返回执行向轮询数据路径请求发送数据包的过程。例如,轮询数据路径为数据路径k,若轮询数据路径满足带宽传输条件,则将数据路径k所对应的路径编码确定为目标路径编码,基于该目标路径编码将目标数据包发送至目标服务器,并将轮询数据路径切换为下一个独立数据路径,即执行k=(k+1)%H,用于下一轮的数据包发送过程。若轮询数据路径不满足带宽传输条件,则将轮询数据路径切换为下一个独立数据路径,即执行k=(k+1)%H,重新向轮询数据路径请求发送数据包。

举例来说,请参见图6,图6是本申请实施例提供的一种路径调度场景示意图,如图6所示,存在H个路径编码,假定H为4,H个路径编码分别对应独立数据路径1(即逻辑路径1)、独立数据路径2(即逻辑路径2)、独立数据路径3(即逻辑路径3)及独立数据路径4(即逻辑路径4)。可以从H个路径编码中确定到目标路径编码,并基于目标路径编码中本地上行链路对应的分段码值,确定本地上行链路所对应的独立链路,例如,假定确定逻辑路径2所对应的路径编码为目标路径编码,则将该接入链路2确定为本地上行链路所对应的独立链路。可选的,该循环路径调度可以如图6中的虚线所示,“逻辑路径1—>逻辑路径2—>逻辑路径3—>逻辑路径4—>逻辑路径1”等,在此不做限制。

通过以上过程,源服务器可以把发送负荷均衡地分散到多条独立的逻辑路径(即独立数据路径)中,而逻辑路径中的实际负载一种方式下可以由路径控制模块进行控制,或者说,各个逻辑路径中的实际负载可以由路径调度过程进行控制,使得可以更好地利用网络中的带宽,实现负载均衡,提高数据发送的效率及路径的可用性。例如,逻辑路径1至逻辑路径4分别对应的理论速率为3Gbps、2Gbps、4Gbps及1Gbps,那么这四条逻辑路径实际的发送带宽就是对应的逻辑路径的理论速率,而发送端的总带宽就是这几条逻辑路径的总发送带宽10Gbps,可以大幅提高路径的可用带宽。

其中,在基于目标路径编码生成路径信息字段时,可以获取源服务器所对应的传输跳数,将目标路径编码与源服务器所对应的传输跳数,生成路径信息字段。或者,由于该初始数据包将由该源服务器确定目标路径编码,并生成目标数据包,将该目标数据包发送至源接入层交换机,因此,可以认为对后续的数据传输中,该本地上行链路(即源服务器所对应的链路类型)的分段码值不会被用到,可以从目标路径编码中获取目标编码标识,以及一个或多个路径交换机在f个链路类型中所指向的链路类型的分段码值;一个或多个路径交换机包括接入层交换机。如图1a或图4所示的网络拓扑架构中,一个或多个路径交换机包括源接入层交换机、源汇聚层交换机、核心层交换机、目标汇聚层交换机及目标接入层交换机,其中,源接入层交换机所指向的链路类型为EU类型,源汇聚层交换机所指向的链路类型为AU类型,核心层交换机所指向的链路类型为CD类型,目标汇聚层交换机所指向的链路类型为AD类型,以及目标接入层交换机所指向的链路类型为ED类型。获取源服务器所对应的传输跳数,将目标编码标识、一个或多个路径交换机在f个链路类型中所指向的链路类型的分段码值,以及源服务器所对应的传输跳数,生成路径信息字段,在一定程度上减少数据包的数据量。

可选的,该路径信息字段可以包括传输跳数字段及编码字段,可选的,该路径信息字段还可以包括编码标识字段。其中,该编码字段是根据该路径信息字段所指示的目标路径编码所确定的,也就是在上述路径信息字段的生成过程中,由目标路径编码所得到的字段;或者由目标编码标识,以及一个或多个路径交换机在f个链路类型中所指向的链路类型的分段码值所得到的字段等。举例来说,请参见图7,图7是本申请实施例提供的一种路径信息字段示意图。如图7所示,以图1a或图4等所示的网络拓扑架构,该路径信息字段可以包括编码标识字段701,传输跳数字段702、EU类型字段703、AU类型字段704、CD类型字段705、AD类型字段706及ED类型字段707。其中,该编码标识字段701用于表示目标路径编码的编码标识,传输跳数字段702用于表示该目标数据包当前所经过的数据传输的跳数,例如,可以将该传输跳数字段702的值进行初始化,如置为0,用于表示该目标数据包还未进行传输;该EU类型字段703、AU类型字段704、CD类型字段705、AD类型字段706及ED类型字段707组成编码字段。其中,该路径信息字段中所包括的各个字段的宽度可以变化,例如,图7中,各个字段(如编码标识字段701,传输跳数字段702及编码字段等)的宽度可以是4比特(bit),也可以是8bit或16bit等,在此不做限制。

进一步地,该源服务器还可以对该H个路径编码分别对应的独立数据路径进行检查维护,该独立数据路径可以认为是一种逻辑路径,具体可以参见图8,图8是本申请实施例提供的一种路径检查流程示意图。如图8所示,该过程可以包括如下过程:

步骤S801,源服务器以心跳检测周期为基准,在H个路径编码分别对应的独立数据路径中,向目标服务器发送心跳包。

在本申请实施例中,源服务器可以周期性地在每个路径编码所对应的独立数据路径中,向目标服务器发送心跳包(Heart-beat packet),若目标服务器接收到心跳包,则会向源服务器发送心跳确认数据(Heart-beat packet Acknowledge character,HACK)。其中,确认数据为Acknowledge character,简称为ACK。其中,若源服务器接收到该HACK,则确定H个路径编码正常,也就是说,可以认为该H个路径编码处于路径正常状态,或者说H个路径编码为正常路径编码。其中,由于源服务器向H个路径编码发送心跳包时,知道心跳包是基于哪个路径编码所发送的,因此,若接收到该心跳包所对应的HACK,则可以确定发送该心跳包的路径编码是正常路径编码。进一步,可以参见步骤S802。举例来说,假定基于第j个路径编码所对应的独立数据路径,向目标服务器发送心跳包,若接收到目标服务器所发送的针对第j个独立数据路径所对应的心跳包的HACK,则确定第j个路径编码为正常路径编码。

步骤S802,若超出心跳确认时间阈值,源服务器未获取到目标服务器所发送的心跳确认数据,则将H个独立数据路径的路径状态更新为路径检查状态。

在本申请实施例中,若超出心跳确认时间阈值,源服务器未获取到目标服务器所发送的心跳确认数据,则将H个独立数据路径的路径状态更新为路径检查状态。具体的,源服务器可以获取该超出心跳确认时间阈值的心跳包所对应的待检测数据路径,将该待检测数据路径的路径状态更新为路径检查状态,H个独立数据路径包括该待检测数据路径。其中,路径检查状态是指该待检测数据路径存在发生故障的可能性,但并不一定存在故障,需要进一步进行检查。举例来说,假定源服务器基于第j个路径编码所对应的独立数据路径,向目标服务器发送心跳包,若超出心跳确认时间阈值,未接收到目标服务器所发送的针对第j个独立数据路径所对应的心跳包的HACK,则将该第j个独立数据路径的路径状态更新为路径检查状态,此时,该第j个独立数据路径为待检测路径。

步骤S803,在路径检查状态中,对H个独立数据路径进行检测处理。

在本申请实施例中,在路径检查状态中,源服务器可以对待检测数据路径进行检测处理,若检测到该待检测数据路径异常,则确定该待检测数据路径为异常数据路径,即H个独立数据路径中存在异常数据路径。举例来说,假定待检测数据路径为第j个独立数据路径,源服务器可以基于第j个独立数据路径向目标服务器发送检查包(Check packet);j为小于或等于H的正整数。其中,若目标服务器接收到该检查包,则目标服务器会向源服务器发送针对该检查包的检查确认数据(Check packet Acknowledge character,CACK),具体的,目标服务器会在所有的独立数据路径中均回复一个CACK,因此,在源服务器接收到目标服务器针对检查包的CACK时,可以认为该目标服务器可以基于第j个独立数据路径接收到数据,即该第j个独立数据路径的正向数据路径是正常的。具体的,若源服务器接收到目标服务器所发送的检查确认数据,则表示目标服务器接收到该源服务器所发送的检查包,确定第j个独立数据路径的正向数据路径正常,等待第j个独立数据路径的反向数据路径更新,在第j个独立数据路径更新后的反向数据路径正常时,确定第j个独立数据路径为正常数据路径。若源服务器在经过检查确认时间阈值后,未接收到目标服务器所发送的心跳确认数据,则表示目标服务器未接收到源服务器基于该第j个独立数据路径所发送的检查包,该第j个独立数据路径的正向数据路径异常,可以将第j个独立数据路径的路径状态更新为路径探测状态,确定第j个独立数据路径为异常数据路径;路径探测状态用于指示第j个独立数据路径所对应的路径交换机中存在故障。

步骤S804,若H个独立数据路径中存在异常数据路径,则对异常数据路径进行更新。

在本申请实施例中,若H个独立数据路径中存在异常数据路径,则获取异常数据路径所对应的异常路径编码;异常数据路径的路径状态为路径探测状态。进一步地,可以对该异常路径编码所包括的f个分段码值分别进行更新,得到f个更新路径编码,基于f个更新路径编码向目标服务器发送探测包(Probe packet),若针对f个更新路径编码分别对应的探测包的探测确认数据(Probe packet Acknowledge character,PACK),源服务器均未接收到,则确定异常路径编码为无效编码。可选的,源服务器可以向管理设备发送编码异常消息,该编码异常消息可以包括该异常路径编码,该管理设备接收到编码异常消息,可以基于该编码异常消息更改五元组中的源端口号或目标端口号等,重启探测过程,即向源服务器发送路径探测消息,该路径探测消息包括异常数据路径及更新后的源端口号或目标端口号等,源服务器可以基于更新后的源端口号或目标端口号,对异常数据路径进行重新探测。若接收到目标服务器所发送的PACK,则将H个路径编码中的异常路径编码替换为该PACK所对应的更新路径编码,得到更新后的H个路径编码。可选的,对f个链路类型在该异常数据路径中分别对应的分段码值进行探测的过程,可以是从目标服务器向源服务器的方向依次进行探测,也可以是从源服务器向目标服务器的方向依次进行探测。可选的,可以不对f个链路类型中,独立链路数量为1,且非集群接入的链路类型进行探测。其中,核心层是以平面为单位进行交互,相当于汇聚层到核心层是对应到核心层的平面中,该平面中可以包括至少一个核心层交换机,此时,可以认为汇聚层到核心层(即AU类型)的独立链路数量为1,但是集群接入。

具体的,可以获取第i个链路类型在异常路径编码中所对应的分段码值的更新分段码值,将第i个链路类型在异常路径编码中所对应的分段码值更新为更新分段码值,得到异常数据路径所对应的更新路径编码i;i为小于或等于f的正整数。例如,可以在第i个链路类型在异常路径编码中所对应的分段码值中增加探测偏移量,得到更新分段码值。在更新路径编码i所对应的更新数据路径i中,源服务器向目标服务器发送探测包。若接收到目标服务器针对探测包的探测确认数据,则将H个路径编码中的异常路径编码替换为更新数据路径i,得到更新后的H个路径编码,将异常数据路径的路径状态更新为路径正常状态。若在经过探测确认时间阈值后,源服务器未接收到目标服务器针对探测包的探测确认数据,则对第(i+1)个链路类型进行探测,此时,i的初始值为1,或者,对第(i-1)个链路类型进行探测,此时,i的初始值为f。当对f个链路类型在异常路径编码中分别对应的链路类型全部探测完成,且异常数据路径处于路径探测状态时,确定异常路径编码为无效编码。

举例来说,假定获取到异常编码路径为[编码标识=1,C

1)更改第5个分段码值,得到异常数据路径所对应的更新路径编码5[编码标识=1,C

2)更改第3个分段码值,得到异常数据路径所对应的更新路径编码3[编码标识=1,C

3)更改第2个分段码值,得到异常数据路径所对应的更新路径编码2[编码标识=1,C

4)更改第1个分段码值,得到异常数据路径所对应的更新路径编码1[编码标识=1,C

5)此时,对该异常路径编码的探测完成,可以认为异常路径编码为无效编码,可以向管理设备发送编码异常消息等。

其中,将探测偏移量设为1,可以认为是为了在路径交换机上循环选择下一个候选出端口。

通过以上过程,可以大幅提高路径故障的恢复速度。具体的,在遇到路径异常时,可以通过改变异常路径编码,以快速有效地绕过异常的路径交换机,相当于对各个链路类型进行探测,即可以绕过单个交换机故障,同时,只要网络中存在可用的物理路径,都可以较为快速地查找到该可用的物理路径,以保持连接不失效,从而提高数据传输的可靠性及可用性。

在本申请实施例中,源服务器可以获取f个链路类型;f为正整数;一个链路类型是指在一次数据跳转中所经过的链路的类型;获取f个链路类型分别对应的独立链路数量,基于独立链路数量对f个链路类型分别进行H次编码,得到f个链路类型分别对应的H个分段码值;H为正整数;基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成H个路径编码;每个路径编码包括f个链路类型分别对应的一个分段码值;基于H个路径编码,将目标数据包发送至目标服务器。通过以上过程,可以确定f个链路类型,也就是说,数据包在节点对(即源服务器与目标服务器)之间进行一次完整发送时,所经过的链路的类型,通过这些链路类型所对应的独立链路数量,对f个链路类型分别进行编码,从而可以得到代表在源服务器与目标服务器之间进行数据包传输的逻辑路径的路径编码,可以相当于是源服务器与目标服务器之间的实际的物理路径的指代,由于该编码是基于独立链路数量的,使得得到的路径编码之间是相互独立的,不同的路径编码之间相当于是无重叠的,使得在进行数据包传输时,可以直接基于已有的路径编码进行传输,从而达到最大程度的带宽利用和传输的可靠性。

进一步地,可以参见图9,图9是本申请实施例提供的一种交换机数据传输流程示意图,如图9所示,该路径交换机可以是任意一个接收到目标数据包的交换机,如图1a所示的网络拓扑架构中,该路径交换机可以是源服务器侧的接入层交换机(或者称为源接入层交换机)、源服务器侧的汇聚层交换机(或者称为源汇聚层交换机)、核心层交换机、目标服务器侧的汇聚层交换机(或者称为目标汇聚层交换机),或目标服务器侧的接入层交换机(或者称为目标接入层交换机)中的任意一种交换机。该过程可以包括如下步骤:

步骤S901,路径交换机获取目标数据包。

在本申请实施例中,路径交换机获取该目标数据包,例如,若该路径交换机为源接入层交换机,则该路径交换机获取源服务器所发送的目标数据包;若路径交换机为源汇聚层交换机,则该路径交换机获取源接入层交换机所发送的目标数据包;若路径交换机为核心层交换机,则该路径交换机获取源汇聚层交换机所发送的目标数据包;若路径交换机为目标汇聚层交换机,则该路径交换机获取核心层交换机所发送的目标数据包;若路径交换机为目标接入层交换机,则该路径交换机获取目标汇聚层交换机所发送的目标数据包。其中,目标数据包是由源服务器基于H个路径编码所发送的;H个路径编码是由源服务器基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成的;f个链路类型分别对应的H个分段码值是由源服务器基于f个链路类型分别对应的独立链路数量,对f个链路类型分别进行H次编码所得到的;一个链路类型是指在一次数据跳转中所经过的链路的类型;f为正整数;H为正整数。

步骤S902,基于目标数据包所指示的目标路径编码,将目标数据包发送至目标服务器。

在本申请实施例中,路径交换机可以从目标数据包中获取路径信息字段及五元组,基于路径信息字段及五元组,从路径交换机所关联的候选出端口中确定目标出端口,该路径信息字段用于指示目标路径编码。具体的,路径信息字段包括传输跳数字段及编码字段;编码字段的值是根据路径信息字段所指示的目标路径编码确定的。路径交换机可以对路径信息字段中的传输跳数字段的值进行更新,得到更新跳数。也就是说,对该传输跳数字段的值hop进行更新,以表示该目标数据包经过了一次数据跳转,即hop=hop+1。例如,以源接入层交换机为例,该接入层交换机接收到的传输跳数字段的值为0,对该传输跳数字段的值进行更新,使得该传输跳数字段的值更新为1。进一步地,可以获取五元组的第一哈希,获取更新跳数在编码字段中对应的目标分段码值,两者的执行顺序在此不做限制。具体的,可以获取更新跳数在编码字段中对应的目标分段码值,例如,假定该编码字段为“C

进一步地,基于目标出端口,将目标数据包发送至目标服务器。具体的,是基于目标出端口,将目标数据包发送至路径交换机的下一个网络拓扑层级中的设备,也就是说,该路径交换机至该目标出端口所指示的下一个网络拓扑层级中的设备相当于一个物理链路。例如,假定该路径交换机为源接入层交换机,则可以基于目标出端口,将目标数据包发送至源汇聚层交换机;假定该路径交换机为源汇聚层交换机,源汇聚层交换机接收到目标数据包,可以基于图9中的各个步骤,确定源汇聚层交换机对应的目标出端口,基于源汇聚层交换机对应的目标出端口,将目标数据包发送至核心层交换机;…;假定该路径交换机为目标接入层交换机,目标接入层交换机接收到目标汇聚层交换机所发送的目标数据包,可以基于图9中的各个步骤,确定目标接入层交换机对应的目标出端口,基于目标接入层交换机对应的目标出端口,将目标数据包发送至目标服务器。如图4中所示,假定源接入层交换机(即接入层交换机12)维护候选出端口列表V,V=[8,9,10,11],假定确定目标出端口为8,则可以基于目标出端口8,将目标数据包发送至汇聚层交换机8中,其中,接入层交换机12至汇聚层交换机8之间组成一个物理链路。

其中,由于不同的数据流具有不同的五元组,所以即使不同的数据流所对应的路径编码一样时,经过五元组的第一哈希偏移后,也可以分散在不同的候选出端口上,形成良好的负载均衡效果。其中,一个传输单位中,同一个网络拓扑层级中的路径交换机所使用的哈希函数相同,所使用的哈希种子相同,例如,传输单位0中的4个接入层交换机需要使用相同的哈希函数和哈希种子,传输单位0中的4个汇聚层交换机需要使用相同的哈希函数和哈希种子等。

进一步地,源服务器与目标服务器是相对的,目标服务器也可以通过H个路径编码向源服务器发送数据包或ACK包。具体的,目标服务器接收到目标数据包时,可以从该目标数据包中获取目标编码标识,基于该目标编码标识获取确认路径编码,基于该确认路径编码所对应的独立数据路径,向源服务器发送针对目标数据包的数据确认包,该数据确认包的发送过程与上述目标数据包的发送过程相同。可选的,当目标服务器向源服务器发送数据包时,可以认为此时的目标服务器作为的源服务器,具体的发送过程可以参见上述图3及图9所示的数据发送过程。

在本申请实施例中,可以通过五元组与路径编码的结合,做到更为充分的负载均衡,提高网络利用率,可以缓解多路径方案中的瓶颈点的压力,减少网络流量问题(如丢包等),降低网络故障概率。

进一步地,可以参见图10,图10是本申请实施例提供的一种数据交互场景示意图。如图10所示,本申请可以应用于数据中心网络,可以包括端侧(服务器)和网络侧(交换机等)等,如图10所示,源服务器1001、路径交换机1003及目标服务器1005等。可选的,该端侧可以工作于运输层等。在本申请中,每条独立数据路径上发送的包数正比于该独立数据路径的可用带宽,该节点对之间的连接可以传输的数据流的总带宽相当于,节点对之间的独立数据路径的可用带宽之和。具体的,①源服务器1001可以进行路径调度,如拥塞调度、均等调度(通过调度,使得每个路径编码所对应的独立数据路径发送一样数据量的数据包)或随机调度等,具体可以参见图3的步骤S304所示的相关描述,假定得到目标路径编码,基于目标路径编码获取到源服务器1001的目标出端口为1,或者基于目标路径编码及五元组获取到源服务器1001的目标出端口为1。根据传输跳数及目标路径编码生成路径信息字段,将路径信息字段添加至初始数据包的包头,生成目标数据包1002,具体该目标数据包1002可以参见目标数据包1004。源服务器基于源服务器的目标出端口,将目标数据包发送至路径交换机,具体是发送至源服务器的下一个网络拓扑层级所指示的路径交换机。②其中,以一个路径交换机1003为例,该路径交换机1003,可以从目标数据包1004中获取五元组,对该五元组进行路由映射,如②中的实线所示,也就是获取五元组的第一哈希。更新传输跳数字段的值,即使得传输跳数hop=hop+1,得到更新跳数,该更新跳数可以认为是当前的传输跳数。从目标数据包中获取该更新跳数对应的目标分段码值,例如,假定该更新跳数为3,对应CD类型,该更新跳数3对应的CD类型字段的目标分段码值,可以基于该目标分段码值进行路由映射,如②中的虚线所示。基于第一哈希及目标分段码值,确定目标出端口,假定为出端口d。具体可以参见图9中的步骤S902所示的相关描述。可以基于目标出端口,继续发送目标数据包,所经过的其他的路径交换机对目标数据包的处理过程可以参见②所示。最终,将该目标数据包发送至目标服务器1005。

进一步地,③目标服务器1005可以从目标数据包1006中获取目标编码标识,基于该目标编码标识进行路径调度,确定目标服务器的目标出端口,假定确定目标出端口为1。其中,目标数据包1006为一种简写,其他字段包括了目标数据包中所有未表示出来的字段,如部分编码字段、传输跳数字段等。其中,本申请中的目标数据包采用不同的标号,是因为该目标数据包在传输的过程中,传输跳数字段的值会基于数据跳转的次数发生变化,该目标数据包的实际结构及具体的内容未发生变化。④目标服务器1005可以基于目标编码标识生成针对目标数据包的数据确认包1007,基于目标编码标识将数据确认包1007发送至源服务器1001,如图10中各个设备之间的虚线所指示的过程,该数据确认包1007的发送过程可以参见目标数据包1002的发送过程。

进一步地,请参见图11,图11是本申请实施例提供的一种多路径传输装置示意图。该多路径传输装置可以是运行于计算机设备中的一个计算机程序(包括程序代码等),例如该多路径传输装置可以为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图11所示,该多路径传输装置1100可以用于图3所对应实施例中的计算机设备,具体的,该装置可以包括:链路获取模块11、链路编码模块12、编码生成模块13及数据发送模块14。

链路获取模块11,用于源服务器获取f个链路类型;f为正整数;一个链路类型是指在一次数据跳转中所经过的链路的类型;

链路编码模块12,用于获取f个链路类型分别对应的独立链路数量,基于独立链路数量对f个链路类型分别进行H次编码,得到f个链路类型分别对应的H个分段码值;H为正整数;

编码生成模块13,用于基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成H个路径编码;每个路径编码包括f个链路类型分别对应的一个分段码值;

数据发送模块14,用于基于H个路径编码,将目标数据包发送至目标服务器。

其中,该链路编码模块12,包括:

数据获取单元121,用于获取f个链路类型中第i个链路类型对应的独立链路数量;

第一编码单元122,用于若第i个链路类型对应的独立链路数量大于或等于H,则采用p至q对第i个链路类型进行H次编码,得到第i个链路类型所对应的H个分段码值;i为小于或等于f的正整数;p与q的差值为H-1,且q大于p;

第二编码单元123,用于若第i个链路类型对应的独立链路数量小于H,则采用第i个链路类型对应的独立链路数量,对第i个链路类型进行循环编码,得到第i个链路类型所对应的H个分段码值;

码值获取单元124,用于当i为f时,得到f个链路类型分别对应的H个分段码值。

其中,该链路编码模块12,包括:

初始编码单元125,用于获取f个链路类型中的第i个链路类型对应的独立链路数量,基于第i个链路类型对应的独立链路数量,对i个链路类型进行H次编码,得到第i个链路类型所对应的H个初始分段码值;i为小于或等于f的正整数;

编码偏移单元126,用于获取第i个链路类型所对应的编码偏移数据,基于第i个链路类型所对应的编码偏移数据,对第i个链路类型对应的H个初始分段码值分别进行编码偏移处理,得到第i个链路类型所对应的H个分段码值;

该码值获取单元124,还用于当i为f时,得到f个链路类型分别对应的H个分段码值。

其中,该数据发送模块14,包括:

数据获取单元141,用于获取初始数据包;

路径选取单元142,用于对H个路径编码进行路径调度,得到目标路径编码;

信息生成单元143,用于基于目标路径编码生成路径信息字段;

包更新单元144,用于将路径信息字段添加至初始数据包的包头,生成目标数据包;

链路选择单元145,用于从目标路径编码中获取本地上行链路的分段码值,基于本地上行链路的分段码值,确定本地上行链路所对应的独立链路;本地上行链路是指由源服务器至接入层交换机的链路类型;

数据发送单元146,用于基于本地上行链路所对应的独立链路,将目标数据包发送至接入层交换机,以使接入层交换机基于目标数据包中的路径信息字段,将目标数据包发送至目标服务器。

其中,该路径选取单元142,包括:

发送请求子单元1421,用于向轮询数据路径请求发送数据包;H个路径编码分别对应的独立数据路径包括轮询数据路径;轮询数据路径是指当前轮询到的数据路径;

路径确定子单元1422,用于若轮询数据路径满足带宽传输条件,则将轮询数据路径所对应的路径编码确定为目标路径编码;

路径轮询子单元1423,用于若轮询数据路径不满足带宽传输条件,则将轮询数据路径的下一个独立数据路径,确定为轮询数据路径,返回执行向轮询数据路径请求发送数据包的过程。

其中,该信息生成单元143,包括:

数据确定子单元1431,用于从目标路径编码中获取目标编码标识,以及一个或多个路径交换机在f个链路类型中所指向的链路类型的分段码值;一个或多个路径交换机包括接入层交换机;

信息组成子单元1432,用于获取源服务器所对应的传输跳数,将目标编码标识、一个或多个路径交换机在f个链路类型中所指向的链路类型的分段码值,以及源服务器所对应的传输跳数,生成路径信息字段。

其中,该装置1100还包括:

心跳发送模块15,用于源服务器以心跳检测周期为基准,在H个路径编码分别对应的独立数据路径中,向目标服务器发送心跳包;

状态更新模块16,用于若超出心跳确认时间阈值,源服务器未获取到目标服务器所发送的心跳确认数据,则将H个独立数据路径的路径状态更新为路径检查状态;

路径检查模块17,用于在路径检查状态中,对H个独立数据路径进行检测处理;

异常更新模块18,用于若H个独立数据路径中存在异常数据路径,则对异常数据路径进行更新。

其中,该路径检查模块17,包括:

检查发送单元171,用于在路径检查状态中,源服务器基于第j个独立数据路径向目标服务器发送检查包;j为小于或等于H的正整数;

正常确定单元172,用于若源服务器接收到目标服务器所发送的检查确认数据,则确定第j个独立数据路径的正向数据路径正常,等待第j个独立数据路径的反向数据路径更新,在第j个独立数据路径更新后的反向数据路径正常时,确定第j个独立数据路径为正常数据路径;

状态更新单元173,用于若源服务器在经过检查确认时间阈值后,未接收到目标服务器所发送的心跳确认数据,则将第j个独立数据路径的路径状态更新为路径探测状态,确定第j个独立数据路径为异常数据路径;路径探测状态用于指示第j个独立数据路径所对应的路径交换机中存在故障。

其中,该异常更新模块18,包括:

异常获取单元181,用于若H个独立数据路径中存在异常数据路径,则获取异常数据路径所对应的异常路径编码;异常数据路径的路径状态为路径探测状态;

更新获取单元182,用于获取第i个链路类型在异常路径编码中所对应的分段码值的更新分段码值,将第i个链路类型在异常路径编码中所对应的分段码值更新为更新分段码值,得到异常数据路径所对应的更新路径编码i;i为小于或等于f的正整数;

更新探测单元183,用于在更新路径编码i所对应的更新数据路径i中,源服务器向目标服务器发送探测包;

编码更新单元184,用于若接收到目标服务器针对探测包的探测确认数据,则将H个路径编码中的异常路径编码替换为更新数据路径i,得到更新后的H个路径编码,将异常数据路径的路径状态更新为路径正常状态;

后续探测单元185,用于若在经过探测确认时间阈值后,源服务器未接收到目标服务器针对探测包的探测确认数据,则对第(i+1)个链路类型进行探测;

无效确定单元186,用于当对f个链路类型在异常路径编码中分别对应的链路类型全部探测完成,且异常数据路径处于路径探测状态时,确定异常路径编码为无效编码。

本申请实施例提供了一种多路径传输装置,该装置可以运行于服务器中,任意一个作为源服务器的服务器可以获取f个链路类型;f为正整数;一个链路类型是指在一次数据跳转中所经过的链路的类型;获取f个链路类型分别对应的独立链路数量,基于独立链路数量对f个链路类型分别进行H次编码,得到f个链路类型分别对应的H个分段码值;H为正整数;基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成H个路径编码;每个路径编码包括f个链路类型分别对应的一个分段码值;基于H个路径编码,将目标数据包发送至目标服务器。通过以上过程,可以确定f个链路类型,也就是说,数据包在节点对(即源服务器与目标服务器)之间进行一次完整发送时,所经过的链路的类型,通过这些链路类型所对应的独立链路数量,对f个链路类型分别进行编码,从而可以得到代表在源服务器与目标服务器之间进行数据包传输的逻辑路径的路径编码,可以相当于是源服务器与目标服务器之间的实际的物理路径的指代,由于该编码是基于独立链路数量的,使得得到的路径编码之间是相互独立的,不同的路径编码之间相当于是无重叠的,使得在进行数据包传输时,可以直接基于已有的路径编码进行传输,从而达到最大程度的带宽利用和传输的可靠性。

进一步地,请参见图12,图12是本申请实施例提供的另一种多路径传输装置示意图。该多路径传输装置可以是运行于计算机设备中的一个计算机程序(包括程序代码等),例如该多路径传输装置可以为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图12所示,该多路径传输装置1200可以用于图9所对应实施例中的计算机设备,具体的,该装置可以包括:数据获取模块21及数据发送模块22。

数据获取模块21,用于路径交换机获取目标数据包;目标数据包是由源服务器基于H个路径编码所发送的;H个路径编码是由源服务器基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成的;f个链路类型分别对应的H个分段码值是由源服务器基于f个链路类型分别对应的独立链路数量,对f个链路类型分别进行H次编码所得到的;一个链路类型是指在一次数据跳转中所经过的链路的类型;f为正整数;H为正整数;

数据发送模块22,用于基于目标数据包所指示的目标路径编码,将目标数据包发送至目标服务器;H个路径编码包括目标路径编码。

其中,该数据发送模块22,包括:

包数据获取单元221,用于从目标数据包中获取路径信息字段及五元组;

端口确定单元222,用于基于路径信息字段及五元组,从路径交换机所关联的候选出端口中确定目标出端口;路径信息字段用于指示目标路径编码;

数据发送单元223,用于基于目标出端口,将目标数据包发送至目标服务器。

其中,路径信息字段包括传输跳数字段及编码字段;编码字段的值是根据路径信息字段所指示的目标路径编码确定的;

该端口确定单元222,包括:

跳数更新子单元2221,用于对路径信息字段中的传输跳数字段的值进行更新,得到更新跳数;

哈希获取子单元2222,用于获取五元组的第一哈希;

码值获取子单元2223,用于获取更新跳数在编码字段中对应的目标分段码值;

端口确定子单元2224,用于根据第一哈希及目标分段码值,从路径交换机所关联的候选出端口中确定目标出端口。

其中,该哈希获取子单元2222,具体用于:

对五元组进行等价多路径哈希处理,得到五元组的第一哈希;

该端口确定子单元2224,包括:

数量获取子单元222a,用于获取路径交换机所关联的候选出端口的候选数量,获取第一哈希与目标分段码值的数据总和;

端口确定子单元222b,用于将数据总和与候选数量的余数所对应的候选出端口,确定为目标出端口。

本申请实施例提供了一种多路径传输装置,该装置可以运行于任意一个路径交换机中,可以通过五元组与路径编码的结合,做到更为充分的负载均衡,提高网络利用率,可以缓解多路径方案中的瓶颈点的压力,减少网络流量问题(如丢包等),降低网络故障概率。

参见图13,图13是本申请实施例提供的一种计算机设备的结构示意图。如图13所示,本申请实施例中的计算机设备可以包括:一个或多个处理器1301、存储器1302和输入输出接口1303。该处理器1301、存储器1302和输入输出接口1303通过总线1304连接。存储器1302用于存储计算机程序,该计算机程序包括程序指令,输入输出接口1303用于接收数据及输出数据,如用于服务器与路径交换机之间进行数据交互,用于路径交换机与路径交换机之间进行数据交互;处理器1301用于执行存储器1302存储的程序指令。

其中,该处理器1301位于服务器中,可以执行如下操作:

源服务器获取f个链路类型;f为正整数;一个链路类型是指在一次数据跳转中所经过的链路的类型;

获取f个链路类型分别对应的独立链路数量,基于独立链路数量对f个链路类型分别进行H次编码,得到f个链路类型分别对应的H个分段码值;H为正整数;

基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成H个路径编码;每个路径编码包括f个链路类型分别对应的一个分段码值;

基于H个路径编码,将目标数据包发送至目标服务器。

其中,该处理器1301位于路径交换机中,可以执行如下操作:

路径交换机获取目标数据包;目标数据包是由源服务器基于H个路径编码所发送的;H个路径编码是由源服务器基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成的;f个链路类型分别对应的H个分段码值是由源服务器基于f个链路类型分别对应的独立链路数量,对f个链路类型分别进行H次编码所得到的;一个链路类型是指在一次数据跳转中所经过的链路的类型;f为正整数;H为正整数;

基于目标数据包所指示的目标路径编码,将目标数据包发送至目标服务器;H个路径编码包括目标路径编码。

在一些可行的实施方式中,该处理器1301可以是中央处理单元(centralprocessing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

该存储器1302可以包括只读存储器和随机存取存储器,并向处理器1301和输入输出接口1303提供指令和数据。存储器1302的一部分还可以包括非易失性随机存取存储器。例如,存储器1302还可以存储设备类型的信息。

具体实现中,该计算机设备可通过其内置的各个功能模块执行如该图3或图9中各个步骤所提供的实现方式,具体可参见该图3或图9中各个步骤所提供的实现方式,在此不再赘述。

本申请实施例通过提供一种计算机设备,包括:处理器、输入输出接口、存储器,通过处理器获取存储器中的计算机程序,执行该图3中所示方法的各个步骤,进行多路径传输操作。本申请实施例可以确定f个链路类型,也就是说,数据包在节点对(即源服务器与目标服务器)之间进行一次完整发送时,所经过的链路的类型,通过这些链路类型所对应的独立链路数量,对f个链路类型分别进行编码,从而可以得到代表在源服务器与目标服务器之间进行数据包传输的逻辑路径的路径编码,可以相当于是源服务器与目标服务器之间的实际的物理路径的指代,由于该编码是基于独立链路数量的,使得得到的路径编码之间是相互独立的,不同的路径编码之间相当于是无重叠的,使得在进行数据包传输时,可以直接基于已有的路径编码进行传输,从而达到最大程度的带宽利用和传输的可靠性。

本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序适于由该处理器加载并执行图3或图9中各个步骤所提供的多路径传输方法,具体可参见该图3或图9中各个步骤所提供的实现方式,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,计算机程序可被部署为在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行。

该计算机可读存储介质可以是前述任一实施例提供的多路径传输装置或者该计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。

本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行图3或图9中的各种可选方式中所提供的方法,实现了可以确定f个链路类型,也就是说,数据包在节点对(即源服务器与目标服务器)之间进行一次完整发送时,所经过的链路的类型,通过这些链路类型所对应的独立链路数量,对f个链路类型分别进行编码,从而可以得到代表在源服务器与目标服务器之间进行数据包传输的逻辑路径的路径编码,可以相当于是源服务器与目标服务器之间的实际的物理路径的指代,由于该编码是基于独立链路数量的,使得得到的路径编码之间是相互独立的,不同的路径编码之间相当于是无重叠的,使得在进行数据包传输时,可以直接基于已有的路径编码进行传输,从而达到最大程度的带宽利用和传输的可靠性。

本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在该说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程多路径传输设备的处理器以产生一个机器,使得通过计算机或其他可编程多路径传输设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程多路径传输设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程多路径传输设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。

本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。

本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。

以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

相关技术
  • 一种信号传输方法、装置、电子设备以及计算机可读存储介质
  • 信息传输方法、装置、相关设备及计算机可读存储介质
  • 虚拟机应用程序管理方法、装置、设备及可读存储介质
  • 一种应用程序处理方法、装置、电子设备及可读存储介质
  • 一种程序调试方法、装置、设备及可读存储介质
  • 产品构建方法、装置、设备、可读存储介质及程序产品
  • 存储的方法、装置、终端设备、可读存储介质及程序产品
技术分类

06120116485531