
前面章节我们简单的介绍了dperf的相关基础概念,本章节我们将要讲dperf 在实际部署过程中遇到不支持的光模块导致系统启动失败的问题的解决方法。
dperf是一款基于intel DPDK开发的高性能的开源网络压力测试仪,目前已经被DPDK官方生态项目收录。

github:https://github.com/baidu/dperf
如果您对本项目感兴趣,欢迎您在github上给本项目点个star,如果您对本公众号感兴趣,那么欢迎点击上方关注:通信行业搬砖工 谢谢~
首先:我们简单描述一下问题现象
百度高性能压测工具dperf是基于intel DPDK开发的测试套件,其底层逻辑依赖于dpdk套件,在启动dperf过程中出现 Unsupported SFP+ module·错误导致dperf 无法正常启动。
其次:从DPDK源码分析定位问题

问题定位的原因应该是当前网卡上使用的的是intel DPDK不支持第三方模块SFP+或者QSFP 光模块。
然后我们分析igb uio 驱动中对应网卡初始化的部分的流程:

在drivers/net/ixgbe/ixgbe_ethdev.c 中有设置相关的配置参数。
再次:我们该如何解决这个问题
解决该问题我们分为两种方法:临时解决和配置启动项两种方法;
方法一、通过重新加载驱动来临时解决问题
卸载igb_uio.ko,然后重新配置加载驱动。操作步骤如下所示:
rmmod ixgbe;
modprobe ixgbe allow_unsupported_sfp=1,1
insmod ixgbe.ko
方法二、通过配置启动文件来解决问题
a.配置/etc/default/grub文件的配置项GRUB_CMDLINE_LINUX增加" ixgbe.allow_unsupported_sfp=1"
b.执行grub.cfg:grub-mkconfig -o /boot/grub/grub.cfg,重新生成grub启动项配置
执行的效果查看:可以通过modprobe ixgbe 或者modinfo 查看ixgbe.ko查看

需要注意的是:
在使用 ixgbe 官方驱动的时候可以在加载模块时设置这个参数,不同的驱动版本支持的光模块型号可能也存在着差别。
注意,设置了 allow_unsupported_sfp 并不代表 sfp 模块就能够正常使用,需要以实际的测试结果为准。
写在最后:
本文章主要是介绍使用dperf、intel dpdk、ovs-dpdk、vpp等DPDK使用场景中,出现不支持的光模块的解决方法。