iperf3网络性能测试工具教程

好的,这是一个非常详细和实用的 iperf3 教程。iperf3 是一个专业的网络性能测试工具,用于测量网络带宽、吞吐量、抖动和数据包丢失。

1. 什么是 iperf3?

iperf3 是一个跨平台的(Windows, Linux, macOS, FreeBSD 等)命令行工具,它可以通过创建数据流来测量两个节点之间的网络性能。它需要两个组件:

  • 服务器端:监听来自客户端的连接。
  • 客户端:发起连接到服务器,并发送或接收测试数据。
    官网下载地址:https://iperf.fr/iperf-download.php

核心概念:测试必须在两台机器上进行(一台作为服务器,一台作为客户端)。你不能只用一台机器测试自己的网速(像 Speedtest 那样),它测试的是两点之间的链路性能。

2. 安装 iperf3

Linux (Ubuntu/Debian)

sudo apt update
sudo apt install iperf3
  • 笔者是在debian13中测试安装的,提示默认5201的端口被占用了,如下图:
  • 这里换个端口5202测试

Linux (CentOS/RHEL/Fedora)

# CentOS/RHEL (需要 EPEL 仓库)
sudo yum install epel-release
sudo yum install iperf3

# Fedora
sudo dnf install iperf3

macOS

# 使用 Homebrew
brew install iperf3

Windows

  1. 访问 iperf3 官网下载页面:https://iperf.fr/iperf-download.php
  2. 下载 Windows 版本(通常是一个 zip 文件)。
  3. 解压 zip 文件,你会得到 cygwin1.dll 和 iperf3.exe 两个文件。
  4. 为了方便使用,建议将这两个文件放在一个简单的路径下,如 C:\iperf3,并将该路径添加到系统的 PATH 环境变量中。这样你就可以在任意命令提示符或 PowerShell 中直接运行 iperf3

3.客户端测试

  • 也可以把解压的文件夹放到D盘目录,例如:D:\iperf3.1.1_64,如何在当前目录输入CMD,就OK了
  • 在命令提示符上执行:iperf3 -c 192.168.9.102 -p 5202,如下图:
  • Transfer: 传输的数据量。
  • Bitrate: 这是最重要的指标,表示测量的带宽。上例中 933 Mbits/sec 接近千兆网络的极限
  • Retr: 重传的数据包数量,如果这个值很高,说明网络不稳定。
  • 最后两行分别是发送端和接收端的总结,通常以接收端的 Bitrate 为准。

4. 常用参数和高级用法

测试方向

  • 默认:客户端发送数据到服务器 (-c)。
  • 反向测试:让服务器发送数据到客户端。这在测试下载速度时非常有用。bashiperf3 -c SERVER_IP -R
iperf3 -c 192.168.9.102 -R

测试时长和间隔

  • -t: 测试时间(秒)。例如,测试 30 秒:bashiperf3 -c SERVER_IP -t 30
  • -i: 输出报告的间隔时间(秒)。例如,每 2 秒输出一次结果:bashiperf3 -c SERVER_IP -i 2

并行连接

使用 -P 参数可以创建多个并行连接,这有助于突破单线程的限制,更充分地利用带宽,尤其是在有负载均衡的网络中。

# 使用 4 个并行连接
iperf3 -c SERVER_IP -P 4

UDP 测试

默认是 TCP 测试。UDP 测试可以测量抖动和数据包丢失。

  • 在服务器端:正常启动。
  • 在客户端:bashiperf3 -c SERVER_IP -u -b 100M
    • -u: 使用 UDP 协议。
    • -b: 指定目标带宽(例如 100M 表示 100 Mbps)。如果不指定,默认是 1 Mbps。

UDP 结果解读
UDP 结果中会多出 Jitter(抖动)和 Lost/Total(丢包率)字段。

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec   119 MBytes   100 Mbits/sec  0.000 ms  0/85333 (0%)  sender
[  5]   0.00-10.00  sec   119 MBytes   100 Mbits/sec  0.123 ms  0/85333 (0%)  receiver
  • Jitter: 数据包延迟的变化,值越低越好,对实时音视频应用至关重要。

其他实用参数

  • -p: 指定服务器监听的端口(如果服务器不是用默认端口)。bash# 服务器端 iperf3 -s -p 5000 # 客户端 iperf3 -c SERVER_IP -p 5000
  • -w: 设置 TCP 窗口大小,有时可以提升性能。bashiperf3 -c SERVER_IP -w 256K
  • -J: 以 JSON 格式输出结果,便于脚本解析。bashiperf3 -c SERVER_IP -J

5. 常见场景示例

场景 1:快速测试家庭内网到 NAS 的带宽

  1. 在 NAS 上运行 iperf3 -s
  2. 在你的电脑上运行 iperf3 -c NAS_IP

场景 2:测试从云服务器到本地电脑的下载速度

  1. 在本地电脑上运行 iperf3 -s
  2. 在云服务器上运行 iperf3 -c LOCAL_PC_IP -R。(注意需要配置本地网络的路由器/防火墙,将 5201 端口映射到你的电脑)。

场景 3:全面测试网络质量(带宽、抖动、丢包)

  1. 在服务器端运行 iperf3 -s
  2. 在客户端先进行 TCP 带宽测试:bashiperf3 -c SERVER_IP -t 20
  3. 再进行 UDP 质量测试:bashiperf3 -c SERVER_IP -u -b 50M -t 20 -i 2

6. 故障排除

  • 连接被拒绝: 检查服务器端是否已正确启动 iperf3 -s,并检查防火墙是否放行了指定端口。
  • 带宽远低于预期
    • 检查网络设备(交换机、路由器)是否是瓶颈。
    • 尝试使用 -P 4 增加并行连接数。
    • 检查客户端或服务器端的 CPU 使用率是否过高。
  • 高重传率/高丢包率: 表明网络不稳定,可能存在干扰或硬件问题。

希望这个教程能帮助你熟练使用 iperf3 来诊断和评估你的网络性能!

综合实用工具箱及脚本:https://www.hao0564.com/3108.html

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注