众所周知,网络性能一般有4个关键测试指标:带宽、时延、丢包、抖动。带宽一般就是租用的带宽能不能跑满,接口能不能跑满;时延就是主机响应时间,一般来讲,时延肯定是越低越好;丢包率和抖动是用来判断网络质量是否稳定的,发送100个包,只接收到20个,这丢包率高的就有点感人了;但即使不丢包,时延一会2ms,一会1900ms,网络抖动和早些年的移动有的一拼。
提到怎么测试这些网络性能指标,最常用的就是ping和测速了。最近接触了信通院的一些测试项目,发现人家都是要求用专业的打流软件,像iperf、netperf这种,看来要学习学习怎么使用了。
实验环境
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内存)
实验组网
准备上次新装的VSR6,并新安装3台CentOS7主机。整体实验组网图如下:
准备测试环境
实验用的4台主机/设备都配置了带外管理口,避免管理数据和测试数据混跑影响实验结果。
首先查看VSR6的网络配置。
VSR6设备的三个网卡LINK01、LINK02、LINK03分别连接VM1、VM2、VM3。
以VM3为例,给主机增加网卡之后,并没有给新网卡配置IP地址。
这时,使用以下命令给新网卡增加一个IP地址,并测试到路由器网关的连通性。
ip addr add 13.1.1.2/24 dev ens224
网络联通之后,增加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
同理,另外两台主机VM1和VM2照此配置,即可实现三台主机之间的互通。
iperf
测试使用yum无法安装iperf软件和netperf软件。所以先使用以下命令下载iperf软件。
wget https://iperf.fr/download/fedora/iperf3-3.1.3-1.fc24.x86_64.rpm
然后安装iperf工具。
rpm -ivh iperf3-3.1.3-1.fc24.x86_64.rpm
安装完成后,先看一下软件支持的命令操作:
iperf3 --help
从命令可以看出,软件是分为服务器端和客户端的,并且支持命令不同。
先设置服务器端。开启命令还是很简单的。
iperf3 -s
开启之后服务器端进入监听状态,默认使用5201端口。然后在客户端发起测试。
iperf3 -c 13.1.1.2
奇怪,有报错,提示无法连接到服务器,不是已经能ping通了吗?
你猜是哪的问题?没错,就是主机防火墙拦截了。直接关闭3台主机的防火墙。
systemctl stop firewalld
然后就可以测试了。
好像不太对,VSR显示的接口速率是1G啊,怎么测出来6.30 G?
再试一下。
更高了,6.83Gbps,但是接口显示确实是1000000kbps,是一个千兆口。不支持显示最高速率,我把接口统计清空,看了一下,一次测试共收包5895048个,8924895637 字节,也就是8,924,895,637字节,8.9GB。难不成VSR这货是万兆口?
都说用UDP测试速率更接近实际情况,试一下。
太惨了,不忍直视。
看一眼服务器端监视结果。
可以发现,使用UDP报文测试时,出现了抖动(Jitter)和丢包率统计。
netperf
netperf工具同样不支持使用yum安装,先下载netperf工具。
wget http://repo.iotti.biz/CentOS/7/x86_64/netperf-2.7.0-1.el7.lux.x86_64.rpm
安装netperf工具。
rpm -ich netperf-2.7.0-1.el7.lux.x86_64.rpm
查看netperf工具的使用帮助。
开启netperf的服务器端,和iperf不同,命令都不一样,要使用netserver命令开启。
netserver
在客户端发起测试。
netperf -H 13.1.1.2
测出来的速率又是6.3Gbps。
我试试用管理口测试一下。
很棒,ESXi的vSwitch接口带宽10Gbps也测出来了。
但是操作不如iperf直观,只有一个测试结果,服务器端也没有结果显示,应该是我不会用。
qperf
下载并安装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
这个还需要依赖包。所以安装脚本更改如下:
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
一键完成!
NICE!
然后我发现qperf竟然支持yum安装,那么你还可以使用yum进行安装。
yum install -y qperf
同样,还是看看qperf支持的命令。
有些不一样,可以通过补充命令查看示例和参数选项等信息。
配置服务器端:
qperf
配置客户端:
漂亮,速率782MB,约合6.2Gbps。
换个方式测试。
qperf 13.1.1.2 -oo msg_size:1:64K:*2 -vu tcp_bw tcp_lat
竟然在测试64K报文时带宽达到了968MB,降降要到10G了。说明VSR的接口至少是个万兆口无疑了。
总结
1、VSR接口名称标的GigabitEthernet,实际只是个接口名称,与实际速率无关,测试过程中最大传输速率为每秒968MB,将近8Gbps。另外有哥们跟我说过,之前测VSR,测出过25G的接口速率。
2、3款软件在使用时均需要以C/S模式运行,配置命令有所差异;
3、iperf和netperf不能使用yum安装,所以使用rpm方式进行安装;而qperf是可以直接使用yum进行安装的;
4、使用TCP方式进行测试,可以看到带宽和时延情况;使用 UDP方式进行测试,才可以看到抖动和丢包率情况。