srvio直通网卡不收包问题定位——整洁架构的反面用例

         近期在定位某项目srvio直通网卡不收流量情况,持续了将近两周时间,将整个定位过程做下总结,问题背后,其实是对整洁架构的漠视

问题阐述

        项目基于kvm 虚拟化环境, 宿主机cpu 为Intel  4210 ,配置 x710网卡, 网卡驱动为 i40e 2.8.20,使用srvio 方式添加vf 直通网卡到 kvm 虚机中, 虚机 操作系统为ubuntu,使用dpdk 管理网络流量,dpdk 的版本为 19.11 。这种组合下,接受流量时,会出现以下一系列问题:

    1、物理口在重启之前就有流量,重启后 接口不收包

    2、启动以前不查网线,启动后再插入网线,vf 监听不到 网卡启动消息

    3、启动以后再打流量,接口可以收包,但是 打 1G的流量,在vf 接口上只能看到 10M 左右的流量

问题定位及解决

    1、针对以上问题,查看虚拟机 dpdk 的启动日志输出,并无错误信息

   2、查看虚拟机操作系统日志 ,使用journalctl 查看,可以看到 有如下打印, 追踪代码,可以看到是 srvio vf 和 pf 通信失败了

    3、查看宿主机的 系统日志 ,能看到  ”PF reset“ 字样 的打印,结合2中虚机的打印,怀疑 是 vf 在某些情况下 被pf 给reset 掉了

    4、一般 reset 这种行为 是网卡 特有的行为, 查看 x710 datasheet ,可以看到确实有一些情况是 会出现 pf 去reset vf 的,针对收包 只有 缺少描述符相关

5、众所周知, dpdk 的描述符会关联 创建的mempool 的 mbuf ,结合 “打流启动 会收不到包” 的问题现象 , 怀疑 是启动瞬间 ,接口驱动未真正的 工作,但是 mbuf 已经被消耗一空了,但是翻阅了 启动 流程代码, 不会存在这种问题

6、上边的一些列分析找不到原因,再加该项目使用的dpdk 是 深度定制化的,在原生dpdk 上做了相当多修改 , 所以不确定是不是那里修改出问题了,决定使用标准的 dpdk  套件 进行测试

7、编译相同版本 19.11 的  testpmd ,在目标虚机上运行, 运行开始 会 输出 port reset 的打印, 到这里基本可以确实 ,不是我们 代码修改出的问题,要么是 dpdk 本身的bug ,要么是 宿主机 上 i40e 驱动的问题

8、上边背景里交代, 宿主机 驱动是  2.8.20, 驱动比较老旧了, 在宿主机 上重新编译  i40e 驱动,升级为较新的 2.22.18 , 经测试,还是会有问题

9、到这里,问题就卡顿住了,查阅了大量的资料 ,最后 在 dpdk 官方知道手册 中发现如下描述, 意思是 “以下是经过测试和验证的建议匹配列表,强烈建议升级i40e内核驱动程序和固件,以避免与i40e PMD的兼容性问题。”

10、根据dpdk 官方的推荐,将 宿主机 i40e 驱动升级为 2.9.21 ,文中 描述的所有问题都 得以解决了

问题思考

        在 《架构整洁知道》这本书中,针对 “复用/发布等同原则”中这样描述:

        软件复用的最小粒度应等同于其发布的最小粒度。如果想要复用某个软件组件的话,一般就必须要求该组件的开发由某种发布流程来驱动,并且有明确的发布版本号。这其中的一个原因是,如果没有设定版本号,我们就没有办法保证所有被复用的组件之间能够彼此兼容。另外更重要的一点是,软件开发者必须要能够知道这些组件的发布时间,以及每次发布带来了哪些变更。只有这样,软件工程师才能在收到相关组件新版本发布的通知之后,依据该发布所变更的内容来决定是继续使用旧版本还是做些相应的升级,这是很基本的要求。

        

        该问题本身是很符合上边所说的复用发布等同原则的,问题本身一个跨平台,多组件的问题,涉及 宿主机 内核 网卡pf驱动、srvio 通信机制、虚机、dpdk vf 驱动等等方面,设计之处就应该考虑  相关联的 pf 和 vf 的版本 兼容性问题 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值