首页/网络/抓包与流量分析速查/队列丢弃与优先级观察
丢包与时延定位60 条

队列丢弃与优先级观察

拥塞时设备按队列策略丢包:DSCP 标记与队列统计能看出哪类流量被优先丢弃;抓包中丢包集中模式与之呼应。

队列丢弃与优先级

网络设备在出接口拥塞时按队列策略处理报文:先按 DSCP 分类入队,队列满了就尾丢弃,配置了主动队列管理(如 WRED)则按权重提前丢。抓包里看不到队列本身,但可以通过 DSCP 分组统计推断哪类流量被优先丢弃,再与设备侧队列计数互相印证。这是把端到端现象落到具体出接口的一条路径。

基本信息

关键字段ip.dsfield.dscp(IPv4)、ipv6.tclass(IPv6)
常用标记EF=46、AF41=34、CS6=48、BE=0
观察方法按 DSCP 分组比较丢失率与重传比例
前提条件端到端每一跳都需保留标记,任一跳清空即失效

典型使用场景

  • 语音或视频卡顿排查:确认 EF 标记是否在链路中途被清除
  • 判断拥塞丢包是否按优先级发生,还是无差别丢弃
  • 核对 QoS 策略是否端到端生效,而不只是首跳配置
  • 与设备队列计数对照,把问题定位到具体出接口
  • 评估扩容优先级:先看哪一类流量的损失最大

按 DSCP 分组统计

按 DSCP 分组统计
tshark -r t.pcap -Y "ip.dsfield.dscp==46" -T fields -e ip.src -e ip.dst -e frame.number
# 语音等高优先流量,逐个确认标记是否贯穿链路
tshark -r t.pcap -q -z io,stat,10,"COUNT(frame)ip.dsfield.dscp==46","COUNT(frame)ip.dsfield.dscp==0"
# 每 10 秒一组,对比优先流量与默认流量的包量变化
tshark -r t.pcap -Y "tcp.analysis.retransmission" -T fields -e ip.dsfield.dscp
# 看重传集中的 DSCP 取值,判断哪类流量受损更重

DSCP 常用取值

取值名称典型用途
46EF语音,要求低延迟低抖动低丢失
34 / 36 / 38AF41 / AF42 / AF43视频与交互类业务
26 / 28 / 30AF31 / AF32 / AF33重要数据业务
48CS6网络控制协议
0BE默认,尽力而为
标记只有在设备信任并保留时才有意义。中间设备若清空或重写 DSCP,端侧按标记做的分组统计就与设备侧的实际策略不一致,结论必须两边互相验证。
不要仅凭两个抓包点的数量差异断定某台设备在丢包。抓包点本身可能因内核缓冲不足丢帧。先统一两侧的过滤条件与统计窗口,再用设备侧计数交叉确认。

排查顺序

  • 先确认标记是否端到端保留:在靠近源与靠近目的处分别统计 DSCP 分布
  • 再看拥塞时段是否与丢失上升吻合,结合链路利用率数据
  • 按 DSCP 分组算丢失率与重传率,找出受损最重的类别
  • 与设备队列统计对照,锁定出接口
  • 最后核对 QoS 配置是否与设计一致,含分类、标记、队列与丢弃策略

易错点

  • 标记被中间设备重置却按原标记分析:端侧观察与设备策略对不上,容易得出错误的责任方
  • 把无差别丢包当成 QoS 生效:拥塞严重时所有队列都溢出,优先级策略形同虚设
  • 只用抓包点差异定位丢包设备:抓包工具自身丢帧会造成假象,必须与设备计数印证
  • 忽略队列长度与缓冲参数:相同的标记策略在缓冲调小时表现完全不同

数据来源与参考

  • RFC 2474(DSCP)
  • RFC 2597(AF)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌