丢包与时延定位60 条

UDP 丢包量化方法

UDP 无重传:用序号/时间戳字段(RTP、QUIC、自定义头)判断缺口;无序号时用发送计数与接收计数差、周期包间隔差估算。

没有重传怎么算丢包

无连接的传输协议不会自动补救丢失的报文,因此丢包只能靠观测来估算。好在多数实时类协议自带序号或时间戳,序号缺口就是最直接的证据;即使协议没有序号,也可以用发送端计数与接收端计数之差、周期报文的到达间隔差来推算。估算时要先按序号重排再统计缺失,否则先到的序号大的包会让普通的乱序被误算成丢包,结论被明显放大。

基本信息

适用平台抓包工具侧的统计与估算,与具体业务协议无关
常见依据序号字段、时间戳、编解码计数
典型协议实时传输协议、基于流的加密传输协议
关键前提先重排再统计,排除乱序与重复

典型使用场景

  • 语音或视频质量下降,量化端到端丢包水平
  • 评估链路改造前后的实时业务质量差异
  • 为双端计数不一致的问题提供量化证据
  • 排查周期心跳报文是否按预期到达
  • 为业务侧的质量上报数据做网络侧交叉验证
  • 在无重传协议上估算可接受的最大丢包阈值

观察要点

观察要点
# 有序号: 序号缺口即为丢失候选
# 有确认范围: 结合确认范围判断哪些包已到达
# 无序号: 发送端计数 - 接收端计数
# 无序号也无计数: 用周期包到达间隔的倍数差估算
# 统计前先按序号重排,重复包要去重

判据逐项读法

判据适用条件主要误差来源
序号缺口协议自带单调序号乱序与重复会被误算
双端计数差两端都能取到计数取数时间窗不一致
周期包间隔差存在固定周期报文发送端抖动被算作丢包
确认范围协议带回执机制回执延迟造成的暂时缺口
缺口不一定都是丢包:乱序到达要先按序号重排再统计,否则估算值会显著偏高。
重复报文需要去重:链路复制或重发都会让接收计数虚高,进而低估丢包比例。

易错点

  • 按到达顺序直接统计缺口:乱序会被算成丢包,数值偏大且方向可能完全错
  • 两端计数时间窗不一致:取数时刻不同会产生虚假差值,需对齐窗口
  • 把发送端抖动算作丢包:基于间隔的估算对发送端不规则发送很敏感
  • 忽略重复包:复制或重发会让丢包率被低估,需要先去重再统计

数据来源与参考

  • RFC 3550(RTP)
  • RFC 9000(QUIC)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌