网络带宽与延迟测试指南(iperf3/ping/mtr)

使用 iperf3 测试节点间带宽、ping/mtr 测试延迟与丢包,详解服务端/客户端命令参数、双向与多线程测试、UDP 测试以及结果解读,含 Ubuntu 22.04 iperf3 3.9 实测回显。

Linux性能优化与调优网络测试网络优化2026/09/29

网络带宽与延迟测试指南(iperf3/ping/mtr)

目标:使用 iperf3 测量两节点间最大带宽,用 ping/mtr 测量 RTT 延迟、抖动与丢包率,为网络瓶颈定位与容量评估提供数据。本文命令在 Ubuntu 22.04(iperf3 3.9)实测。

环境信息

  • 操作系统:Ubuntu 22.04.5 LTS;iperf3 版本:3.9
  • 需两台可互通的节点:服务端(监听)+ 客户端(发起)
  • 笔者在模拟网段内实测:内置 DNS 容器名/主机名互解析、ping 0% 丢包、RTT ~0.1ms

前置条件

  • 两端开放测试端口(iperf3 默认 5201,可指定其他)与防火墙放行。
  • 安装 iperf3:apt-get install -y iperf3。

iperf3 核心参数

参数说明
-s服务端监听模式
-c <host>客户端连接目标
-p端口(默认 5201)
-t测试时长(秒)
-i结果输出间隔(秒)
-P <n>并行流数(多线程)
-R反向模式(测下行带宽)
-d / --bidir双向同时测
-uUDP 模式(配合 -b 指定带宽)
-B绑定源地址/接口
--version版本信息

💡 说明:TCP 模式下 iperf3 单流默认受拥塞窗口限制,-P 多流可逼近链路满速;UDP 用 -u -b 指定目标带宽测丢包。

1. 服务端启动

# 默认 5201 端口监听
iperf3 -s

# 指定端口并在后台运行
iperf3 -s -p 5201 &

输出会显示端口、Socket Buffer 限制等;用 ss -ltnp | grep 5201 确认监听。

2. 客户端单向测带宽(多流)

# 单流 10 秒
iperf3 -c <server-ip> -t 10

# 4 并行流测满带宽
iperf3 -c <server-ip> -t 10 -P 4

实测 TCP 多流输出(节选):

[SUM]   0.00-10.00  sec   1.18 GBytes   1.01 Gbits/sec
sender
- - - - - - - - - - - - - - - - - - - - - - - - -
[SUM]   0.00-10.00  sec   1.18 GBytes   1.01 Gbits/sec   receiver

关注 receiver 行的 SUM Gbits/sec(实际吞吐)与 jitter/丢包(数据中心链路)。

3. 反向与双向测试

# 反向模式(上行方向,即服务端->客户端)
iperf3 -c <server-ip> -R

# 双向同时测试
iperf3 -c <server-ip> --bidir

4. UDP 测试(测带宽上限与丢包)

# 服务端保留原样;客户端发 1Gbps 的 UDP,观察丢包
iperf3 -c <server-ip> -u -b 1000M -t 10

输出中 Lost/Total Datagrams 与 Jitter 是关键;丢包不为 0 说明试图超过链路可用带宽或存在拥塞。

5. 延迟与丢包测试(ping / mtr)

# 连续 ping 测延迟与丢包
ping -c 10 <server-ip>
# 60 icmp_seq=...  time=0.123 ms,0% packet loss

# 限制源地址/接口
ping -I eth0 -c 5 <server-ip>

# mtr 综合追踪路径每跳延迟/丢包(-r report 模式,-n 不做 DNS 反解)
mtr -r -n <server-ip>
mtr --report-cycles 5 -n <server-ip>

延迟解读:同机房 RTT 常在 0.1-1ms;跨地域按距离数 10-100ms。time=0.123 ms 说明内网交换链路非常健康;mtr 定位哪一跳丢包/延迟上升。

6. 模拟多节点对比

若为分布式集群,可规划一个公共网络内多个节点,依次用容器名/主机名互测:

# 节点 A 作服务端
iperf3 -s &
# 节点 B 测向 A
iperf3 -c node-a -t 10 -P 4
# 节点 C 测向 A,汇总上三角矩阵即为节点间带宽

常见问题

Q:单流 iperf3 到不了万兆? A:受单流 TCP 窗口/RTT 影响,使用 -P 4~8 多流才能接近满速;也可在服务端/客户端调大 socket buffer(见《TCP 缓冲区优化》)。

Q:UDP 测试 jitter 高/丢包多但 TCP 正常? A:可能该链路有队列/丢包,建议压测时观察交换机队列与 ethtool -S 的 drop 计数。

Q:端口被防火墙拦截? A:放行 iperf3 端口(如 5201/tcp udp),或改用 -p 换端口后客户端加 -p 对齐。

卸载方式

测试进程为临时前台/后台进程,kill %1 或 pkill iperf3 即可;无需安装常驻服务。

参考链接

  • man iperf3、iperf3 官方:https://iperf.fr/
  • man mtr、man ping
网络带宽与延迟测试指南(iperf3/ping/mtr) - Quzuo