7609 Load Balance Issue and Polarization

环境:

1. CISCO7609
2. Two engine for WS-SUP720-3BXL

问题:

客户配置了5条静态路由负载均衡,状态及流量都比较正常,但当客户加了第6条静态路由的时候,发现有一个口的流量与其他相比少了很多。

30 second input  rate 349662000 bits/sec, 141978 packets/sec |
30 second output rate 330499000 bits/sec, 71334 packets/sec  |(9/1)
-------------------------------------------------------------|----
30 second input  rate 363785000 bits/sec, 139117 packets/sec |
30 second output rate 634835000 bits/sec, 134002 packets/sec |(9/9)
-------------------------------------------------------------|----
30 second input  rate 369379000 bits/sec, 139501 packets/sec |
30 second output rate 603555000 bits/sec, 127889 packets/sec |(8/1)
-------------------------------------------------------------|----
30 second input  rate 339343000 bits/sec, 138604 packets/sec |
30 second output rate 625077000 bits/sec, 132784 packets/sec |(9/17)
-------------------------------------------------------------|----
30 second input  rate 363548000 bits/sec, 138348 packets/sec |
30 second output rate 615937000 bits/sec, 128804 packets/sec |(9/23)
-------------------------------------------------------------|----
30 second input  rate 353248000 bits/sec, 143046 packets/sec |
30 second output rate 649456000 bits/sec, 135419 packets/sec |(9/24)

根据以下命令确认路由是否正常,但发现没有异样:

Show ip cef summary
Show ip cef X.X.X.X
Show ip cef X.X.X.X detail
Show ip cef X.X.X.X internal

首先我们先介绍下CEF的负载均衡

基于CEF的负载均衡分两种:

1. Per-packet load balancing

这种方法可以得到几乎完美的分配流量达到负载均衡,但是对基于Session的业务来说是不好的选择,例如TCP,如果TCP 3次握手被分在不同路径上传送,某条线路延时大,就需要重传,严重影响通信。

并且在很多基于硬件转发的平台上是不支持这种负载均衡的。

2. Per-destination load balancing

这种方法主要是基于Session的,例如有同样源ip和目的ip的数据流(根据不同的算法也会把端口加上去)都属于同一Session。这些数据会经过HASH运算去匹配16个桶,说白了就是要遵守事先定好的规则。

另外规则可以通过以下命令进行更改:

ip cef load-sharing algor univer [id]
ip cef load-sharing algor tun [id]
ip cef load-sharing algor original

其次介绍下Polarization

中文意思就是极化, 什么是极化?咱们用下面这个例子简单解释下。

 ping 10.1.1.1
 ------+-------
       |
   +---+----+
   |  SW1   |
   |  HASH  |
   +---+----*
       |     \\1,
     2,|       \\3,
     4,|         \\5
     6 |           \\
   +---+----*        *--------+
   |  SW2   |        |  SW3   |
   |  HASH  |        |  HASH  |
   +---+----*        *----+---+
       |     \\0,  0/     |
     2,|       \\0/       |1,
     4,|       0/ \0      |3,
     6 |     0//   \\     |5
   +---+----*/       *----+---+
   |  SW4   |        |  SW5   |
   |        |        |        |
   +---*----+        +---*----+
        \              //
        2\\           /1
          4\        //3
           6\\    //5
      +-------\--/-------+
      |    10.1.1.0/24   |
      +------------------+

由于是相同的设备,而且算法都是默认算法,所以经过HASH得出的结果也是一样的,因此就产生了SW2—>SW5 和 SW3–>SW4两条线无流量。

默认情况下,HASH是采用“src-dst IP + universal ID”来计算的。
当配置了“mls ip cef load-sharing full”后,HASH就采用“src/dst IP + src/dst L4 port”来计算了。

解决极化的方法:

1. 更改不同层次交换机的HASH算法,导致算出的结果不一致。

2. 更改负载的链路数,例如在汇聚层是双上联,你可以在核心层改成3条负载线路。可以达到同样消除极化的效果。

解决问题:

注:为了避免极化问题,在PFC3 上对某些参数进行了调整,使其默认就避免极化的发生(算法采用“L3 src_dst IPs + universal ID + multiple adjs”),但这样可能导致流量分配不均(在基数负载均衡下是不会有这种问题的),参考如下:

CEF pathcount | hw pathcount |      hw mapping
--------------|--------------|----------------
            2 |           15 |             7:8
            4 |            5 |         1:1:1:2
            6 |           11 |     1:2:2:2:2:2
            8 |           13 | 1:1:1:2:2:2:2:2

对此可以通过命令“mls ip cef load-sharing simple”来关闭调整。这样就可以使线路负载均衡,但是如果遇到极化的问题就需要手动调整了。

对于load-sharing算法的总结:

1. default mls ip cef load-sharing ip
L3 src_dst IPs + universal ID + multiple adjs

2. mls ip cef load-sharing full
L3 src_dst IPs + L4 src_dst ports+ multiple adjs

3. mls ip cef load-sharing full simple
L3 src_dst IPs + L4 src_dst ports

4. mls ip cef load-sharing simple
L3 src_dst IPs + universal ID

5. mls ip cef load-sharing full exclude-port source
L3 src_dst IPs + L4 dst port + multiple adjs

6. mls ip cef load-sharing full exclude-port destination
L3 src_dst IPs + L4 src port + multiple adjs

链接信息:

Cisco Express Forwarding Feature Module
How Does Load Balancing Work?
Troubleshooting Load Balancing Over Parallel Links Using Cisco Express Forwarding
Load Balancing with CEF

本文出自 Frank's Blog

版权声明:


本文链接:7609 Load Balance Issue and Polarization
版权声明:本文为原创文章,仅代表个人观点,版权归 Frank Zhao 所有,转载时请注明本文出处及文章链接
你可以留言,或者trackback 从你的网站

No Responses to “7609 Load Balance Issue and Polarization”

  1. Bin说道:

    果然是赵勇,再次受教。

  2. zhaocs说道:

    晕。。。

留言哦

blonde teen swallows load.xxx videos