一、iperf3 简介

iperf3 是一个常用的网络性能测试工具,主要用于测量 TCP、UDP、SCTP 的吞吐量。它通常用于以下场景:

  • 带宽测试:测量两个节点之间的最大传输速率
  • 网络稳定性分析:查看抖动 (jitter)、丢包率
  • 双向测试:验证客户端到服务器以及服务器到客户端的带宽
  • 多线程测试:模拟多个连接并发压力

iperf3 分为 server 模式client 模式,测试时一端作为服务端,另一端作为客户端。


二、iperf3 基本使用

1. 服务端启动

iperf3 -s
  • 默认监听端口:5201
  • 可以加 -p 指定端口,例如:
iperf3 -s -p 5000

2. 客户端连接

iperf3 -c <server_ip>
  • 默认 TCP 测试
  • 可指定端口:
iperf3 -c <server_ip> -p 5000

三、常用命令总结

1. TCP 测试

iperf3 -c <server_ip>
  • 默认持续 10 秒
  • 输出吞吐量(单位:Mbits/sec)

2. UDP 测试

iperf3 -c <server_ip> -u -b 100M
  • -u:UDP 模式
  • -b:指定带宽(如 100M1G

UDP 模式下会额外显示 丢包率、抖动 (jitter),适合测试实时性应用(如视频会议、游戏)。

3. 指定时间

iperf3 -c <server_ip> -t 30
  • -t 30:测试持续 30 秒

4. 多线程测试

iperf3 -c <server_ip> -P 4
  • -P 4:开 4 个并发连接,常用于测试高带宽链路

5. 反向测试(服务器发数据给客户端)

iperf3 -c <server_ip> -R

6. 限制窗口大小

iperf3 -c <server_ip> -w 512k
  • -w:TCP 窗口大小,可以影响吞吐量表现

7. 输出为 JSON 格式

iperf3 -c <server_ip> -J
  • 方便后续用程序解析结果

8. 测试双向带宽

iperf3 -c <server_ip> --bidir
  • 同时测试 client→server 和 server→client 的带宽

9. 指定测试端口范围(用于防火墙受限场景)

iperf3 -c <server_ip> -p 6000
  • 服务端也需要 -p 6000 启动

四、测试结果解释

一个典型输出如下:

[ ID] Interval           Transfer     Bandwidth       Retr
[  5]   0.00-10.00 sec  1.10 GBytes  944 Mbits/sec   10             sender
[  5]   0.00-10.00 sec  1.10 GBytes  943 Mbits/sec                 receiver
  • Transfer:传输的数据量
  • Bandwidth:平均带宽
  • Retr:重传次数(TCP 下有效,重传多说明网络不稳定)
  • Jitter/packet loss:UDP 下显示抖动和丢包情况

iperf3 常用命令速查表

1. 服务端

iperf3 -s              # 启动服务端 (默认端口 5201)
iperf3 -s -p 5000      # 指定端口 5000

2. 客户端

iperf3 -c <server_ip>        # TCP 测试
iperf3 -c <server_ip> -p 5000  # 指定端口

3. TCP 测试

iperf3 -c <server_ip>          # 默认 10 秒 TCP 单线程
iperf3 -c <server_ip> -t 30    # 持续 30 秒
iperf3 -c <server_ip> -P 4     # 4 个并发线程
iperf3 -c <server_ip> -R       # 反向测试 (server → client)

4. UDP 测试

iperf3 -c <server_ip> -u -b 100M   # UDP,带宽 100Mbps
iperf3 -c <server_ip> -u -b 1G     # UDP,带宽 1Gbps

5. 高级用法

iperf3 -c <server_ip> -w 512k    # 指定 TCP 窗口大小
iperf3 -c <server_ip> --bidir    # 双向带宽测试
iperf3 -c <server_ip> -J         # 输出 JSON 格式

结果解释

  • Transfer:传输数据总量
  • Bandwidth:平均带宽 (Mbits/sec)
  • Retr:TCP 重传次数(越少越好)
  • Jitter/packet loss:UDP 抖动 & 丢包