网卡Linux Bonding功能测试

测试目的

验证网卡Linux Bonding后发包功能,性能正常,冗余功能正常。

预置条件

  1. 按组网方式2搭建测试环境。
  2. 确认被测服务器、以及另外一台对接的服务器的网卡配置,确保两台服务器配置有相同数量的相同带宽的网卡,然后将所有的网口都接入交换机。

测试步骤

  1. 参考5.5中的方法,获取被测服务器和对接服务器上的目标网卡的各网口名称。
  2. 执行nmcli con show命令,查看各网口对应的NAME信息,以双口网卡型号为例,假设实际名称分别为enp7s0f0和enp7s0f1。
  3. 配置bond模式1(主备模式),bond名称为bond_test:

    modprobe bonding

    nmcli con add con-name bond_test connection.interface-name bond_test ipv4.method static ipv4.addresses 19.19.1.1/24 type bond bond.options "mode=1,miimon=100"

    nmcli con add type bond-slave master bond_test ifname enp7s0f0

    nmcli con add type bond-slave master bond_test ifname enp7s0f1

    nmcli con up bond_test

    配置成功后,执行dmesg | tail –n 20,确认bonding生效,执行ethtool bond_test命令,确认bond的link状态,有结果1。

  4. ping包测试:在对接服务器上ping被测服务器IP ,在被测服务器上,拔掉第一个网口的线缆,等待20s左右,在对接服务器上停止ping包,并记录丢包的个数。

    插上第一个网口线缆,然后在对接服务器上继续ping被测服务器IP ,拔掉第二个网口的线缆,等待约20s,在对接服务器上停止ping包,记录丢包的个数后插上第二个网口的线缆;有结果2。

  5. iperf测试:将被测服务器端作为服务端,对接的服务器作为客户端,在被测服务器上启动8个iperf Server进程,客户端启动8个Client进程,每个进程使用8个线程数:(为了更好的hash效果,以保证性能测试时得到更高的吞吐量)

    iperf -c <Tester_IP> -i n1 -t 60 -p <port> -P 8

    记录各进程的测试结果及累加结果,有结果3。

  6. 将mode=1改为分别修改为mode=0、4,并执行步骤4~5。(mode0需要将交换机配置静态链路聚合;mode4需要将交换机配置动态链路聚合;mode1和mode 5和6不需要配置交换机),有结果1。

    可以通过nmtui或下述命令修改:

    nmcli dev mod bond_test bond_options "mode=0"

    systemctl restart network

    对于mode 4,使用layer3+4负载均衡方式

    nmcli dev mod bond_test bond_options "mode=802.3ad, xmit_hash_policy=layer3+4"

    systemctl restart network

    测试mode 0时,需分别测试TCP和UDP的吞吐量,UDP测试推荐用最大MTU测试( Mode 0采用轮询策略发包,会导致接收端乱序,实际性能甚至可能低于单口,UDP对乱序不敏感,但是对包长敏感,使用最大MTU,测试结果更容易接近物理带宽)。

  7. 需分别在ARM服务器平台和x86服务器平台重复以上步骤进行测试。

预期结果

  1. bond配置成功,bond口正常UP,根据模式的不同,速率有所不同。Mode 1时,bond速率为网卡单口速率,其它模式下,bond速率为各网口速率之和。
  2. 记录测试结果,可能有少量丢包,但不应完全ping不通。
  3. 记录测试结果,根据bond模式的不同,性能有所不同。Mode 1时,性能可以达到单口速率的92%,其它bond模式时,性能应当能达到聚合速率的80%或以上。

测试结果

-

备注

  1. 负载均衡效果受多种因素影响,多网口聚合的带宽不一定能够达到总速率的92%。
  2. 不同bond模式所支持的选项不完全一致,可根据实际进行调整。
  3. 网卡有多于2个网口时,需要将所有的网口都做绑定。。
  4. 最大MTU测试时,网口所设置的MTU值取min(网口MTU最大值,交换机端口MTU最大值)
  5. 若执行方需要测试其他mode,请注意,mode 5和mode 6场景,bond slave口的MAC地址是不同的。若采用组网方式2,单个ip的流量只能使用一个slave口做流量收发,因此是无法达到聚合速率的80%,建议增加组网拓扑。