您可以为虚拟机 vNIC 配置多 SRIOV 以均衡多个物理网络适配器 (pnic) 上的工作负载,以避免一个 pnic 上发生网络流量拥堵,而另一个 pnic 上没有流量。此应用程序可以与 pnic 进行 NUMA 对齐以避免性能损失。两个 pnic 以物理连接冗余对的形式工作,对于不同的流量或 VLAN 以不同的对工作。

注:
  • VMware Integrated OpenStack 7.2 中,如果使用 SRIOV 网络适配器创建实例,则当特定实例中未指定任何 numa.nodeAffinity 时,该实例将自动被置于 SRIOV pnic 的同一 NUMA 节点中。如果已在特定实例中指定 numa.nodeAffinity,它将覆盖 pnic 中的 NUMA 设置。
  • 通过使用该功能,可以指定 SRIOV 端口可连接到的 SRIOV PF。您可以查看 nova_compute/pci/passthrough_whitelist 中定义的映射信息。物理网络的 SRIOV 端口可以链接到地址指定的 SRIOV PF。
  • 部署后,无法更改 ESXi 中的 VF 编号。如果要增加 VF 编号,则必须重新启动相应的 Nova 计算 Pod。不支持在 VMware Integrated OpenStack 中减少 VF 编号。

过程

  1. 配置 nova-compute.conf
    对于 Nova 计算 CR 中的 PCI 定义,可以使用以下格式在 values 部分中输入内容:
    '{"address": "<PCI address of vmnicX>", "product_id": "*", "vendor_id": "*", "physical_network":"<uuid of vlan transport zone of provider-network>"}'  
    viocli update novacompute <nova-compute-cr-name>
    conf:
      nova_compute:
        DEFAULT:
         ......
        pci:
          passthrough_whitelist:
            type: multistring
            values:
            - '{"address": "0000:1a:00.0", "product_id": "*", "vendor_id": "*", "physical_network":"bf86b52f-a629-4c07-a8bd-14b4b46ba384"}'
            - '{"address": "0000:5e:00.1", "product_id": "*", "vendor_id": "*", "physical_network":"c12a7025-22bc-403c-8ff9-9a25a236704a"}'
            - '{"address": "0000:d8:00.0", "product_id": "*", "vendor_id": "*", "physical_network":"801cd687-b65b-449c-9892-c22647851bf3"}'
            - '{"address": "0000:d8:00.1", "product_id": "*", "vendor_id": "*", "physical_network":"7ab64053-9e48-416d-8b1e-80e1fccd3dcd"}'
    如果使用 DVS 或 NSX-T Data Center 部署,请在 vmware 部分中添加 dvs_moid 参数。
    dvs_moid: sriov-vds-moid

    dvs_moid 的值设置为分布式交换机(与 IOV 设备的计算集群关联)的受管对象标识符 (MOID)。

  2. 创建提供商网络和子网。
    neutron --insecure net-create 3158-net --provider:network_type vlan --provider:physical_network c12a7025-22bc-403c-8ff9-9a25a236704a --provider:segmentation_id 3158
    openstack --insecure subnet create --network 3158-net --allocation-pool start=172.17.2.1,end=172.17.2.254 --gateway 172.17.0.1 --subnet-range 172.17.0.0/22 3158-subnet
    
  3. 创建 SRIOV 端口。
    neutron --insecure port-create 3158-net --name 3158-p1 --vnic_type direct
    neutron --insecure port-create 3158-net --name 3158-p2  --vnic_type direct
    neutron --insecure port-create 3158-net --name 3158-p3 --vnic_type direct
  4. 启动具有指定端口的实例。您可以看到网络适配器已添加到虚拟机并连接到 vmnic2
    nova boot --flavor m1.tiny --image a133ffd7-1601-42e5-a66f-1eb6130db093 --nic port-id=031e14e3-cf06-40e1-addf-3f13f5b5da66 --nic port-id=25c6ce90-2cff-4189-ae21-abc27a131ae7  <vm-name>