一种实现网络流量负载分担的方法及装置的制作方法

文档序号:7962557阅读:256来源:国知局
专利名称:一种实现网络流量负载分担的方法及装置的制作方法
技术领域
本发明涉及一种对网络流量进行分配的方法及装置,具体地说是一种实现网络流量载分担的方法及装置。
背景技术
随着各种IP技术和传输技术的不断发展,互联网应用极大普及,用户数、网络流量持续增长。网络丰富的内容和形式既丰富了人们的日常生活,也会被社会不法份子所利用。如果不能对互联网进行有效管理和监控,将会给国家、企业、个人的网络安全带来各种危害。因此,保障信息安全已经提上议事日程。
对于信息的监控,当前采用的技术主要是分流和阻断。分流是通过分光器将网络的流量引入到路由器进行流量分解,通过ACL(Access Control List,访问控制列表)规则过滤后,供后端服务器系统进行相关分析、处理。其中分流可能是一级或者多级,直到主机能够处理的粒度。后端服务器系统可能有多个,分别处理不同类型的数据,因此需要在分流设备上进行端口分组,每个端口组由多个端口组成,每个端口组对应于一个服务器系统。由于需要处理的流量较大,数据较多,每个服务器系统将采用阵列方式,在多台主机间进行负载分担,共同处理。这就要求路由器在端口组的多个输出端口间进行流量的负载分担,均匀地分配到多台主机上。
为了将流量更为均匀地分配到各输出端口上,流量在端口组内如何选取出端口是关键。目前的HASH算法是采用根据HASH元素计算的HASH键值对端口数取模得到。
例如端口组内端口数目为256,根据IP源地址10.0.0.1、目的地址10.0.0.2采用16比特异或计算的HASH键值为3,对256取模后得到3,即选择端口组内序号为3的出端口。
这种方法的优点在于简单易行,当HASH计算的键值长度不太长时,端口组数目足够大,能均匀散列。适用于IP地址变化范围不大,且输出端口数目要求不多的小型系统。
但是,这种方法也存在着以下缺点1.HASH计算的键值长度如果与端口组数目相差不大,将造成HASH结果在各HASH桶(即各端口)内散列不开,势必造成输出不均匀。
2.如果需要IP地址变化范围更大,需要增加键值长度;为了使散列更为均匀,需要增加HASH桶数目,即增加端口数目,将造成配置频繁改动,并增加计算HASH键值所需要的内存等设备代价。

发明内容
为了解决现有技术中当HASH计算的键值长度与端口组数目相差不大时,造成输出不均匀以及当需要IP地址变化大而使实现成本增加的问题,本发明提供一种实现网络流量负载分担的方法,以及实现该方法的装置。
本发明实现网络流量负载分担的方法为通过分光器将网络流量引入到路由器进行流量分解,通过ACL规则过滤后,分到服务器系统中,所述分解并过滤后的流量通过HASH算法分配到虚拟HASH桶,然后映射到实际端口。
所述将分解后的流量分配到虚拟HASH桶的方法为确定虚拟HASH桶的数目,将所述分解后的流量通过HASH算法分配到虚拟HASH桶。
作为确定虚拟HASH桶数目的一种优选方案,所述虚拟HASH桶的数目大于分解后流量的数目。
作为确定虚拟HASH桶数目的一种优选方法,根据实际端口数的倍数确定。
在网络流量分流比较均匀的情况下,所述的流量从虚拟HASH桶映射到实际端口的方法为直接将虚拟HASH桶与实际端口进行映射。
在网络流量分流不均匀的情况下,所述流量从虚拟HASH桶映射到实际端口的方法为A.遍历实际端口,寻找没有分配流量且状态为UP的端口,如果有,将流量分配到该端口;如果没有,进行步骤B;B.寻找流量统计最小且状态为UP的端口,将流量分配到该端口;在所述寻找流量统计最小且状态为UP的端口的步骤中如果发现有两个或两个以上端口流量统计最小且状态为UP,将流量分配到端口速率大的端口。
如果所述各流量统计最小且状态为UP的端口速率相同,将流量分配到已分配次数少的端口。
如果所述各流量统计最小且状态为UP且速率相同的端口的分配次数相同,随机选择一个端口分配流量。
一种实现网络流量均匀负载分担的装置,包括分光器和过滤器,该装置还包括虚拟HASH桶,用于承载分解并过滤后的流量,所述流量通过HASH算法分配到虚拟HASH桶;实际端口,接收从虚拟HASH桶通过映射算法分配过来的流量,并将该流量交给服务器系统的主机进行处理。
所述过滤器与虚拟HASH桶之间设有HASH运算单元,用于将过滤器过滤后的流量通过HASH算法分配给虚拟HASH桶。
所述虚拟HASH桶与路由器的实际端口之间设有映射运算单元,用于将虚拟HASH桶中的流量映射到路由器的实际端口。
本发明产生的有益效果是由于采用了虚拟HASH桶,而虚拟HASH桶的数目可以根据需要进行设置且数目不限,从而使分解后的网络流量可以在更多的桶中散列,如果分流比较均匀,直接将虚拟HASH桶中的流量映射到实际端口中即可;在流量分配不均匀时,将流量从虚拟HASH桶映射到实际端口时尽量选择未被使用的端口或者流量最小的端口,当最小流量的端口有多个时,选择速率大的端口,即尽量使各端口的流量实现平衡,从而保证流量可以均匀地分配到实际端口。


图1为本发明的实现网络流量负载分担的方法的原理框图;图2为本发明的实现网络流量负载分担的装置的结构示意图;图3为本发明的实现网络流量负载分担的方法的一种实施方式的流程图。
具体实施例方式
下面结合附图和实施例对本发明进一步说明,但不作为对本发明的限定。
如图1所示,本发明是将分解过滤后的流量通过HASH算法分配给虚拟HASH桶,然后通过映射算法将流量分配给实际端口,从而实现网络流量的均匀负载分担。
为了实现上述方法,需要建立图2所示的装置,该装置包括分光器201、过滤器202、HASH运算器203、虚拟HASH桶204、映射运算器205和路由器的实际端口206,分光器201用于将网络流量分解,过滤器202用于将分解后的流量进行过滤,HASH运算器203用于将过滤器202过滤后的流量通过HASH算法分配给虚拟HASH桶204,虚拟HASH桶204用于承载分解并过滤后的流量,映射运算器205用于将虚拟HASH桶204中的流量映射到路由器的实际端口206,路由器提供实际端口,用于接收从虚拟HASH桶204映射分配过来的流量,并将该流量交给服务器系统的主机207进行处理。
利用上述装置进行网络流量均匀负载分担的流程为首先将网络流量用分光器201分解并经过滤器202过滤,然后将流量用HASH算法分配到虚拟HASH桶204,在流量分流比较均匀时,直接将虚拟HASH桶204与实际端口相对应;如果流量分流不均匀,采取以下步骤遍历路由器的实际端口,寻找没有分配流量的端口,如果有,则将流量分配给该端口;如果没有,继续寻找流量统计最小的端口,找到后将流量分配给该端口;如果存在多个流量统计最小的端口,则从这些端口中寻找端口速率最大的端口,找到后将流量分配给该端口;如果存在多个速率最大的端口,则从这些端口中寻找已分配次数最少的端口,找到后将流量分配给该端口;如果存在多个分配次数最少的端口,则随机选择一个端口,将流量分配给该端口,如图3所示。上述过程中所寻找的端口均为状态为UP的端口。
下面结合具体实施例作进一步说明。
实施例一将网络流量用分光器进行分解并经过滤器过滤后分配给虚拟HASH桶,虚拟HASH桶的数目为10000,实际端口的数目为100,如果此时网络流量分流比较均匀,定义序号为1~100的虚拟HASH桶对应实际端口1,序号为101~200的虚拟HASH桶对应实际端口2,序号为201~300的虚拟HASH桶对应实际端口3,以此类推,将虚拟HASH桶与实际端口对应起来,将分配到某个虚拟HASH桶的流量分配给与之对应的实际端口,从而实现网络流量的分流。由于在分解时流量就比较均匀,因此分配到实际端口后也可以保持网络流量均匀负载分担。
实施例二
假定路由器实际端口的数目为256,而HASH键值长度为16bit,其变化范围为0~65535,因此,如果采用实际端口作为HASH桶,势必有多个流量落在同一端口上,数目上不均匀;而且数据包本身大小不限,因此每个端口上的流量也不均匀。
采用虚拟HASH桶,设置其数目为256×1000=256000,将分解并过滤后的65536个流量将散列开来,每个虚拟HASH桶内最多只有一个流量。将散列在256000个虚拟HASH桶内的流量(65536个)映射到实际的256个端口中去,所采用的步骤如下步骤301将网络流量用分光器进行流量分解;步骤302将分解后的网络流量进行ACL过滤;步骤303将过滤后的网络流量通过HASH算法分配给虚拟HASH桶;假定某条流F采用虚拟HASH桶计算得到的HASH结果为m,每个实际端口上分配的流量数目用数组Fn[i]表示,其中0≤i≤255,每个实际端口上的实际流量用数组Fa[i]表示,其中0≤i≤255;步骤304遍历实际端口;步骤305查找是否有分配流量Fn[i]=0,且状态为UP的端口,如果有,执行步骤306,否则执行步骤307;步骤306选择该分配流量Fn[i]=0的端口,对选中的端口,Fn[i]++,Fa[i]增加;步骤307寻找流量统计最小且状态为UP的端口Fa[i]min;步骤308判断流量统计最小且状态为UP的端口是否唯一,如果是,执行步骤309,否则执行步骤310;步骤309选择该流量统计最小的端口,对选中的端口,Fn[i]++,Fa[i]增加;步骤310在多个流量统计最小且状态为UP的端口中寻找端口速率最大的端口;步骤311判断流量统计最小且状态为UP且速率最大的端口是否唯一,如果是,执行步骤312,否则执行步骤313;步骤312选择该统计最小且状态为UP且速率最大的端口,对选中的端口,Fn[i]++,Fa[i]增加;
步骤313在多个流量统计最小且状态为UP且速率最大的端口中寻找已分配次数最小的端口Fn[i];步骤314判断流量统计最小且状态为UP且速率最大且已分配次数最少的端口是否唯一,如果是,执行步骤315,否则执行步骤316;步骤315选择该流量统计最小且状态为UP且速率最大且已分配次数最少的端口,对选中的端口,Fn[i]++,Fa[i]增加;步骤316从多个流量统计最小且状态为UP且速率最大且已分配次数最少的端口中随机选择一个端口分配流量,对选中的端口,Fn[i]++,Fa[i]增加。
重复步骤304~316,将每个虚拟HASH桶中的流量映射到实际端口,从而实现了网络流量的均匀负载分担。
权利要求
1.一种实现网络流量负载分担的方法,通过分光器将网络流量引入到路由器进行流量分解,通过ACL规则过滤后,分到服务器系统中,其特征在于,所述分解并过滤后的流量通过HASH算法分配到虚拟HASH桶,然后映射到实际端口。
2.根据权利要求1所述的实现网络流量负载分担的方法,其特征在于,所述将分解后的流量分配到虚拟HASH桶的方法为确定虚拟HASH桶的数目,将所述分解后的流量通过HASH算法分配到虚拟HASH桶。
3.根据权利要求2所述的实现网络流量负载分担的方法,其特征在于,所述确定的虚拟HASH桶的数目大于分解后流量的数目。
4.根据权利要求2所述的实现网络流量负载分担的方法,其特征在于,所述虚拟HASH桶的数目根据实际端口数的倍数确定。
5.根据权利要求1至4之任意一项权利要求所述的实现网络流量负载分担的方法,其特征在于,当流量分配均匀时,所述的流量从虚拟HASH桶映射到实际端口的方法为直接将虚拟HASH桶与实际端口进行映射。
6.根据权利要求1至4之任意一项权利要求所述的实现网络流量负载分担的方法,其特征在于,当流量分配不均匀时,所述流量从虚拟HASH桶映射到实际端口的方法为A.遍历实际端口,寻找没有分配流量且状态为UP的端口,如果有,将流量分配到该端口;如果没有,进行步骤B;B.寻找流量统计最小且状态为UP的端口,将流量分配到该端口;
7.根据权利要求6所述的实现网络流量负载分担的方法,其特征在于,在所述寻找流量统计最小且状态为UP的端口的步骤中如果发现有两个或两个以上端口流量统计最小且状态为UP,将流量分配到端口速率大的端口。
8.根据权利要求7所述的实现网络流量负载分担的方法,其特征在于,如果所述各流量统计最小且状态为UP的端口速率相同,将流量分配到已分配次数少的端口。
9.根据权利要求8所述的实现网络流量负载分担的方法,其特征在于,如果所述各流量统计最小且状态为UP且速率相同的端口的分配次数相同,随机选择一个端口分配流量。
10.一种实现网络流量负载分担的装置,包括分光器和过滤器,其特征在于,该装置还包括虚拟HASH桶,用于承载分解并过滤后的流量,所述流量通过HASH算法分配到虚拟HASH桶;实际端口,接收从虚拟HASH桶通过映射算法分配过来的流量,并将该流量交给服务器系统的主机进行处理。
11.根据权利要求10所述的实现网络流量负载分担的装置,其特征在于,所述过滤器与虚拟HASH桶之间设有HASH运算单元,用于将过滤器过滤后的流量通过HASH算法分配给虚拟HASH桶。
12.根据权利要求10所述的实现网络流量负载分担的装置,其特征在于,所述虚拟HASH桶与路由器的实际端口之间设有映射运算单元,用于将虚拟HASH桶中的流量映射到路由器的实际端口。
全文摘要
本发明涉及网络流量分配技术,特别涉及一种实现网络流量负载分担的方法及实现该方法的装置,属于一种对网络流量进行分配的技术领域。本发明是将用分光器分解并经过滤器过滤后的流量通过HASH算法分配给虚拟HASH桶,然后通过映射算法将流量分配给实际端口,从而实现网络流量的均匀负载分担。由于采用了虚拟HASH桶,而虚拟HASH桶的数目可以根据需要进行设置且数目不限,从而使分解后的网络流量可以在更多的桶中散列,在流量分配不均匀时,将流量从虚拟HASH桶映射到实际端口时尽量选择未被使用的端口或者流量小的端口,从而保证了流量可以均匀地分配到实际端口。
文档编号H04L12/24GK101051939SQ200610087569
公开日2007年10月10日 申请日期2006年6月15日 优先权日2006年6月15日
发明者雷奕康, 刘学勤 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1