複数の SRIOV に対応するように仮想マシン vNIC を構成して、複数の物理ネットワーク アダプタ(物理 NIC)にワークロードを分散することで、1 つの物理 NIC ではネットワーク トラフィックが輻輳しているのに、別の物理 NIC ではトラフィックがないという状態を回避できます。この応用として、NUMA と物理 NIC を連携させて、パフォーマンスの低下を避けることができます。2 つの物理 NIC がペアとして機能することで物理接続の冗長性が得られ、異なるトラフィックまたは VLAN に対して異なるペアを使用できます。

注:
  • VMware Integrated OpenStack 7.2 では、SRIOV ネットワーク アダプタを使用するインスタンスを作成するときに、フレーバーで numa.nodeAffinity を指定しないと、インスタンスは自動的に SRIOV 物理 NIC の同じ NUMA ノードに配置されます。フレーバーで numa.nodeAffinity がすでに指定されている場合は、物理 NIC の NUMA 設定がオーバーライドされます。
  • この機能を使用すると、SRIOV ポートが接続できる SRIOV PF を指定できます。マッピング情報の定義は、nova_compute/pci/passthrough_whitelist で確認できます。物理ネットワークの SRIOV ポートは、アドレスで指定された SRIOV PF にリンクできます。
  • デプロイ後に ESXi で VF 数を変更することはできません。VF 数を増やすには、対応する Nova コンピューティング ポッドを再起動する必要があります。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"}'
    Distributed Switch または NSX-T Data Center デプロイを使用している場合は、 vmware セクションに dvs_moid パラメータを追加します。
    dvs_moid: sriov-vds-moid

    dvs_moid の値を、SRIOV デバイスのコンピューティング クラスタに関連付けられた Distributed Switch の管理対象オブジェクト ID (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>