我们的客户使用的是 Centos 7.1 和 7.3。它们是两个 10GB 卡,绑定在一起形成一个 20GB 链路。每个网卡都连接到一对 Cisco N5000 交换机。在运行 cp 或 iperf 时,我可以看到有时流量只流经一个接口,因此我们只能实现 10GB。其他时候,流量会流经两个接口,我们得到 20GB。
这不是网卡或电缆故障,因为我测试了一些服务器,它们都表现出相同的行为。
同一交换机/子网上的两个客户端之间的 iperf。
# for i in {1..10}; do iperf -c 172.16.15.19 -l 1M -P 16 -t 300| grep SUM; done
[SUM] 0.0-300.0 sec 344 GBytes 9.84 Gbits/sec
[SUM] 0.0-300.0 sec 344 GBytes 9.84 Gbits/sec
[SUM] 0.0-300.0 sec 344 GBytes 9.84 Gbits/sec
[SUM] 0.0-300.0 sec 344 GBytes 9.84 Gbits/sec
[SUM] 0.0-300.0 sec 344 GBytes 9.83 Gbits/sec
[SUM] 0.0-300.0 sec 688 GBytes 19.7 Gbits/sec
[SUM] 0.0-300.0 sec 344 GBytes 9.85 Gbits/sec
[SUM] 0.0-300.0 sec 344 GBytes 9.84 Gbits/sec
[SUM] 0.0-300.0 sec 344 GBytes 9.83 Gbits/sec
[SUM] 0.0-300.0 sec 688 GBytes 19.7 Gbits/sec
这是债券设置
DEVICE=bond1
ONBOOT=yes
NETBOOT=yes
TYPE=Ethernet
HOSTNAME=removed
BOOTPROTO=static
IPADDR=172.16.15.18
NETMASK=255.255.255.0
GATEWAY=172.16.15.1
DNS1=10.1.1.71
DNS2=10.1.1.70
MTU=9000
BONDING_MASTER=yes
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer3+4"
这是 eth 设置。仅发布一个,因为除了 eth 名称外,其余设置完全相同。
BOOTPROTO=none
TYPE=Ethernet
NAME=eth16
DEVICE=eth16
ONBOOT=yes
MTU=9000
MASTER=bond1
SLAVE=yes
以下是 Cisco N5000 的设置。
interface port-channel3008
description <removed>
switchport access vlan 3900
vpc 3008
interface Ethernet103/1/31
description <removed>
switchport access vlan 3900
channel-group 3008 mode active
答案1
您真正看到的只是端口通道负载平衡算法的“量化”效果。单个流将始终通过相同的物理接口,并且就您而言,测试中有两个点必须根据可配置的哈希算法决定通过接口 1 还是 2。正如 Peter 所建议的,还要检查交换机端的负载平衡算法:最近的 Nexuse 默认为 layer3+4,较旧的 Nexuse 默认为 src-dst MAC(在这种情况下,您不会看到相同节点之间的 20Gbps 速度)。事实上,当您使用有限数量的流进行测试时,可以看到这样的情况。