5.2.6 WCCP分配算法

    分配算法负责决定拦截网络流量该如何交叉分配到WCCP客户端,这些客户端都注册在同一SG上。分配算法由每一个WCCP路由与所有WCCP客户端按每SG方式协商形成,参与到多个SG的WCCP客户端可以和每个SG协商不同的分配算法,但是同一SG的不同WCCP客户端必须使用相同的分配算法。现有分配算法主要分成两类:散列分配和掩码分配。

    散列分配

    散列分配为默认分配算法,使用一个256桶的重定向散列表将网络流量交叉分布到SG的WCCP客户端上。拦截包的源/目的IP地址或源/目的端口(依SG配置而定)通过散列函数计算得到的索引值确定,该值将落在散列表的256个桶的范围内,每一个桶都指定了SG中对应的WCCP客户端,散列分配方法是软件IOS路由的默认分配算法。

    图5-5解释了散列和桶的概念。

    5.2.6 WCCP分配算法 - 图1

    图 5-5 WCCP hash分配算法说明

    当一个WAN优化器加入到某一SG时,将分配到部分桶址,如果只有一个WAN优化器,则所有的桶都将与该优化器关联;当有多个WAN优化器加入到SG中时,桶将被分成不同的段,默认情况下,每一个WAN优化器都是被平均分配到相同的地址桶范围,如果指定了分配权重,将得到一个不平衡的分配结果。

    说明:“show ip wccp<service-group-ID>hash<dst-ip><src-ip><dst-port><src-port>”IOS执行命令(隐藏)可以被用来验证使用了散列分配方法的WAN优化器,其给定src/dst IP地址及与端口的组合。例如,“show ip 90 hash 0.0.0.0 10.1.2.3 0 0”说明了源IP地址的目标WAN优化器为10.1.2.3。

    掩码分配

    掩码分配方法通过配置掩码值(最大为7位)将流量分布至SG内的WAN优化器。它支持在WCCP服务平台的硬件上完成拦截,当WCCP路由进行拦截时,掩码将按位与包的内容完成AND运算(特别是源/目的IP地址与端口),然后将结果与一串掩码值比较,并将包转发至与结果值匹配的WAN优化器上。

    图5-6说明了掩码处理与赋值的概念。

    5.2.6 WCCP分配算法 - 图2

    图 5-6 WCCP掩码分配说明

    掩码值最大可以为7位(128个地址桶),掩码值位数由分配池中的地址桶个数决定。

    例如,一个src-ip-mask值为0x7,能够创建8个地址桶(或者桶尺寸为8),可以使用分配权重来控制将这些桶分配至某一WAN优化器。

    下列一些数学术语被应用于桶的计算中:

    ·单元尺寸,总权重除以桶的尺寸得到的。

    ·可分配的桶,WAN优化器权重除以单元尺寸,然后取整。

    举一个例子,假设当前SG中只有一个WAN优化器,权重为25,则:

    ·单元尺寸=8/100=0.08

    ·可分配的桶=round(25?0.08)=2

    本例中,8个地址桶中只有2个被分配给WAN优化器,任意一个源IP地址最后的掩码值如果落入到其他六个桶之一的范围,将不会进行重定向操作,而是按照普通路由方式发送。

    掩码选择

    该使用什么样的掩码值呢?没有一个简单的答案。本小节将试图描述构造掩码的一些基本规则,但掩码的选择还是依赖于实际的配置环境和规模。

    首先,掩码的位数必须能够提供足够的地址桶以分配给SG中的WAN优化器,同时还需考虑每个WAN优化器的不同权重。例如,1位掩码只能够支持2个WAN优化器(21=2),如果要最大程度地支持SG中的WAN优化器,至少需要一个5位(或更多位)的掩码,一个5位掩码就足够支持32个WAN优化器(25=32)。

    IPv4地址采用点-十进制形式,由4个位组组成,当用十六进制表示地址时,每一个位组由2个范围为0到F的十六进制数代替。WCCP掩码通常采用十六进制表示,初始位的0则通常会被省略。譬如,假设IP地址为10.1.2.3,则相当于十六进制数0x0A010203,WCCP的掩码则为0x7(8个地址桶),当位的与操作完成后,得到结果0x3(0x0A010203AND0x00 000007=0x00000003)。

    默认源IP地址掩码为0x1741(默认目标IP地址掩码为0x0),虽然有默认值,但通常并不推荐使用默认值进行掩码分配,因为这样的掩码值在大多数情况下都不足以提供正确的负载平衡。但当SG中只有一个WAN优化器时,掩码则与优化器无关,则能够使用默认值来分配。

    在远程分支办公室中(RBO),源IP地址经常会由DHCP顺序分配,IP地址仅仅会在最后一个位组有区别,在这种情况下,可以通过根据部署在RBO上的WAN优化器的个数,确定一个范围为0x1到0x7F的WCCP掩码,使掩码分布得到充分利用。

    一个区域性的企业DC通常会使用一个拥有/24掩码地址的IP子网,这些子网的IPv4地址的第三位组值互不相同。此时,WCCP掩码的地址为0xF00到0x7F00。核心企业DC通常使用/16掩码地址,这些子网的IPv4地址在第二位组互不相同,此时WCCP掩码地址范围是0xF0000到0x7F0000。

    说明:如果系统规模很大,则IP地址中较高顺序的位组可以实现整个站点负载平衡,而不仅仅只是主机负载平衡。

    很难将连接端口也组织成掩码的一部分,大多数连接都会至少使用一个“随机”的端口,也很少有协议能够在较小位数范围上提供很好的分布,你也许能够尝试着使用客户端端口的较低顺序的位作为随机数源。