rx_errors/tx_errors增长但无实际丢包,大概率是驱动误报而非物理故障;应通过ethtool -S查看rx_crc_errors、rx_missed_errors等细分计数,并结合驱动版本、固件及offload配置综合判断。
rx_error / tx_error 增长但 ping 和业务流量无丢包,先别急着换网卡
这大概率不是物理链路或交换机问题,而是驱动把非致命错误(比如 CRC 校验失败但帧仍被接收、DMA 描述符状态误报)计入了 rx_errors 或 tx_errors。Linux 内核的 ethtool -S 会暴露更细粒度的寄存器计数,而 sar -n DEV 只聚合了驱动上报的 rx_errors 字段——它本身不区分“真丢包”和“驱动误报”。
用 ethtool -S 对比真实丢包与驱动误报
运行 ethtool -S eth0(替换为实际网卡名),重点看这几类字段:
-
rx_crc_errors、rx_frame_errors:若持续增长,且rx_packets同步增长,说明帧被接收但校验失败——上层协议栈可能已静默丢弃(如 IP 层 checksum fail),但驱动仍计入 rx_errors -
rx_missed_errors:环形缓冲区溢出导致丢包,对应内核netdev_rx_dropped,这类才是真丢包 -
tx_aborted_errors、tx_carrier_errors:物理层异常(如链路闪断、协商失败),但若tx_packets正常递增,说明重传成功,驱动只是记录了中间态错误 -
rx_long_length_errors、rx_short_length_errors:常见于 MTU 不匹配或网卡 offload 配置冲突(如 GSO 开启但对端不支持)
检查驱动版本与已知 bug
同一款网卡(如 Intel ixgbe、Broadcom bnxt_en)在不同内核版本中,rx_errors 的统计逻辑可能变化。常见触发场景包括: