iperf3 教程:在 Linux 和 Windows 上测试网络速度

10 分钟阅读 - 2026年5月7日

hero section cover

在 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.frar51an/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>并行流
-uUDP 模式
-b <n>M目标带宽(UDP;若未指定,默认为 1 Mbps)
-R反向模式(服务器发送,客户端接收)
-w <n>KTCP 窗口/套接字缓冲区大小
-JJSON 输出
-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_max134217728 (128 MB)
net.core.wmem_max134217728 (128 MB)
net.ipv4.tcp_rmem4096 131072 134217728
net.ipv4.tcp_wmem4096 131072 134217728
net.core.default_qdiscfq
net.ipv4.tcp_congestion_controlbbr

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_maxwmem_max。千兆链路建议从 8 MB 开始,100 Mbps 链路建议从 512 KB 开始。

如果您正在配置专用服务器并希望验证网络性能,请在设置完成后以及每次进行网络更改后立即运行 iperf3 基准测试,以便尽早发现性能退化。

视频推荐

博客

本周特色

更多文章
iperf3 教程:在 Linux 和 Windows 上测试网络速度

iperf3 教程:在 Linux 和 Windows 上测试网络速度

在 Linux 和 Windows 系统上安装 iperf3、运行带宽测试并调整 TCP 缓冲区,以获得准确结果。涵盖 UDP、双向及 10GbE+ 测试

10 分钟阅读 - 2026年5月7日

更多文章