[网络丢包]网卡MISX和MSI之争

1.背景

  • 操作系统ubuntu server 16.04和ubuntu server 18.04;
  • 8个网口,其中7个作为数据输入,1个网口作为数据输出,PHY芯片为82574,1000Mbps全双工;

2.现象

  • 1台设备源出500Mbps码率,过交换机后,7个网口接收正常;
  • 2台设备源出500Mbps码率,过交换机后,不同的主板可能出现:1>7个网口接收正常;1>其中几个网口接收正常,几个网口(如:eth2,eth7)会丢包,且无论如何重启丢包网口固定;

3.测试验证

  • 将在异常网口(如:eth2)上的流用正常网口(如:eth0)进行接收,数据不丢包;
  • 进行了帧间隙IFG测试,1台设备时帧间隙都保持到12Byte以上;
  • 进行了帧间隙IFG测试,1台设备时大部分数据的帧间隙都保持到12Byte以上,少量数据帧间隙在8Byte;
  • 异常网口(如:eth2,eth7)使用/proc/net/dev进行查看fifo和drop字段有溢出和丢包;
  • 调试驱动程序:网卡驱动e1000e在进行驱动加载时,配置网卡模式时出问题的网卡配置MSI-X模式失败,而被自动切换到MSI模式;
  • 将其他几个网口的驱动禁用,问题网卡一样无法配置MSI-X模式,而被自动切换到MSI模式,数据也会出现丢失;
  • 将MSI-X模式的网卡的中断绑定到CPU1,将MSI模式的网卡绑定到CPU0,为问题网卡分配充分的CPU资源,数据也会出现丢失;

4.结论

​ 由于没有能采集这么高PCIE信号的仪器,最终只能不了了之。但基于以上实验,做了针对该现象的个人猜测:PCIE时序问题(偏差,PHY时钟问题等),导致的无法配置MSI-X模式。但丢包的原因可能是两台设备流叠加后,帧间隙出现小于12Byte的情况(实际使用示波器采集也确实出现帧间隙为8Byte的情况),而MIS模式的网卡无法完全接收这种情况的数据。

猜你喜欢

转载自blog.csdn.net/weixin_35804181/article/details/80653056
今日推荐