iperf
是一个常用的网络性能测试工具,用于测量网络带宽、延迟、抖动等指标。它支持 TCP 和 UDP 协议,可以用于测试点对点的网络连接质量。iperf
通常用于网络带宽测试、吞吐量测量、网络诊断等场景。
基本概念
- Server:在测试中接收流量的端。
- Client:在测试中发送流量的端。
iperf
的工作模式通常是一个端作为服务器(Server)运行,另一个端作为客户端(Client)连接到服务器并进行测试。
基本用法
-
在服务器端启动
bashiperf
:iperf -s
这将在默认的端口(5001)上启动
bashiperf
服务器。可以使用-p
选项指定其他端口:iperf -s -p 5201
-
在客户端发起测试:
bashiperf -c <server_ip>
这会向服务器发送 TCP 流量并测量带宽。你需要指定服务器的 IP 地址。可以指定端口:
bashiperf -c <server_ip> -p 5201
常用选项
-
-s
:启动iperf
服务器。 -
-c <host>
:指定服务器的地址,启动客户端进行测试。 -
-p <port>
:指定要使用的端口(默认为 5001)。 -
bash-u
:使用 UDP 而不是 TCP 进行测试。UDP 测试可以测量丢包率、抖动等网络质量指标。iperf -c <server_ip> -u
-
-b <bandwidth>
:在使用 UDP 测试时,指定带宽。例如-b 10M
表示使用 10 Mbps 的带宽发送数据。 -
-i <interval>
:指定报告的时间间隔。例如,-i 1
每秒输出一次带宽报告。 -
-t <time>
:指定测试的持续时间,默认是 10 秒。例如,-t 30
表示测试 30 秒。 -
-n <number>
:指定要发送的字节数或数据量。例如,-n 100M
表示发送 100 MB 数据。 -
-f <format>
:指定报告输出的格式,k
为 KBytes,m
为 MBytes,g
为 GBytes。 -
-w <window>
:指定 TCP 窗口大小。例如,-w 512K
指定 512 KB 的窗口大小。 -
-P <num>
:使用多个并发连接进行测试。iperf
会启动num
个并发会话进行测试,通常用于测试多线程或多路复用环境下的带宽。 -
-d
:双向测试,即同时进行上传和下载测试。 -
-r
:进行往返测试,即先进行下载测试,然后进行上传测试。 -
-B <bind_ip>
:指定客户端要绑定的本地 IP 地址。 -
-V
:使用 IPv6 地址进行测试。
示例
-
最简单的 TCP 带宽测试:
bash# 在服务器端启动 iperf iperf -s # 在客户端发起测试 iperf -c <server_ip>
-
进行 UDP 带宽测试:
bashiperf -s -u iperf -c <server_ip> -u -b 10M
-
多线程测试(多个并发连接):
bashiperf -c <server_ip> -P 5
-
指定测试时长:
bashiperf -c <server_ip> -t 60
-
双向带宽测试:
bashiperf -c <server_ip> -d
-
查看结果每秒报告:
bashiperf -c <server_ip> -i 1
输出解读
运行 iperf
后,你会看到一些输出数据,主要包括以下内容:
- 传输数据量(Transfer):显示在测试中传输的数据总量。
- 带宽(Bandwidth):表示测得的带宽,通常以 Mbps 为单位。
- 丢包率(UDP 模式下):显示在测试过程中丢失的包数及其占总包数的比例。
- 抖动(Jitter, UDP 模式下):显示网络传输的抖动情况,通常用于测量实时传输的稳定性。
总结
iperf
是一个功能强大且易于使用的工具,适用于各种网络性能测试。通过灵活地使用选项,你可以测试网络的不同方面,并根据需要调整测试参数来诊断和优化网络性能。