DPDK 在一个端口上得到太多 rx_crc_errors

DPDK getting too many rx_crc_errors on one port

什么可能导致 DPDK 端口中的 rx_crc_erros? 是软件的事吗?或者与端口或来自另一端的流量相关的硬件?

DPDK 版本:19.02 PMD: I40E

此端口在客户网络上 运行,值得一提的是这是唯一具有此行为的端口(共 4 个),因此这可能是 router/traffic 的事情,但我无法验证

使用 dpdk-proc-info 获取此数据

无法执行任何其他操作 activity,因为这是 运行 在客户站点上

DPDK I40E PMD 只有在端口上启用或禁用 CRC 的选项。因此,可以完全排除 DPDK I40E PMD 导致 4 个端口中的 1 个端口出现 CRC 错误的假设。

'RX 数据包由每个端口的 ASIC 验证 CRC,然后 DMA 到 mbuf 用于数据包缓冲区。 PMD 将描述符状态复制到 mbuf 结构(其中之一是 CRC)。数据包描述符向驱动程序指示数据包缓冲区的 CRC 结果 (Kernel/DPDK-PMD)。因此,由于以下原因,可能会出现给定端口上的 CRC 错误

  • 连接ASIC的端口故障(极少数情况)
  • SFP+未正确连接(可能)。
  • SFP+ 不是推荐的(可能)。
  • 来自另一端的流量正在发送错误的 CRC 数据包。

需要通过

来隔离问题
  1. 将端口绑定到 Linux 驱动程序 i40e 并通过 ethtool -S [port].
  2. 检查统计信息
  3. 检查 SFP+ 在故障端口上的兼容性,方法是更换工作正常的端口。
  4. 重新安装 SFP+。
  5. 交换工作端口和故障端口之间的数据线。然后检查是否存在错误。

如果以上4种情况都只出现在故障端口,那么网卡确实只有4个工作端口中的3个,需要更换网卡或者干脆忽略故障端口。 Hence this is not a DPDK PMD or library issue.