首页/网络/网络排障速查/乱序与假乱序判读

乱序与假乱序判读

乱序在抓包点附近与在网络中部含义不同:先确认抓包位置,再判断是链路重排、多路径转发,还是本地网卡卸载造成的假象。

网络排障速查网络更新于 2026-10-13

乱序与丢包的区别

乱序指报文到达顺序与发送顺序不一致,接收方看到序号前后跳跃,但缺口随后会被补齐;丢包则是某个序号一直没到,只能靠重传弥补。区分两者的意义在于:偶发乱序本身是很多网络的正常行为,只有伴随快速重传、吞吐下降或应用错误时才值得处理。还有一个常见陷阱是「假乱序」——抓包主机自己的网卡卸载功能会把大段数据重新组合,让抓包看起来乱序,实际链路完全正常。

基本信息

过滤字段tcp.analysis.out_of_order 与 tcp.analysis.ooorder
常见成因多路径转发、链路聚合、中间设备队列、网卡卸载
与丢包的区别乱序的缺口会被补齐,丢包只能靠重传恢复
抓包点影响发送端抓包出现乱序多为本机卸载造成,接收端出现则更接近真实链路
本章平台Wireshark 4.x、Linux ethtool 查看卸载状态

典型使用场景

  • 吞吐上不去且伴随快速重传:确认是链路乱序触发的不必要重传
  • 抓包分析前排除干扰:先确认乱序是否来自抓包主机的卸载功能
  • 链路聚合改造后评估:判断乱序是否落在可接受范围内
  • 多路径环境验收:确认转发策略是否造成同一连接跨路径
  • 区分应用乱序与网络乱序:应用层乱序要回到协议实现看

定位乱序

定位乱序
tcp.analysis.out_of_order
tcp.analysis.ooorder && ip.src == 10.0.0.5   # 只看某方向的乱序帧
# 对照检查本地卸载状态(抓包端):
ethtool -k eth0 | grep -E 'tso|gro|lro'
ethtool -K eth0 tso off gro off lro off      # 临时关闭,抓完可恢复
# 结合重传一起看,判断乱序是否引发额外重传:
tcp.analysis.retransmission || tcp.analysis.fast_retransmission

场景与判读

场景判读处置
发送端抓包出现乱序多为网卡卸载造成的假乱序关闭卸载后重抓验证
接收端抓包出现乱序链路或中间设备重排结合多路径与聚合口配置分析
多路径或链路聚合环境乱序常见,属设计内行为评估重传比例是否可接受
乱序后紧跟快速重传乱序触发了不必要的重传调整路径或聚合哈希策略
乱序伴随实际丢包混合问题,先解决丢包按丢包定位方法分段排查
本地抓包前建议临时关闭 offload:ethtool -K eth0 tso off gro off lro off,抓完再恢复,否则分析结论会被网卡改写。
判断真乱序还是假乱序有个简单办法:看乱序是否成片出现且成对反转,网卡卸载造成的假乱序往往规律性强,真实链路乱序则更零散。

易错点

  • 不做抓包点说明就讨论乱序,结论无法落到某段链路
  • 本机抓包未关 offload,把网卡行为当网络行为,白排查半天
  • 把乱序直接等同于故障:偶发乱序属正常现象,只有伴随重传与性能下降才需要干预
  • 只看乱序不看重传比例:无法判断影响程度,也就无法决定是否值得改造

数据来源与参考

  • Wireshark 文档:tcp.analysis.out_of_order
  • Linux 文档:ethtool 卸载特性

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌