更新时间:2023-09-28 GMT+08:00

网络性能测试方法

手把手教你用netperf工具、iperf3工具,测试弹性云服务器间网络性能。主要包括“测试准备”、“TCP带宽测试”、“UDP PPS测试”和“时延测试”。

背景信息

  • 被测机:被压力测试网络性能的弹性云服务器,可作为netperf测试中的client端(发送端)或server端(接收端)。
  • 辅助云服务器:弹性云服务器,用于netperf测试中的client端(发送端)或server端(接收端),用于与被测机建立连接,传递测试数据。
  • 测试工具常用参数说明如表1表2所示。
    表1 netperf工具常用参数说明

    参数

    参数说明

    -p

    端口号

    -H

    接收端IP地址

    -t

    发包协议类型,测带宽时参数值为“TCP_STREAM”

    -l

    测试时长

    -m

    数据包大小,测试带宽时建议设置为“1440”

    表2 iperf3工具常用参数说明

    参数

    参数说明

    -p

    端口号

    -c

    接收端IP地址

    -u

    UDP报文

    -b

    发送带宽

    -t

    测试时长

    -l

    数据包大小,测试PPS时建议设置为“16”

    -A

    iperf3占用的cpu编号。

    本文示例中假设ECS最大为16vcpu,实际中根据ECS CPU数量进行循环。如ECS为8vcpu,则-A范围0~7,0~7。

测试准备

  1. 准备弹性云服务器

    要求:被测机与辅助弹性云服务器的类型、规格需保持一致,并在同一云服务器组,遵循反亲和部署。
    表3 环境准备

    类型

    数量

    镜像

    规格

    IP地址

    被测机

    1台

    CentOS 7.4 64bit(推荐)

    -

    192.168.2.10

    辅助云服务器

    8台

    CentOS 7.4 64bit(推荐)

    vCPU:8核及以上

    192.168.2.11 ~ 192.168.2.18

  2. 准备测试工具。

    要求:需分别在被测机和辅助云服务器上安装测试工具netperf、iperf3、sar。安装方法如表4所示。

    表4 安装测试工具

    测试工具

    安装方法

    netperf

    1. 执行以下命名,安装gcc。

      yum -y install unzip gcc gcc-c++

    2. 执行以下命令,下载netperf。

      wget https://github.com/HewlettPackard/netperf/archive/refs/tags/netperf-2.7.0.zip

    3. 执行以下命令,解压并安装netperf。

      unzip netperf-2.7.0.zip

      cd netperf-netperf-2.7.0/

      ./configure && make && make install

    iperf3

    1. 执行以下命令,下载iperf3。

      wget --no-check-certificate https://codeload.github.com/esnet/iperf/zip/master -O iperf3.zip

    2. 执行以下命令,解压并安装iperf3。

      unzip iperf3.zip

      cd iperf-master/

      ./configure && make && make install

    sar

    执行以下命令,安装sar。

    yum -y install sysstat

  3. 开启网卡多队列。

    要求:需分别在被测机和辅助云服务器上开启网卡多队列。

    1. 执行以下命令,检查弹性云服务器支持的队列个数。

      ethtool -l eth0 | grep -i Pre -A 5 | grep Combined

    2. 执行以下命令,设置队列数,开启网卡多队列功能。

      ethtool -L eth0 combined X

      其中,X表示3.a中查询的队列数。

TCP带宽测试(使用netperf工具)

采用多流进行测试,本文以16条流为例,均分到8个ECS上,其他流数以此类推。

TCP带宽测试采用多流模型:

  • 当测试TCP发送带宽时,采用一对多模型,即保证接收端能力足够。
  • 当测试TCP接收带宽时,采用多对一模型,即保证发送端能力足够。
  1. 测试TCP发送带宽。

    1. 分别在“所有辅助云服务器”中执行以下命令,启动netserver进程。

      netserver -p 12001

      netserver -p 12002

      其中,-p用于指定监听端口。

    2. 在“被测机”中执行以下命令,启动netperf进程,分别指定到辅助云服务器的不同netserver端口。其中,netperf工具的常用参数说明请参见表1

      ##IP地址对应第1台辅助云服务器

      netperf -H 192.168.2.11 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.11 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

      ##IP地址对应第2台辅助云服务器

      netperf -H 192.168.2.12 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.12 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

      ##IP地址对应第3台辅助云服务器

      netperf -H 192.168.2.13 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.13 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

      ##IP地址对应第4台辅助云服务器

      netperf -H 192.168.2.14 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.14 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

      ##IP地址对应第5台辅助云服务器

      netperf -H 192.168.2.15 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.15 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

      ##IP地址对应第6台辅助云服务器

      netperf -H 192.168.2.16 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.16 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

      ##IP地址对应第7台辅助云服务器

      netperf -H 192.168.2.17 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.17 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

      ##IP地址对应第8台辅助云服务器

      netperf -H 192.168.2.18 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.18 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

  2. 测试TCP接收带宽。

    1. 在“被测机”中执行以下命令,启动netserver进程。

      ##port对应第1台辅助云服务器

      netserver -p 12001

      netserver -p 12002

      ##port对应第2台辅助云服务器

      netserver -p 12003

      netserver -p 12004

      ##port对应第3台辅助云服务器

      netserver -p 12005

      netserver -p 12006

      ##port对应第4台辅助云服务器

      netserver -p 12007

      netserver -p 12008

      ##port对应第5台辅助云服务器

      netserver -p 12009

      netserver -p 12010

      ##port对应第6台辅助云服务器

      netserver -p 12011

      netserver -p 12012

      ##port对应第7台辅助云服务器

      netserver -p 12013

      netserver -p 12014

      ##port对应第8台辅助云服务器

      netserver -p 12015

      netserver -p 12016

    2. 执行以下命令,分别在“辅助云云服务器”中启动netperf进程。

      登录辅助云服务器1:

      netperf -H 192.168.2.10 -p 12001 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.10 -p 12002 -t TCP_STREAM -l 300 -- -m 1440 &

      登录辅助云服务器2:

      netperf -H 192.168.2.10 -p 12003 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.10 -p 12004 -t TCP_STREAM -l 300 -- -m 1440 &

      登录辅助云服务器3:

      netperf -H 192.168.2.10 -p 12005 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.10 -p 12006 -t TCP_STREAM -l 300 -- -m 1440 &

      登录辅助云服务器4:

      netperf -H 192.168.2.10 -p 12007 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.10 -p 12008 -t TCP_STREAM -l 300 -- -m 1440 &

      登录辅助云服务器5:

      netperf -H 192.168.2.10 -p 12009 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.10 -p 12010 -t TCP_STREAM -l 300 -- -m 1440 &

      登录辅助云服务器6:

      netperf -H 192.168.2.10 -p 12011 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.10 -p 12012 -t TCP_STREAM -l 300 -- -m 1440 &

      登录辅助云服务器7:

      netperf -H 192.168.2.10 -p 12013 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.10 -p 12014 -t TCP_STREAM -l 300 -- -m 1440 &

      登录辅助云服务器8:

      netperf -H 192.168.2.10 -p 12015 -t TCP_STREAM -l 300 -- -m 1440 &

      netperf -H 192.168.2.10 -p 12016 -t TCP_STREAM -l 300 -- -m 1440 &

  3. 解析TCP测试结果。

    测试结束后,发送端netperf进程输出结果如图1所示,最终结果为所有netperf进程测试结果之和。

    图1 发送端进程输出结果

    由于netperf进程众多,为方便统计,强烈建议测试指令输入完毕后,直接在被测弹性云服务器上用sar查看测试数据,命令为:

    sar -n DEV 1 60

UDP PPS测试(使用iperf3工具)

  1. 测试UDP发送PPS。

    1. 登录辅助云服务器
    2. 分别在所有“辅助云服务器”中执行以下命令,启动server进程。

      iperf3 -s -p 12001 &

      iperf3 -s -p 12002 &

      其中,-p用于指定监听端口。

    3. 在“被测机”中执行如下命令,启动client进程。其中,iperf3工具的常用参数说明请参见表2

      ##辅助云服务器1

      iperf3 -c 192.168.2.11 -p 12001 -u -b 100M -t 300 -l 16 -A 0 &

      iperf3 -c 192.168.2.11 -p 12002 -u -b 100M -t 300 -l 16 -A 1 &

      ##辅助云服务器2

      iperf3 -c 192.168.2.12 -p 12001 -u -b 100M -t 300 -l 16 -A 2 &

      iperf3 -c 192.168.2.12 -p 12002 -u -b 100M -t 300 -l 16 -A 3 &

      ##辅助云服务器3

      iperf3 -c 192.168.2.13 -p 12001 -u -b 100M -t 300 -l 16 -A 4 &

      iperf3 -c 192.168.2.13 -p 12002 -u -b 100M -t 300 -l 16 -A 5 &

      ##辅助云服务器4

      iperf3 -c 192.168.2.14 -p 12001 -u -b 100M -t 300 -l 16 -A 6 &

      iperf3 -c 192.168.2.14 -p 12002 -u -b 100M -t 300 -l 16 -A 7 &

      ##辅助云服务器5

      iperf3 -c 192.168.2.15 -p 12001 -u -b 100M -t 300 -l 16 -A 8 &

      iperf3 -c 192.168.2.15 -p 12002 -u -b 100M -t 300 -l 16 -A 9 &

      ##辅助云服务器6

      iperf3 -c 192.168.2.16 -p 12001 -u -b 100M -t 300 -l 16 -A 10 &

      iperf3 -c 192.168.2.16 -p 12002 -u -b 100M -t 300 -l 16 -A 11 &

      ##辅助云服务器7

      iperf3 -c 192.168.2.17 -p 12001 -u -b 100M -t 300 -l 16 -A 12 &

      iperf3 -c 192.168.2.17 -p 12002 -u -b 100M -t 300 -l 16 -A 13 &

      ##辅助云服务器8

      iperf3 -c 192.168.2.18 -p 12001 -u -b 100M -t 300 -l 16 -A 14 &

      iperf3 -c 192.168.2.18 -p 12002 -u -b 100M -t 300 -l 16 -A 15 &

  2. 测试UDP接收PPS。

    1. 执行以下命令,在“被测机”中启动server进程。其中,iperf3工具的常用参数说明请参见表2

      ##port对应第1台辅助云服务器

      iperf3 -s -p 12001 -A 0 -i 60 &

      iperf3 -s -p 12002 -A 1 -i 60 &

      ##port对应第2台辅助云服务器

      iperf3 -s -p 12003 -A 2 -i 60 &

      iperf3 -s -p 12004 -A 3 -i 60 &

      ##port对应第3台辅助云服务器

      iperf3 -s -p 12005 -A 4 -i 60 &

      iperf3 -s -p 12006 -A 5 -i 60 &

      ##port对应第4台辅助云服务器

      iperf3 -s -p 12007 -A 6 -i 60 &

      iperf3 -s -p 12008 -A 7 -i 60 &

      ##port对应第5台辅助云服务器

      iperf3 -s -p 12009 -A 8 -i 60 &

      iperf3 -s -p 12010 -A 9 -i 60 &

      ##port对应第6台辅助云服务器

      iperf3 -s -p 12011 -A 10 -i 60 &

      iperf3 -s -p 12012 -A 11 -i 60 &

      ##port对应第7台辅助云服务器

      iperf3 -s -p 12013 -A 12 -i 60 &

      iperf3 -s -p 12014 -A 13 -i 60 &

      ##port对应第8台辅助云服务器

      iperf3 -s -p 12015 -A 14 -i 60 &

      iperf3 -s -p 12016 -A 15 -i 60 &

    2. 分别在“辅助云服务器”中,执行以下命令,启动client进程。其中,iperf3工具的常用参数说明请参见表2

      登录辅助云服务器1:

      iperf3 -c 192.168.2.10 -p 12001 -u -b 100M -t 300 -l 16 -A 0 &

      iperf3 -c 192.168.2.10 -p 12002 -u -b 100M -t 300 -l 16 -A 1 &

      登录辅助云服务器2:

      iperf3 -c 192.168.2.10 -p 12003 -u -b 100M -t 300 -l 16 -A 0 &

      iperf3 -c 192.168.2.10 -p 12004 -u -b 100M -t 300 -l 16 -A 1 &

      登录辅助云服务器3:

      iperf3 -c 192.168.2.10 -p 12005 -u -b 100M -t 300 -l 16 -A 0 &

      iperf3 -c 192.168.2.10 -p 12006 -u -b 100M -t 300 -l 16 -A 1 &

      登录辅助云服务器4:

      iperf3 -c 192.168.2.10 -p 12007 -u -b 100M -t 300 -l 16 -A 0 &

      iperf3 -c 192.168.2.10 -p 12008 -u -b 100M -t 300 -l 16 -A 1 &

      登录辅助云服务器5:

      iperf3 -c 192.168.2.10 -p 12009 -u -b 100M -t 300 -l 16 -A 0 &

      iperf3 -c 192.168.2.10 -p 12010 -u -b 100M -t 300 -l 16 -A 1 &

      登录辅助云服务器6:

      iperf3 -c 192.168.2.10 -p 12011 -u -b 100M -t 300 -l 16 -A 0 &

      iperf3 -c 192.168.2.10 -p 12012 -u -b 100M -t 300 -l 16 -A 1 &

      登录辅助云服务器7:

      iperf3 -c 192.168.2.10 -p 12013 -u -b 100M -t 300 -l 16 -A 0 &

      iperf3 -c 192.168.2.10 -p 12014 -u -b 100M -t 300 -l 16 -A 1 &

      登录辅助云服务器8:

      iperf3 -c 192.168.2.10 -p 12015 -u -b 100M -t 300 -l 16 -A 0 &

      iperf3 -c 192.168.2.10 -p 12016 -u -b 100M -t 300 -l 16 -A 1 &

  3. 解析UDP PPS测试结果。

    UDP PPS测试结果示例如图2所示。

    图2 UDP PPS测试结果

    由于iperf3进程众多,为方便统计,强烈建议测试指令输入完毕后,直接在被测弹性云服务器上用sar查看测试数据,命令为:

    sar -n DEV 1 60

时延测试

  1. 执行以下命令,在“被测机”中启动qperf进程。

    qperf &

  2. 登录辅助云服务器1,并执行以下命令,进行时延测试。

    qperf 192.168.2.10 -m 64 -t 60 -vu udp_lat

    测试完后屏幕显示结果的latency字段就是ECS间时延。

其他 所有常见问题

more