分段收缩法怎么用
丢包排查最忌讳一上来就盯着末端服务器。有效做法是分段收缩:从最近的一跳开始,逐段向远端探测,找出第一个出现持续丢点的区间,把范围从整条路径压到某一段。除了位置,还要区分四个维度:方向(去程还是回程)、类型(随机丢包通常与拥塞或误码相关,周期性丢包更像定时任务或保护倒换)、手段(ping 反映控制面与轻负载行为,打流才反映真实转发)、以及是否只在特定包长或特定业务端口出现。把这四点组合起来,通常几次测试就能锁定原因类别。
基本信息
| 分段 ping | 从近到远逐段探测,缩小到具体区间 |
|---|---|
| 方向区分 | 去程与回程分别测,丢包常在单方向 |
| 类型区分 | 随机丢包与周期性丢包原因不同 |
| 交叉验证 | ping 与打流结果对照 |
| 包长维度 | 不同包长丢包表现可能完全不同 |
| 观察窗口 | 连续多次测试,避免单次结果误判 |
典型使用场景
- 业务访问慢:先判断是丢包还是时延问题
- 跨运营商链路:区分是本网内丢包还是互联点丢包
- VPN 隧道内丢包:对比隧道内与隧道外测试结果
- 语音或视频质量下降:重点看抖动与丢包的组合表现
- 变更后回归验证:用同一测试口径对比变更前后的丢包率
探测序列
探测序列
# 从近到远逐段探测,记录每段丢包率
ping -c 100 10.0.0.1 | tail -2 # 首跳
ping -c 100 10.9.9.9 | tail -2 # 中间段
ping -c 100 10.2.2.1 | tail -2 # 末端
# 一次看逐跳丢包分布
mtr -rzc 100 10.2.2.1
# 用打流验证真实转发表现
iperf3 -c 10.2.2.10 -u -b 20M -t 60
# 不同包长交叉验证
ping -c 100 -s 1400 10.2.2.1 | tail -2结果判读
| 观察结果 | 倾向原因 | 下一步 |
|---|---|---|
| 首跳即丢 | 本端接口或线缆问题 | 核对接口计数与光功率 |
| 中间段开始丢 | 该段链路或设备拥塞 | 联系对应运维方核查 |
| 末端丢而中间不丢 | 末端设备或策略限速 | 检查 QPS 限速与队列 |
| 周期性丢包 | 定时任务或保护倒换 | 对照日志时间戳 |
| 小包不丢大包丢 | MTU 或分片问题 | 改用分片探测方法 |
ping 丢包不完全等于业务丢包:设备对 ICMP 的处理优先级通常较低,控制面限速会导致读数偏高,必要时用业务端口或 UDP 打流交叉验证。
中间跳丢包而后面的跳不丢,往往只是该设备不响应 ICMP 探测,不代表路径有问题;判断要以后续跳的结果为准。