买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】多进程负载均衡方法及装置_网宿科技股份有限公司_201710697795.X 

申请/专利权人:网宿科技股份有限公司

申请日:2017-08-15

公开(公告)日:2021-11-19

公开(公告)号:CN107508757B

主分类号:H04L12/803(20130101)

分类号:H04L12/803(20130101);H04L29/06(20060101)

优先权:

专利状态码:有效-授权

法律状态:2021.11.19#授权;2018.01.19#实质审查的生效;2017.12.22#公开

摘要:本发明公开了一种多进程负载均衡方法及装置,属于计算机通信技术领域。其中,该方法包括如下步骤:对多个进程或者多个进程中的管理进程开启过滤器,其中,所述过滤器对进程接收的ICMP数据包进行一致性处理;根据一致性处理的结果,确认处理所述ICMP数据包的进程,并将所述ICMP数据包发送至确认后的进程。本发明通过对进程开启过滤器,利用过滤器对进程接收的ICMP数据包进行一致性处理,确认处理ICMP数据包的进程,实现对ICMP数据包的分类,使某一类符合共同规则的ICMP数据包只被一个进程处理,进而将ICMP数据包在多个进程之间进行均衡的分配,使得各个进程处理的ICMP流量基本相同。

主权项:1.一种多进程负载均衡的方法,其特征在于,包括如下步骤:对多个进程开启过滤器,其中,所述过滤器是在所述进程使用的原始套接字上添加的一个自定义的过滤器,用于对进程接收的ICMP数据包进行一致性处理;根据一致性处理的结果,确认处理所述ICMP数据包的进程,并将所述ICMP数据包发送至确认后的所述进程;其中,所述对进程接收的ICMP数据包进行一致性处理包括:所述多个进程中每个进程开启的过滤器对其所在进程接收的数据包进行ICMP数据包抓取;所述过滤器对抓取到的ICMP数据包进行一致性处理。

全文数据:多进程负载均衡方法及装置技术领域[0001]本发明涉及计算机通信技术领域,尤其涉及一种多进程负载均衡方法及装置。背景技术[0002]ICMPInternetControlMessageProtocol,网络控制报文协议)是一种面向无连接的协议,用于在IP主机、路由器之间传递控制消息。其中,控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息,这些控制消息虽然并不传输用户数据,但是对用户数据的传递却起着重要的作用。引导[0003]ICMP流量、确保ICMP报文不丢失是一个非常重要的课题。[0004]现有的引导ICMP流量的方法是使用Linux标准的原始套接字,但是由于系统限制,原始套接字只能在一个进程上处理,无法进行ICMP流量的多进程负载均衡,从而带来以下问题:[0005]当ICMP流量很大时,将导致单个进程无法进行引导处理,尤其当发生ICMPFLO㈤攻击时,在前端防火墙起效之前,攻击流量可能已经导入系统,导致引导ICMP流量的进程瞬间负载过高,无法引导处理ICMP流量。发明内容[0006]为了解决现有技术的问题,本发明实施例提供了一种多进程负载均衡方法及装置。所述技术方案如下:[0007]—方面,提供了一种多进程负载均衡的方法,包括如下步骤:[0008]对多个进程或者多个进程中的管理进程开启过滤器,其中,所述过滤器对进程接收的ICMP数据包进行一致性处理;[0009]根据一致性处理的结果,确认处理所述ICMP数据包的进程,并将所述ICMP数据包发送至确认后的进程。[0010]进一步的,当对多个进程开启过滤器时,所述过滤器对进程接收的ICMP数据包进行一致性处理包括:[0011]多个进程中每个进程开启的过滤器对其所在进程接收的数据包进行ICMP数据包抓取;[0012]过滤器对抓取到的ICMP数据包进行一致性处理。[0013]进一步的,当对多个进程中的管理进程开启过滤器时,所述管理进程统一接收数据包;[0014]所述过滤器对进程接收的ICMP数据包进行一致性处理包括:[0015]所述管理进程开启的过滤器对所述管理进程接收的数据包进行ICMP数据包抓取;[0016]过滤器对抓取到的ICMP数据包进行一致性处理。[0017]进一步的,所述一致性处理具体为:[0018]对ICMP数据包的报文中的标识符进行取余。[0019]进一步的,所述根据一致性处理的结果,确认处理所述ICMP数据包的进程的步骤具体为:[0020]将取余得到的余数按照余数与进程匹配关系,确认处理所述ICMP数据包的进程。[0021]另一方面,提供了一种多进程负载均衡装置,所述装置包括:[0022]设置模块,用于对多个进程或者多个进程中的管理进程开启过滤器,其中所述过滤器用于对进程接收的ICMP数据包进行一致性处理;[0023]确认模块,用于根据一致性处理的结果,确认处理所述ICMP数据包的进程;[0024]发送模块,用于将所述ICMP数据包发送至所述确认模块确认后的进程。[0025]进一步的,当设置模块对多个进程开启过滤器时,所述过滤器对进程接收的ICMP数据包进行一致性处理包括:[0026]多个进程中每个进程开启的过滤器对其所在进程接收的数据包进行ICMP数据包抓取;[0027]过滤器对抓取到的ICMP数据包进行一致性处理。[0028]进一步的,当设置模块对多个进程中的管理进程开启过滤器时,所述管理进程统一接收数据包;[0029]所述过滤器对进程接收的ICMP数据包进行一致性处理包括:[0030]所述管理进程开启的过滤器对所述管理进程接收的数据包进行ICMP数据包抓取;[0031]过滤器对抓取到的ICMP数据包进行一致性处理。[0032]进一步的,所述一致性处理具体为:[0033]所述过滤器对ICMP数据包的报文中的标识符进行取余。[0034]进一步的,所述确认模块还用于将取余得到的余数按照余数与进程匹配关系,确认处理所述ICMP数据包的进程。[0035]本发明实施例提供的技术方案带来的有益效果是:[0036]对进程开启过滤器,通过过滤器对进程接收的ICMP数据包进行一致性处理,包括对ICMP数据包报文中的标识符的取余处理,根据处理结果,确认处理ICMP数据包的进程,实现对ICMP数据包的分类,使某一类符合共同规则的ICMP数据包只被一个进程处理,进而将ICMP数据包在多个进程之间进行均衡的分配,使得各个进程处理的ICMP流量基本相同。附图说明[0037]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0038]图1是本发明实施例一提供的一种多进程负载均衡方法步骤流程图;[0039]图2是本发明实施例一提供的一种开启过滤器的实施方式步骤流程图;[0040]图3是本发明实施例一提供的另一种开启过滤器的实施方式步骤流程图;[0041]图4是本发明实施例二提供的一种多进程负载均衡装置结构示意图。具体实施方式[0042]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。[0043]实施例一[0044]本发明实施例提供了一种多进程负载均衡方法,参见图1,包括如下步骤:[0045]S101:对多个进程或者多个进程中的管理进程开启过滤器,其中,所述过滤器对进程接收的ICMP数据包进行一致性处理。[0046]在本实施例中,过滤器又称filter,其能够按照设定的过滤规则,抓取符合过滤规则的数据包。其中,数据包的种类可以是ICMP数据包、TCPTransmissionControlProtocol,传输控制协议数据包、UDPUserDatagramProtocol,用户数据报协议数据包等,在本实施例中,由于需要抓取的数据包为ICMP数据包,因此将过滤规则设定为只抓取ICMP数据包,对于不是ICMP数据包的其他数据包,则按照默认规则进行处理。在此,对ICMP流量的含义进行说明,即ICMP流量是指一定时间内接受的ICMP数据包的总数据量。[0047]具体而言,可以通过使用内核LSF功能的S0_ATTACH_FILTER选项,在进程使用的原始套接字S0CK_RAW上添加一个自定义的过滤器,来开启进程的过滤器,将满足该过滤器设定过滤条件的数据包上发至用户空间,进而对抓取的ICMP数据包进行进一步处理。[0048]需要说明的是,套接字有很多种,包括流式套接字S0CK_STREAM、数据报套接字S0CK_DGRAM、原始套接字,不同的套接字能够处理不同的数据包。例如原始套接字S0CK_RAW允许对低于传输层的协议或物理网络直接访问,可以接收和发送ICMP数据包、IGMPInternetGroupManagementProtocol,网络组管理协议包,在本实施例中,通过在原始套接字中添加过滤器,可以实现基于全部IP数据包的抓取,包括基于IP数据包的ICMP数据包。[0049]在本实施例中,对进程开启过滤器具有不同的实施方式。[0050]参见图2,图2提供了一种对进程开启过滤器的实施方式,在本实施方式中,对多个进程中的每个进程都开启一个过滤器,通过过滤器对该进程接收到的ICMP数据包进行一致性处理,再根据一致性处理结果确认处理该ICMP数据包的进程,并将该ICMP数据包发送至确认后的进程。[0051]具体而言,当对多个进程开启过滤器时,所述过滤器对进程接收的ICMP数据包进行一致性处理包括:[0052]S201:多个进程中每个进程开启的过滤器对其所在进程接收的数据包进行ICMP数据包抓取;[0053]S202:过滤器对抓取到的ICMP数据包进行一致性处理。[0054]具体而言,进程开启的过滤器对进程接收的数据包进行过滤,是为了先将ICMP数据包从接收的不同种类数据包中抓取出来,再对抓取到的ICMP数据包进行一致性处理,其中,进行一致性处理是为了对ICMP数据包进行分类,使某一类符合共同规则的ICMP数据包只被一个进程处理,进而将ICMP数据包在多个进程之间进行均衡的分配,使得各个进程处理的ICMP流量基本相同。[0055]参见图3,图3提供了另一种对进程开启过滤器的实施方式,在本实施方式中,指定一个统一接收数据包的管理进程,在管理进程上开启过滤器,过滤器对管理进程接收的ICMP数据包进行一致性处理,再根据一致性处理结果确认处理该ICMP数据包的进程,并将该ICMP数据包发送至确认后的进程。[0056]具体而言,当对多个进程中的管理进程开启过滤器时,所述管理进程统一接收数据包,此时,所述过滤器对进程接收的ICMP数据包进行一致性处理包括:[0057]S301:所述管理进程开启的过滤器对所述管理进程接收的数据包进行ICMP数据包抓取;[0058]S302:过滤器对抓取到的ICMP数据包进行一致性处理。[0059]具体而言,一致性处理的算法很多,例如取余算法,哈希一致性算法。[0060]在本实施例中,上述一致性处理的算法具体为:对ICMP数据包的报文中的标识符进行取余。[0061]参见表1,表1不出了ICMP数据包的一种报文结构。[0062]表1[0064]表1中所示的为类型17代码0的ICMP数据包的报文格式,其中,类型占一个字节,代码占一个字节,检验和、标识符和序列和各占两个字节。[0065]下面对取余算法进行简要的说明。例如,标识符为A,对A按8取余,取余的结果为,该ICMP数据包取余所得的余数为B,S卩B=A%8。当得到ICMP数据包的标识符取余后的余数之后,可以对不同的余数进行分类,将分类后的余数与进程进行关系匹配。[0066]S102:根据一致性处理的结果,确认处理所述ICMP数据包的进程,并将所述ICMP数据包发送至确认后的进程。[0067]在本实施例中,根据一致性处理的结果,确认处理所述ICMP数据包的进程的步骤具体为:将取余得到的余数按照余数与进程匹配关系,确认处理所述ICMP数据包的进程。[0068]具体而言,由于在同一段时间中,同一个源IP、目的IP中ICMP数据包的标识符是不变的,并且该标识符在取值范围内的分布较为均匀,因此能够通过对该标识符进行取余处理,将取余得到的余数按照余数与进程匹配关系,确认处理相同余数的ICMP数据包的进程。其中,余数与进程匹配关系还可以按照各个进程的负载情况对其进行设置。[0069]例如,有八个进程处理ICMP流量,为了达到这八个进程的ICMP流量负载均衡,可以对ICMP数据包的标识符对8取余,例如标识符为A,所得余数为B,则有:B=A%8。取余完成后,按照下述余数与进程匹配关系,将ICMP数据包引导发送至相应进程,余数与进程匹配关系为:将上述余数为〇的ICMP数据包引导至1号进程,余数为1的ICMP数据包引导至2号进程,以此类推,将余数为7的ICMP数据包引导至8号进程。[0070]需要注意的是,当发生ICMPFLOOD攻击时,由于进行攻击的ICMP数据包的标识符具有一定的规律,此时,标识符在取值范围内的分布变得不均匀,通过上述取余处理后,很容易造成某一个或某几个进程的负载较高。为了克服标识符在取值范围内分布不均匀的问题,还是以八个进程处理ICMP流量为例:对ICMP数据包的标识符按照80取余,按照下述余数与进程匹配关系,将余数为0-9的ICMP数据包引导至1号进程,余数为10-19的ICMP数据包引导至2号进程,以此类推,余数为70-79的ICMP数据包引导至8号进程;当其中某一个进程由于攻击流量或其他原因导致负载较高时,例如1号进程负载较高,则修改余数与进程匹配关系,令1号进程只处理余数为0-2的ICMP数据包,将余数为3-9的ICMP数据包均匀引导至2-8号进程,通过这样的处理,可以在不影响其他进程的情况下,将负载较高的进程所处理的ICMP数据包引导到其他进程,实现多进程负载均衡。[0071]需要说明的是,上述哈希一致性算法以及取余算法只是作为一致性过滤算法中的实施方式,不作为对一致性过滤算法的限定,只要能够起到一致性过滤算法作用的其他具体算法,均能够作为过滤器的一致性过滤算法。[0072]在本实施例中,还可以利用内核LSF功能,对数据包中的源IP或者目的IP进行过滤,将符合过滤规则的ICMP数据包,引导至相应的处理进程。例如对特定的源IP进行过滤,将从该源IP发出的ICMP数据包引导至相应的处理进程。[0073]需要注意的是,由于经过系统的数据包,如果开启ipforward可能会被Linux内核所转发,这样会导致二次请求源站,因此可使用iptables对已经被LSF过滤的ICMP数据包进行标记,并通过路由规则,将经过标记后的数据包导入到127.0.0.1中,这样需要引导的数据包不会直接被内核转发,从而不影响其他数据包的正常使用。[0074]本发明实施例对进程开启过滤器,通过过滤器对进程接收的ICMP数据包进行一致性处理,包括对ICMP数据包报文中的标识符的取余处理,根据处理结果,确认处理ICMP数据包的进程,实现对ICMP数据包的分类,使某一类符合共同规则的ICMP数据包只被一个进程处理,进而将ICMP数据包在多个进程之间进行均衡的分配,使得各个进程处理的ICMP流量基本相同。[0075]实施例二[0076]参见图4,本发明实施例提供了一种多进程负载均衡装置,可以执行实施例一中提供的多进程负载均衡方法,所述装置包括:[0077]设置模块401,用于对多个进程或者多个进程中的管理进程开启过滤器,其中所述过滤器用于对进程接收的ICMP数据包进行一致性处理;[0078]确认模块402,用于根据一致性处理的结果,确认处理所述ICMP数据包的进程;[0079]发送模块403,用于将所述ICMP数据包发送至所述确认模块402确认后的进程。[0080]在本实施例中,当设置模块401对多个进程开启过滤器时,所述过滤器对进程接收的ICMP数据包进行一致性处理包括:[0081]多个进程中每个进程开启的过滤器对其所在进程接收的数据包进行ICMP数据包抓取;[0082]过滤器对抓取到的ICMP数据包进行一致性处理。[0083]在本实施例中,当设置模块401对多个进程中的管理进程开启过滤器时,所述管理进程统一接收数据包;[0084]所述过滤器对进程接收的ICMP数据包进行一致性处理包括:[0085]所述管理进程开启的过滤器对所述管理进程接收的数据包进行ICMP数据包抓取;[0086]过滤器对抓取到的ICMP数据包进行一致性处理。[0087]在本实施例中,所述一致性处理具体为:所述过滤器对ICMP数据包的报文中的标识符进行取余。[0088]在本实施例中,所述确认模块402还用于将取余得到的余数按照余数与进程匹配关系,确认处理所述ICMP数据包的进程。[0089]本发明实施例所提供的多进程负载均衡装置结构简单,通过开启过滤器对进程接收的ICMP数据包进行一致性处理,包括对ICMP数据包报文中的标识符的取余处理,根据处理结果,确认处理ICMP数据包的进程,实现对ICMP数据包的分类,使某一类符合共同规则的ICMP数据包只被一个进程处理,进而将ICMP数据包在多个进程之间进行均衡的分配,使得各个进程处理的ICMP流量基本相同。[0090]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。[0091]以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。[0092]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如R0MRAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备可以是个人计算机,服务器,或者网络设备等执行各个实施例或者实施例的某些部分所述的方法。[0093]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

权利要求:1.一种多进程负载均衡的方法,其特征在于,包括如下步骤:对多个进程或者多个进程中的管理进程开启过滤器,其中,所述过滤器对进程接收的ICMP数据包进行一致性处理;根据一致性处理的结果,确认处理所述ICMP数据包的进程,并将所述ICMP数据包发送至确认后的所述进程。2.根据权利要求1所述的多进程负载均衡方法,其特征在于,当对多个进程开启过滤器时,所述过滤器对进程接收的ICMP数据包进行一致性处理包括:多个进程中每个进程开启的过滤器对其所在进程接收的数据包进行ICMP数据包抓取;所述过滤器对抓取到的ICMP数据包进行一致性处理。3.根据权利要求1所述的多进程负载均衡方法,其特征在于,当对多个进程中的管理进程开启过滤器时,所述管理进程统一接收数据包;所述过滤器对进程接收的ICMP数据包进行一致性处理包括:所述管理进程开启的过滤器对所述管理进程接收的数据包进行ICMP数据包抓取;所述过滤器对抓取到的ICMP数据包进行一致性处理。4.根据权利要求1-3任意一项所述的多进程负载均衡方法,其特征在于,所述一致性处理具体为:对ICMP数据包的报文中的标识符进行取余。5.根据权利要求4所述的多进程负载均衡方法,其特征在于,所述根据一致性处理的结果,确认处理所述ICMP数据包的进程的步骤具体为:将取余得到的余数按照余数与进程匹配关系,确认处理所述ICMP数据包的进程。6.—种多进程负载均衡装置,其特征在于,所述装置包括:设置模块,用于对多个进程或者多个进程中的管理进程开启过滤器,其中所述过滤器用于对进程接收的ICMP数据包进行一致性处理;确认模块,用于根据一致性处理的结果,确认处理所述ICMP数据包的进程;发送模块,用于将所述ICMP数据包发送至所述确认模块确认后的进程。7.根据权利要求6所述的多进程负载均衡装置,其特征在于,当设置模块对多个进程开启过滤器时,所述过滤器对进程接收的ICMP数据包进行一致性处理包括:多个进程中每个进程开启的过滤器对其所在进程接收的数据包进行ICMP数据包抓取;所述过滤器对抓取到的ICMP数据包进行一致性处理。8.根据权利要求6所述的多进程负载均衡装置,其特征在于,当设置模块对多个进程中的管理进程开启过滤器时,所述管理进程统一接收数据包;所述过滤器对进程接收的ICMP数据包进行一致性处理包括:所述管理进程开启的过滤器对所述管理进程接收的数据包进行ICMP数据包抓取;所述过滤器对抓取到的ICMP数据包进行一致性处理。9.根据权利要求6-8任意一项所述的多进程负载均衡装置,其特征在于,所述一致性处理具体为:所述过滤器对ICMP数据包的报文中的标识符进行取余。10.根据权利要求9所述的多进程负载均衡装置,其特征在于,所述确认模块还用于将取余得到的余数按照余数与进程匹配关系,确认处理所述ICMP数据包的进程。

百度查询: 网宿科技股份有限公司 多进程负载均衡方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。