第6章 SR-IOV デプロイメントの設定

本項では、Red Hat OpenStack 向けの Single Root Input/Output Virtualization (SR-IOV) の設定方法について説明します。

オーバークラウドをデプロイする前に、アンダークラウドのインストールと設定が完了している必要があります。詳しくは、『director のインストールと使用方法』を参照してください。

注記

これらの director Heat テンプレートによって変更されている etc/tuned/cpu-partitioning-variables.confisolated_cores またはその他の値は編集/変更しないでください。

6.1. SR-IOV 設定パラメーターについての概要

network-environment.yaml ファイルを更新して、カーネルの引数、SR-IOV ドライバー、PCI パススルーなどのパラメーターを追加します。また、compute.yaml ファイルも更新して SR-IOV インターフェースのパラメーターを追加してから、overcloud_deploy.sh スクリプトを実行して、その SR-IOV パラメーターを使用してオーバークラウドをデプロイする必要もあります。

OpenStack NFV Config Guide Topology 450694 0617 ECE SR IOV
注記

本ガイドでは、CPU の割り当て、メモリーの確保、NIC の設定の例を紹介します。これらは、トポロジーとユースケースによって異なる場合があります。

6.2. OVS ハードウェアオフロード

OVS ハードウェアオフロードを対応の SR-IOV の設定には、ネットワーク設定テンプレートに特定の変更を加える必要はありません。本項では、OVS ハードウェアオフロードデプロイメント固有の変更について説明します。以下の手順では、一般的なネットワーク分離のデプロイメントに必要なその他のパラメーターおよびネットワーク設定テンプレートファイルについては説明していません。詳しくは、「5章SR-IOV デプロイメントのプランニング」を参照してください。

この機能は、本リリースでは テクノロジープレビュー として提供しているため、Red Hat では全面的にはサポートしていません。これは、テスト目的のみでご利用いただく機能で、実稼働環境にデプロイすべきではありません。テクノロジープレビューについての詳しい情報は「対象範囲の詳細」を参照してください。

6.2.1. VLAN を使用した OVS ハードウェアオフロード対応の SR-IOV の設定

ComputeSriov ロールで OpenvSwitch (OVS) ハードウェアオフロードを有効化するには、以下の手順を実行します。

  1. ComputeSriov ロールを作成します。

    # openstack overcloud roles generate -o roles_data.yaml Controller ComputeSriov
  2. openstack overcloud deploy コマンドに環境ファイルを追加して、OVS ハードウェアオフロードとその依存関係を有効化します。

    # Enables OVS Hardware Offload in the ComputeSriov role
    /usr/share/openstack-tripleo-heat-templates/environments/ovs-hw-offload.yaml
    
    # Applies the KernelArgs and TunedProfile with a reboot
    /usr/share/openstack-tripleo-heat-templates/environments/host-config-and-reboot.yaml
  3. 以下の環境ファイルを openstack overcloud deploy コマンドに追加して、ML2-ODL を有効化します。

    #Enables ml2-odl with SR-IOV deployment
    /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-opendaylight.yaml
    注記

    The OVS ハードウェアオフロードの環境ファイルは、すべての neutron ML2 プラグインで共通しています。デプロイメント用のデフォルトの ML2 プラグインは ML2-OVS ですが、NFV デプロイメントには ML2-ODL を使用すべきです。

  4. sriov-environment.yaml という名前の環境ファイルに SR-IOV ノードのパラメーターを設定します。

    parameter_defaults:
        NeutronTunnelTypes: ''
        NeutronNetworkType: 'vlan'
        NeutronBridgeMappings:
          - <network_name>:<bridge_name>
        NeutronNetworkVLANRanges:
          - <network_name>:<vlan_ranges>
        NeutronSriovNumVFs:
          - <interface_name>:<number_of_vfs>:switchdev
        NeutronPhysicalDevMappings:
          - <network_name>:<interface_name>
        NovaPCIPassthrough:
          - devname: <interface_name>
            physical_network: <network_name>
    注記

    SR-IOV ノードの設定および要件に応じて、<network_name>、<interface_name>、<number_of_vfs> を設定します。

ML2-ODL でデプロイする場合

THT_ROOT=”/usr/share/openstack-tripleo-heat-templates/”
openstack overcloud deploy --templates \
  -r roles_data.yaml \
  -e $THT_ROOT/environments/ovs-hw-offload.yaml \
  -e $THT_ROOT/environments/services-docker/neutron-opendaylight.yaml \
  -e $THT_ROOT/environments/host-config-and-reboot.yaml \
  -e sriov-environment.yaml \
  -e <<network isolation and network config environment files>>

ML2-OVS でデプロイする場合

THT_ROOT=”/usr/share/openstack-tripleo-heat-templates/”
openstack overcloud deploy --templates \
  -r roles_data.yaml \
  -e $THT_ROOT/environments/ovs-hw-offload.yaml \
  -e $THT_ROOT/environments/host-config-and-reboot.yaml \
  -e sriov-environment.yaml \
  -e <<network isolation and network config environment files>>

6.2.2. VXLAN を使用した OVS ハードウェアオフロード対応の SR-IOV の設定

ComputeSriov ロールで OpenvSwitch (OVS) ハードウェアオフロードを有効化するには、以下の手順を実行します。

  1. ComputeSriov ロールを作成します。

    # openstack overcloud roles generate -o roles_data.yaml Controller ComputeSriov
  2. openstack overcloud deploy コマンドに環境ファイルを追加して、OVS ハードウェアオフロードとその依存関係を有効化します。

    # Enables OVS Hardware Offload in the ComputeSriov role
    /usr/share/openstack-tripleo-heat-templates/environments/ovs-hw-offload.yaml
    
    # Applies the KernelArgs and TunedProfile with a reboot
    /usr/share/openstack-tripleo-heat-templates/environments/host-config-and-reboot.yaml
  3. SR-IOV インターフェース上で以下のネットワーク設定変更を適用します。

    - type: interface
      name: <interface_name>
      addresses:
        - ip_netmask:
            get_param: TenantIpSubnet
    注記

    Mellanox ドライバーは、OVS ブリッジの VLAN インターフェース上の VXLAN トンネルで問題があります (single-nic-vlans ネットワーク設定を使用する VXLAN 環境と同様)。Mellanox ドライバーでこの問題が解決するまでは、(OVS ブリッジ上で VLAN インターフェースを使用する代わりに) VXLAN ネットワークをインターフェース上または OVS ブリッジ上に直接設定することができます。

  4. 以下の環境ファイルを openstack overcloud deploy コマンドに追加して、ML2-ODL を有効化します。

    #Enables ml2-odl with SR-IOV deployment
    /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-opendaylight.yaml
    注記

    The OVS ハードウェアオフロードの環境ファイルは、すべての neutron ML2 プラグインで共通しています。デプロイメント用のデフォルトの ML2 プラグインは ML2-OVS ですが、NFV デプロイメントには ML2-ODL を使用すべきです。

  5. VXLAN デプロイメントには、sriov-environment.yaml という名前の環境ファイルに SR-IOV ノードのパラメーターを設定します。

    parameter_defaults:
        NeutronSriovNumVFs:
          - <interface_name>:<number_of_vfs>:switchdev
        NovaPCIPassthrough:
          - devname: <interface_name>
            physical_network: null
    注記

    SR-IOV ノードの設定および要件に応じて、<network_name>、<interface_name>、<number_of_vfs> を設定します。

ML2-ODL でデプロイする場合

THT_ROOT=”/usr/share/openstack-tripleo-heat-templates/”
openstack overcloud deploy --templates \
  -r roles_data.yaml \
  -e $THT_ROOT/environments/ovs-hw-offload.yaml \
  -e $THT_ROOT/environments/services-docker/neutron-opendaylight.yaml \
  -e $THT_ROOT/environments/host-config-and-reboot.yaml \
  -e sriov-environment.yaml \
  -e <<network isolation and network config environment files>>

ML2-OVS でデプロイする場合

THT_ROOT=”/usr/share/openstack-tripleo-heat-templates/”
openstack overcloud deploy --templates \
  -r roles_data.yaml \
  -e $THT_ROOT/environments/ovs-hw-offload.yaml \
  -e $THT_ROOT/environments/host-config-and-reboot.yaml \
  -e sriov-environment.yaml \
  -e <<network isolation and network config environment files>>

6.3. SR-IOV 用のフレーバーの作成とインスタンスのデプロイ

NFV を実装する Red Hat OpenStack Platform デプロイメントの SR-IOV の設定を完了した後には、以下の手順に従ってフレーバーを作成してインスタンスをデプロイします。

  1. アグリゲートグループを作成して、SR-IOV 用にホストを追加します。

     # openstack aggregate create --zone=sriov sriov
     # openstack aggregate add host sriov compute-sriov-0.localdomain
    注記

    CPU ピニングされたインスタンスをピニングされていないインスタンスと分けるには、ホストアグリゲートを使用すべきです。CPU ピニングを使用していないインスタンスは、CPU ピニングを使用するインスタンスのリソース要件は順守しません。

  2. フレーバーを作成します。

    # openstack flavor create compute --ram 4096 --disk 150 --vcpus 4

    compute はフレーバー名、4096 は MB 単位のメモリー容量、150 は GB 単位のディスク容量 (デフォルトでは 0 G)、4 は仮想 CPU 数を設定しています。

  3. フレーバーの追加のプロパティーを設定します。

    # openstack flavor set --property hw:cpu_policy=dedicated --property hw:mem_page_size=1GB compute

    compute はフレーバー名で、それ以外のパラメーターはそのフレーバーのその他のプロパティーを設定します。

  4. ネットワークを作成します。

    # openstack network create net1 --provider-physical-network tenant --provider-network-type vlan --provider-segment <VLAN-ID>
  5. ポートを作成します。

    1. vnic-type direct を使用して SR-IOV VF ポートを作成します。

      # openstack port create --network net1 --vnic-type direct sriov_port
    2. vnic-type direct-physical を使用して SR-IOV PF ポートを作成します。

      # openstack port create --network net1 --vnic-type direct-physical sriov_port
  6. インスタンスをデプロイします。

    # openstack server create --flavor compute --availability-zone sriov --image rhel_7.3 --nic port-id=sriov_port sriov_vm

    ここで

    • compute はフレーバー名または ID です。
    • sriov はサーバーのアベイラビリティゾーンです。
    • rhel_7.3 はインスタンスの作成に使用するイメージ (名前または ID) です。
    • sriov_port はサーバー上の NIC です。
    • sriov_vm はインスタンスの名前です。

これで、NFV ユースケースの SR-IOV 向けインスタンスのデプロイが完了しました。