网络带宽与延迟测试指南(iperf3/ping/mtr)
使用 iperf3 测试节点间带宽、ping/mtr 测试延迟与丢包,详解服务端/客户端命令参数、双向与多线程测试、UDP 测试以及结果解读,含 Ubuntu 22.04 iperf3 3.9 实测回显。
网络带宽与延迟测试指南(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 | 双向同时测 |
-u | UDP 模式(配合 -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行的 SUMGbits/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