丢包与时延定位60 条

丢包区段二分法

在路径多个点抓包(服务器、网关、边界、客户端)逐步比对:哪两跳之间数据开始缺失,即把区间缩到该段,再排该段设备与链路。

区段二分是怎么回事

当一条路径上多个位置都能抓包时,丢包定位不必猜:在服务器出口、机房边界、对端网关、客户端侧同时采集同一条流,逐点比对序列号覆盖范围,就能把「数据从哪一跳开始缺失」缩到具体网段。做法是先在两端确认丢包事实,再按先粗后细的顺序增加控制点,把区间反复折半,直到锁定到一台设备或一条链路。

基本信息

适用平台任意可同时采集的 Linux 节点、交换设备镜像口、云内虚拟网卡
方法多控制点同流抓包,逐点比对 TCP 序列号
核心字段tcp.seq、tcp.len、tcp.analysis.retransmission
前提各控制点时间窗重叠、过滤条件一致、采集容量足够

典型使用场景

  • 跨机房链路出现固定比例丢包,需确定责任段落
  • 云上业务与自建机房互联抖动,用于划分云内与云外
  • POC 验收时给出双方都能复核的丢包位置证据
  • 更换某段链路或设备前后做同口径对比
  • 多路径环境下确认丢包是否集中在某条路径
  • 为运营商工单提供「数据在进入你方网络前完整」的直接证据

控制点示意

控制点示意
服务端 → [A 机房出口] → [B 边界] → [C 对端网关] → 客户端
# 逐点比对同一流的 tcp.seq 覆盖范围
# A 有 B 无 → 丢在 A 与 B 之间
# 起点就没有 → 上游处理或发送侧问题
# 终点有起点无 → 反向路径问题,注意区分方向

比对结论读法

比对结果结论下一步
A 有 B 无数据在该段路径丢失查该段链路质量、端口错包与中间设备策略
起点缺失数据未从源头发出查服务端发送队列、拥塞状态与网卡计数
终点缺失起点正常为反向路径问题在反向方向重做一次同样的采点布局
各点一致缺失可能是真实业务丢包回到应用侧确认该缺口是否有重传补偿
控制点的价值在于「同时性」:时间窗不重叠、过滤条件不一致,或某个点因缓冲不足丢包,都会让比对结论失去意义,采点前先统一参数。
实际排障不总需要六七个采点,先布两端与中间一跳即可把范围折半,再按需要加密,能显著降低采集与协调成本。

易错点

  • 各控制点时间不同步:时钟偏差会让时间线比对出现错位,结论需要靠序列号而非时间戳来对齐
  • 某个采点自己丢包:缓冲不足的抓包点会凭空制造「缺口」,每个点都要先确认其 dropped 计数为零
  • 只在单向采点:去程与回程是两条独立路径,只测一个方向会漏掉一半问题
  • 丢包只在特定时段出现:控制点的时间窗必须覆盖故障时段,短采样容易得出「一切正常」

数据来源与参考

  • Wireshark User's Guide
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌