iperf 命令是一个网络性能测试工具。iperf 可以测试 TCP 和 UDP 带宽质量。iperf 可以测量最大 TCP 带宽,具有多种参数和 UDP 特性。iperf 可以报告带宽,延迟抖动和数据包丢失。利用 iperf 这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。
iperf 在内存中运行,不会涉及到文件系统。iperf 存在非常多的版本,Windows,Linux,Android,iOS 都有对应的版本。可以到官网下载
安装
Linux 下安装:
sudo apt-get install iperf
其他系统到参考官网
iperf 是一个命令行工具,当然如果搜索也能发现 GUI 的工具,比如 jperf, xjerf 等等。不过还是推荐使用命令行。
iperf 使用非常简单的 C/S 架构,client 使用 -c
参数,服务端使用 -s
。
实例
宽带测试通常采用 UDP 模式,首先以链路理论带宽作为数据发送速率进行测试,从客户端到服务器之间的链路理论带宽为 100 Mbps,先使用 -b 100M
测试,然后根据测试结果,以实际带宽测试
服务端:
iperf -u -s # UDP 模式
客户端第一种模式
iperf -u -c server_address -b 100M -t 60
在 UDP 模式下,以 100Mbps 为数据发送速率,客户端到 IP 上传带宽测试,测试时间 60 秒。
客户端同时发起 30 个线程连接,以 5Mbps 为数据发送速率
iperf -u -c server_address -b 5M -P 30 -t 60
或者客户端直接进行上下行带宽测试
iperf -u -c server_address -b 100M -d -t 60
如果不加 -u
则使用 TCP 模式
iperf -s
客户端持续 60 秒
iperf -c server_address -t 60
设置服务端端口
使用 -p port
来指定服务端端口,默认是 5201
间隔时间报告
使用 -i interval
参数来表示间隔时间
iperf -c 192.168.2.105(server address) -i 2
表示间隔 2 秒打印结果
iperf 版本区别
iperf 自身存在很多个版本,Ubuntu 默认源中可能有一个叫做 iperf, 也有一个叫做 iperf3, 这两个是不同版本的 iperf, 在使用 iperf 的时候要确保版本一致。不同的版本有不同的架构和不同的特性。
然而这两个版本 iperf3 是不兼容 iperf 2.x 的。可以这么理解 iperf 是内存中的网络性能测试工具,而 iperf3 是从头还是编写的一套新程序,目标是简化代码量,并且设计为工具库,可以嵌入到其他工具中。1
两者不同的区别
服务端:
功能 | iperf | iperf3 |
---|---|---|
使用默认端口 | iperf -s | iperf3 -s |
守护模式下,使用 TCP window | iperf -s -w 32M -D | iperf3 -s -D |
Start UDP server on port 5003, and give 1 sec interval reports. Note that for iperf3 the -u option is passed to the server from the client. | iperf -i1 -u -s -p 5003 | iperf3 -s -p 5003 |
客户端:
功能 | iperf / iperf3 |
---|---|
执行 30 秒测试,每秒发送结果 | iperf/iperf3 -c server_address -i 1 -t 30 |
执行逆向从服务端到本地测试 | iperf/iperf3 -c server_address -i 1 -t 10 -R |
使用 4 个并发,32M TCP buffer | iperf/iperf3 -c server_address -i 1 -t 20 -w 32M -P 4 |
测试 200Mbps UDP | iperf/iperf3 -c server_address -u -i 1 -b 200M |
iperf3 增加了一些额外的功能,比如 -i
模式可以提供 TCP retransit (中继)结果,并且 verbose 模式可以打印更多有效的信息,比如 CPU 利用率等等。
更多的使用可以参考这里
更多 iperf 2.0.5 和 iperf 2.0.8+ 和 iperf 3.1.5+ 的区别可以在这里 查看。
使用
外延
- 另外一个 TCP 性能测试工具 nuttcp
Android
在 Android 手机上可以使用一款叫做 Magic iPerf 的工具来进行测试。
或者使用 Termux 来直接使用命令测试。