配置内核态SR-IOV

  1. 给PF网口添加VF。

    1. 执行添加命令,其中8是4中查询的Mellanox网口支持的最大VF数量,此处支持配置8个及以下的VF。
      1
      echo 8 > /sys/class/net/enp1s0f1/device/sriov_numvfs
      
    2. 查看添加是否成功。
      1
      cat /sys/class/net/enp1s0f1/device/sriov_numvfs
      

  2. 配置VF端口MAC地址。

    1. 执行配置命令。
      1
      2
      3
      4
      5
      6
      7
      8
      ip link set enp1s0f1 vf 0 mac e4:11:22:33:44:50
      ip link set enp1s0f1 vf 1 mac e4:11:22:33:44:51
      ip link set enp1s0f1 vf 2 mac e4:11:22:33:44:52
      ip link set enp1s0f1 vf 3 mac e4:11:22:33:44:53
      ip link set enp1s0f1 vf 4 mac e4:11:22:33:44:54
      ip link set enp1s0f1 vf 5 mac e4:11:22:33:44:55
      ip link set enp1s0f1 vf 6 mac e4:11:22:33:44:56
      ip link set enp1s0f1 vf 7 mac e4:11:22:33:44:57
      
    2. 查看配置情况。
      1
      ip link show dev enp1s0f1
      

      MAC地址不能冲突,包括本服务器、对端服务器以及交换机上的MAC地址都需保持唯一性。

    3. 查看8个虚拟端口的PCI端口号。
      1
      ls -l /sys/class/net/
      

  3. 切换网口模式。

    1. 解绑VF。
      1
      2
      3
      4
      5
      6
      7
      8
      echo 0000:01:01.2 > /sys/bus/pci/drivers/mlx5_core/unbind
      echo 0000:01:01.3 > /sys/bus/pci/drivers/mlx5_core/unbind
      echo 0000:01:01.4 > /sys/bus/pci/drivers/mlx5_core/unbind
      echo 0000:01:01.5 > /sys/bus/pci/drivers/mlx5_core/unbind
      echo 0000:01:01.6 > /sys/bus/pci/drivers/mlx5_core/unbind
      echo 0000:01:01.7 > /sys/bus/pci/drivers/mlx5_core/unbind
      echo 0000:01:02.0 > /sys/bus/pci/drivers/mlx5_core/unbind
      echo 0000:01:02.1 > /sys/bus/pci/drivers/mlx5_core/unbind
      

    2. 将PF设备上的“eSwitch”模式从“Legacy”修改为“SwitchDev”
      1
      2
      3
      devlink dev eswitch set pci/0000:01:00.1 mode switchdev
      echo switchdev > /sys/class/net/enp1s0f1/compat/devlink/mode
      cat /sys/class/net/enp1s0f1/compat/devlink/mode
      

    3. 检查Representor设备名是否已变更。
      1
      ls -l /sys/class/net/
      

      VF设备名由之前的enp1s0f$变更为enp1s0f1_$。

  4. 绑定VF。

    1
    2
    3
    4
    5
    6
    7
    8
    echo 0000:01:01.2 > /sys/bus/pci/drivers/mlx5_core/bind
    echo 0000:01:01.3 > /sys/bus/pci/drivers/mlx5_core/bind
    echo 0000:01:01.4 > /sys/bus/pci/drivers/mlx5_core/bind
    echo 0000:01:01.5 > /sys/bus/pci/drivers/mlx5_core/bind
    echo 0000:01:01.6 > /sys/bus/pci/drivers/mlx5_core/bind
    echo 0000:01:01.7 > /sys/bus/pci/drivers/mlx5_core/bind
    echo 0000:01:02.0 > /sys/bus/pci/drivers/mlx5_core/bind
    echo 0000:01:02.1 > /sys/bus/pci/drivers/mlx5_core/bind