You can configure VM vNIC with multi SRIOV to balance workload on multiple Physical Network Adapters (pnic) to avoid network traffic congestion on one pnic while no traffic on another pnic. This application can be NUMA aligned with pnic to avoid performance loss. Two pnic work as pairs for physical connectivity redundancy, and different pairs for differeny traffic or VLAN.

Note:
  • In VMware Integrated OpenStack 7.2, if you create an instance with SRIOV network adapter, the instance is put in the same NUMA node of the SRIOV pnic automatically if no numa.nodeAffinity is specified in the flavor. If numa.nodeAffinity is already specified in flavor, it overrides the NUMA setting from pnic.
  • With this feature, you can specify which SRIOV PF the SRIOV port can connect to. You can see the mapping information defined in nova_compute/pci/passthrough_whitelist. The SRIOV port of the physical network can be linked to the SRIOV PF specified by the address.
  • You cannot change VF number in ESXi after deployment. If you want to increase the VF number, then you must restart the corresponding Nova Compute pod. There is no support for decreasing the VF number in VMware Integrated OpenStack.

Procedure

  1. Configure nova-compute.conf.
    For the PCI definition in the Nova Compute CR, you can use the following format to input the content in the values section:
    '{"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"}'
    If you are using a DVS or NSX-T Data Center deployment, add the dvs_moid parameter in the vmware section.
    dvs_moid: sriov-vds-moid

    Set the value of dvs_moid to the Managed Object Identifier (MOID) of the distributed switch associated with the compute cluster for SRIOV devices.

  2. Create provider network and subnet.
    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. Create SRIOV ports.
    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. Launch an instance with the specified port. You can see the network adapter added to the virtual machine and it is connected to 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>