一种网络负载均衡的方法及系统与流程

文档序号:11959890阅读:236来源:国知局
一种网络负载均衡的方法及系统与流程

本发明涉及网络数据传输领域,尤其涉及一种网络负载均衡的方法及系统。



背景技术:

随着移动互联网和云计算的快速发展,网络应用的用户规模日趋庞大,相应的应用服务器集群如何可扩展的承载海量数据的应用与研究引起了广泛的关注。

负载均衡技术在服务器集群前端架设负载均衡器,将应用请求根据负载均衡算法合理的转发到对应的服务器,为应用服务器集群提供了一定的扩展性。但是,面对如今巨大的用户规模,单一的负载均衡器是无法承载用户请求的。传统的分流算法不公平,造成服务器的端口缓冲压力增大。而针对目前的应用环境为分析网络应用中的数据流使用TCP协议;必须保证同一条TCP数据流进入同一分析服务器内。

基于以上问题,本发明提供一种解决方案。



技术实现要素:

本发明的目的是提供一种网络负载均衡的方法及系统,使网络通信中的数据报文进行均衡的缓冲,使资源利用率得到妥善的处理。

为了实现上述目的,本发明提供了的技术方案如下:

本发明提供一种网络负载均衡的方法,包括:

步骤S100获取当前数据包的报头信息;

步骤S200根据所述当前数据包的报头信息为所述当前数据包分配存储队列的入口;

步骤S400根据分析服务器的目的端口号均衡缓冲所述当前数据包的数据信息;

步骤S500为所述存储队列的入口分配对应的所述分析服务器的目的端口号。

进一步优选的,所述步骤S200包括:

步骤S210根据所述当前数据包的报头信息进行哈希运算;

步骤S220根据哈希运算的结果为所述当前数据包分配存储队列入口。

进一步优选的,所述步骤200与所述步骤S400之间还包括:

步骤S300根据所述存储队列的入口判断对应的存储队列是否为空,当为空时,执行下一步骤,否则,执行步骤S320;

步骤S311在所述存储队列分配的入口输入所述当前数据包的报头信息;并执行所述步骤S400。

步骤S320判断所述存储队列内的数据包的报头与所述当前数据包的报头是否匹配,当匹配时,执行所述步骤S400,否则,执行步骤S700;

步骤S700根据预设规则对所述当前数据包直接分配分析服务器的端口号。

进一步优选的,所述步骤S311之前还包括:

步骤S310判断所述当前数据包的报头信息中是否存在有建立连接报文的标志信息,当有时,执行步骤S311,否则,执行步骤S700。

进一步优选的,所述步骤S400还包括:

步骤S410根据预设规则为所述分析服务器设置对应的端口号;

步骤S420根据所述分析服务器的端口号获取对应分析服务器的实时缓冲余量;

步骤S430获取所述实时缓冲余量最大的分析服务器的端口号;

步骤S440将所述缓冲余量最大的分析服务器的端口号与所述当前数据包的存储队列的入口进行匹配。

进一步优选的,在所述步骤S500之后还包括:

步骤S610判断所述当前数据包的报头信息中是否存在释放连接标志信息,和/或重建连接标志信息;当存在时,执行步骤S630;

步骤S630设置所述存储队列的入口为空。

进一步优选的,所述步骤S630之前还包括:

步骤S620判断所述当前数据包的报头信息中老化值标志是否超过预设阈值,当超过时,执行步骤S630。

进一步优选的,所述步骤S700包括:

步骤S710根据获取的所述当前数据包的报头信息进行异或运算;

步骤S720将所述异或运算的值进一步求模运算;

步骤S730设置所述求模运算的值为缓冲端口号;

步骤S740根据所述缓冲端口号进行所述当前数据包的均衡缓冲。

进一步优选的,所述步骤S100之前还包括:

步骤S000滤除所述当前数据包中纯应报文。

本发明还提供一种网络负载均衡的系统,包括:

报头信息获取模块,获取当前数据包的报头信息;

信息暂存管理模块,与所述报头信息获取模块电连接,根据所述报头信息获取模块获取的报头信息为所述当前数据包分配存储队列的入口;

端口获取模块,与所述信息暂存管理模块电连接,用于根据分析服务器的目的端口号均衡缓冲所述当前数据包的数据信息;

第一信息分流模块,与所述端口获取模块电连接,用于为所述存储队列的入口分配对应的所述分析服务器的目的端口号。

进一步优选的,所述信息暂存模块包括:

哈希运算子模块,根据所述报头信息获取模块获取的当前数据包的报头信息进行哈希运算;

入口分配子模块,根据所述哈希运算子模块运算的结果为所述当前数据包分配存储队列入口。

进一步优选的,包括:

队列状态获取模块,分别与所述信息暂存管理模块、所述端口获取模块电连接,用于根据所述存储队列的入口判断对应的存储队列的空间状态;

报头输入子模块,当所述队列状态获取模块判断存储队列的空间状态为空时,用于在所述存储队列分配的入口输入所述当前数据包的报头信息;

报头判断子模块,当所述队列获取模块判断存储队列的空间状态不为空时,用于判断所述存储队列内的数据包的报头与所述当前数据包的报头是否匹配;

当匹配时,所述端口获取模块分配所述分析服务器的端口号;

第二信息分流模块,当所述报头判断子模块判断报头信息不匹配时,用于根据预设规则对所述当前数据包直接分配分析服务器的端口号。

进一步优选的,还包括:

第一标志判断子模块,当所述队列状态获取模块判断所述存储队列的空间为空时,用于判断所述报头信息获取模块获取的报头信息中是否含有建立连接报文的标志信息;

当第一标志判断子模块判断含有连接标志信息时,所述报头输入子模块输入所述当前数据包的报头信息;

当第一标志判断子模块判断没有连接标志信息时,,所述第二信息分流模块根据预设规则直接分配分析服务器的端口号。

进一步优选的,所述端口获取模块还包括:

端口号设置子模块,用于根据预设规则为所述分析服务器设置对应的端口号;

缓冲余量获取子模块,用于根据所述端口号设置子模块设置的对应端口号获取对应分析服务器的实时缓冲余量;

端口号选择子模块,用于根据所述缓冲余量获取子模块获取的分析服务器的实时缓冲余量进行比对,获取所述实时缓冲余量最大的分析服务器的端口号;

端口号匹配子模块,用于根据所述端口号选择子模块获取的缓冲余量最大的分析服务器的端口号与所述当前数据包的所述存储队列入口进行匹配。

进一步优选的,还包括:

第二标志判断子模块,与所述第一信息分流模块电连接,用于判断所述报头信息获取模块获取的报头信息中是否存在释放连接标志信息,和/或重建连接标志信息;

队列处理子模块,当所述第二标志判断模块判断存在释放连接标志信息,和/或所述重建连接标志信息时,用于设置所述存储队列的入口为空。

进一步优选的,还包括:

第三标志判断子模块,与第一信息分流模块电连接,用于判断所述报头信息获取模块获取的报头信息中老化值标志信息是否超过预设阈值;

当所述第三标志判断子模块判断标志信息中老化值标志超过预设阈值时,所述队列处理子模块还用于设置所述存储队列的入口为空。

进一步优选的,所述第二信息分流模块包括:

报头运算子模块,用于将所述报头信息获取模块获取的当前数据包的报头信息进行异或运算;

求模子模块,根据所述报头运算子模块进行异或运算的值进一步求模运算;

第二端口设置子模块,根据所述求模子模块进行求模运算的值设置为所述分析服务器的缓冲端口号;

第二端口缓冲子模块,将所述第二端口设置子模块设置的端口号的与所述当前数据包进行匹配。

进一步优选的,还包括:

信息滤除模块,用于滤除所述当前数据包中纯应报文。

通过本发明提供的一种网络负载均衡的方法及系统,能够带来以下至少一种有益效果:

1、本发明根据获取当数据包中报头信息,通关相关计算为当前数据包设置暂存队列空间的入口,再根据限定的条件为队列空间入口匹配分析服务器的端口,使网络通信的中数据报文进行均衡的缓冲,使资源利用率得到妥善的处理、加强网络数据处理能力、提高网络的灵活性和可用性。

2、本发明为当前数据包设置暂存队列空间的入口,入口的分配是根据获取当数据包中报头信息,也即五元组,通过哈希算法计算出相应的哈希值,根据哈希值为当前数据包设置暂存队列空间的入口,由于哈希算法中如果一段明文中任何一个字母或者数字发生改变或者掉落,随后的哈希值都将产生不同的值。因此在网络通信中具有非常高的可靠性,保障了分配存储队列入口不会发生异常。

3、本发明在对数据报文进行均衡之前,要将传输的数据包通过管理器进行的分配,每个数据包的报头信息不同,根据不同报头信息分配对应的暂存空间,特别是同一数据流的相关数据信息要分别在同一个分析服务器的端口,防止同一包数据发往不同的分析服务器,避免了数据报文分析的丢包现象,使数据传输更加可靠。

4、本发明网络数据传输的均衡,与现有技术相比,本发明采用的动态与静态相结合的方式,在本发明中首先判断分析服务器端口的缓冲余量,通过对比,将获取的最大缓冲余量端口分配给对应待缓冲的数据流,在每次分配时都要进行轮询检测,获取到最大余量的端口,并将该端与当前数据包的存储队列的入口进行匹配,这样有效避免了分析服务器的缓冲不均;本发明还包括静态的缓冲,当不满足动态条件时,对于待缓冲的数据流进行静态缓冲,避免了数据流的丢失现象,使其都能够进行缓冲分析。

5、本发明提供的静态的缓冲方法在数据均衡的实施中,提供一种应急预案,使本发明具有更加严密性。

6、本发明还提供一种方法使网络传输中的数据包(即数据流)再进行分流之前的检测,根据数据包中报头信息标志判断数据报文的状态,如果数据包中含有两个FIN标志,和/或RST标志、老化值阈值标志时,需将该相关的数据报文全部清除,为后续等待的数据流提供暂存空间,缓解数据缓冲的压力。

附图说明

下面将以明确易懂的方式,结合附图说明优选实施方式,对一种网络负载均衡的方法及系统的上述特性、技术特征、优点及其实现方式予以进一步说明。

图1是本发明一种网络负载均衡的方法实施例的流程图;

图2是本发明一种网络负载均衡的方法实施例的另一个流程图;

图3是本发明一种网络负载均衡的方法实施例的另一个流程图;

图4是本发明一种网络负载均衡的方法实施例的另一个流程图;

图5是本发明一种网络负载均衡的方法实施例的另一个流程图;

图6是本发明一种网络负载均衡的方法实施例的另一个流程图;

图7是本发明一种网络负载均衡的系统实施例的一个结构图;

图8是本发明一种网络负载均衡的系统实施例的另一个结构图;

图9是本发明一种网络负载均衡的系统实施例的另一个结构图;

图10是本发明一种网络负载均衡的系统实施例的另一个结构图;

图11是本发明一种网络负载均衡的系统实施例的另一个结构图;

图12是本发明一种网络负载均衡的系统实施例的另一个结构图。

具体实施方式

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。

为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

本发明提供了一种网络负载均衡的方法的实施例,参考图1所示,包括:

步骤S100获取当前数据包的报头信息;

步骤S200根据所述当前数据包的报头信息为所述当前数据包分配存储队列的入口;

步骤S400根据分析服务器的目的端口号均衡缓冲所述当前数据包的数据信息;

步骤S500为所述存储队列的入口分配对应的所述分析服务器的目的端口号。

具体的,在本实施例中,网络数据进行传输时,从当前数据包的包头信息中提取五元组,包括指源IP地址,源端口,目的IP地址,目的端口和传输层协议;将五元组进行预设算法的运算,通过相关运算后得到当前数据包分配暂存队列的入口;在分析服务器中获取其相应的端口号,根据端口号进一步判断是否满足分流条件,当满足时,将当前数据包分配给相应满足条件的端口,实现数据的均衡负载分流。

优选的,所述步骤S200包括:

步骤S210根据所述当前数据包的报头信息进行哈希运算;

步骤S220根据哈希运算的结果为所述当前数据包分配存储队列入口。

具体的,在本实施例中的还包括上一实施例的步骤,不在重复;参考图2所示,将当前数据包分配存储队列的入口,主要根据提取的五元组通过哈希算法,得到哈希值;(哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。)根据的哈希值为传输的数据包分配不同的入口;哈希算法中如果一段明文中任何一个字母或者数字发生改变或者掉落,随后的哈希值都将产生不同的值。因此在网络通信中具有非常高的可靠性,保障了分配存储队列入口不会发生异常。

优选的,所述步骤200与所述步骤S400之间还包括:

步骤S300根据所述存储队列的入口判断对应的存储队列是否为空,当为空时,执行下一步骤,否则,执行步骤S320;

步骤S311在所述存储队列分配的入口输入所述当前数据包的报头信息;并执行所述步骤S400。

步骤S320判断所述存储队列内的数据包的报头与所述当前数据包的报头是否匹配,当匹配时,执行所述步骤S400,否则,执行步骤S700;

步骤S700根据预设规则对所述当前数据包直接分配分析服务器的端口号。

在本实施例中的还包括上一实施例的步骤,不在重复;在本实施例中增加了步骤S300,参考图3所示,将数据包分配给存储队列时,首先要判断计算获取到入口值对应的存储队列是否存在数据包,如果不存在数据包时,此时该存储队列没有数据包进入,为空的状态,为了将同一个数据包的数据放置在同一分析服务器的端口进行缓冲,首先要在空的存储队列填入对应的五元组信息;当不为空时,说明已经存有数据包,那么需要将已经存储在存储队列中的数据包的五元组信息与当前数据包的五元组信息进行比对,看是否是分留给同一个分析服务器的端口进行缓冲,如果各自的五元组信息匹配成功,根据分析服务器的目的端口号均衡缓冲所述当前数据包的数据信息;如果五元组信息匹配不成功,根据预设的规则进行静态分配。

优选的,所述步骤S311之前还包括:

步骤S310判断所述当前数据包的报头信息中是否存在有建立连接报文的标志信息,当有时,执行步骤S311,否则,执行步骤S700。

具体的,在本实施例在上一实施例基础上进一步的展开判断,其他的步骤不再重复;参考图3所示,当将数据包分配给存储队列时,首先要判断计算获取到入口值对应的存储队列是否存在数据包,如果不存在数据包时,此时该存储队列没有数据包进入,为空的状态,为了将同一个数据包的数据放置在同一分析服务器的端口进行缓冲,在填写五元组信息之前还要判断当前数据包是否一个全新的数据包,则要在报头信息中获取SNY信息,是否含有建立连接握手的标志,如果存在,那么证明该数据包是新的生命周期的开始,继而将在空的存储队列填入对应的五元组信息;保障数据传输的可靠性,安全性。

优选的,所述步骤S400还包括:

步骤S410根据预设规则为所述分析服务器设置对应的端口号;

步骤S420根据所述分析服务器的端口号获取对应分析服务器的实时缓冲余量;

步骤S430获取所述实时缓冲余量最大的分析服务器的端口号;

步骤S440将所述缓冲余量最大的分析服务器的端口号与所述当前数据包的存储队列的入口进行匹配。

具体的,本实施例其他的步骤与以上的实施例中已经讲述不再重复;参考图4所示,在本实施例中对于分析将传输的数据包进行分流,也即是分配分析服务器的端口号,那么具体端口号的获取是按照一定规则进行选通分配的,首先根据端口号判断该端口的数据缓冲量的大小,从众多的端口中选择缓冲余量大的端口,将该端口写入存储队列的入口,完成数据均衡缓冲。(分析服务器的端口号的获取,当分析服务器的总数量为N确定时,然后根据N求模运算,获取到对应分析服务器的端口号;当然还可以根据其他的规则方法获取到每个分析服务器的端口号;关于端口获取的方法,基本上是类似于hash函数一样,分布的越均匀越好,用的最多的最简单的就是取余(求模)运算,或者CRC8运算,简单异或等等,就是从5元组映射到端口数量上,最主要能确保固定的流能进同一个端口(流是指5元组相同的TCP包或UDP包序列),也有可能是几种映射方法混合,这个无法限制,因为总能找出不同的方法,简单换个映射函数即可。)

优选的,还包括:

步骤S610判断所述当前数据包的报头信息中是否存在释放连接标志信息,和/或重建连接标志信息;当存在时,执行步骤S630;

步骤S630设置所述存储队列的入口为空。

优选的,所述步骤S630之前还包括:

步骤S620判断所述当前数据包的报头信息中老化值标志是否超过预设阈值,当超过时,执行步骤S630。

具体的,本实施例其他的步骤与以上的实施例中已经讲述不再重复;参考图5所示,在数据包进行缓冲分流的过程中,对整个数据的缓冲过程要进行相关的检测,检测实施主要判断存储队列中的数据包的标志信息,将检测的异常数据或者干扰分流的进行清除;为其他的数据包分配空间,这样数据缓冲均衡更加有效。暂存队列中的数据包含FIN标志,同时包含两个FIN标志,即FIN-S:源到目的的含FIN标志,还有FIN-D:目的到源的含FIN标志,还包括含RST标志,只有一个即可,两种情况只要一种存在,则将该入口的存储队列进行清空;同时还包括老化值的检测老化值只有时间值,当数据流序列进入队列(从SYN开始)算起,每当这个流队列中有一个包过来,总会将老化值(即时间值)清为0,如果一直没有包来,专有硬件会定时对每个队列进行原子性的老化值累加操作(即时间值累加操作),流队列在一定的阈值时间之内收不到包,也就不能结束(因为没有包过来,FIN或RST等表示结束的包没有来),超过了规定的阈值(例如设为5分钟,即距离最后一次收到包的时间间隔超过5分钟),则流队列结束。),如果某一入口值对应的存储队列中的数据包中的老化值超过预定的阈值,则也将该入口的存储队列进行清空,等待下一组数据包的到来;硬件系统会有一个模块专门定时为各个存储队列进行老化值累加(周期自定,例如几秒,对于64K表项,硬件进行一次完整的老化值遍历一般历时小于1毫秒),老化模块操作优先级最低,中间可被插入删除操作打断。但是,每次针对一个存储队列的老化操作属于“原子操作”。一旦老化值累加到了阈值,就删除存储队列。

优选的,所述步骤S700包括:

步骤S710根据获取的所述当前数据包的报头信息进行异或运算;

步骤S720将所述异或运算的值进一步求模运算;

步骤S730设置所述求模运算的值为缓冲端口号;

步骤S740根据所述缓冲端口号进行所述当前数据包的均衡缓冲。

具体的,本实施例其他的步骤与以上的实施例中已经讲述不再重复;参考图6所示,当根据数据包五元组获取的存储队列的入口值,该入口值对应的存储队列不为空时,判断该队列入口的五元组与当前数据包的五元组进行判断匹配时,还有将当前数据包分配给一个空置状态的存储队列时,如果判断当前数据包不是一组新的传输数据(新的生命周期的开始,根据步骤S310S实施判断),以上两种情况,系统会根据预先设定的进行分析服务器端口的配置,这样能够满足所有的传输数据进行均衡的匹配分流;其实是方法是:根据数据包的五元组进行简单计算(例如字节异或),得出一个值,对N(分流服务器为N台)模余,然后得到0到N-1的值,对应各个端口,起到分流的作用。

优选的,所述步骤S100之前还包括:

步骤S000滤除所述当前数据包中纯应报文。

具体的,参考图6所示,本实施例中纯应报文是指不含任何上层应用数据的报文,由于纯应报文对构建应用数据没有帮助,并且容易增加分流和分析的负担。

本发明还提供一种网络负载均衡的方法的实施例,参考图6所示,包括:

步骤S000滤除所述当前数据包中纯应报文。

步骤S100获取当前数据包的报头信息;

步骤S210根据所述当前数据包的报头信息进行哈希运算;

步骤S220根据哈希运算的结果为所述当前数据包分配存储队列入口;

步骤S300根据所述存储队列的入口判断对应的存储队列是否为空,当为空时,执行下一步骤,否则,执行步骤S320;

步骤S310判断所述当前数据包中是否含有建立连接报文的标志信息,当有时,执行步骤S311,否则,执行步骤S700;

步骤S311在所述存储队列分配的入口输入所述当前数据包的报头信息;并执行步骤S400;

步骤S320判断所述存储队列内的数据包的报头与所述当前数据包的报头是否匹配,当匹配时,执行步骤S400,否则,执行步骤S700;

步骤S410根据预设规则为所述分析服务器设置对应的端口号;

步骤S420根据所述分析服务器的端口号获取对应分析服务器的实时缓冲余量;

步骤S430获取所述实时缓冲余量最大的分析服务器的端口号;

步骤S440将所述缓冲余量最大的分析服务器的端口号与所述当前数据包进行匹配,完成数据均衡缓冲。

步骤S500为所述存储队列的入口分配对应的所述分析服务器的目的端口号;

步骤S610判断所述标志信息中是否存在释放连接标志,和/或重建连接标志;当存在时,执行步骤S630;

步骤S630设置所述存储队列的入口为空;

步骤S700根据预设规则对所述当前数据包直接分配分析服务器的端口号;

步骤S710根据获取的所述当前数据包的报头信息进行异或运算;

步骤S720将所述异或运算的值进一步求模运算;

步骤S730设置所述求模运算的值为缓冲端口号;

步骤S740根据所述缓冲端口号进行所述当前数据包的均衡缓冲。

具体的,本发明的应用为:

分析网络应用中的TCP数据流(需要分析的主流应用都使用TCP协议);必须保证同一条TCP流进入同一个分析服务器,相当于具有相同五元组的TCP数据流必须进入同一个端口(每个端口对应一个分析服务器);对于分析的数据,TCP纯应报文(不含TCP协议用户层数据的纯应答报文),由于对构建应用数据没有帮助,并且容易增加分流和分析的负担,可以丢弃。

基于以上的应用本实施例的实施方案为:

丢弃不关心的报文,即TCP纯应报文;

根据数据包中五元组计算16位散列值(对应64K入口,例如CRC16),根据散列值立刻找到对应的入口;

如果对应的入口不为空,比较五元组特征值(最简单的就是直接比较IP地址对与TCP端口对),如果匹配,则直接根据后面的端口值进入对应的端口,结果就是此TCP流在生命周期里一直进入同一个端口;

如果对应的入口不为空,比较五元组特征值,如果不匹配,则根据传统方法;

如果对应的入口为空,则判断报文是不是生命期的开始(例如第一个SYN报文);

如果是,则在此入口处填写自己的五元组特征,并根据所有端口的实时缓冲余量进行选择,将余量最大的端口值填入,并进入对应的端口缓冲;

如果不是,则转根据传统方法;

根据传统方法,简单计算出对应端口,直接进入对应的端口缓冲;即根据TCP五元组进行简单计算(例如字节异或),得出一个值,对N模余,然后得到0到N-1的值,对应各个端口,起到分流的作用。

本发明还提供一种网络负载均衡的系统的实施例,如图7所示,包括:

本发明还提供一种网络负载均衡的系统,参考图7所示,包括:

报头信息获取模块100,获取当前数据包的报头信息;

信息暂存管理模块200,与所述报头信息获取模块100电连接,根据所述报头信息获取模块100获取的报头信息为所述当前数据包分配存储队列的入口;

端口获取模块400,与所述信息暂存管理模块200电连接,用于根据分析服务器的目的端口号均衡缓冲所述当前数据包的数据信息;

第一信息分流模块500,与所述端口获取模块400电连接,用于为所述存储队列的入口分配对应的所述分析服务器的目的端口号。

具体的,在本实施例中,网络数据进行传输时,利用报头信息获取模块100从当前数据包的包头信息中提取五元组,包括指源IP地址,源端口,目的IP地址,目的端口和传输层协议;将五元组进行预设算法的运算,通过相关运算后得到当前数据包利用信息暂存管理模块200分配暂存队列的入口;端口获取模块400在分析服务器中获取其相应的端口号,根据端口号进一步判断是否满足分流条件,当满足时,将当前数据包分配给相应满足条件的端口,第一信息分流模块500实现数据的均衡负载分流。

优选的,所述信息暂存模块200包括:

哈希运算子模块210,根据所述报头信息获取模块100获取的当前数据包的报头信息进行哈希运算;

入口分配子模块220,根据所述哈希运算子模块210运算的结果为所述当前数据包分配存储队列入口。

具体的,在本实施例中的还包括上一实施例的模块,不在重复;参考图8所示,将当前数据包分配存储队列的入口,主要根据提取的五元组通过哈希运算子模块210进行哈希算法,得到哈希值;(哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。)入口分配子模块220根据的哈希值为传输的数据包分配不同的入口;哈希算法中如果一段明文中任何一个字母或者数字发生改变或者掉落,随后的哈希值都将产生不同的值。因此在网络通信中具有非常高的可靠性,保障了分配存储队列入口不会发生异常。

优选的,包括:

队列状态获取模块300,分别与所述信息暂存管理模块200、所述端口获取模块400电连接,用于根据所述存储队列的入口判断对应的存储队列的空间状态;

报头输入子模块311,当所述队列状态获取模块300判断存储队列的空间状态为空时,用于在所述存储队列分配的入口输入所述当前数据包的报头信息;

报头判断子模块320,当所述队列获取模块300判断存储队列的空间状态不为空时,用于判断所述存储队列内的数据包的报头与所述当前数据包的报头是否匹配;

当匹配时,所述端口获取模块400分配所述分析服务器的端口号;

第二信息分流模块700,当所述报头判断子模块320判断报头信息不匹配时,用于根据预设规则对所述当前数据包直接分配分析服务器的端口号。

在本实施例中的还包括上一实施例的步骤,不在重复;在本实施例中增加了步骤S300,参考图9所示,将数据包分配给存储队列时,首先控制队列状态获取模块300判断计算获取到入口值对应的存储队列是否存在数据包,如果不存在数据包时,此时该存储队列没有数据包进入,为空的状态,为了将同一个数据包的数据放置在同一分析服务器的端口进行缓冲,控制报头输入子模块311在空的存储队列入口填入对应的五元组信息;当不为空时,说明已经存有数据包,那么需要控制报头判断子模块320将已经存储在存储队列中的数据包的五元组信息与当前数据包的五元组信息进行比对,看是否是分留给同一个分析服务器的端口进行缓冲,如果各自的五元组信息匹配成功,那么控制端口获取模块400根据分析服务器的目的端口号均衡缓冲所述当前数据包的数据信息;如果五元组信息匹配不成功,控制第二信息分流模块700根据预设的规则进行静态分配。

优选的,还包括:

第一标志判断子模块310,当所述队列状态获取模块300判断所述存储队列的空间为空时,用于判断所述报头信息获取模块100获取的报头信息中是否含有建立连接报文的标志信息;

当第一标志判断子模块310判断含有连接标志信息时,所述报头输入子模块311输入所述当前数据包的报头信息;

当第一标志判断子模块310判断没有连接标志信息时,所述第二信息分流模块700根据预设规则直接分配分析服务器的端口号。

具体的,在本实施例在上一实施例基础上进一步的展开判断,其他的模块不再重复;参考图9所示,当将数据包分配给存储队列时,首先要控制队列状态获取模块300判断计算获取到入口值对应的存储队列是否存在数据包,如果不存在数据包时,此时该存储队列没有数据包进入,为空的状态,为了将同一个数据包的数据放置在同一分析服务器的端口进行缓冲,在填写五元组信息之前还要控制第一标志判断子模块310判断当前数据包是否一个全新的数据包,则要在报头信息中获取SNY(同步连接序号,TCPSYN报文就是把这个标志设置为1,来请求建立连接)信息,是否含有建立连接握手的标志,如果存在,那么证明该数据包是新的生命周期的开始,继而控制报头输入子模块311将在空的存储队列填入对应的五元组信息;保障数据传输的可靠性,安全性。

优选的,所述端口获取模块400还包括:

端口号设置子模块410,用于根据预设规则为所述分析服务器设置对应的端口号;

缓冲余量获取子模块420,用于根据所述端口号设置子模块410设置的对应端口号获取对应分析服务器的实时缓冲余量;

端口号选择子模块430,用于根据所述缓冲余量获取子模块420获取的分析服务器的实时缓冲余量进行比对,获取所述实时缓冲余量最大的分析服务器的端口号;

端口号匹配子模块440,用于根据所述端口号选择子模块430获取的缓冲余量最大的分析服务器的端口号与所述当前数据包的所述存储队列入口进行匹配。

具体的,本实施例其他的模块与以上的实施例中已经讲述不再重复;参考图10所示,在本实施例中对于分析将传输的数据包进行分流,也即是分配分析服务器的端口号,那么具体端口号的获取控制端口号设置子模块410是按照一定规则进行选通分配的,(分析服务器的端口号的获取,当分析服务器的总数量为N确定时,然后根据N求模运算,获取到对应分析服务器的端口号;当然还可以根据其他的规则方法获取到每个分析服务器的端口号;关于端口获取的方法,基本上是类似于hash函数一样,分布的越均匀越好,用的最多的最简单的就是取余(求模)运算,或者CRC8运算,简单异或等等,就是从5元组映射到端口数量上,最主要能确保固定的流能进同一个端口(流是指5元组相同的TCP包或UDP包序列),也有可能是几种映射方法混合,这个无法限制,因为总能找出不同的方法,简单换个映射函数即可。)首先控制缓冲余量获取子模块420根据端口号判断该端口的数据缓冲量的大小,控制端口号选择子模块430从众多的端口中选择缓冲余量大的端口,控制端口号匹配子模块440将该端口写入存储队列的入口,完成数据均衡缓冲分流。

优选的,还包括:

第二标志判断子模块610,与所述第一信息分流模块500电连接,用于判断所述报头信息获取模块100获取的报头信息中是否存在释放连接标志信息,和/或重建连接标志信息;

队列处理子模块630,当所述第二标志判断模块610判断存在释放连接标志信息,和/或所述重建连接标志信息时,用于设置所述存储队列的入口为空。

优选的,还包括:

第三标志判断子模块620,与第一信息分流模块500电连接,用于判断所述报头信息获取模块100获取的报头信息中老化值标志信息是否超过预设阈值;

当所述第三标志判断子模块620判断标志信息中老化值标志超过预设阈值时,所述队列处理子模块630还用于设置所述存储队列的入口为空。

具体的,本实施例其他的步骤与以上的实施例中已经讲述不再重复;参考图11所示,在数据包进行缓冲分流的过程中,对整个数据的缓冲过程要进行相关的检测,检测实施主要判断存储队列中的数据包的标志信息,将检测的异常数据或者干扰分流的进行清除;为其他的数据包分配空间,这样数据缓冲均衡更加有效。控制第二标志判断子模块610判断暂存队列中的数据包含FIN(结束连线。如果FIN为0是结束连线请求,FIN为1表示结束连线)标志,同时包含两个FIN标志,即FIN-S:源到目的的含FIN标志,还有FIN-D:目的到源的含FIN标志,还包括含RST(连线复位,首先断开连接,然后重建;)标志,只有一个即可,两种情况只要一种存在,控制队列处理子模块630则将该入口的存储队列进行清空;同时还包括控制第三标志判断子模块620对老化值的检测(老化值只有时间值,当数据流序列进入队列(从SYN开始)算起,每当这个流队列中有一个包过来,总会将老化值(即时间值)清为0,如果一直没有包来,专有硬件会定时对每个队列进行原子性的老化值累加操作(即时间值累加操作),流队列在一定的阈值时间之内收不到包,也就不能结束(因为没有包过来,FIN或RST等表示结束的包没有来),超过了规定的阈值(例如设为5分钟,即距离最后一次收到包的时间间隔超过5分钟),则流队列结束。),如果某一入口值对应的存储队列中的数据包中的老化值超过预定的阈值,则也将控制队列处理子模块630将入口的存储队列进行清空,等待下一组数据包的到来;硬件系统会有一个模块专门定时为各个存储队列进行老化值累加(周期自定,例如几秒,对于64K表项,硬件进行一次完整的老化值遍历一般历时小于1毫秒),老化模块操作优先级最低,中间可被插入删除操作打断。但是,每次针对一个存储队列的老化操作属于“原子操作”。一旦老化值累加到了阈值,就删除存储队列。

优选的,所述第二信息分流模块700包括:

报头运算子模块710,用于将所述报头信息获取模块100获取的当前数据包的报头信息进行异或运算;

求模子模块720,根据所述报头运算子模块710进行异或运算的值进一步求模运算;

第二端口设置子模块730,根据所述求模子模块720进行求模运算的值设置为所述分析服务器的缓冲端口号;

第二端口缓冲子模块740,将所述第二端口设置子模块730设置的端口号的与所述当前数据包进行匹配。

具体的,本实施例其他的模块与以上的实施例中已经讲述不再重复;参考图12所示,当根据报头信息获取模块100获取的数据包五元组,控制入口分配子模块220获取的存储队列的入口值,当控制队列状态获取模块300判断该入口值对应的存储队列不为空时,控制报头判断子模块320判断该队列入口的五元组与当前数据包的五元组进行判断匹配时,还有将当前数据包分配给一个空置状态的存储队列时,如果判断当前数据包不是一组新的传输数据(新的生命周期的开始,根据步骤S310S实施判断),以上两种情况,系统会根据预先设定的进行分析服务器端口的配置,这样能够控制第二信息分流模块700满足所有的传输数据进行均衡的匹配分流;其实是方法是:控制报头运算子模块710根据数据包的五元组进行简单计算(例如字节异或),得出一个值,利用求模子模块720对N(分流服务器为N台)模余,然后利用第二端口设置子模块730得到0到N-1的值,对应各个端口,第二端口缓冲子模块740起到分流的作用。

优选的,还包括:

信息滤除模块000,用于滤除所述当前数据包中纯应报文。

具体的,参考图12所示,本实施例中纯应报文是指不含TCP协议用户层数据的纯应答报文,由于纯应报文对构建应用数据没有帮助,并且容易增加分流和分析的负担。

本领域技术人员应该认识到,上述的具体实施方式只是示例性的,是为了使本领域技术人员能够更好的理解本专利内容,不应理解为是对本专利保护范围的限制,只要是根据本专利所揭示精神所作的任何等同变更或修饰,均落入本专利保护范围。

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