问题现象:
centos7 服务器,有2个网卡,一个25Ge,2个网口,一个10Ge,2个网口,25GE2个网口连接一台交换机,10GE两个网口连接一台交换机。
分别对25Ge的两个网口和10GE两个网口做bond,mode为4,配置一样,参考如下:
DEVICE=bond0
NAME=bond0
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
IPADDR=192.168.20.211
NETMASK=255.255.255.0
BONDING_OPTS=“mode=4 miimon=100 lacp_rate=fast xmit_hash_policy=layer3+4”
最后用ethtool bond0查看网口带宽有50Gb和20Gb,然后用iperf2进行压测,使用同样命令进行测试,server1 上执行/usr/bin/iperf -s
,server2上执行 /usr/bin/iperf -c 192.168.2.2 -f M -i 2 -t 60 -P 5,出现以下现象:
(1)10GE的端口bond1,压测可以到20Gb的带宽,server1上用sar -n DEV 2 可以看到2个网口都是满流量;
(2)25GE的端口bond0,压测只有25Gb的带宽,server1上用sar -n DEV 2 可以看到只有1个网口满流量。
用server2、server3 同时压server1的bond0口,server1 上查看还是只用了一个网口,server2、server3发流带宽加起来25Ge;
用server2、server3、server4同时压server1bond0口,server1上查看总带宽到50Gb,2个网口流量满,server2和server3发流带宽加起来25Gb,server4上发流带宽25Gb。
将server1和server2上25Ge网口进行直连,不经过交换机,iperf同样命令压测可以到50Gb,说明在经过交换机时,出现了带宽减小的现象。
疑问:
由上25Gb网口多压1时,带宽可以写满,和之前了解到的一对一时,交换机上会hash选出一个网口进行通信,ip越多hash选择网口会越均衡相符。
下面链接讲解了交换机链路聚合负载均衡算法原理:
https://blog.51cto.com/yangrong/1330594
但是如果这个成立,为什么10Ge的网口,1对1压时就可以压满20Gb呢?