众所周知,网络性能一般有4个关键测试指标:带宽、时延、丢包、抖动。带宽一般就是租用的带宽能不能跑满,接口能不能跑满;时延就是主机响应时间,一般来讲,时延肯定是越低越好;丢包率和抖动是用来判断网络质量是否稳定的,发送100个包,只接收到20个,这丢包率高的就有点感人了;但即使不丢包,时延一会2ms,一会1900ms,网络抖动和早些年的移动有的一拼。

提到怎么测试这些网络性能指标,最常用的就是ping和测速了。最近接触了信通院的一些测试项目,发现人家都是要求用专业的打流软件,像iperf、netperf这种,看来要学习学习怎么使用了。

学习笔记:iperf、netperf和qperf_服务器端实验环境学习笔记:iperf、netperf和qperf_centos_02

VMWare ESXi 6.7.0(ProLiant DL360 Gen9,48核心,128G内存)

H3C VSR1000(Version 7.1.064, Release 0621P18,2核心,2G内存)

CentOS主机(7.9.2009 (Core),4核心,4G内存)

学习笔记:iperf、netperf和qperf_服务器端实验组网学习笔记:iperf、netperf和qperf_centos_02

准备上次新装的VSR6,并新安装3台CentOS7主机。整体实验组网图如下:

学习笔记:iperf、netperf和qperf_服务器端_05

学习笔记:iperf、netperf和qperf_服务器端准备测试环境学习笔记:iperf、netperf和qperf_centos_02

实验用的4台主机/设备都配置了带外管理口,避免管理数据和测试数据混跑影响实验结果。

首先查看VSR6的网络配置。

学习笔记:iperf、netperf和qperf_服务器端_05

VSR6设备的三个网卡LINK01、LINK02、LINK03分别连接VM1、VM2、VM3。

以VM3为例,给主机增加网卡之后,并没有给新网卡配置IP地址。

学习笔记:iperf、netperf和qperf_yum安装_09

这时,使用以下命令给新网卡增加一个IP地址,并测试到路由器网关的连通性。



ip addr add 13.1.1.2/24 dev ens224

学习笔记:iperf、netperf和qperf_服务器端_10

网络联通之后,增加VM3到另外两个主机所在网段的路由。





ip route add 11.1.1.0/24 via 13.1.1.1ip route add 12.1.1.0/24 via 13.1.1.1

学习笔记:iperf、netperf和qperf_服务器端_10

同理,另外两台主机VM1和VM2照此配置,即可实现三台主机之间的互通。



iperf

测试使用yum无法安装iperf软件和netperf软件。所以先使用以下命令下载iperf软件。



wget https://iperf.fr/download/fedora/iperf3-3.1.3-1.fc24.x86_64.rpm

学习笔记:iperf、netperf和qperf_yum安装_12

然后安装iperf工具。



rpm -ivh iperf3-3.1.3-1.fc24.x86_64.rpm

学习笔记:iperf、netperf和qperf_centos_13

安装完成后,先看一下软件支持的命令操作:



iperf3 --help

学习笔记:iperf、netperf和qperf_yum安装_14

从命令可以看出,软件是分为服务器端和客户端的,并且支持命令不同。

先设置服务器端。开启命令还是很简单的。



iperf3  -s

学习笔记:iperf、netperf和qperf_客户端_15

开启之后服务器端进入监听状态,默认使用5201端口。然后在客户端发起测试。



iperf3 -c 13.1.1.2

学习笔记:iperf、netperf和qperf_centos_16

奇怪,有报错,提示无法连接到服务器,不是已经能ping通了吗?

你猜是哪的问题?没错,就是主机防火墙拦截了。直接关闭3台主机的防火墙。



systemctl stop firewalld

学习笔记:iperf、netperf和qperf_centos_17

然后就可以测试了。

学习笔记:iperf、netperf和qperf_yum安装_18

好像不太对,VSR显示的接口速率是1G啊,怎么测出来6.30 G?学习笔记:iperf、netperf和qperf_centos_19

再试一下。

学习笔记:iperf、netperf和qperf_服务器端_20

更高了,6.83Gbps,但是接口显示确实是1000000kbps,是一个千兆口。不支持显示最高速率,我把接口统计清空,看了一下,一次测试共收包5895048个,8924895637 字节,也就是8,924,895,637字节,8.9GB。难不成VSR这货是万兆口?学习笔记:iperf、netperf和qperf_centos_21

学习笔记:iperf、netperf和qperf_丢包_22

都说用UDP测试速率更接近实际情况,试一下。

学习笔记:iperf、netperf和qperf_centos_23

太惨了,不忍直视。学习笔记:iperf、netperf和qperf_centos_24

看一眼服务器端监视结果。

学习笔记:iperf、netperf和qperf_丢包_25

可以发现,使用UDP报文测试时,出现了抖动(Jitter)和丢包率统计。

学习笔记:iperf、netperf和qperf_服务器端netperf学习笔记:iperf、netperf和qperf_centos_02

netperf工具同样不支持使用yum安装,先下载netperf工具。



wget http://repo.iotti.biz/CentOS/7/x86_64/netperf-2.7.0-1.el7.lux.x86_64.rpm

学习笔记:iperf、netperf和qperf_丢包_28

安装netperf工具。



rpm -ich netperf-2.7.0-1.el7.lux.x86_64.rpm

学习笔记:iperf、netperf和qperf_丢包_29

查看netperf工具的使用帮助。

学习笔记:iperf、netperf和qperf_服务器端_30

开启netperf的服务器端,和iperf不同,命令都不一样,要使用netserver命令开启。



netserver

学习笔记:iperf、netperf和qperf_centos_31

在客户端发起测试。



netperf -H 13.1.1.2

学习笔记:iperf、netperf和qperf_丢包_32

测出来的速率又是6.3Gbps。

我试试用管理口测试一下。

学习笔记:iperf、netperf和qperf_服务器端_33

很棒,ESXi的vSwitch接口带宽10Gbps也测出来了。学习笔记:iperf、netperf和qperf_yum安装_34

但是操作不如iperf直观,只有一个测试结果,服务器端也没有结果显示,应该是我不会用。

学习笔记:iperf、netperf和qperf_服务器端qperf学习笔记:iperf、netperf和qperf_centos_02

下载并安装qperf工具。





wget http://mirror.centos.org/centos/7/os/x86_64/Packages/qperf-0.4.9-3.el7.x86_64.rpmrpm -ivh qperf-0.4.9-3.el7.x86_64.rpm

学习笔记:iperf、netperf和qperf_服务器端_37

这个还需要依赖包。所以安装脚本更改如下:



yum install -y libibverbs && yum install -y librdmacm && wget http://mirror.centos.org/centos/7/os/x86_64/Packages/qperf-0.4.9-3.el7.x86_64.rpm && rpm -ivh qperf-0.4.9-3.el7.x86_64.rpm

一键完成!

学习笔记:iperf、netperf和qperf_服务器端_38

NICE!学习笔记:iperf、netperf和qperf_客户端_39

然后我发现qperf竟然支持yum安装,那么你还可以使用yum进行安装。



yum install -y qperf

学习笔记:iperf、netperf和qperf_丢包_40

同样,还是看看qperf支持的命令。

学习笔记:iperf、netperf和qperf_yum安装_41

有些不一样,可以通过补充命令查看示例和参数选项等信息。

配置服务器端:



qperf

配置客户端:

学习笔记:iperf、netperf和qperf_yum安装_41

漂亮,速率782MB,约合6.2Gbps。学习笔记:iperf、netperf和qperf_centos_43

换个方式测试。



qperf 13.1.1.2 -oo msg_size:1:64K:*2 -vu tcp_bw tcp_lat

学习笔记:iperf、netperf和qperf_丢包_44

竟然在测试64K报文时带宽达到了968MB,降降要到10G了。说明VSR的接口至少是个万兆口无疑了。学习笔记:iperf、netperf和qperf_丢包_45

学习笔记:iperf、netperf和qperf_服务器端总结学习笔记:iperf、netperf和qperf_centos_02

1、VSR接口名称标的GigabitEthernet,实际只是个接口名称,与实际速率无关,测试过程中最大传输速率为每秒968MB,将近8Gbps。另外有哥们跟我说过,之前测VSR,测出过25G的接口速率。学习笔记:iperf、netperf和qperf_centos_48

2、3款软件在使用时均需要以C/S模式运行,配置命令有所差异;

3、iperf和netperf不能使用yum安装,所以使用rpm方式进行安装;而qperf是可以直接使用yum进行安装的;

4、使用TCP方式进行测试,可以看到带宽和时延情况;使用 UDP方式进行测试,才可以看到抖动和丢包率情况。


「Have Fun ~ Tester !」