SR-IOV パススルーを許可するようにポートを構成してから、物理ネットワーク アダプタを使用する OpenStack インスタンスを作成できます。

仮想マシンのネットワーク冗長性を確保するために SR-IOV 物理 NIC が異なる複数のポートを作成する場合は、以下に示すオプションの手順を実行します。

前提条件

  • vSphere で SR-IOV を有効にします。『vSphere ネットワーク』のホスト物理アダプタでの SR-IOV を有効にするを参照してください。
  • SR-IOV デバイス専用のコンピューティング クラスタを作成します。これらのデバイスに DRS ルールは適用されません。
  • 物理デバイスの MAC アドレスを維持するには、デバイスでパススルーを有効にする前に、コンピューティング ノードとしてクラスタを追加します。パススルーがすでに有効な場合は、これを無効にして、クラスタを再起動し、ダイレクト パススルーを再度有効にすることができます。
  • VMware Integrated OpenStack Carrier Edition の機能を有効にします。Carrier Edition の機能の有効化を参照してください。

手順

  1. Integrated OpenStack Managerroot ユーザーとしてログインします。
    ssh root@mgmt-server-ip
  2. Nova コンピューティングの設定を編集します。
    viocli update nova-compute
  3. nova_compute セクションに次の情報を追加します。
    pci:
      passthrough_whitelist:
        type: multistring
        values:
        - '{"product_id": "*", "vendor_id": "*", "physical_network": "*"}'
    
  4. Distributed Switch または NSX-T Data Center デプロイを使用している場合は、vmware セクションに dvs_moid パラメータを追加します。
    dvs_moid: sriov-vds-moid
    dvs_moid の値を、SR-IOV デバイスのコンピューティング クラスタに関連付けられた Distributed Switch の管理対象オブジェクト ID (MOID) に設定します。
  5. ツールボックスを開き、admin アカウントのパスワードを設定します。
    toolbox
    export OS_PASSWORD=admin-password
  6. (オプション) ポート冗長性を構成する場合は、isolate プロパティを使用して仮想マシン フレーバーを作成します。
    isolate プロパティを使用することにより、ESXi サーバ ホスト上の異なる物理 NIC ごとに SR-IOV ポートが分離されるので、ポート冗長性が確保できます。
    openstack flavor set <FLAVOR_ID> --property group_policy=isolate
    FLAVOR_ID は、分離された SR-IOV ポートのある仮想マシンに使用される Nova フレーバーの UUID です。
  7. SR-IOV デバイスのプロバイダ ネットワークを作成します。
    • NSX Data Center for vSphere デプロイの場合は、VLAN ネットワークまたはポート グループ ネットワークを作成します。
    • NSX-T Data Center デプロイの場合は、VLAN ネットワークまたは不透明ネットワークを作成します。
    • Distributed Switch デプロイの場合は、VLAN ネットワークを作成します。
    neutron net-create network-name --tenant-id project-uuid --provider:network_type {vlan | portgroup | nsx-net} --provider:physical_network physical-id [--provider:segmentation_id vlan-id]
    オプション 説明
    network-name

    ネットワークの名前を入力します。

    --tenant-id

    ポートを作成するプロジェクトの UUID を指定します。openstack project list コマンドを実行して、プロジェクトの UUID を検索できます。

    --provider:network_type

    VLAN ネットワークの場合は vlan、ポート グループ ネットワークの場合は portgroup、不透明ネットワークの場合は nsx-net と入力します。

    --provider:physical_network
    • NSX Data Center for vSphere の VLAN ネットワークの場合は、Distributed Switch の MOID を指定します。
    • NSX-T Data Center の VLAN ネットワークの場合は、VLAN トランスポート ゾーンの UUID を指定します。
    • Distributed Switch デプロイの VLAN ネットワークの場合は、分散 vSwitch の名前を指定します。
    • ポート グループ ネットワークの場合は、ポート グループの名前を指定します。ネットワーク名は、ポート グループ名と一致する必要があります。
    • 不透明ネットワークの場合、論理スイッチの UUID を指定します。
    --provider:segmentation_id

    VLAN ベース ネットワークを作成する場合は、VLAN ID を入力します。

  8. ネットワークのサブネットを作成します。
    neutron subnet-create network-id --tenant-id project-uuid --name subnet-name
    オプション 説明
    network-id

    サブネットを作成するネットワークの UUID を指定します。openstack network list コマンドを実行して、ネットワークの UUID を検索できます。

    --tenant-id

    サブネットを作成するプロジェクトの UUID を指定します。

    --name

    サブネットの名前を入力します。

  9. --vnic_type direct パラメータを使用して、パススルー対応のポートを作成します。
    neutron port-create network-id --tenant-id project-uuid --name port-name --vnic_type direct
    オプション 説明
    network-id

    ポートを作成するネットワークの UUID を指定します。openstack network list コマンドを実行して、ネットワークの UUID を検索できます。

    --tenant-id

    ポートを作成するプロジェクトの UUID を指定します。

    --name

    ポートの名前を入力します。

    注: パススルー対応ポートではポート セキュリティはサポートされていません。作成したポートに対するポート セキュリティは自動的に無効になります。
    OpenStack インスタンスに物理ネットワーク アダプタへのアクセス権を付与するには、この 1 つのポートでインスタンスを構成します。また、冗長性を確保するために複数のポートを持つ仮想マシンをデプロイする場合は、出力のポート ID をメモしてから、この手順を繰り返して 2 つ目の直接ポートを作成します。
  10. (オプション) 仮想マシン フレーバーと 2 つの直接ポートによって仮想マシンをデプロイします。
    nova boot --flavor <FLAVOR_ID> --image <IMAGE_ID> --nic port-id=<port1-id> --nic port-id=<port2-id> <VM_NAME>
    オプション 説明
    FLAVOR_ID

    手順 6 で作成したフレーバーを指定します。

    --nic

    直接ポートごとに作成されたポート ID を入力します。