前言
最近,我们在进行虚拟网卡测试的时候,发现使用netperf测出来的带宽存在压力不足的问题,具体现象就是带宽峰值达到600MB的时候,客户端发出的包没有丢失并且这个带宽值也无法再增加。从这个问题触发,我们计划将关于虚拟网卡的测试工具进行易用性的验证。
测试工具
业界通常会选择iperf、netperf之类的工具。
netperf相比iperf功能更加丰富,通常用来测试虚拟网卡收包性能。
iperf相比netperf功能相对专一,但是其原生支持多线程,通常用来测试虚拟网卡的吞吐(带宽)。
测试指南
1、测试虚拟网卡带宽
在这种场景下,我们建议您选择iperf进行测试。
首先,我们前往iperf官网下载安装包,选择合适的包下载即可。
然后我们将其上传到服务器,进行安装即可。
CentOS安装命令: rpm -ivh iperf3.x.rpm
。
安装成功后,我们在服务端使用命令iperf3 -s -i 1 -p 8888
启动iperf。
在客户端使用命令iperf3 -u -c 192.168.0.1 -b 1000m -t 60 -P 30 -p 8888
进行带宽的测试。
在测试的过程中,我们要根据实际内网速率(或者网卡限速值)对
-b
参数进行适当的调整,直到测试到峰值带宽。
参数解释
- -s 服务端
- -i 数据打印的间隔时间
- -u UDP协议测试(客户端专属)
- -c 服务端地址
- -b 指定测试带宽
- -t 测试时长
- -P 指定线程数
- -p 指定服务端端口号
- -l 指定缓冲区长度
- -A CPU亲和性,指定对应CPU编号,绑核
2、测试网卡收包性能/延时
这种场景,我们选择netperf进行测试,同时我们需要设置包大小为1,以测试到最优值。
参考这篇文章:netperf测试网络性能
最后
在关于网络的测试中,我们一定得提前分析网络架构,明确限制条件。对于网卡队列、网卡限速、网络流向等都要清楚的了解。这样我们才能在发现问题后进行相应的处理和优化。
工具只是我们测试的助手、不同的工具不同的参数都可以得到不同的值。真正有价值的是我们针对具体的被测对象做的测试规划分析、以及建立的混沌模型。
能够在实验室模拟出真实业务场景,拦截住将会出现在生产环境的问题才是我们测试的目的。(当然,为了给支撑销售吹牛逼,我们不得不“调整参数”。)