一种支持千兆万兆混合多端口负载均衡的方法与流程

文档序号:12132768阅读:1174来源:国知局
一种支持千兆万兆混合多端口负载均衡的方法与流程

本发明涉及数据通信领域,特别涉及骨干网数据分流设备支持千兆万兆混合多端口负载均衡的方法。



背景技术:

对于分流设备而言,最基本的功能便是保证数据的“同源同宿”,即同一个用户的数据到达同一个后端分析设备。

分流设备负载均衡常用的是基于HASH算法进行分流,通过对报文的部分内容进行Hash运算得到Hash值,一般是按照上行源IP,下行目的IP做Hash运算,得出Hash值和最大的Hash范围,最大的Hash范围记为HashM,也就是Hash值的总个数(以下简称为Hash总个数),代表分流最大的份数,个数越大,分流的份数越多。将Hash总个数平均分配给输出端口,接口总个数PortN需要小于HashM。根据Hash值确定接口的方法一般使用查找接口和Hash映射表(如图1所示)的方法,这个映射表的大小需要等于Hash总个数,并且要远大于接口个数,这样才可以使数据均衡。

每个输出接口占用多个Hash值,实现上使用一块内存来代表Hash总个数,所以Hash值的个数会受到限制,特别是在后端分析设备达到一定规模时,随着接口数量的日益增多,所需要的Hash总个数(HashM)需求就变大,如果存在不同的接口类型,常见的有千兆接口和万兆接口,为了保证万兆接口的流量是千兆流量的10倍,万兆接口占用的Hash值需要是千兆接口的10倍,所以Hash总个数(HashM)的需求是原来的10倍,在内存有限的系统中使用扩充Hash总个数是有难度的,一方面用户Hash查找的内存须是高速内存非常珍贵;另一方面,在硬件不升级的情况下是无法扩展Hash值个数的。

在分流设备中,HashM值通常使用2的整次幂,为了使接口的流量近似均衡,接口个数如果不为2的整数次幂,必然会有两个或以上的接口,存在Hash值个数相差1。如果接口个数接近于Hash个数,那么,就会存在有的接口占2个Hash值,有的接口占1个Hash值,那么输出流量的偏差就会到100%,每个接口的占用Hash值越多,输出流量的偏差就越小,所以就不能让接口映射表中的每个接口占Hash值的个数太小,假定设定的接口流量偏差不超过20%,那么每个接口至少需要占4个Hash值。

在保证输出流量均衡的情况下,每个千兆接口可能至少占用4个Hash值,每个万兆接口就得占用至少40个Hash值,万兆接口每增加一个就会增加40个Hash值的占用,假如在HashM=4096个的时候,在千兆万兆混合输出的时候,最多也只能支持约100个万兆口,不满足物联网流量日益增大的需要。



技术实现要素:

有鉴于此,本发明提出了一种支持千兆万兆混合多端口负载均衡的方法,本发明使用较小的Hash总个数实现了在千兆万兆混合输出的场景下支持更多接口。

一种支持千兆万兆混合多端口负载均衡的方法,具体分为以下几步完成:

1)构建两个相同的Hash值端口映射表分别用于存放万兆接口和千兆接口。

2)按照实际设定的两种接口的流量权重值填写Hash值端口映射表,将万兆接口写入大权重映射表,千兆接口写入小权重映射表。

3)计算输出报文中每个报文高于Hash值端口映射表的Hash位宽差值,以及所有报文产生的Hash位宽差值的总个数。

4)将各个报文根据上述Hash位宽差值与Hash位宽差值的总个数中大权重映射表中的接口总权重占Hash值端口映射表中的所有接口的总权重的比例值进行比较,选择查找大权重映射表或小权重映射表。

5)计算输出报文中每个报文的Hash值,从中取低Hash值端口映射表Hash位宽查找Hash值端口映射表得到相应的接口号,将该报文送往该接口号以实现千兆万兆混合多端口负载均衡。

进一步地,步骤2)中,所述万兆接口的流量权重值是所述千兆接口的流量权重值的10倍。

进一步地,步骤3)中,通过计算每个报文的Hash值及Hash总个数,用该Hash总个数除以Hash值端口映射表的Hash总个数得到高于Hash值端口映射表的Hash位宽差值,统计计算得到的所有的Hash位宽差值的个数得到所有报文产生的Hash位宽差值的总个数。

进一步地,按照上行源IP,下行目的IP做Hash运算每个报文的Hash值及Hash总个数。

进一步地,计算得到的每个报文的Hash总个数大于步骤1)中构建的每个Hash值端口映射表的Hash总个数。

进一步地,步骤4)中,所述Hash位宽差值大于所述比例值的报文选择查找大权重映射表,小于等于所述比例值的报文选择查找小权重映射表。

进一步地,步骤4)中,Hash位宽差值的总个数中大权重映射表中的接口总权重占Hash值端口映射表中的所有接口的总权重的比例值表示为:HashT×B/(B+S),其中,HashT表示Hash位宽差值的总个数,B表示大权重映射表中的接口总权重,S表示小权重映射表中的接口总权重。

本发明具有如下优点:

1.能够占用很小的内存来实现千兆万兆混合输出,例如计算得到的Hash位宽为16位,单个Hash表项使用12位,两个Hash表项使用13位,节约了3位内存,即内存节省了8倍;

2.解决在不升级硬件的情况下实现千兆万兆混合输出的功能;

3.节省内存,有利于在FPGA为主的系统中实现;

4.控制软件写入表项的数据量变小,有利于在分布式系统中节省网络带宽和提高配置响应的时间;

5.方便使用,可以兼容早期版本的用户配置。

附图说明

图1是现有技术中接口和Hash映射表的示意图。

图2是本发明Hash值端口映射表使用示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。

如图2所示,本发明涉及到两个Hash值端口映射表项的构建:产生这个问题的根本原因是在同一个Hash值和接口的映射表中万兆口需要的Hash值要比千兆口大10倍,那么使用两个表,一个用于存放万兆口(如左侧XEPort 1,XEPort 1,XEPort 1...XEPort N,XEPort N,XEPort N所示),另一个用于存放千兆口(如右侧GEPort 1,GEPort 1,GEPort 1...GEPort N,GEPort N,GEPort N所示),再按照各自分配的权重值填写Hash值端口映射表,万兆接口写入大权重映射表,千兆接口写入小权重映射表。

按流量比例确定最终输出表项:根据报文内容生成一个高位宽的Hash值,即:按照上行源IP,下行目的IP做Hash运算得到Hash值,要求这个Hash算法得到的Hash总个数要大于上文中构建的两个Hash值端口映射表中每一个的Hash总个数(HashM),高于构建的单个Hash值端口映射表的部分将作为选择输出表项的判断依据。

将每个报文用计算得到的Hash总个数除以构建的Hash值端口映射表的Hash总个数得到高于Hash值端口映射表的值,将这个高于Hash值端口映射表的值作为选择大权重映射表、小权重映射表的判断依据,记做HashH,所有报文产生HashH的总个数记为HashT,根据大权重映射表和小权重映射表的端口比例切分报文内容中高于Hash值端口映射表Hash值的部分,得到一个比例值HashT×B/(B+S),其中,B表示大权重映射表中的接口总权重,S表示小权重映射表中的接口总权重,B+S即为Hash值端口映射表中的所有接口的总权重,HashH高于HashT×B/(B+S)的去大权重映射表,小于等于HashT×B/(B+S)的去小权重映射表。

确定大小权重Hash值端口映射表后,计算输出报文中每个报文的Hash值,从中取低Hash值端口映射表Hash位宽查找Hash值端口映射表得到相应的接口号,将该报文送往得到的接口号最终可实现千兆万兆混合多端口负载均衡。

实施例

以如下应用场景为例:

1.用户需要700个万兆接口和1000个千兆接口输出;

2.用户的Hash值端口映射表位宽为12位,即Hash值的总个数为2的12次方等于4096个。

按照现有的分流设备负载均衡方法需要进行如下配置:

1.给每个接口分配流量权重值,万兆接口占10个,千兆接口占1个;

2.700个万兆口的权重总和(7000)加上1000个千兆口的权重总和(1000)一共8000,填充4096个表项溢出,无法实现。

按照本发明的分流设备负载均衡方法,可进行如下配置:

1.给每个接口分配流量权重值,万兆接口占10个,千兆接口占1个;

2.构建两个相同的Hash值端口映射表分别用于存放万兆接口和千兆接口;

3.将700个万兆接口写入大权重映射表项,将1000个千兆接口写入小权重映射表项;

4.根据报文内容按照上行源IP,下行目的IP做Hash运算得到Hash值的总个数为2的16次方等于65536个,即16bit Hash值;

5.用计算得到的Hash值总个数(65536)除以Hash值端口映射表的Hash值总个数(4096),得到高于Hash值端口映射表的值(16),即计算得到的16bit Hash值高于用户12bit Hash值的位宽差值(4bit),用于决定映射表的最终分配,大权重映射表中的接口总权重为7000(700个接口乘以10,万兆是千兆的10倍),小权重映射表中的接口总权重为1000(1000个接口乘以1),大权重映射表中的接口总权重占Hash值端口映射表的所有接口的总权重的比例为7000/(7000+1000),4bit HashT的总个数为24=16,比例值HashT×B/(B+S)=16×(7000/7000+1000)=14,所以4bit HashH大于14的去大权重映射表项,小于等于14的去小权重映射表项;

6.将上述报文计算得到的16bit Hash值取低12bit(即Hash值端口映射表的位宽12bit)用于查找Hash值端口映射表的内容,得到一个接口号,将报文按照该接口号输出即可实现负载均衡。

上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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