iPerf 3:网络性能测试工具使用指南
2023-02-21 09:30 guesters 阅读(12212) 评论(0) 收藏 举报iPerf 3:网络性能测试工具使用指南
1、iPerf 3简介
iPerf 是一个网络性能测试工具。iPerf可以测试最大TCP和UDP带宽性能,具有多种参数和UDP特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。
iPerf 3 是一种用于主动测量 IP 网络上最大可达到带宽的工具。 它支持调整与时序、缓冲区和协议相关的各种参数(TCP、UDP、SCTP 与 IPv4 和 IPv6)。 对于每个测试,它都会报告带宽、损耗和其他参数。
2、iPerf 3安装
1)windows安装
官方下载地址:https://iperf.fr,以 Windows平台为例,点击 Download iPerf for Windows:
选择下载 64 位最新版:
下载完成后解压,在DOS命令符下,运行 → cmd终端界面,cd到解压路径,切换到iperf3当前目录。dir可以找到iPerf3.exe程序即可正常使用。
iperf3 -h 是查看帮助命令。如果显示出使用帮助,表示安装成功。
2)linux安装
yum install -y iperf3 或者 官网下载离线安装包
3)Android/iPhone/iPad移动设备
官网下载 或者 App Store应用商店下载安装
苹果手机,Network Tools
安卓手机,网络万用表
3、iPerf 3 用户文档
常用的命令参数如下
| 参数 | 解释 |
| -p | 指定要监听的端口或要连接的端口,默认端口是5201 |
| -P | 大写的P,指定线程数量,多个线程可以增加测试吞吐量 |
| -i | 指定每次报告之间的时间间隔,单位为秒 |
| -w | 过度增大缓冲区可能会导致内存使用过多,特别是当系统内存有限时。选择合适的缓冲区大小依赖于具体的应用场景和网络条件。过小或过大的缓冲区都可能影响性能 |
| -s | 运行在服务器模式 |
| -c | 运行在客户端模式 |
| -u | 设置采用 UDP 协议,默认采用 TCP 协议 |
| -t | 指定数据传输的总时间,默认 10 秒 |
| -l | 设置读写缓冲区的长度,例如1024,指定数据包的大小 |
| -b | 设置目标带宽,0 为不限制 |
| -R | 大写的R,反转模式(服务端发送,客户端接收) |
| --get-server-output | 获取服务端的测试报告 |
| --logfile filename | 将 log 输出到文件 |
另请参阅 https://github.com/esnet/iPerf
4、使用样例
网络拓扑图

根据测试需求,Server端可以部署在外部,Client端部署在内部。测试A、B两地之间的网络性能参数。
Windows下载软件后不要直接运行iperf.exe,把它放入C盘根目录,用CMD调用,在DOS命令行下运行它。
1)、运行iPerf3在服务器端,默认端口号为5201
样例:iperf3 -s
如果需要指定的端口号加上-p port
样例:iperf3 -s -p 8888
注意操作系统的防火墙放通此程序和端口
2)、运行iPerf3在客户端,开始带宽测试命令
iPerf3 -c服务器的IP地址
样例:iperf3 -c 1.1.1.1
结果参考如下,A、B两地之间的带宽是23.8Mb/s
C:\Users>iperf3 -c 1.1.1.1
Connecting to host 1.1.1.1, port 5201
[ 4] local 1.1.1.3 port 62505 connected to 1.1.1.1 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.01 sec 2.88 MBytes 23.9 Mbits/sec
[ 4] 1.01-2.01 sec 1.25 MBytes 10.5 Mbits/sec
[ 4] 2.01-3.00 sec 3.62 MBytes 30.6 Mbits/sec
[ 4] 3.00-4.00 sec 3.88 MBytes 32.5 Mbits/sec
[ 4] 4.00-5.01 sec 3.38 MBytes 28.1 Mbits/sec
[ 4] 5.01-6.02 sec 2.75 MBytes 22.8 Mbits/sec
[ 4] 6.02-7.01 sec 2.75 MBytes 23.4 Mbits/sec
[ 4] 7.01-8.01 sec 2.75 MBytes 23.1 Mbits/sec
[ 4] 8.01-9.01 sec 2.75 MBytes 23.0 Mbits/sec
[ 4] 9.01-10.01 sec 2.38 MBytes 19.9 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-10.01 sec 28.4 MBytes 23.8 Mbits/sec sender
[ 4] 0.00-10.01 sec 28.3 MBytes 23.8 Mbits/sec receiver
iPerf3 -c服务器的IP地址和端口号5201
样例:iperf3 -c 1.1.1.1 -p 5201
运行iPerf3在客户端,反向测试(服务器端发送数据到客户端,测试下行带宽)
iPerf3 -c ServerIP -R
样例:iperf3 -c 1.1.1.1 -R
结果参考如下, A、B两地之间的带宽是80.5Mb/s
C:\Users>iperf3 -c 1.1.1.1 -R
Connecting to host 1.1.1.1, port 5201
Reverse mode, remote host 1.1.1.1 is sending
[ 4] local 1.1.1.3 port 62791 connected to 1.1.1.1 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 10.3 MBytes 85.9 Mbits/sec
[ 4] 1.00-2.00 sec 11.1 MBytes 93.1 Mbits/sec
[ 4] 2.00-3.00 sec 9.95 MBytes 83.9 Mbits/sec
[ 4] 3.00-4.00 sec 7.50 MBytes 62.8 Mbits/sec
[ 4] 4.00-5.00 sec 7.62 MBytes 64.0 Mbits/sec
[ 4] 5.00-6.00 sec 9.42 MBytes 78.7 Mbits/sec
[ 4] 6.00-7.00 sec 11.7 MBytes 98.8 Mbits/sec
[ 4] 7.00-8.00 sec 10.5 MBytes 87.5 Mbits/sec
[ 4] 8.00-9.00 sec 8.32 MBytes 69.9 Mbits/sec
[ 4] 9.00-10.00 sec 9.50 MBytes 79.6 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-10.00 sec 96.0 MBytes 80.5 Mbits/sec sender
[ 4] 0.00-10.00 sec 96.0 MBytes 80.5 Mbits/sec receiver
运行iPerf3在客户端,设置测试传输的时间为60秒,同时建立的连接数为6个
样例:iperf3 -c 1.1.1.1 -t 60 -P 6
结果参考如下,A、B两地之间的带宽是24.2Mb/s
C:\Users>iperf3 -c 1.1.1.1 -t 60 -P 6
Connecting to host 1.1.1.1, port 5201
[ 4] local 1.1.1.3 port 62863 connected to 1.1.1.1 port 5201
[ 6] local 1.1.1.3 port 62864 connected to 1.1.1.1 port 5201
[ 8] local 1.1.1.3 port 62865 connected to 1.1.1.1 port 5201
[ 10] local 1.1.1.3 port 62866 connected to 1.1.1.1 port 5201
[ 12] local 1.1.1.3 port 62867 connected to 1.1.1.1 port 5201
[ 14] local 1.1.1.3 port 62868 connected to 1.1.1.1 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.02 sec 1.00 MBytes 8.26 Mbits/sec
[ 6] 0.00-1.02 sec 896 KBytes 7.23 Mbits/sec
[ 8] 0.00-1.02 sec 1.12 MBytes 9.29 Mbits/sec
[ 10] 0.00-1.02 sec 768 KBytes 6.19 Mbits/sec
[ 12] 0.00-1.02 sec 1.00 MBytes 8.26 Mbits/sec
[ 14] 0.00-1.02 sec 768 KBytes 6.19 Mbits/sec
[SUM] 0.00-1.02 sec 5.50 MBytes 45.4 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-60.00 sec 31.5 MBytes 4.40 Mbits/sec sender
[ 4] 0.00-60.00 sec 31.5 MBytes 4.40 Mbits/sec receiver
[ 6] 0.00-60.00 sec 23.5 MBytes 3.29 Mbits/sec sender
[ 6] 0.00-60.00 sec 23.4 MBytes 3.27 Mbits/sec receiver
[ 8] 0.00-60.00 sec 28.0 MBytes 3.91 Mbits/sec sender
[ 8] 0.00-60.00 sec 27.8 MBytes 3.89 Mbits/sec receiver
[ 10] 0.00-60.00 sec 30.9 MBytes 4.32 Mbits/sec sender
[ 10] 0.00-60.00 sec 30.9 MBytes 4.32 Mbits/sec receiver
[ 12] 0.00-60.00 sec 29.9 MBytes 4.18 Mbits/sec sender
[ 12] 0.00-60.00 sec 29.8 MBytes 4.17 Mbits/sec receiver
[ 14] 0.00-60.00 sec 29.4 MBytes 4.11 Mbits/sec sender
[ 14] 0.00-60.00 sec 29.4 MBytes 4.11 Mbits/sec receiver
[SUM] 0.00-60.00 sec 173 MBytes 24.2 Mbits/sec sender
[SUM] 0.00-60.00 sec 173 MBytes 24.2 Mbits/sec receiver
关于参数 -P,指定客户端与服务端之间使用的线程数。默认是1个线程,需要客户端与服务器端同时使用此参数。数值的大小主要参考CPU的性能,通过使用多线程,可以在一定程度上增加网络的吞吐量。
使用多线程后,测试丢包率会下降。如果我们小区就只有一个大门,10个住户进大门就需要排队,但是小区如果开了10个大门,10个住户进大门就不用排队。
运行iPerf3在客户端,使用UDP协议,并设置使用的测试带宽为10M,测试时间为60秒
iperf3 -c ServerIP -u -b 10M -t 60 -d
-c 为客户端运行并要指定服务端的IP地址
-p 指定端口号
-u 使用 UDP 而不是 TCP。
-b 表示使用的测试带宽
-t 表示以时间为测试结束条件进行测试,默认为 10 秒;
-d 打印出更详细的debug调试信息
样例:iperf3 -c 1.1.1.1 -p 5201 -u -b 10M -t 60
结果参考如下
C:\Users>iperf3 -c 1.1.1.1 -u -b 10M -t 60
Connecting to host 1.1.1.1, port 5201
[ 4] local 1.1.1.3 port 56536 connected to 1.1.1.1 port 5201
[ ID] Interval Transfer Bandwidth Total Datagrams
[ 4] 57.00-58.01 sec 1.20 MBytes 9.96 Mbits/sec 153
[ 4] 58.01-59.00 sec 1.18 MBytes 9.96 Mbits/sec 151
[ 4] 59.00-60.01 sec 1.21 MBytes 10.1 Mbits/sec 155
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.00-60.01 sec 71.4 MBytes 9.99 Mbits/sec 4.223 ms 0/9144 (0%)
[ 4] Sent 9144 datagrams
传输1G的数据包的测试命令
iperf3 -c 1.1.1.1 -n 1G
[ 4] 153.01-156.01 sec 14.0 MBytes 39.1 Mbits/sec
[ 4] 156.01-159.00 sec 15.6 MBytes 43.8 Mbits/sec
[ 4] 159.00-159.84 sec 5.38 MBytes 54.0 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-159.84 sec 1.00 GBytes 53.7 Mbits/sec sender
[ 4] 0.00-159.84 sec 1024 MBytes 53.7 Mbits/sec receiver
请关注 SUM 行,其中 sender 表示发送数据量,receiver 表示接受数据量。
Interval:程序的测试运行时间
Transfer:传输的数据总量
Bandwidth:测试出的带宽
Jitter:网路抖动
Lost/Total Datagrams:丢包数/总数据包数(丢包率)
终止或者退出测试,快捷键Ctrl + c
5、高级操作参考
1)Tuning a TCP connection
iPerf的主要目标是帮助调整特定路径上的TCP连接。
TCP最基本的调整问题是TCP窗口大小,它控制网络中任何一点的数据量。
如果它太小,发送器有时会闲置,性能会很差。TCP窗口大小的理论值是带宽延迟的乘积
2)TCP测试的主要功能:
可以测试网络带宽。
可以支持多线程,当P线程或Win32线程可用时,在客户端与服务端支持多重连接。
可以报告MSS/MTU值的大小。
可以支持TCP窗口值自定义并可通过套接字缓冲。
C:\Users>iperf3 -c 1.1.1.1 -w 1M
Connecting to host 1.1.1.1, port 5201
[ 4] local 1.1.1.3 port 63612 connected to 1.1.1.1 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 2.50 MBytes 20.9 Mbits/sec
[ 4] 1.00-2.01 sec 3.62 MBytes 30.1 Mbits/sec
[ 4] 2.01-3.01 sec 3.00 MBytes 25.3 Mbits/sec
[ 4] 3.01-4.01 sec 3.62 MBytes 30.3 Mbits/sec
[ 4] 4.01-5.01 sec 3.88 MBytes 32.5 Mbits/sec
[ 4] 5.01-6.00 sec 4.75 MBytes 40.2 Mbits/sec
[ 4] 6.00-7.02 sec 3.75 MBytes 30.8 Mbits/sec
[ 4] 7.02-8.00 sec 4.00 MBytes 34.2 Mbits/sec
[ 4] 8.00-9.01 sec 4.00 MBytes 33.4 Mbits/sec
[ 4] 9.01-10.01 sec 4.12 MBytes 34.7 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-10.01 sec 37.2 MBytes 31.2 Mbits/sec sender
[ 4] 0.00-10.01 sec 36.7 MBytes 30.8 Mbits/sec receiver
2)Tuning a UDP connection
iPerf创建恒定比特率UDP流。这是一种非常人工的流,类似于语音通信,但没有太多其他内容。您需要将数据报大小(-l)调整为应用程序使用的大小。
服务器通过数据报中的ID号检测UDP数据报丢失。通常一个UDP数据报变成几个IP数据包。丢失单个IP数据包将丢失整个数据报。
要测量数据包丢失而不是数据报丢失,请使用-l选项使数据报足够小以适合单个数据包。默认大小1470字节适用于以太网。
由于TCP不会向用户报告丢失,我发现UDP测试有助于查看路径上的数据包丢失。
2)UDP测试的主要功能:
UDP协议是一个非面向连接的轻量级传输协议,并且不提供可靠的数据传输服务,因此对UDP应用的关注点不是传输数据有多快,而是它的丢包率和延时指标。
可以设置指定带宽的UDP数据流
可以测试网络丢包数
可以测试网络延时、抖动值
可以支持多播测试
可以支持多线程,当P线程或Win32线程可用时,在客户端与服务端支持多重连接。
C:\Users>iperf3 -c 1.1.1.1 -u -b 100M -l 32K -w 128k
Connecting to host 1.1.1.1, port 5201
[ 4] local 1.1.1.3 port 55389 connected to 1.1.1.1 port 5201
[ ID] Interval Transfer Bandwidth Total Datagrams
[ 4] 0.00-1.04 sec 3.34 MBytes 27.1 Mbits/sec 107
[ 4] 1.04-2.01 sec 3.06 MBytes 26.5 Mbits/sec 98
[ 4] 2.01-3.00 sec 2.47 MBytes 20.8 Mbits/sec 79
[ 4] 3.00-4.00 sec 3.03 MBytes 25.4 Mbits/sec 97
[ 4] 4.00-5.00 sec 3.12 MBytes 26.2 Mbits/sec 100
[ 4] 5.00-6.00 sec 3.09 MBytes 25.9 Mbits/sec 99
[ 4] 6.00-7.01 sec 3.22 MBytes 26.8 Mbits/sec 103
[ 4] 7.01-8.00 sec 3.66 MBytes 31.0 Mbits/sec 117
[ 4] 8.00-9.02 sec 3.88 MBytes 31.8 Mbits/sec 124
[ 4] 9.02-10.00 sec 2.75 MBytes 23.6 Mbits/sec 88
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.00-10.00 sec 31.6 MBytes 26.5 Mbits/sec 9.262 ms 0/1010 (0%)
[ 4] Sent 1010 datagrams
Iperf 还有一个图形界面程序叫做Jperf的Windwows GUI版本
6、常见问题
iPerf3是一个基于Server - Client模式的网络测试工具,推荐使用两台相同配置的服务器进行测试,避免性能测试结果出现偏差。其中一台作为服务器端机,另一台作为客户端机。
1)UDP性能:在ESnet 100G测试台上,iPerf3在高UDP速率(高于10Gbps)时发现了一些问题。症状是,在任何特定的 iPerf3 运行中,无论客户端使用什么“-b”选项,接收器报告的损失率约为 20%。此问题似乎不是特定于 iPerf3 的,可能是由于 iPerf3 进程在 CPU 上的位置及其与入站 NIC 的关系。在某些情况下,可以通过适当使用 CPU 关联 (“-A”) 选项来缓解此问题。
2)高损耗网络的间隔报告:按照 iPerf3 当前实现的方式,发送方写入命令将阻塞,直到写入整个块。这意味着,如果网络具有高损耗,则发送完整块可能需要几秒钟,并且间隔报告的间隔时间将有很大差异。正在讨论解决方案,但与此同时,解决方法是尝试使用较小的块大小,样例如“-l 4K”。
3)“-Z”标志有时会导致 iPerf3 客户端在 OSX 上挂起。在 Linux 上使用“-w”标志指定 TCP 缓冲区大小时,Linux 内核会自动将传入的值加倍以补偿开销。
4)发包测试需要分为UDP测试与TCP测试,其中服务端可用-u命令去区分监听协议。
5)TCP协议测试不能计算出时延、丢包率,不能指定发送的带宽。
6)重复测试几次,就能得出稳定的实际带宽。因为在网络上发生的实际业务不同(忙时闲时),每个时刻测试得到的网络性能参数也都不相同。
7)其它问题,也可以参考相关软件Mikrotik Bandwidth Test和NetIQ Chariot
版权声明,文档参考网络整理,原文链接网站
https://iPerf.fr/
http://software.es.net/iPerf/
https://github.com/esnet/iPerf
https://baike.baidu.com/item/iperf/
浙公网安备 33010602011771号