4.2 链路聚合:负载均衡

1.为啥推荐2,4,8条成员呢

  思科Catalyst交换机每产生一个聚合端口,交换机都会为其成员链路进行编号,通常选择物理端口ID小的编号为0,然后依次类推最大是7。设备会将0-7这3bit散列值依次分配给成员链路,并将结果存放到芯片的hash表中。那设备又是如何分配呢?下面以3条成员链路的聚合端口为例。
  1. 成员链路编号依次是0,1,2,按照顺序分配0–7散列值。
  2. 首先依次分的散列值是0,1,2;然后依次分散列值是3,4,5;最后分散列值是6,7;8个散列值分完就不在继续分配。
  3. 编号为1的成员链路分配3个散列值0,3,6;编号为1的成员链路分配3个散列值1,4,7; 编号为2的成员链路分配2个散列值2,5。
  散列值的数量代表理想情况下成员链路的转发流量占比, 所以可以得出3个成员的聚合链路流量占比为3:3:2。下表总结了2到8个成员链路时散列值数量分配占比情况,其散列值和端口编号具体对应关系,请参照上面的例子自行计算。由此可以看出有2,4,8个成员链路时候,负载均衡占比比较平均

成员链路数量 散列值数量占比 简要计算(分子是散列值数量,分母是成员数量)
2 4:4 8/2=4,每个成员链路4个散列值,8%2=0,没有额外散列值
3 3:3:2 8/3=2,每个成员链路2个散列值,8%3=2,编号0和1成员链路额外1个散列值
4 2:2:2:2 8/4=2,每个成员链路2个散列值,8%4=0,没有额外散列值
5 2:2:2:1:1 8/5=1,每个成员链路1个散列值,8%5=3,编号0,1,2成员链路额外1个散列值
6 2:2:1:1:1:1 8/6=1,每个成员链路1个散列值,8%6=2,编号0,1成员链路额外1个散列值
7 2:1:1:1:1:1:1 8/7=1,每个成员链路1个散列值,8%7=1,编号0成员链路额外1个散列值
8 1:1:1:1:1:1:1:1 8/8=0,每个成员链路1个散列值,8%8=0,没有额外散列值
提示:其他厂商的成员链路散列值分配数量占比跟思科几乎没有区别,不同之处在于散列值的数量,具体hash算法和成员down/up时流量转发优化。

2.思科散列算法到底怎么工作

  思科负载均衡中流量使用哪个端口有2个散列算法:bit和xor,到底用哪一个就看管理员配置load balance的参数了,参数与算法的对比表如下。

参数 hash算法 支持的交换机型号
src-ip bit 所有
dst-ip bit 所有
src-dst-ip xor 所有
src-mac bit 所有
dst-mac bit 所有
src-dst-mac xor 所有
src-port bit 4500 6500
dst-port bit 4500 6500
src-dst-port xor 4500 6500

总结:参数就1个关键值用bit,有2个关键值用xor。
  下面以load balance的参数是src-ip和src-dst-ip为例,讲解bit和xor在成员链路数量不同的情况下如何进行负载分配,其中src-ip=192.168.10.6和dst-ip=192.168.20.1为例。

2.1 bit

  按照参数和算法对比表load-balance=src-ip时使用bit算法,src-ip=192.168.10.6换成二进制,其最低3位bit是110,最后的计算结果如下表所示,散列值与端口编号对应关系请参照第1节的例子。

成员链路数量 使用bit 分配链路
2 110最后1bit:0,散列值为0 散列值0分配给编号0的链路
3 110最后2bit:10,二进制10的十进制散列值为2 散列值2分配给编号2的链路
4 110最后2bit:10,二进制10的十进制散列值为2 散列值2分配给编号2的链路
5 110最后3bit:110,二进制110的十进制散列值为6 散列值6分配给编号0的链路
6 110最后3bit:110,二进制110的十进制散列值为6 散列值6分配给编号5的链路
7 110最后3bit:110,二进制110的十进制散列值为6 散列值6分配给编号5的链路
8 110最后3bit:110,二进制110的十进制散列值为6 散列值6分配给编号5的链路

2.2 xor

  按照参数和算法对比表load-balance=src-dst-ip时使用xor算法,src-ip=192.168.10.6换成二进制,其最低3位bit是110,dst-ip=192.168.10.1,换成二进制,其最低3位bit是001。xor就是将相应的位进行异或,相同则为0,不同则为1。最后的计算结果如下表所示,散列值与端口编号对应关系请参照第1节的例子。

成员链路数量 使用bit 分配链路
2 110最后1bit:0,001最后1bit:0,1xor0=1,二进制1的十进制散列值为1 散列值1分配给编号1的链路
3 110最后2bit:10,001最后2bit:01,10xor01=11,二进制11的十进制散列值为3 散列值3分配给编号0的链路
4 110最后2bit:10,001最后2bit:01,10xor01=11,二进制11的十进制散列值为3 散列值3分配给编号3的链路
5 110最后3bit:110,001最后3bit:001,110xor001=111,二进制111的十进制散列值为7 散列值7分配给编号2的链路
6 110最后3bit:110,001最后3bit:001,110xor001=111,二进制111的十进制散列值为7 散列值7分配给编号1的链路
7 110最后3bit:110,二进制110的十进制散列值为6 散列值7分配给编号0的链路
8 110最后3bit:110,二进制110的十进制散列值为6 散列值7分配给编号6的链路
不管是bit还是xor,成员链路数量为m,需要低bit位的数量n,用2^n>=m计算得到最小n值即可。
发布了27 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ldg513783697/article/details/104757127
4.2