一种数据分流方法、装置及相关设备

文档序号:230098 发布日期:2021-11-09 浏览:13次 >En<

阅读说明:本技术 一种数据分流方法、装置及相关设备 (Data distribution method, device and related equipment ) 是由 李有 秦海中 于 2021-06-28 设计创作,主要内容包括:本申请公开了一种数据分流方法,包括获取目标数据包,并确定所述目标数据包的目的地址;对所述目的地址进行哈希运算,获得哈希值;根据各数据链路的流量传输比例构建指向所述数据链路的路由分流数组;根据所述哈希值和所述路由分流数组计算获得目标数组元素;利用所述目标数组元素对应的数据链路将所述目标数据包发送至所述目的地址;该数据分流方法可以根据实际场景的路径带宽差异对流量进行合理分流,以充分发挥设备的数据转发性能。本申请还公开了一种数据分流装置、系统及计算机可读存储介质,均具有上述有益效果。(The application discloses a data distribution method, which comprises the steps of obtaining a target data packet and determining a destination address of the target data packet; carrying out Hash operation on the destination address to obtain a Hash value; constructing a route distribution array pointing to each data link according to the traffic transmission proportion of the data link; calculating according to the hash value and the routing distribution array to obtain a target array element; sending the target data packet to the destination address by using a data link corresponding to the target array element; the data distribution method can reasonably distribute the flow according to the path bandwidth difference of the actual scene so as to fully play the data forwarding performance of the equipment. The application also discloses a data distribution device, a system and a computer readable storage medium, which have the beneficial effects.)

一种数据分流方法、装置及相关设备

技术领域

本申请涉及计算机数据处理技术领域,特别涉及一种数据分流方法,还涉及一种数据分流装置、系统及计算机可读存储介质。

背景技术

随着计算机的发展,生活中的科技产品越来越多,在丰富生活多样性、便利性的同时,也对网络传输、服务器容量、响应速度等后台支撑服务的要求越来越高。即使当前硬件设备性能已经很强大了,但是单一的物理资源提供的能力也是有限的,对于同一种业务的处理,往往需要很多物理设备一起去支撑完成。特别是当前应用很广泛的云计算场景,一个数据中心,往往需要很多个网关节点组建很多个网关集群提供三层网络转发服务。在一个网关节点集群里,所有的网关节点都可以提供相同的转发服务。这对数据流来说,目的虽然相同,但流转路径并不相同,此时就需要对流量进行分流。分流的作用是对流量流经的路径进行分配,三层的流量需要保持流量的有状态性,通俗的讲就是相同属性的流量需要保持相同的路径进行转发。

当前现有的主流的分流方式是等价路由(ECMP,Equal Cost Multipath Routing)的方式,此方法提供了多种分流算法,比如基于五元组、基于MAC等。但是,实际使用效果是多条路径分配的流量是相同的,这就在特殊场景下出现了弊端。因为在实际使用场景中,每条路径提供的转发能力可能是不一样的,如果按最小路径带宽提供转发,会导致设备资源的浪费;如果按最大路径带宽提供转发,会导致某些路径拥堵丢包导致业务中断。

此专利针对此种场景提供了一种不均衡的负载分流算法。在保证相同流量来回路径保持一致的情况下,又能根据实际场景的路径带宽差异,按照特定比例对流量进行分流,充分发挥设备转发性能。

因此,如何根据实际场景的路径带宽差异对流量进行合理分流,充分发挥设备转发性能是本领域技术人员亟待解决的问题。

发明内容

本申请的目的是提供一种数据分流方法,该数据分流方法可以根据实际场景的路径带宽差异对流量进行合理分流,以充分发挥设备的数据转发性能;本申请的另一目的是提供一种数据分流装置、系统及计算机可读存储介质,均具有上述有益效果。

第一方面,本申请提供了一种数据分流方法,包括:

获取目标数据包,并确定所述目标数据包的目的地址;

对所述目的地址进行哈希运算,获得哈希值;

根据各数据链路的流量传输比例构建指向所述数据链路的路由分流数组;

根据所述哈希值和所述路由分流数组计算获得目标数组元素;

利用所述目标数组元素对应的数据链路将所述目标数据包发送至所述目的地址。

优选的,所述对所述目的地址进行哈希运算,获得哈希值,包括:

对所述目的地址中的各字节进行异或运算,获得所述哈希值。

优选的,所述根据所述哈希值和所述路由分流数组计算获得目标数组元素,包括:

统计所述路由分流数组的元素数量;

利用所述哈希值对所述元素数量进行取余运算,获得所述目标数组元素。

优选的,所述数据分流方法还包括:

当接收到链路故障信息时,根据各剩余数据链路的流量传输比例构建新的路由分流数组;

根据所述哈希值和所述新的路由分流数组计算获得新的目标数组元素;

利用所述新的目标数组元素对应的数据链路将所述目标数据包发送至所述目的地址。

优选的,所述目的地址为IP地址,或MAC地址,或端口地址。

第二方面,本申请还公开了一种数据分流装置,包括:

数据获取模块,用于获取目标数据包,并确定所述目标数据包的目的地址;

哈希运算模块,用于对所述目的地址进行哈希运算,获得哈希值;

数组构建模块,用于根据各数据链路的流量传输比例构建指向所述数据链路的路由分流数组;

数组确定模块,用于根据所述哈希值和所述路由分流数组计算获得目标数组元素;

数据发送模块,用于利用所述目标数组元素对应的数据链路将所述目标数据包发送至所述目的地址。

优选的,所述哈希运算模块具体用于对所述目的地址中的各字节进行异或运算,获得所述哈希值。

优选的,所述数组构建模块具体用于统计所述路由分流数组的元素数量;利用所述哈希值对所述元素数量进行取余运算,获得所述目标数组元素。

第三方面,本申请还公开了一种数据分流系统,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上所述的任一种数据分流方法的步骤。

第四方面,本申请还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的任一种数据分流方法的步骤。

本申请所提供的一种数据分流方法,包括获取目标数据包,并确定所述目标数据包的目的地址;对所述目的地址进行哈希运算,获得哈希值;根据各数据链路的流量传输比例构建指向所述数据链路的路由分流数组;根据所述哈希值和所述路由分流数组计算获得目标数组元素;利用所述目标数组元素对应的数据链路将所述目标数据包发送至所述目的地址。

可见,本申请所提供的数据分流方法,根据各数据链路的流量传输比例构建可用于实现按比例进行流量传输的路由分流数组,进而结合待发送数据包的目的地址确定对应于该数据包的数据链路,从而实现数据包的传输,由此,实现了根据实际场景的流量传输差异对流量的合理分流,进一步充分发挥了设备的数据转发性能,可以有效避免部分设备空置浪费、部分设备满载阻塞的问题,提升了设备利用率。

本申请所提供的一种数据分流装置、系统及计算机可读存储介质,均具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明现有技术和本申请实施例中的技术方案,下面将对现有技术和本申请实施例描述中需要使用的附图作简要的介绍。当然,下面有关本申请实施例的附图描述的仅仅是本申请中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本申请的保护范围。

图1为本申请所提供的一种数据分流方法的流程示意图;

图2为本申请所提供的一种网关集群拓扑图;

图3为本申请所提供的另一种数据分流方法的流程示意图;

图4为本申请所提供的一种数据分流装置的结构示意图;

图5为本申请所提供的一种数据分流系统的结构示意图。

具体实施方式

本申请的核心是提供一种数据分流方法,该数据分流方法可以根据实际场景的路径带宽差异对流量进行合理分流,以充分发挥设备的数据转发性能;本申请的另一核心是提供一种数据分流装置、系统及计算机可读存储介质,也具有上述有益效果。

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

本申请实施例提供了一种数据分流方法。

请参考图1,图1为本申请所提供的一种数据分流方法的流程示意图,该数据分流方法可包括:

S101:获取目标数据包,并确定目标数据包的目的地址;

本步骤旨在实现目标数据包的获取,并确定其目的地址。其中,目标数据包即为需要进行转发或传输的数据包,目的地址即为该目标数据包所需要访问的地址。具体而言,当接收到目标数据包时,可以通过对该目标数据包进行解析确定其目的地址,也可以是与目标数据包一同接收到该目的地址;目标数据包可以为其他设备发送的数据包,也可以为用户基于用户前端发送的数据包,本申请对此不做限定。

作为一种优选实施例,上述目的地址可以为IP地址,或MAC地址,或端口地址。

可以理解的是,目的地址的具体类型并不唯一,可根据实际需求将目标数据包发送至相对应的目的地址,包括但不限于IP地址、MAC地址、端口地址等。

S102:对目的地址进行哈希运算,获得哈希值;

本步骤旨在实现目的地址的哈希运算,通过对目的地址进行哈希运算,获得相应的哈希值。其中,哈希运算具体可以为对目的地址各字节位的哈希运算。可以理解的是,目的地址类型的不同并不影响本技术方案的实施,均可通过对其进行哈希运算获取相应的哈希值。

作为一种优选实施例,上述对目的地址进行哈希运算,获得哈希值,可以包括:对目的地址中的各字节进行异或运算,获得哈希值。

本优选实施例提供了一种目的地址的哈希运算方法,即对目的地址中的各字节进行异或运算,从而获得对应的哈希值。不论是IP地址,还是MAC地址,或是端口地址等,均可以通过该种方式实现哈希值的运算。例如,目标数据包的目的IP地址为110.242.68.4,则按照IP字节进行异或运算,有:1^1^10^110^242^68^4=215,即哈希值为215。

S103:根据各数据链路的流量传输比例构建指向数据链路的路由分流数组;

本步骤旨在实现路由分流数组的构建,即根据系统内各条数据链路的流量传输比例进行构建,其中,流量传输比例具体可以为链路带宽比例。在具体实现过程中,首先获取各数据链路的链路带宽,进而计算所有数据链路的链路带宽的加和,并计算该加和与所有链路带宽的最大公约数的商值,该商值即为路由分流数组内的元素数量,其中,数组内的各元素指向相应的数据链路。例如,系统内数据链路共有三条,带宽分别为40M/s、25M/s、100M/s,则路由分流数组内的元素数量为(40+25+100)/5=33,由此,即可构建路由分流数组A[33];进一步,按照数据链路的流量传输比例对数组内的各元素进行赋值,由于各数据链路的链路带宽比例为8:5:20,则有:A[0-7]指向链路带宽为40M/s的数据链路,A[8-12]指向链路带宽为25M/s的数据链路,A[13-32]指向链路带宽为100M/s的数据链路。

S104:根据哈希值和路由分流数组计算获得目标数组元素;

本步骤旨在实现目标路由分流数组的计算,根据目的地址的哈希值以及路由分流数组即可计算获得目标数组元素,该目标数组元素用于实现目标数据链路的确定,该目标数组元素指向的数据链路即为目标数据链路,即用于实现目标数据包传输的数据链路。

作为一种优选实施例,上述根据哈希值和路由分流数组计算获得目标数组元素,可以包括:统计路由分流数组的元素数量;利用哈希值对元素数量进行取余运算,获得目标数组元素。

本优选实施例提供了一种计算目标数组元素的实现方法。具体而言,首先统计路由分流数组内元素的数量(元素数量),进一步,利用目的地址的哈希值对元素数量进行取余运算,获得相应取值,该取值即为目标数组元素。例如,上述目标地址110.242.68.4的哈希值为215,针对上述系统内三条链路的举例(带宽分别为40M/s、25M/s、100M/s),则有215对元素数量33取余得到17,那么,目标数组元素即为A[17]。

S105:利用目标数组元素对应的数据链路将目标数据包发送至目的地址。

本步骤旨在实现目标数据包的发送与传输,具体的,在确定目标数组元素后,即可根据该目标数组元素确定其所指向的目标数据链路,由此,利用该目标数据链路将目标数据包发送至目的地址即可。如上所述,目标数组元素为A[17],指向链路带宽为100M/s的数据链路,由此,利用链路带宽为100M/s的数据链路将目标数据包发送至目的地址即可。

作为一种优选实施例,该数据分流方法还可以包括:当接收到链路故障信息时,根据各剩余数据链路的流量传输比例构建新的路由分流数组;根据哈希值和新的路由分流数组计算获得新的目标数组元素;利用新的目标数组元素对应的数据链路将目标数据包发送至目的地址。

当数据链路出现故障时,可以利用剩余的正常运行的数据链路重新构建新的路由分流数组,进而确定新的数据链路,完成目标数据包的传输。进一步,当故障的数据链路回复正常时,同样可以再次进行新的路由分流数组的构建,进行目标数据包的传输。由此,在充分分流的情况下,进一步实现了故障的快速切换,并且,通过对数据链路的状态进行监控,可以达到毫秒级切换。

可见,本申请所提供的数据分流方法,根据各数据链路的流量传输比例构建可用于实现按比例进行流量传输的路由分流数组,进而结合待发送数据包的目的地址确定对应于该数据包的数据链路,从而实现数据包的传输,由此,实现了根据实际场景的流量传输差异对流量的合理分流,进一步充分发挥了设备的数据转发性能,可以有效避免部分设备空置浪费、部分设备满载阻塞的问题,提升了设备利用率。

基于以上各实施例,本申请实施例提供了另一种数据分流方法。

本申请实施例以基于网关集群三层转发负载分流为例,对数据分流方法进行具体介绍。

请参照图2,图2为本申请所提供的一种网关集群拓扑图,该拓扑图展示了数据面分流效果。由图2可以看出,数据流量可以通过gw1 192.168.1.1、gw2 192.168.1.2和gw3192.168.1.3三个网关进行SNAT转换送到物理网关后访问Internet。以下对HV1上的虚拟机为例进行数据面流转过程介绍。

当VM1和VM2需要访问Internet的百度时,源IP为1.1.1.10,目的为www.baidu.com。根据图2,由于访问的是非本网段IP,需要进行三层转发,其中,一层转发的三条路由分别为0.0.0.0/0via 192.168.1.1、0.0.0/0via192.168.1.2和0.0.0.0/24via192.168.1.3,这三条链路带宽都是100M/s,按照正常的负载分流方式,会进行1:1:1分流,流量到网关后转发到物理路由器时的链路带宽分别为40M/s、25M/s和100M/s,可以想到的是,当均分到三个网关的流量大于25M/s时,gw2会因为链路拥塞丢包导致业务异常;当均分到三个网关的流量大于40M/s时,gw1和gw2都会因为流量拥塞丢包导致业务异常;当均分到三个网关的流量等于100M/s时,gw3的性能才会得到充分发挥。

基于此,根据实际环境情况,网络管理员可以对匹配这三条路由的流量进行分流限制,使到达gw1(192.168.1.1)的流量为40份,到达gw2(192.168.1.2)的流量为25份,到达gw3(192.168.2.3)的流量100份,从而达到40:25:100的比例。进一步,从gw1送出的报文返回时依旧会返回gw1,gw2送出的报文依旧会返回gw2,gw3送出的报文会返回gw3,故往返的流量会按照分配比例进行转发,充分发挥设备性能。

进一步,参照图3,图3为本申请所提供的另一种数据分流方法的流程示意图,其具体实现流程如下:

1、结合图2,当HV设备上的网关(1.1.1.1)接收到到达外部的流量时,需要转发给网关gw1、gw2或gw3,此时需要进行分流。

2、根据配置的分流算法确定参考的元素(基于IP地址、基于MAC地址、基于端口地址、基于其他参数),此处以IP地址进行举例说明,假设源IP为1.1.1.10,目的IP为110.242.68.4(www.baidu.com)。

3、按IP字节位进行异或,则有:1^1^1^10^110^242^68^4=215,获得一个0xFF以内的值。

4、根据分配流量的比例A:B:C计算获得一个特定值:(特定值=(A+B+C)/最大公约数)),图2中三个网关节点流量的比例为40:25:100,由此计算得出特定值为33((40+25+100)/5=33)。进一步,根据特定值33创建一个路由分流的数组ActiveList[33],然后根据流量比例对数组进行赋值操作,ActiveList[0-7]指向路由0.0.0.0/0via 192.168.1.1,ActiveList[8-12]指向路由0.0.0.0/0via 192.168.1.2,ActiveList[13-32]指向0.0.0.0/0via 192.168.1.3。最后进行分流计算,使用第3步异或出来的值215对33取余得到17,由此,即可直接使用ActiveList[17]得到需要匹配的路由,即对应于0.0.0.0/0via192.168.1.3。

5、当其中有网关节点故障时,调节ActiveList的数据和特定值即可。例如gw2的链路故障,则特定值等于7((40+100)/20=7)。进一步,重新给数组ActiveList进行赋值,有ActiveList[0-1]指向路由0.0.0.0/0via 192.168.1.1,ActiveList[2-6]指向0.0.0.0/0via 192.168.1.3。最后进行分流计算时,使用第3步异或出来的值215对7取余得到5,由此即可直接使用ActiveList[5]得到需要匹配的路由,即对应于0.0.0.0/0via 192.168.1.3。

6、当故障恢复后,可以重新调整ActiveList的数据和特定值,即可重新对流量进行分流处理。

7、上述举例是三个网关节点,但该方案可以支持M+N个网关节点,M为活跃的,N为不活跃的,N可以等于0。在充分分流的情况下,可以对故障进行快速切换,通过对链路状态的监控,可以达到毫秒级切换。

可见,本申请实施例所提供的数据分流方法,根据各数据链路的流量传输比例构建可用于实现按比例进行流量传输的路由分流数组,进而结合待发送数据包的目的地址确定对应于该数据包的数据链路,从而实现数据包的传输,由此,实现了根据实际场景的流量传输差异对流量的合理分流,进一步充分发挥了设备的数据转发性能,可以有效避免部分设备空置浪费、部分设备满载阻塞的问题,提升了设备利用率。

为解决上述技术问题,本申请还提供了一种数据分流装置,请参考图4,图4为本申请所提供的一种数据分流装置的结构示意图,该数据分流装置可包括:

数据获取模块1,用于获取目标数据包,并确定目标数据包的目的地址;

哈希运算模块2,用于对目的地址进行哈希运算,获得哈希值;

数组构建模块3,用于根据各数据链路的流量传输比例构建指向数据链路的路由分流数组;

数组确定模块4,用于根据哈希值和路由分流数组计算获得目标数组元素;

数据发送模块5,用于利用目标数组元素对应的数据链路将目标数据包发送至目的地址。

可见,本申请实施例所提供的数据分流装置,根据各数据链路的流量传输比例构建可用于实现按比例进行流量传输的路由分流数组,进而结合待发送数据包的目的地址确定对应于该数据包的数据链路,从而实现数据包的传输,由此,实现了根据实际场景的流量传输差异对流量的合理分流,进一步充分发挥了设备的数据转发性能,可以有效避免部分设备空置浪费、部分设备满载阻塞的问题,提升了设备利用率。

作为一种优选实施例,上述哈希运算模块2可具体用于对目的地址中的各字节进行异或运算,获得哈希值。

作为一种优选实施例,上述数组构建模块3可具体用于统计路由分流数组的元素数量;利用哈希值对元素数量进行取余运算,获得目标数组元素。

作为一种优选实施例,该数据分流装置还可包括故障重分流模块,用于当接收到链路故障信息时,根据各剩余数据链路的流量传输比例构建新的路由分流数组;根据哈希值和新的路由分流数组计算获得新的目标数组元素;利用新的目标数组元素对应的数据链路将目标数据包发送至目的地址。

作为一种优选实施例,上述目的地址可以为IP地址,或MAC地址,或端口地址。

对于本申请提供的装置的介绍请参照上述方法实施例,本申请在此不做赘述。

为解决上述技术问题,本申请还提供了一种数据分流系统,请参考图5,图5为本申请所提供的一种数据分流系统的结构示意图,该数据分流设备可包括:

存储器10,用于存储计算机程序;

处理器20,用于执行计算机程序时可实现如上述任意一种数据分流方法的步骤。

对于本申请提供的系统的介绍请参照上述方法实施例,本申请在此不做赘述。

为解决上述问题,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如上述任意一种数据分流方法的步骤。

该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

对于本申请提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

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

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的技术方案进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请的保护范围内。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:计算机网络内创建隧道的方法、入口网络装置及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!