iperf3 网络带宽测试工具用法及使用场景
什么是 iperf3
iperf3 是一个用于测量网络带宽的开源工具,支持 TCP、UDP 和 SCTP 协议。它可以测试网络的最大可实现带宽、延迟抖动和数据包丢失等指标,是网络性能测试和故障诊断的常用工具。
主要特点
- 支持 TCP、UDP、SCTP 协议
- 可调节与时序、协议和缓冲区相关的参数
- 报告吞吐量、丢包率、延迟等指标
- 支持多线程并行测试
- 支持 IPv4 和 IPv6
- 客户端/服务器架构
安装 iperf3
Ubuntu/Debian
1
2
|
sudo apt-get update
sudo apt-get install iperf3
|
CentOS/RHEL
1
|
sudo yum install iperf3
|
macOS
Windows
可以从 ESnet 官网下载预编译的 Windows 版本:
1
2
|
# 使用 Chocolatey
choco install iperf3
|
Android
在 Android 设备上使用 iperf3 有两种方式:安装 APP 或通过 Termux 运行。
方法一:安装 iPerf3 Speed Test App(推荐)
- 从 Google Play 商店下载 iPerf3 Speed Test 或从 F-Droid 下载
- 安装后打开应用
- 点击右上角菜单可以选择「Use as Server」或「Use as Client」
方法二:使用 Termux(命令行)
1
2
3
4
5
6
7
8
9
10
11
|
# 安装 Termux(从 F-Droid 或 Play 商店)
# 启动 Termux 后:
# 更新仓库
pkg update
# 安装 iperf3
pkg install iperf3
# 查看版本
iperf3 --version
|
作为服务器运行
1
2
3
4
5
6
7
8
|
# 基本服务器模式
iperf3 -s
# 指定端口
iperf3 -s -p 5202
# 绑定特定 IP
iperf3 -s -B 192.168.1.100
|
作为客户端运行
1
2
3
4
5
6
7
8
9
10
11
|
# 测试到服务器
iperf3 -c 192.168.1.100
# 指定端口
iperf3 -c 192.168.1.100 -p 5202
# TCP 并行测试
iperf3 -c 192.168.1.100 -P 4
# UDP 测试
iperf3 -c 192.168.1.100 -u -b 100M
|
注意事项
- Android 7.0 及以上需要授予 Termux 存储权限
- 部分设备可能需要 ROOT 权限才能绑定特定端口
- 测试时建议关闭 VPN 和省电模式
iOS
从 App Store 下载 iPerf3 - Speed Test 应用,使用方法与 Android 类似。
基本用法
iperf3 采用客户端/服务器模式工作,需要在两台机器上分别运行。
1. 启动服务器端
1
2
3
4
5
6
7
8
9
10
11
|
# 默认监听 5201 端口
iperf3 -s
# 指定端口
iperf3 -s -p 5202
# 后台运行
iperf3 -s -D
# 绑定特定 IP
iperf3 -s -B 192.168.1.100
|
2. 客户端连接测试
1
2
3
4
5
6
7
8
|
# 基本测试(默认 TCP)
iperf3 -c 192.168.1.100
# 指定端口
iperf3 -c 192.168.1.100 -p 5202
# 反向测试(服务器发送,客户端接收)
iperf3 -c 192.168.1.100 -R
|
常用参数详解
测试时间相关
1
2
3
4
5
|
# 测试持续时间(秒),默认 10 秒
iperf3 -c 192.168.1.100 -t 30
# 预热时间(秒)
iperf3 -c 192.168.1.100 -t 30 -w 5
|
并行流相关
1
2
3
4
5
|
# 并行流数量(测试网络并发能力)
iperf3 -c 192.168.1.100 -P 4
# 每个流的并行连接数
iperf3 -c 192.168.1.100 -P 4 -CC
|
缓冲区相关
1
2
3
4
5
|
# 缓冲区大小(字节)
iperf3 -c 192.168.1.100 -w 512k
# TCP 窗口大小
iperf3 -c 192.168.1.100 -w 1M
|
协议相关
1
2
3
4
5
6
7
8
|
# UDP 测试
iperf3 -c 192.168.1.100 -u
# UDP 带宽(默认 1 Mbps)
iperf3 -c 192.168.1.100 -u -b 100M
# SCTP 协议
iperf3 -c 192.168.1.100 -S
|
输出格式
1
2
3
4
5
6
7
8
|
# JSON 格式输出
iperf3 -c 192.168.1.100 -J
# 详细输出
iperf3 -c 192.168.1.100 -V
# 兼容模式输出
iperf3 -c 192.168.1.100 -f m
|
典型使用场景
场景一:测试局域网带宽
服务器端:
客户端:
1
2
3
4
5
6
7
8
|
# TCP 测试
iperf3 -c 192.168.1.100
# 使用 4 个并行流
iperf3 -c 192.168.1.100 -P 4
# 双向测试
iperf3 -c 192.168.1.100 -R
|
场景二:测试 UDP 丢包率和抖动
1
2
|
# UDP 测试,指定带宽
iperf3 -c 192.168.1.100 -u -b 100M -t 30
|
输出示例:
1
2
|
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.0-30.0 sec 357 MBytes 100 Mbits/sec 0.001 ms 0/459203 (0%)
|
场景三:测试带宽上限
1
2
|
# 使用大窗口和并行流
iperf3 -c 192.168.1.100 -w 2M -P 8 -t 60
|
场景四:双向带宽测试
1
2
|
# 同时测试两个方向
iperf3 -c 192.168.1.100 -d
|
场景五:测试NAT/路由器性能
在路由器两侧分别运行服务器和客户端,测试NAT转发性能:
1
2
3
4
5
|
# 路由器内
iperf3 -s
# 路由器外
iperf3 -c 192.168.1.1
|
场景六:测试无线网络性能
1
2
3
4
5
6
7
|
# 较长的测试时间(无线网络不稳定)
iperf3 -c 192.168.1.100 -t 60 -P 4
# 多次测试取平均值
for i in {1..5}; do
iperf3 -c 192.168.1.100
done
|
输出结果解读
1
2
|
[SUM] 0.0-10.0 sec 1.10 GBytes 943 Mbits/sec sender
[SUM] 0.0-10.0 sec 1.10 GBytes 943 Mbits/sec receiver
|
- Transfer:传输数据总量
- Bandwidth:传输带宽
- Jitter:UDP 测试时的抖动
- Lost/Total Datagrams:UDP 丢包率
- sender:发送端统计
- receiver:接收端统计
常见问题
1. 防火墙阻止
如果测试失败,检查防火墙:
1
2
3
4
5
6
7
|
# Ubuntu
sudo ufw allow 5201/tcp
sudo ufw allow 5201/udp
# CentOS
sudo firewall-cmd --add-port=5201/tcp
sudo firewall-cmd --add-port=5201/udp
|
2. 测试结果不理想
- 检查是否有其他网络流量
- 尝试增加并行流数量
- 调整 TCP 窗口大小
- 确保测试两端使用有线连接(排除 Wi-Fi 干扰)
3. 双向测试不对称
某些网络设备(如负载均衡器)可能导致双向带宽不同,使用 -d 参数分别测试。
高级技巧
1. 使用公开 iperf3 服务器
1
2
|
# 测试到公网服务器
iperf3 -c iperf.he.net
|
2. 创建测试脚本
1
2
3
4
5
6
7
8
|
#!/bin/bash
# bandwidth-test.sh
SERVER=$1
PORT=${2:-5201}
echo "Testing bandwidth to $SERVER:$PORT"
iperf3 -c $SERVER -p $PORT -t 30 -P 4 -f M
|
3. 持续监控
1
2
3
4
5
|
# 每小时测试一次
while true; do
iperf3 -c 192.168.1.100 -t 60 -J > /var/log/iperf/$(date +%Y%m%d-%H%M%S).json
sleep 3600
done
|
4. 测试 MTU 影响
1
2
3
4
5
|
# 使用不同缓冲区大小测试
for size in 64k 128k 256k 512k 1M; do
echo "Testing with -w $size"
iperf3 -c 192.168.1.100 -w $size
done
|
总结
iperf3 是网络性能测试的利器,其主要应用场景包括:
- 网络故障诊断:定位带宽瓶颈
- 网络设备测试:评估路由器、交换机性能
- 带宽验收测试:确认网络是否达到预期带宽
- 长期监控:记录网络性能变化
- Wi-Fi 测试:评估无线网络稳定性
掌握 iperf3 的使用方法,能够帮助开发者和管理员更好地了解和优化网络性能。
参考链接
- 官方文档:https://software.es.net/iperf/
- iperf.fr:https://iperf.fr/
- Ubuntu Manpage:https://manpages.ubuntu.com/manpages/jammy/man1/iperf3.1.html