我感觉搞网络转发的人,会在构造发包器的道路上越走越远。

在各种条件限制下,我准备用dpdk-pktgen构造一个能打满线速的发包器。但是这一搞,问题就大了:我手头的机器,没有独立的控制面网卡,只能靠这唯一的网口发包。稍有不慎,机器就连不上了。为了保狗命,我选择管理面走网卡的pf,发包器走vf。

方案定下来,那就开干吧。

作为一个老网工,开启vf那一定是小菜:

~#echo 1 > /sys/bus/pci/devices/0000\:3b\:00.0/sriov_numvfs
-bash: /sys/bus/pci/devices/0000:3b:00.0/sriov_numvfs: No such file or directory

哦!我知道了,我没有打开内核的iommu支持,内核参数加上:

intel_iommu=on iommu=pt

再试一次:

~#echo 1 > /sys/bus/pci/devices/0000\:3b\:00.0/sriov_numvfs
-bash: /sys/bus/pci/devices/0000:3b:00.0/sriov_numvfs: No such file or directory

什么情况,都0202了,还有不支持SR-IOV的网卡???

~#lspci | grep Eth
3b:00.0 Ethernet controller: Mellanox Technologies MT27800 Family [ConnectX-5]

M记的网卡那能是一般的网卡么。

翻了各种版本的官方文档后,发现M记的东西全身都是玄机。

请出我们的主角MFT

光看介绍谁能知道这东西还有修改网卡功能的功能。

下载,安装。

先看一眼vf是什么情况:

~#mst start
Starting MST (Mellanox Software Tools) driver set
Loading MST PCI module - Success
Loading MST PCI configuration module - Success
Create devices
Unloading MST PCI module (unused) - Success
~#mst status
MST modules:
------------
    MST PCI module is not loaded
    MST PCI configuration module loaded
MST devices:
------------
/dev/mst/mt4119_pciconf0         - PCI configuration cycles access.
                                   domain:bus:dev.fn=0000:3b:00.0 addr.reg=88 data.reg=92 cr_bar.gw_offset=-1
                                   Chip revision is: 00
~#mlxconfig -d /dev/mst/mt4119_pciconf0  q | grep NUM_OF_VFS
         NUM_OF_VFS                          0

NUM_OF_VFS==0?不愧是你Mellanox。结下来的事就好办了:

~#mlxconfig -d /dev/mst/mt4119_pciconf0 set SRIOV_EN=1 NUM_OF_VFS=1
Device #1:
----------
Device type:    ConnectX5
Name:           N/A
Description:    N/A
Device:         /dev/mst/mt4119_pciconf0
Configurations:                              Next Boot       New
         SRIOV_EN                            True(1)         True(1)
         NUM_OF_VFS                          0               1
 Apply new Configuration? (y/n) [n] : y
Applying... Done!
-I- Please reboot machine to load new configurations.

重启后再试:

~#echo 1 > /sys/bus/pci/devices/0000\:3b\:00.0/sriov_numvfs
~#lspci | grep Mell
3b:00.0 Ethernet controller: Mellanox Technologies MT27800 Family [ConnectX-5]
3b:00.1 Ethernet controller: Mellanox Technologies MT27800 Family [ConnectX-5 Virtual Function]
oh my god_god_MY_oh表情

参考资料:


0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据