全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件

物理专线网络性能测试方法

更新时间:2017-09-01 15:28:01

本文介绍了如何测试物理专线的网络性能,包括以下操作步骤:

  1. 准备环境,包括:
    1.1. 准备1台IDC网络接入设备
    1.2. 准备8台VPC内的服务器
    1.3. 安装Netperf
    1.4. 安装iperf3
    1.5. 开启多队列功能
  2. 使用netperf工具测试网络性能,包括:
    2.1. 介绍工具相关参数
    2.2. 测试收方向
    2.3. 测试发方向
    2.4. 分析测试结果
  3. 使用iperf3工具测试网络性能,包括:
    3.1 介绍工具相关参数
    3.2 测试收方向
    3.3 测试发方向
    3.4 分析测试结果

1. 准备环境

您需要准备:

  • 准备1台IDC网络接入设备: 被压力测试网络PPS的IDC网络接入设备,可作为Netperf或iperf3测试中的client端或server端。
  • 准备8台VPC内的服务器: ECS实例,作为Netperf测试或iperf3测试中的client端或server端,与IDC网络接入设备之间建立控制连接,传递测试配置相关的信息,以及测试结果。

此IDC与此VPC必须由一根专线连通,并且此物理专线已经搭建完毕。

1.1. 准备1台IDC网络接入设备

IP地址为:192.168.100.1

1.2. 准备8台VPC内的服务器

  • 镜像:centos_7_2_64_40G_base_20170222.vhd
  • 规格:ecs.se1.2xlarge
  • 数量:8
  • 虚拟机名称:i-partnerVm-{1-8}

本教程中使用centos系统。不同操作系统的性能测试有所不同。假设8台陪练机的IP地址为:172.16.0.2 − 172.16.0.9。

1.3. 安装Netperf

Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输。

按以下步骤在IDC的网络接入设备和VPC的服务器上安装Netperf。

  1. 运行以下命令下载 Netperf。

    1. wget -c "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0" -O netperf-2.5.0.tar.gz
  2. 运行以下命令安装 Netperf。

    1. tar -zxvf netperf-2.5.0.tar.gz
    2. cd netperf-netperf-2.5.0
    3. ./configure && make && make install && cd ..
  3. 运行 netperf -hnetserver -h 验证安装是否成功。

1.4. 安装iperf3

Iperf3是一个网络性能测试工具。Iperf3可以测试最大TCP和UDP带宽性能。

按以下步骤在IDC的网络接入设备和VPC的服务器上安装iperf3工具。

  1. 运行以下命令下载iperf3。

    1. yum install git -y
    2. git clone https://github.com/esnet/iperf
  2. 运行以下命令安装iperf3。

    1. cd iperf
    2. ./configure && make && make install && cd ..
    3. cd src
    4. ADD_PATH="$(pwd)"
    5. PATH="${ADD_PATH}:${PATH}"
    6. export PATH
  3. 运行iperf3 -h,验证安装是否成功。

1.5. 开启多队列功能

在IDC网络接入设备内部执行以下命令(假设需要开启的网卡是eth0)开启多队列功能。

  1. ethtool -L eth0 combined 4
  2. echo "ff" > /sys/class/net/eth0/queues/rx-0/rps_cpus
  3. echo "ff" > /sys/class/net/eth0/queues/rx-1/rps_cpus
  4. echo "ff" > /sys/class/net/eth0/queues/rx-2/rps_cpus
  5. echo "ff" > /sys/class/net/eth0/queues/rx-3/rps_cpus

2. 使用Netperf工具测试网络性能

2.1. 介绍工具相关参数

Netperf安装完成后,会生成2个工具:netserver和netperf。以下为2个工具的主要参数。

工具名称 工具说明 主要参数 参数说明
netserver 接收端工具(server端) -p 端口号
netperf 发送端工具(client端) -H 指定IDC网络接入设备/VPC服务器的IP地址。
-p 指定IDC网络接入设备/VPC服务器的端口。
-l 指定运行时间。
-t 指定发包协议类型:TCP_STREAM 或 UDP_STREAM。建议使用UDP_STREAM。
-m 指定数据包大小。
  • 测试PPS时,该值为 1。
  • 测试bps(bit per second)时,该值为1400。

2.2. 测试收方向

  1. 在IDC网络接入设备内启动netserver进程,-p指定不同端口:

    1. netserver -p 11256
    2. netserver -p 11257
    3. netserver -p 11258
    4. netserver -p 11259
    5. netserver -p 11260
    6. netserver -p 11261
    7. netserver -p 11262
    8. netserver -p 11263
  2. 在VPC内的8台服务器内启动netperf进程,分别指定到IDC网络接入设备的不同netserver端口。

    1. netperf -H 192.168.100.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一台
    2. netperf -H 192.168.100.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1 #第二台
    3. netperf -H 192.168.100.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1 #第三台
    4. netperf -H 192.168.100.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1 #第四台
    5. netperf -H 192.168.100.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1 #第五台
    6. netperf -H 192.168.100.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1 #第六台
    7. netperf -H 192.168.100.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1 #第七台
    8. netperf -H 192.168.100.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1 #第八台

    如果需要测试bps,上述命令应该为:

    1. netperf -H 192.168.100.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一台
    2. netperf -H 192.168.100.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #第二台
    3. netperf -H 192.168.100.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #第三台
    4. netperf -H 192.168.100.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #第四台
    5. netperf -H 192.168.100.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #第五台
    6. netperf -H 192.168.100.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #第六台
    7. netperf -H 192.168.100.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #第七台
    8. netperf -H 192.168.100.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #第八台

2.3. 测试发方向

  1. 在8台VPC的服务器内启动1个netserver进程,-p指定端口。

    1. netserver -p 11256
  2. 在IDC网络接入设备内启动8个netperf进程,-H指定为不同IP地址。

    1. netperf -H 172.16.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一台
    2. netperf -H 172.16.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第二台
    3. netperf -H 172.16.0.4 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第三台
    4. netperf -H 172.16.0.5 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第四台
    5. netperf -H 172.16.0.6 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第五台
    6. netperf -H 172.16.0.7 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第六台
    7. netperf -H 172.16.0.8 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第七台
    8. netperf -H 172.16.0.9 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第八台

    如果需要测试bps,上述命令应该为:

    1. netperf -H 192.168.100.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一台
    2. netperf -H 192.168.100.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #第二台
    3. netperf -H 192.168.100.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #第三台
    4. netperf -H 192.168.100.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #第四台
    5. netperf -H 192.168.100.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #第五台
    6. netperf -H 192.168.100.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #第六台
    7. netperf -H 192.168.100.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #第七台
    8. netperf -H 192.168.100.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #第八台

2.4. 分析测试结果

最终发送端每个netperf进程会输出如下结果,第一条数据行为发包信息概览如下。

  1. Socket Message Elapsed Messages
  2. Size Size Time Okay Errors Throughput
  3. bytes bytes secs # # 10^6bits/sec
  4. 124928 1 10.00 4532554 0 3.63
  5. 212992 10.00 1099999 0.88

输出结果中各字段含义解释如下表所示。

字段数据 含义
124928 缓冲区大小
1 数据包大小(Byte)
10.00 测试时间(s)
4532554 数据包成功数
0 失败数
3.63 网络吞吐量(Mbit/s)

PPS = 数据包成功数/测试时间

通常我们建议在server端运行 sar来统计实际收到的包并作为实际结果,具体命令为: sar -n DEV 1 320

3. 使用iperf3工具测试网络性能

3.1. 介绍工具相关参数

以下为工具的主要参数。

工具名称 工具说明 主要参数 参数说明
iperf3 收发一体 -s 表示作为server端接收包。
-i 间隔多久输出信息流量信息,默认单位为秒。
-p 指定服务的监听端口。
-u 表示采用UDP协议发送报文,不带该参数表示采用TCP协议
-l 表示包大小,默认单位为Byte。通常测试PPS的时候该值为16,测试 bps时该值为1400。
-b 设定流量带宽,可选单位包括:k/m/g。
-t 流量的持续时间,默认单位为秒。
-A CPU亲和性,可以将具体的iperf3进程绑定对应编号的逻辑CPU,避免iperf进程在不同的CPU间调度。

3.2. 测试收方向

  1. 在IDC网络接入设备中以server模式启动iperf3进程,-p指定不同端口:

    1. iperf3 -s -i 1 -p 16001
    2. iperf3 -s -i 1 -p 16002
    3. iperf3 -s -i 1 -p 16003
    4. iperf3 -s -i 1 -p 16004
    5. iperf3 -s -i 1 -p 16005
    6. iperf3 -s -i 1 -p 16006
    7. iperf3 -s -i 1 -p 16007
    8. iperf3 -s -i 1 -p 16008
  2. 在VPC的服务器中以client模式启动iperf3进程,分别指定到IDC网络接入设备的不同端口。

    1. iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16001 -A 1
    2. iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16002 -A 2
    3. iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16003 -A 3
    4. iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16004 -A 4
    5. iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16005 -A 5
    6. iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16006 -A 6
    7. iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16007 -A 7
    8. iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16008 -A 8

3.3. 测试发方向

  1. 在每个VPC的服务器中以server模式启动1个iperf3进程,-p指定端口。

    1. iperf3 -s -i 1 -p 16001
  2. 在IDC的接入设备中以client模式启动8个iperf3进程,-c指定为各个陪练机的IP地址。

    1. iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.2 -i 1 -p 16001 -A 1
    2. iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.3 -i 1 -p 16001 -A 2
    3. iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.4 -i 1 -p 16001 -A 3
    4. iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.5 -i 1 -p 16001 -A 4
    5. iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.6 -i 1 -p 16001 -A 5
    6. iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.7 -i 1 -p 16001 -A 6
    7. iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.8 -i 1 -p 16001 -A 7
    8. iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.9 -i 1 -p 16001 -A 8

3.4. 分析测试结果

最终发送端每个iperf3进程会输出如下结果,第一条数据行为发包信息概览如下。

  1. [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
  2. [ 4] 0.00-10.00 sec 237 MBytes 199 Mbits/sec 0.027 ms 500/30352 (1.6%)
  3. [ 4] Sent 30352 datagrams

输出结果中各字段含义解释如下表所示。

字段数据 含义
237 传送的总数据量
199 带宽大小
0.027 波动率
500/30352 丢包/总报文数
1.6% 丢包率

PPS = 对端收到的包/时间

通常我们建议在server端运行sar来统计实际收到的包并作为实际结果,具体命令为:sar -n DEV 1 320

注意

  • OSS读写上限:5Gbit/s。

  • 在从VPC到VBR方向的单hash流,为了高冗余性,在阿里云内部限速为【高速通道规格带宽/12】。例如VBR到VPC的带宽为large1,即1G带宽,则单hash流最大带宽为83Mbit/s。

    hash流:源IP地址,源端口,目的IP地址,目的端口,和传输层协议这五个量组成的一个集合所定义的数据流。 例如:“192.168.1.1 10000 TCP 121.14.88.76 80” 就构成了一个五元组。其意义是,一个IP地址为192.168.1.1的终端通过端口10000,利用TCP协议,和IP地址为121.14.88.76,端口为80的终端进行连接。

本文导读目录