iperf网络测试

iPerf/iPerf3提供了IP网络的最大带宽测试功能,支持不通参数调整,包括时间,缓存和协议(TCp, UDP, SCTP, 协议 IPv4 和 IPv6)。每次策四可以报告带宽,丢包以及其他参数。

iperf2 vs. iperf3

源代码安装

tar xfz iperf-3.6.tar.gz
cd iperf-3.6
./configure
make
make install

二进制安装

Ubuntu安装

软件仓库已经包含了iperf3

使用

  • 服务器端启动:

iperf2使用如下命令启动

-D表示后台服务模式,-s表示服务器端

对于iperf3,执行指定端口监听

  • 客户端

iperf2测试

  • -t表示持续时间,86400秒就是24小时

  • -l 8k表示8k缓存

  • -i 10表示每10秒打印一个信息

上述命令是向服务器发送数据,如果要从服务器下载数据,则使用-R参数

上述命令会将整个带宽打满,所以很容易获得网络性能。

此外,-b参数可以限制流量,例如-b 200M就限制200Mb流量。不过,对于iperf2只支持UDP流量限流。

iperf3测试

  • -t表示持续时间,600秒就是10分钟

  • -l 8k表示8k缓存

  • -i 10表示每10秒打印一个信息

  • -b 500M表示最高带宽500Mb/s

  • -p 5201表示端口

  • -R表示反向,也就是从服务器下载

测试输出

  • 自动重连

在使用iperf测试网络的时候,如果遇到网络抖动,可能客户端会出现如下报错

此时客户端会退出。

但是这对一些测试环境是非常麻烦的,手工去处理是不可能的。

另外,我想了一个方法,通过cron脚本来实现

不过,对于iperf3,上述脚本也不能解决问题。因为iperf3是单线程程序,如果服务器启动并被一个客户端连接以后,后续其他客户端再连接就会提示错误:

解决的方法参考iperf3 at 40Gbps and above,在服务器端启动多个进程,并监听不同端口:

例如,以下脚本启动5个监听服务

则客户端脚本命令增加参数

还有一点问题暂时没有解决:虽然能够匹配某个连接,但是没有nohup放到后台。

参考

Last updated

Was this helpful?