一种负载均衡方法和路由器与流程

文档序号:31776466发布日期:2022-10-12 08:35阅读:25来源:国知局
1.本技术涉及cdn的应用领域,尤其是涉及一种负载均衡方法和路由器。
背景技术
::2.随着互联网技术和电信技术的发展,多网卡linux环境服务平台逐步被应用在内容分发网络(contentdeliverynetwork,cdn)等领域,其相比单网卡linux环境服务平台有更高的使用性价比。3.但是在多网卡网络下,数据包在传输时需要面临多个网卡的选择问题,如果对数据包的分配不够合理,就会导致某个网卡出现高负载的情况;例如,客户端从单一网卡过量访问服务端或服务端通过单一网卡向用户提供过量服务时,较多的数据通过单一网卡传输,进而使得该网卡的负载较高,同时,数据传输的速度也会变慢。技术实现要素:4.为了使得多个网卡的负载均衡,本技术提供一种负载均衡方法和路由器。5.第一方面,本技术提供一种负载均衡方法和路由器,采用如下的技术方案:一种负载均衡方法,由路由器执行,包括:获取业务数据包,所述业务数据包为基于用户端发出的请求数据包而产生的由服务端向用户端发送的数据包,每个所述业务数据包均关联有包括源端口、目的端口、源地址以及目的地址的关联信息;基于所述关系信息配置每个所述业务数据包的nat规则;基于各个所述关联信息和预设的负载均衡规则,确定各个所述业务数据包分别对应的输出网卡,所述输出网卡为所述业务数据包被分配传输的网卡;将各个所述业务数据包通过对应的所述输出网卡发送。6.通过采用上述技术方案,通过关联信息确定数据包对应的输出网卡,即若存在多个业务数据包,则对于关联信息相同的数据包,也就是要发送至同一设备的数据包,则其输出网卡相同;对于关联信息不同的数据包,则其对应的输出网卡不同;进而减少了多个不同目的地址的数据包全部通过一个网卡进行传输的情况,在传输较多数据时,减小了对单一网卡的负载,进而实现了负载较为均衡的效果。7.在一种可能实现的方式中,在获取业务数据包之前,还包括:获取任一网卡接收到的请求数据包并生成应答数据包;确定所述应答数据包的流出网卡,所述流出网卡为所述请求数据包进入时的网卡;将所述应答数据包通过所述流出网卡发送。8.通过采用上述技术方案,将请求数据包对应的应答数据包,按照请求数据包进入时的网卡的路径进行返回,使得同一设备的数据信息能够转却返回至该设备。9.在一种可能实现的方式中,所述确定所述应答数据包的流出网卡的ip,包括:基于iptables的mangle规则,生成所述请求数据包的分类标签,并将所述分类标签与所述请求数据包关联,所述分类标签中包括数据包进入时的网卡的ip,以及对应的路由表id;将所述分类标签和表帧写入策略路由表;配置所述请求数据包的nat规则;基于所述策略路由表确定流出网卡的ip以确定流出网卡。10.在一种可能实现的方式中,在将所述分类标签和表帧写入策略路由表,之前还包括:判断所述分类标签是否为新标签;若是,则将所述分类标签和表帧写入策略路由表;若否,则将所述分类标签确定为其被判断为新标签时所对应的原标签。11.在一种可能实现的方式中,在配置每个所述业务数据包的nat规则,之前还包括:基于各个网卡的ip确定各个网卡分别对应的策略路由表;将各个网卡的ip以及各个网卡对应的路由表写入策略路由表,以得到配置后的策略路由表;为各个网卡配置预设的负载均衡规则。12.在一种可能实现的方式中,所述负载均衡规则包括:基于所述业务数据包的源地址、源端口、目的地址以及目的端口进行哈希计算,得到中间参数m;计算m/n的余数,n为网卡的数量,且每个网卡均预设有与其ip对应的编号,每个网卡的编号均从0-n中确定,且任意两个网卡的编号不重复;若所述余数为n-1,则确定编号为n的网卡为所述业务数据包的输出网卡。13.第二方面,本技术提供一种负载均衡装置,采用如下的技术方案:一种负载均衡装置,包括业务数据报获取模块,用于获取业务数据包,所述业务数据包为基于用户端发出的请求数据包而产生的由服务端向用户端发送的数据包,每个所述业务数据包均关联有包括源端口、目的端口、源地址以及目的地址的关联信息;第一nat规则配置模块,用于基于所述关系信息配置每个所述业务数据包的nat规则;输出网卡确定模块,用于基于各个所述关联信息和预设的负载均衡规则,确定各个所述业务数据包分别对应的输出网卡,所述输出网卡为所述业务数据包被分配传输的网卡;第一发送模块,用于将各个所述业务数据包通过对应的所述输出网卡发送。14.在一种可能实现的方式中,该装置还包括:应答数据包生成模块,用于获取任一网卡接收到的请求数据包并生成应答数据包;流出网卡确定模块,用于确定所述应答数据包的流出网卡,所述流出网卡为所述请求数据包进入时的网卡;第二发送模块,用于将所述应答数据包通过所述流出网卡发送。15.在一种可能实现的方式中,当流出网卡确定模块确定所述应答数据包的流出网卡时,具体用于:基于iptables的mangle规则,生成所述请求数据包的分类标签,并将所述分类标签与所述请求数据包关联,所述分类标签中包括数据包进入时的网卡的ip,以及对应的路由表id;将所述分类标签和表帧写入策略路由表;配置所述请求数据包的nat规则;基于所述策略路由表确定流出网卡的ip以确定流出网卡。16.在一种可能实现的方式中,该装置还包括:判断模块,用于判断所述分类标签是否为新标签;原标签确定模块,用于将所述分类标签确定为其被判断为新标签时所对应的原标签。17.在一种可能实现的方式中,该装置还包括:策略路由表确定模块,用于基于各个网卡的ip确定各个网卡分别对应的策略路由表;写入模块,用于将各个网卡的ip以及各个网卡对应的路由表写入策略路由表,以得到配置后的策略路由表;配置模块,用于为各个网卡配置预设的负载均衡规则。18.在一种可能实现的方式中,所述负载均衡规则包括:基于所述业务数据包的源地址、源端口、目的地址以及目的端口进行哈希计算,得到中间参数m;计算m/n的余数,n为网卡的数量,且每个网卡均预设有与其ip对应的编号,每个网卡的编号均从0-n中确定,且任意两个网卡的编号不重复;若所述余数为n-1,则确定编号为n的网卡为所述业务数据包的输出网卡。19.第三方面,本技术提供一种路由器,采用如下的技术方案:一种路由器,该路由器包括:至少两个网卡;至少一个处理器;存储器;至少一个应用程序,其中所述至少一个应用程序被存储在存储器中并被配置为由至少一个处理器执行,所述至少一个应用程序配置用于:执行上述负载均衡方法。20.第四方面,本技术提供一种计算机可读存储介质,采用如下的技术方案:一种计算机可读存储介质,包括:存储有能够被处理器加载并执行上述负载均衡方法的计算机程序。21.综上所述,本技术包括以下至少一种有益技术效果:通过关联信息确定数据包对应的输出网卡,即若存在多个业务数据包,则对于关联信息相同的数据包,也就是要发送至同一设备的数据包,则其输出网卡相同;对于关联信息不同的数据包,则其对应的输出网卡不同;进而减少了多个不同目的地址的数据包全部通过一个网卡进行传输的情况,在传输较多数据时,减小了对单一网卡的负载,进而实现了负载较为均衡的效果;将请求数据包对应的应答数据包,按照请求数据包进入时的网卡的路径进行返回,使得同一设备的数据信息能够转却返回至该设备。附图说明22.图1是本技术实施例中负载均衡方法的流示意图;图2是本技术实施例中发送业务数据包的流程示意简图;图3是本技术实施例中发送应答数据包的流程示意简图;图4是本技术实施例中负载均衡装置的结构示意图;图5是本技术实施例中路由器的结构示意图。具体实施方式23.以下结合附图1-附图5对本技术作进一步详细说明。24.本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本技术的权利要求范围内都受到专利法的保护。25.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。26.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。27.在cdn领域中,高并发问题一般由客户端从单一路由过量访问服务端或服务端从单一路由提供过量服务引起,即从单个网卡发出过量数据包将产生高并发问题。负载均衡是指设备准备主动发送的数据包,通过iptables的负载均衡规则,将流量分摊到多个网卡上发出,以减少单个网卡的负载压力,同时提高传输效率和速度。28.从一个网络向另一个网络发送数据包的过程称为路由,路由由路由器执行。29.策略路由是针对某种数据包,直接制定的选路策略。策略路由可以设置数据包的行为,比如下一跳、下一接口等,这样在存在多条链路的情况下,可以根据数据包的应用不同而使用不同的链路,进而提供高效的负载平衡能力。30.本技术实施例提供了一种负载均衡方法,由路由器执行,参照图1,该方法包括步骤s101-步骤s104,其中:步骤s101、获取业务数据包,业务数据包为基于用户端发出的请求数据包而产生的由服务端向用户端发送的数据包,每个业务数据包均关联有包括源端口、目的端口、源地址以及目的地址的关联信息;一般而言,用户端向路由器发送请求数据包,然后路由器生成应答数据包返回至用户,同时路由器解析请求数据包后获取相应地址中的业务数据包,并将业务数据包发送至用户。本技术实施例中的业务数据包,也即由服务端向用户端发送的数据包,且获取的业务数据包可以是一个,也可以是多个。本技术实施例中以发送一个业务数据包进行示例。31.步骤s102、基于关系信息配置每个业务数据包的nat规则。32.nat表需要的三个链,即:rerouting:可以在这里定义进行目的nat的规则,因为路由器进行路由时只检查数据包的目的ip,所以为了使业务数据包得以正确路由,必须在路由之前就进行目的nat;postrouting:可以在这里定义进行源nat的规则,系统在决定了数据包的路由以后在执行该链中的规则。33.output:定义对本地产生的数据包的目的nat规则。34.在本技术实施例中,对于任意一个业务数据包,将其发送时,应该已经确定其目的ip地址和源地址;通过prerouting链定义业务数据包的目的nat的规则。配置数据包的nat规则是进行路由的前置步骤。35.步骤s103、基于各个关联信息和预设的负载均衡规则,确定各个业务数据包分别对应的输出网卡,输出网卡为业务数据包被分配传输的网卡。36.在本技术实施例中,在一个多网卡的路由器内,对于一个业务数据包,通过其关联信息确定该数据包该通过哪个网卡发送,也即确定输出网卡。37.步骤s104、将各个业务数据包通过对应的输出网卡发送。38.在本技术实施例中,通过关联信息确定数据包对应的输出网卡,即若存在多个业务数据包,则对于关联信息相同的数据包,也就是要发送至同一设备的数据包,则其输出网卡相同;对于关联信息不同的数据包,则其对应的输出网卡不同;进而减少了多个不同目的地址的数据包全部通过一个网卡进行传输的情况,在传输较多数据时,减小了对单一网卡的负载,进而实现了负载较为均衡的效果。39.进一步地,在步骤s101之前,还存在,某个网卡接收用户端发送的请求数据包,以及如何将对应的应答数据包发送至用户端的问题。因此在步骤s101之前,还包括步骤s001-步骤s003,其中:步骤s001、获取任一网卡接收到的请求数据包并生成应答数据包;具体地,本技术实施例中以一个用户端向路由器发送一个请求数据包为例。同时,在接收到请求数据包后,如何生成应答数据包是本领域技术人员的常识,本技术实施例中不进行具体解释。40.步骤s002、确定应答数据包的流出网卡,流出网卡为请求数据包进入时的网卡;步骤s003、将应答数据包通过流出网卡发送。41.具体地,用户端在与路由器建立网络连接时,是tcp链接和长链接,此时,用户端与路由器的一个网卡的链接在持续,因此为了确保发送的应答数据包能够准确地发送到用户端,则应将应答数据宝通过接收请求数据包的网卡进行发送。42.进一步地,步骤s002中,如何确定应答数据包的流出网卡的方法包括步骤s0021-步骤s0024,其中:步骤s0021、基于iptables的mangle规则,生成请求数据包的分类标签,并将分类标签与请求数据包关联,分类标签中包括数据包进入时的网卡的ip,以及对应的路由表id。43.对分类标签中应该包括该数据包的类型,以及且传输路由器时通过的网卡的ip,通过数据包的类型,进而确定其对应的路由表。44.步骤s0022、将分类标签和表帧写入策略路由表。45.将分类标签写入策略路由表中,进行请求数据包和策略路由表的匹配,以使得后续的应答数据包也能够基于该策略路由表实现分配路由。46.步骤s0023、配置应答数据包的nat规则。47.具体地,对应答数据包的nat规则配置,是为了确定其目的ip,进而确定其返回用户端所用的网卡ip。48.步骤s0024、基于策略路由表确定流出网卡的ip以确定流出网卡。49.具体地,从策略路由表中确定请求书数据包对应的网卡的ip,也就将其确定为应答数据包返回用户端时对应的网卡ip,即应答数据包与请求书举报通过同一网卡进行传输,以使得应答数据包能够准确返回对应的用户端。50.进一步地,步骤s0022之前,还包括步骤sm1(图中未示出)-sm3(图中未示出),其中:步骤sm1、判断分类标签是否为新标签;具体地,判断分类标签是否为新标签,即判断该类型的请求数据包是否为第一次出现,也即是否为新设备发送的请求数据包。51.步骤sm2、若是,则将分类标签和表帧写入策略路由表;具体地,若分类标签为新标签,即为一个新设备发送的请求数据包,则指向步骤s0022;当用户端与路由器建立连接时,用户端向路由器发送一个请求数据包,则这个数据包的分类标签被识别分新标签,也就是将分类标签和表帧写入策略路由表,因为tcp和长链接还在持续,则之后对于这个用户端发送的所有的请求数据包,都会被确定为一个相同的分类标签,也即该用户端对应的所有应答数据包均能够通过一个网卡返回。52.步骤sm3、若否,则将分类标签确定为其被判断为新标签时所对应的原标签。53.进一步地,如果一个请求数据包对应的分类标签不是新标签,说明这个用户端不是新用户,其应答数据包已经被分配过对应的网卡实现返回传输,具体地,只要将该数据包的分类标签确定为原标签,也就是该用户端第一次被识别为新标签时的分类标签,则该用户端所对应的所有应答数据包,均能够通过已被分配的网卡进行返回。54.进一步地,步骤s102之前,还包括步骤sa(图中未示出)-步骤sc(图中未示出),其中:步骤sa、基于各个网卡的ip确定各个网卡分别对应的策略路由表;为了能够实现从众多路径中选择最佳的传输路径,路由器中保存了周边网络的拓扑信息和各种路径参数,这张表叫做路由表;路由表中包括该路由表能够将数据包分配的地址。对于一个业务数据包,通过其目的地址,能够确定其对应的路由表。策略路由表包括步骤sb、将各个网卡的ip以及各个网卡对应的路由表写入策略路由表,以得到配置后的策略路由表;在本技术实施例中,如果服务端要向同一个用户端发送多个业务数据包,则在确定了第一个数据包其目的ip对应的路由表后,则之后的所有发送至该用户端的业务数据包,均可以直接匹配至该路由表;同时每个网卡对应的ip均有对应的路由表,将每个网卡的ip以及对应的路由表切入策略路由表中,即预先配置好策略路由表,则在服务端向多个用户端发送业务数据包时,路由器能够基于策略路由表为向每个用户端发送的数据包自动匹配相应的路由表,进而便于通过对应的网卡发送。55.步骤sc、为各个网卡配置预设的负载均衡规则。56.进一步地,每个网卡的负载均衡规则可以相同,也可以互不相同。在本技术实施例中,每个网卡的负载均衡规则均是相同的。具体地,负载均衡规则可以包括步骤sn1-步骤s3,其中:步骤sn1、基于业务数据包的关联信息进行哈希计算,得到中间参数m。57.具体地,每个业务数据包或者多个业务数据包的关联信息在生成数据包时,是能够直接获取到的。对于一个业务数据包来说,将其关联信息在iptables内部做哈希运算,得到一个正整数。即进行hmark-rnd0xface,其中,0xface是一个参考值,这个参考值是可以由预先设置的,在此不做具体限定。58.步骤sn2、计算m/n的余数,n为网卡的数量,且每个网卡均预设有与其ip对应的编号,每个网卡的编号均从1-n中确定,且任意两个网卡的编号不重复。59.具体地,例如存在5个网卡,则网卡的编号依次为1、2、3、4、5。60.步骤sn3、若余数为n-1,则确定编号为n的网卡为业务数据包的输出网卡。61.具体地,如果m为8,8/5得到的余数为3,则确定编号为4的网卡为当前业务数据包对应的传输网卡。62.上述实施例从方法流程的角度介绍一种负载均衡的方法,下述实施例从虚拟模块或者虚拟单元的角度介绍了一种负载均衡装置,具体详见下述实施例。63.本技术实施例提供一种负载均衡装置,如图4所示,该装置400具体可以包括业务数据报获取模块401、第一nat规则配置模块402、输出网卡确定模块403以及第一发送模块404,其中:业务数据报获取模块401,用于获取业务数据包,业务数据包为基于用户端发出的请求数据包而产生的由服务端向用户端发送的数据包,每个业务数据包均关联有包括源端口、目的端口、源地址以及目的地址的关联信息;第一nat规则配置模块402,用于基于关系信息配置每个业务数据包的nat规则;输出网卡确定模块403,用于基于各个关联信息和预设的负载均衡规则,确定各个业务数据包分别对应的输出网卡,输出网卡为业务数据包被分配传输的网卡;第一发送模块404,用于将各个业务数据包通过对应的输出网卡发送。64.在一种可能实现的方式中,该装置400还包括:应答数据包生成模块,用于获取任一网卡接收到的请求数据包并生成应答数据包;流出网卡确定模块,用于确定应答数据包的流出网卡,流出网卡为请求数据包进入时的网卡;第二发送模块,用于将应答数据包通过流出网卡发送。65.在一种可能实现的方式中,当流出网卡确定模块确定应答数据包的流出网卡时,具体用于:基于iptables的mangle规则,生成请求数据包的分类标签,并将分类标签与请求数据包关联,分类标签中包括数据包进入时的网卡的ip,以及对应的路由表id;将分类标签和表帧写入策略路由表;配置请求数据包的nat规则;基于策略路由表确定流出网卡的ip以确定流出网卡。66.在一种可能实现的方式中,该装置400还包括:判断模块,用于判断分类标签是否为新标签;原标签确定模块,用于将分类标签确定为其被判断为新标签时所对应的原标签。67.在一种可能实现的方式中,该装置400还包括:策略路由表确定模块,用于基于各个网卡的ip确定各个网卡分别对应的策略路由表;写入模块,用于将各个网卡的ip以及各个网卡对应的路由表写入策略路由表,以得到配置后的策略路由表;配置模块,用于为各个网卡配置预设的负载均衡规则。68.在一种可能实现的方式中,负载均衡规则包括:基于业务数据包的源地址、源端口、目的地址以及目的端口进行哈希计算,得到中间参数m;计算m/n的余数,n为网卡的数量,且每个网卡均预设有与其ip对应的编号,每个网卡的编号均从0-n中确定,且任意两个网卡的编号不重复;若余数为n-1,则确定编号为n的网卡为业务数据包的输出网卡。69.本技术实施例中提供了一种电子设备,如图5所示,图5所示的路由器500包括:至少两个网卡、处理器501和存储器503。其中,处理器501和存储器503相连,如通过总线502相连。可选地,电子设备500还可以包括收发器504,和多个网卡1……n。需要说明的是,实际应用中收发器504不限于一个,该电子设备500的结构并不构成对本技术实施例的限定。70.处理器501可以是cpu(centralprocessingunit,中央处理器),通用处理器,dsp(digitalsignalprocessor,数据信号处理器),asic(applicationspecificintegratedcircuit,专用集成电路),fpga(fieldprogrammablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器501也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。71.总线502可包括一通路,在上述组件之间传送信息。总线502可以是pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。总线502可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。72.存储器503可以是rom(readonlymemory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(randomaccessmemory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electricallyerasableprogrammablereadonlymemory,电可擦可编程只读存储器)、cd-rom(compactdiscreadonlymemory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。73.存储器503用于存储执行本技术方案的应用程序代码,并由处理器501来控制执行。处理器501用于执行存储器503中存储的应用程序代码,以实现前述方法实施例所示的内容。74.图5示出的路由器仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。75.本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当其在计算机上运行时,使得计算机可以执行前述方法实施例中相应内容。76.应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。77.以上仅是本技术的部分实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1