物理专线接入完成后,您需要测试链路的性能,确保物理专线可以满足您的业务需求。本文介绍通过Netperf和iPerf3工具测试物理专线性能的方法。
搭建测试环境
安装Netperf和iPerf3
完成以下操作,分别在IDC网络接入设备和8个ECS实例上安装Netperf和iPerf3。
说明 以下内容以在ECS实例安装Netperf和iPerf3为例。
- 登录ECS实例。具体操作,请参见连接方式概述。
- 安装Netperf。
- 执行以下命令,下载Netperf安装包。
wget -c "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0" -O netperf-2.5.0.tar.gz
- 依次执行以下命令,安装Netperf。
tar -zxvf netperf-2.5.0.tar.gz
cd netperf-netperf-2.5.0
./configure
make
make install
- 执行
netperf -V
或netserver -V
,验证安装是否成功。
系统回显以下信息时,表示安装成功。
Netperf version 2.5.0
- 安装iPerf3。
- 执行以下命令,下载iPerf3。
yum install git -y
git clone https://github.com/esnet/iperf
- 执行以下命令,安装iPerf3。
cd iperf
./configure && make && make install && cd ..
cd src
ADD_PATH="$(pwd)"
PATH="${ADD_PATH}:${PATH}"
export PATH
- 执行
iperf3 -v
命令,验证安装是否成功。
系统回显以下信息时,表示安装成功。
iperf 3.10.1+ (cJSON 1.7.13)
Linux iZbp15y0zrhx2ry6vo1b4wZ 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64
开启多队列功能
假设与物理专线相连的接口为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 |
数据包大小。
- 测试pps(packet per second)时,建议设置为1。
- 测试bps(bit per second)时,建议设置为1400。
|
测试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实例
测试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实例
分析测试结果
客户端的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 |
- 服务端:指定服务端监听的端口,默认为5201,同时监听TCP/UDP。
- 客户端:指定客户端连接服务端的端口,默认为5201。如果同时有-u参数,表示通过UDP发起连接,否则默认使用TCP连接。
|
-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 |
丢失报文数/总报文数(丢包率) |