iperf3 教程:在 Linux 和 Windows 上测试网络速度
10 分钟阅读 - 2026年5月7日

在 Linux 和 Windows 系统上安装 iperf3、运行带宽测试并调整 TCP 缓冲区,以获得准确结果。涵盖 UDP、双向及 10GbE+ 测试
iperf3 教程:在 Linux 和 Windows 上测量网络性能
iperf3 是一款用于测量两台机器之间网络带宽、抖动和数据包丢失率的命令行工具。它采用客户端-服务器模型:一台机器负责监听,另一台负责发送流量,从而获得精确的吞吐量数据。本指南涵盖安装、基础和高级测试,以及如何对系统进行调优,以便在高速链路上获得准确的结果。
安装 iperf3
Debian / Ubuntu
sudo apt update
sudo apt install iperf3
使用以下命令确认安装: iperf3 --version。请在服务器和客户端机器上均进行安装。
Fedora / CentOS / Rocky / Alma
在 Fedora 22 及以上版本、CentOS 8 及以上版本、Rocky 或 AlmaLinux 上:
sudo dnf install iperf3
在 CentOS 7 上,请使用 yum 。如果找不到该软件包,请先启用 EPEL 软件源:
sudo yum install epel-release
sudo yum install iperf3
如果防火墙处于启用状态,请打开 5201 端口:
sudo firewall-cmd --add-port=5201/tcp --permanent
sudo firewall-cmd --reload
Windows
从 iperf.fr 或 ar51an/iperf3-win-builds GitHub 仓库下载独立可执行文件。将其解压到一个文件夹中,例如 C:\iperf3,然后验证:
cd C:\iperf3
iperf3.exe -v
若要在任意目录下运行 iperf3,请通过“系统属性”>“高级”>“环境变量”将该文件夹添加到系统 PATH 中。此外,您还需要在 Windows Defender 防火墙中创建一条入站防火墙规则,允许 5201 端口的 TCP 连接。
设置服务器
使用以下命令启动服务器:
iperf3 -s
该命令默认监听 TCP 端口 5201。若要在后台运行并启用日志记录,请执行:
iperf3 -s -D --logfile /var/log/iperf3.log
使用以下命令验证是否正在运行: ss -tulpn | grep 5201.
若您的网络中 5201 端口被封锁,请使用 -p 选择其他端口。若要绑定到特定网络接口,请使用 -B:
iperf3 -s -B 192.168.1.10
对于一次性测试, iperf3 -s -1 该程序仅处理单个客户端连接,随后退出。在高带宽链路(40 Gbps+)上,请在不同端口上运行多个服务器实例,以规避单线程 CPU 的性能限制。
请确保您的防火墙允许所选端口的流量通过。在安装了 UFW 的 Ubuntu/Debian 系统上:
sudo ufw allow 5201/tcp
sudo ufw allow 5201/udp # if testing UDP
运行客户端测试
基本 TCP 测试
iperf3 -c 192.168.1.10
此测试用于测量 10 秒内的 TCP 上行带宽。如需延长测试时长,请使用 -t:
iperf3 -c 192.168.1.10 -t 30
在 10 Gbps 或 25 Gbps 链路上,由于单核 CPU 的限制,单个 TCP 流的峰值通常仅为 3–5 Gbps。请使用并行流来使链路达到饱和:
iperf3 -c 192.168.1.10 -P 8
解读结果
每行时间间隔数据中显示“传输量”(已发送数据)和“比特率”(吞吐量)。对于 TCP,还需关注:
- Retr(重传次数)。数值过高表明存在数据包丢失或拥塞。
- Cwnd(拥塞窗口)。如果该值较低或停滞不前,则说明缓冲区或窗口大小限制导致吞吐量受限。
在未受干扰的 1 Gbps 链路上,扣除协议开销后,预期吞吐量约为 940 Mbps。测试以发送方和接收方的汇总行结束。在稳定的网络环境下,这两者的数值应非常接近。
对于 UDP 测试(-u 标志),输出结果还会包含抖动(数据包到达时间波动)以及丢失/总数据报数量。对于VoIP等实时流量,抖动低于1毫秒且丢失率为0%是理想状态。
有用标志
| 标志 | 用途 |
|---|---|
-c <IP> | 连接到服务器 |
-p <port> | 使用特定端口(默认:5201) |
-t <sec> | 测试持续时间(单位:秒)(默认:10) |
-i <sec> | 报告间隔 |
-P <num> | 并行流 |
-u | UDP 模式 |
-b <n>M | 目标带宽(UDP;若未指定,默认为 1 Mbps) |
-R | 反向模式(服务器发送,客户端接收) |
-w <n>K | TCP 窗口/套接字缓冲区大小 |
-J | JSON 输出 |
-Z | 零拷贝(在高速链路上可降低 CPU 负载) |
高级测试
双向测试
该 --bidir 标志(iperf3 3.7+)可同时测试上传和下载:
iperf3 -c 192.168.1.10 --bidir
两条连接均源自客户端,因此无需打开额外端口即可穿透NAT。如果双向测试结果远低于单向测试,则您的路由器或电缆调制解调器可能难以处理全双工流量。
反向模式
该 -R 标志会反转数据流方向,使服务器发送数据而客户端接收。这可在不交换角色的情况下测量下载速度:
iperf3 -c 192.168.1.10 -t 30 -i 5 -R
正向与反向测试结果存在较大差异,可能表明路径不对称、网络拥塞或缓冲区配置错误。
UDP测试
UDP 测试可揭示抖动和数据包丢失情况,而 TCP 则会通过重传来掩盖这些问题。请务必使用 -b,因为 iperf3 默认将 UDP 带宽设为 1 Mbps:
iperf3 -c 192.168.1.10 -u -b 1G
要模拟 VoIP 流量(100 个呼叫,200 字节数据包):
iperf3 -c 192.168.1.10 -u -b 8M -l 200
质量基准:抖动低于 5 毫秒对 VoIP 来说是理想的,超过 30 毫秒会导致可听见的通话问题。丢包率超过 0.1% 会明显降低实时媒体的传输质量。
调优与故障排除
常见问题
千兆链路速度仅为 100 Mbps?请使用 ethtool eth0。自动协商有时会失败,导致链路降速。
以太网上的MSS显示为536字节?这可能是因为路径MTU探测(PMTU Discovery)被禁用了。对于1,500字节的MTU,默认MSS为1,460字节。测试时请使用 -m 进行测试以确认。536字节的MSS会浪费带宽并增加开销。
在高速链路上 CPU 负载爆表?请使用 -Z (零拷贝)来降低 CPU 负载。对于 40 Gbps 及以上速率,请在不同端口上运行多个服务器实例,并将它们分布到各个 CPU 核心上。
测试结果不一致?使用 -O 3 来跳过 TCP 拥塞窗口初始扩容阶段的前几秒。每次测试之间间隔 30 秒,以清空网络缓冲区。
单流速度远低于并行流的总和?如果单个流速率为200 Mbps,但八个流的总和达到1.6 Gbps,则说明TCP窗口或操作系统缓冲区限制了单流的速率。请调整下方的缓冲区设置。
TCP 缓冲区调整
首先计算带宽-延迟积(BDP):带宽 × RTT。一条 10 Gbps 的链路,RTT 为 50 毫秒,其 BDP 为 62.5 MB。将最大缓冲区设置为至少 BDP 的 2 倍。
将这些参数添加到 /etc/sysctl.d/99-tcp-tuning.conf 并使用以下命令应用: sudo sysctl -p:
| 参数 | 推荐值(1–10 Gbps) |
|---|---|
net.core.rmem_max | 134217728 (128 MB) |
net.core.wmem_max | 134217728 (128 MB) |
net.ipv4.tcp_rmem | 4096 131072 134217728 |
net.ipv4.tcp_wmem | 4096 131072 134217728 |
net.core.default_qdisc | fq |
net.ipv4.tcp_congestion_control | bbr |
将 net.ipv4.tcp_moderate_rcvbuf 该值设为 1,以便内核在这些范围内进行自动调整。对于大于 64 KB 的 TCP 窗口,请启用 net.ipv4.tcp_window_scaling (设置为 1)以支持大于 64 KB 的 TCP 窗口。
您还可以将默认的 CUBIC 拥塞算法切换为 Google 的 BBR。在存在一定数据包丢失的高延迟链路上,BBR 始终能提供比 CUBIC 更高的吞吐量。
在 iperf3 中使用 -w iperf3 中的标志来测试特定的缓冲区大小,但请注意,该大小不能超过内核的 rmem_max 或 wmem_max。千兆链路建议从 8 MB 开始,100 Mbps 链路建议从 512 KB 开始。
如果您正在配置专用服务器并希望验证网络性能,请在设置完成后以及每次进行网络更改后立即运行 iperf3 基准测试,以便尽早发现性能退化。
视频推荐

iperf3 教程:在 Linux 和 Windows 上测试网络速度
在 Linux 和 Windows 系统上安装 iperf3、运行带宽测试并调整 TCP 缓冲区,以获得准确结果。涵盖 UDP、双向及 10GbE+ 测试
10 分钟阅读 - 2026年5月7日
针对 Linux 服务器工作负载优化的调优配置文件
16 分钟阅读 - 2026年6月9日