物理专线接入完成后,您需要测试链路的性能,确保物理专线可以满足您的业务需求。本文介绍通过Netperf和iPerf3工具测试物理专线性能的方法。
前提条件
- 已完成物理专线的接入和路由配置,本地IDC(Internet Data Center)与阿里云通过物理专线连通。
- 准备1台IDC网络接入设备:作为Netperf或iPerf3测试中的客户端或服务器端。
本文中,IDC网络接入设备的IP地址为192.168.100.1。
- 准备8个专有网络ECS实例:作为Netperf或iPerf3测试中的客户端或服务器端。与IDC网络接入设备之间建立控制连接,传递测试配置相关的信息,以及测试结果。
本文使用8个规格为ecs.se1.2xlarge,镜像为centos_7_2_64_40G_base_20170222.vhd的ECS实例,IP地址为172.16.0.2~172.16.0.9。
搭建测试环境
安装Netperf和iPerf3
完成以下操作,分别在IDC网络接入设备和8个ECS实例上安装Netperf和iPerf3。
说明 以下内容以在ECS实例安装Netperf和iPerf3为例。
- 登录ECS实例。具体操作,请参见连接方式概述。
- 安装Netperf。
- 安装iPerf3。
开启多队列功能
假设与物理专线相连的接口为eth0,在IDC网络接入设备执行ethtool -L eth0 combined 4
命令,开启多队列功能。
执行命令后,系统回显以下信息:
echo "ff" > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo "ff" > /sys/class/net/eth0/queues/rx-1/rps_cpus
echo "ff" > /sys/class/net/eth0/queues/rx-2/rps_cpus
echo "ff" > /sys/class/net/eth0/queues/rx-3/rps_cpus
使用Netperf工具测试物理专线的包转发性能
Netperf概述
Netperf安装完成后会创建两个命令行工具:netserver(服务端:接收端工具)和netperf(客户端:发送端工具),主要参数说明如下表所示。
工具名称 | 主要参数 | 参数说明 |
---|---|---|
netserver | -p | 监听的端口号。 |
netperf | -H | IDC网络接入设备或ECS实例的IP地址。 |
-p | IDC网络接入设备或ECS实例的端口。 | |
-l | 运行时间。 | |
-t | 发送报文的协议类型:TCP_STREAM或UDP_STREAM。 推荐使用UDP_STREAM。 | |
-m | 数据包大小。
|
测试IDC网络接入设备作为服务端的包转发性能
- 在IDC网络接入设备启动netserver进程,指定不同端口。
netserver -p 11256 netserver -p 11257 netserver -p 11258 netserver -p 11259 netserver -p 11260 netserver -p 11261 netserver -p 11262 netserver -p 11263
- 分别在8个ECS实例上执行
netperf -H server_ip -p port 6 -t UDP_STREAM -l 300 -- -m 1
命令,启动netperf进程,并指定到IDC网络接入设备的不同netserver端口。- 测试pps时,执行命令示例如下所示:
netperf -H 192.168.100.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一个ECS实例 netperf -H 192.168.100.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1 #第二个ECS实例 netperf -H 192.168.100.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1 #第三个ECS实例 netperf -H 192.168.100.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1 #第四个ECS实例 netperf -H 192.168.100.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1 #第五个ECS实例 netperf -H 192.168.100.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1 #第六个ECS实例 netperf -H 192.168.100.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1 #第七个ECS实例 netperf -H 192.168.100.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1 #第八个ECS实例
- 测试bps时,执行命令示例如下所示:
netperf -H 192.168.100.1 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一个ECS实例 netperf -H 192.168.100.1 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #第二个ECS实例 netperf -H 192.168.100.1 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #第三个ECS实例 netperf -H 192.168.100.1 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #第四个ECS实例 netperf -H 192.168.100.1 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #第五个ECS实例 netperf -H 192.168.100.1 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #第六个ECS实例 netperf -H 192.168.100.1 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #第七个ECS实例 netperf -H 192.168.100.1 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #第八个ECS实例
- 测试pps时,执行命令示例如下所示:
测试IDC网络接入设备作为客户端的包转发性能
- 分别在8个ECS实例上执行
netserver -p 11256
命令,启动netserver进程,并指定端口。 - 在IDC网络接入设备内执行
netperf -H ECS_ip -p port -t UDP_STREAM -l 300 -- -m 1
命令,启动8个netperf进程,并指定为不同的ECS实例IP地址。- 测试pps时,执行命令示例如下所示:
netperf -H 172.16.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第一个ECS实例 netperf -H 172.16.0.3 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第二个ECS实例 netperf -H 172.16.0.4 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第三个ECS实例 netperf -H 172.16.0.5 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第四个ECS实例 netperf -H 172.16.0.6 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第五个ECS实例 netperf -H 172.16.0.7 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第六个ECS实例 netperf -H 172.16.0.8 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第七个ECS实例 netperf -H 172.16.0.9 -p 11256 -t UDP_STREAM -l 300 -- -m 1 #第八个ECS实例
- 测试bps时,执行命令示例如下所示:
netperf -H 172.16.0.2 -p 11256 -t UDP_STREAM -l 300 -- -m 1400 #第一个ECS实例 netperf -H 172.16.0.3 -p 11257 -t UDP_STREAM -l 300 -- -m 1400 #第二个ECS实例 netperf -H 172.16.0.4 -p 11258 -t UDP_STREAM -l 300 -- -m 1400 #第三个ECS实例 netperf -H 172.16.0.5 -p 11259 -t UDP_STREAM -l 300 -- -m 1400 #第四个ECS实例 netperf -H 172.16.0.6 -p 11260 -t UDP_STREAM -l 300 -- -m 1400 #第五个ECS实例 netperf -H 172.16.0.7 -p 11261 -t UDP_STREAM -l 300 -- -m 1400 #第六个ECS实例 netperf -H 172.16.0.8 -p 11262 -t UDP_STREAM -l 300 -- -m 1400 #第七个ECS实例 netperf -H 172.16.0.9 -p 11263 -t UDP_STREAM -l 300 -- -m 1400 #第八个ECS实例
- 测试pps时,执行命令示例如下所示:
分析测试结果
客户端的netperf进程执行完毕后,会显示以下结果。通过发送成功的报文数除以测试时间,计算出测试链路的pps,即pps=发送成功的报文数÷测试时间。
Socket Message Elapsed Messages
Size Size Time Okay Errors Throughput
bytes bytes secs # # 10^6bits/sec
124928 1 10.00 4532554 0 3.63
212992 10.00 1099999 0.88
显示结果中各字段含义如下表所示。
字段 | 含义 |
---|---|
Socket Size | 缓冲区大小 |
Message Size | 数据包大小(Byte) |
Elapsed Time | 测试时间(s) |
Message Okay | 发送成功的报文数 |
Message Errors | 发送失败的报文数 |
Throughput | 网络吞吐量(Mbps) |
使用iPerf3测试物理专线的带宽
iPerf3概述
iPerf3的主要参数说明如下表所示。
主要参数 | 参数说明 |
---|---|
-s | 服务端专用参数,表示iPerf3以服务端模式运行。 |
-c | 客户端专用参数,表示iPerf3以客户端模式运行。 |
-i | 设置每次报告之间的时间间隔,单位为秒。 |
-p |
|
-u | 表示使用UDP协议发送报文。若不指定该参数则表示使用TCP协议。 |
-l | 设置读写缓冲区的长度。通常测试包转发性能时建议该值设为16,测试带宽时建议该值设为1400。 |
-b | UDP模式使用的带宽,单位bit/s。 |
-t | 设置传输的总时间。iPerf3在指定时间内,重复发送指定长度数据包的时间,默认值为10秒。 |
-A | 设置CPU亲和性,可以将iPerf3进程绑定对应编号的逻辑CPU,避免iPerf3进程在不同的CPU间被调度。 |
测试IDC网络接入设备作为服务端的带宽
- 在IDC网络接入设备上执行以下命令,以服务端模式启动iPerf3进程,指定不同端口。
iperf3 -s -i 1 -p 16001 iperf3 -s -i 1 -p 16002 iperf3 -s -i 1 -p 16003 iperf3 -s -i 1 -p 16004 iperf3 -s -i 1 -p 16005 iperf3 -s -i 1 -p 16006 iperf3 -s -i 1 -p 16007 iperf3 -s -i 1 -p 16008
- 分别在8个ECS实例上执行
iperf3 -u -l 16 -b 100m -t 120 -c server_ip -i 1 -p port -A 1
命令,以客户端模式启动iPerf3进程,并指定到IDC网络接入设备的不同端口。执行命令示例如下:iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16001 -A 1 #第一个ECS实例 iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16002 -A 2 #第二个ECS实例 iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16003 -A 3 #第三个ECS实例 iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16004 -A 4 #第四个ECS实例 iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16005 -A 5 #第五个ECS实例 iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16006 -A 6 #第六个ECS实例 iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16007 -A 7 #第七个ECS实例 iperf3 -u -l 16 -b 100m -t 120 -c 192.168.100.1 -i 1 -p 16008 -A 8 #第八个ECS实例
测试IDC网络接入设备作为客户端的带宽
- 分别在8个ECS实例上执行
iperf3 -s -i 1 -p 16001
命令,以服务端模式启动iPerf3进程并指定端口。 - 在IDC网络接入设备上执行以下命令,以客户端模式启动8个iPerf3进程。
iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.2 -i 1 -p 16001 -A 1 iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.3 -i 1 -p 16001 -A 2 iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.4 -i 1 -p 16001 -A 3 iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.5 -i 1 -p 16001 -A 4 iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.6 -i 1 -p 16001 -A 5 iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.7 -i 1 -p 16001 -A 6 iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.8 -i 1 -p 16001 -A 7 iperf3 -u -l 16 -b 100m -t 120 -c 172.16.0.9 -i 1 -p 16001 -A 8
分析测试结果
客户端的iPerf3进程执行完毕后,会显示以下结果。通过将对端收到的包数除以时间,计算出测试链路的pps,即pps=对端收到的包÷时间。
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.00-10.00 sec 237 MBytes 199 Mbits/sec 0.027 ms 500/30352 (1.6%)
[ 4] Sent 30352 datagrams
说明 建议您在服务端通过
sar
命令来统计实际收到的包并作为实际结果,例如:sar -n DEV 1 320
。显示结果中各字段含义如下表所示。
字段 | 含义 |
---|---|
Transfer | 传输的总数据量 |
Bandwidth | 带宽大小 |
Jitter | 抖动 |
Lost/Total Datagrams | 丢失报文数/总报文数(丢包率) |