iperf3 是什么
iperf3 是点到点带宽测试的标准工具:一端以服务端模式监听,另一端作为客户端发起测试,结果给出实际吞吐、重传次数与抖动。它的价值不是「跑出一个大数字」,而是给出网络层的能力上限,以及与之配套的质量指标——重传计数能直接反映路径丢包,UDP 模式还能测出抖动与丢包率。把业务实际速率与这个上限对比,就能判断瓶颈是在网络还是在应用侧。
基本信息
| 运行方式 | 一端以服务端模式启动并保持运行,另一端以客户端模式发起测试 |
|---|---|
| 默认端口 | 5201,测试前需在两端策略中放行 |
| 常用参数 | 测试时长、并行流数、反向测试、忽略开头若干秒 |
| 结果要点 | 发送与接收速率、重传计数、抖动与丢包(UDP) |
| 对比原则 | 发送与接收速率明显不一致,说明途中存在丢包 |
典型使用场景
- 新开通链路验收:用实际吞吐与合同带宽对比
- 跨地域访问慢:区分是链路能力不足还是时延与窗口限制
- 丢包定位:看重传计数是否显著非零,配合接口计数交叉验证
- 扩容决策:确认瓶颈是带宽还是时延,避免无效扩容
- 整改验证:换线路或调整参数后重跑同一组测试做对照
基本流程
基本流程
iperf3 -s # 服务端侧启动并等待连接
iperf3 -c <服务端IP> -t 10 # 10 秒 TCP 正向测试
iperf3 -c <服务端IP> -t 10 -R # 反向测试:由服务端发往客户端
iperf3 -c <服务端IP> -P 4 -t 10 # 4 条并行流,更接近链路总能力
iperf3 -c <服务端IP> -O 3 -t 13 # 忽略前 3 秒,避开慢启动阶段
iperf3 -c <服务端IP> -u -b 200M -t 10 # UDP:指定目标带宽,看丢包与抖动
iperf3 -c <服务端IP> -t 10 -J > /tmp/iperf.json # 结构化输出,便于留档与比对结果列读法
| 列 | 含义 | 异常表现 |
|---|---|---|
| Interval | 采样区间与时间 | 首段速率偏低多为慢启动,可用忽略前几秒的参数规避 |
| Transfer | 该区间传输的数据量 | 与速率结合判断是否为瞬时突发 |
| Bitrate | 该区间速率 | 远低于链路标称时要继续查时延与重传 |
| Retr(TCP) | 重传次数 | 显著非零说明路径存在丢包,是链路质量的硬指标 |
| Jitter(UDP) | 抖动 | 抖动偏大时实时业务先受影响 |
| Lost/Total(UDP) | 丢包数与占比 | 占比升高说明链路或对端处理能力不足 |
TCP 测试跑满线速不代表业务能跑满:业务还会受并发模型、协议开销、磁盘与锁的限制。iperf3 给出的是网络层上限,用来判断「还有没有余量」。
UDP 模式要显式指定目标带宽,默认值偏低,测不出链路真实承载能力;同时注意 UDP 结果反映的是「发送端发出去」的视角,需要结合两端数据判断丢在哪里。