ネットワーク機能仮想化 (NFV) の設定ガイド
ネットワーク機能仮想化 (NFV) の OpenStack デプロイメントの設定
概要
前書き リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform は、Red Hat Enterprise Linux 上にプライベートまたはパブリックの Infrastructure-as-a-Service (IaaS) クラウドを構築するための基盤を提供します。これにより、スケーラビリティーが極めて高く、耐障害性に優れたプラットフォームをクラウド対応のワークロード開発にご利用いただくことができます。
本ガイドは、NFV デプロイメント向けに Red Hat OpenStack Platform 10 director を使用して SR-IOV および DPDK-accelerated Open vSwitch (OVS) を設定する手順を説明しています。
第1章 概要 リンクのコピーリンクがクリップボードにコピーされました!
ネットワーク機能仮想化 (NFV) とは、汎用のクラウドベースのインフラストラクチャー上でネットワーク機能を仮想化するソフトウェアベースのソリューションです。NFV により、通信事業者 (CSP) は従来のハードウェアから離れることができます。
本ガイドでは、CPU の割り当て、メモリーの確保、NIC の設定の例を紹介します。これらは、トポロジーとユースケースによって異なる場合があります。ハードウェアと設定のオプションについて理解するには、『ネットワーク機能仮想化 (NFV) の製品ガイド』および『ネットワーク機能仮想化 (NFV) のプランニングガイド』を参照してください。
Red Hat OpenStack Platform 10 director により、オーバークラウドネットワーク (外部、テナント、内部 API 等) を分離することができます。ネットワークは、単一のネットワークインターフェース上に、または複数のホストネットワークインターフェースに分散してデプロイすることが可能です。Red Hat OpenStack Platform 10 のインストールでは、ネットワークの分離はテンプレートファイルを使用して設定されます。テンプレートファイルを指定しない場合には、サービスネットワークはすべてプロビジョニングネットワーク上にデプロイされます。テンプレートの設定ファイルには、さまざまな種類があります。
-
network-environment.yaml: オーバークラウドノードのネットワーク設定で使用するサブネット、IP アドレス範囲などのネットワークの情報が含まれます。このファイルには、さまざまなシナリオで使用できるように、デフォルトのパラメーター値を上書きする別の設定も含まれます。 -
compute.yamlおよびcontroller.yaml等のホストのテンプレート: オーバークラウドノードのネットワークインターフェース設定が定義されます。 first-boot.yaml: さまざまな設定ステップを提供します。以下に例を示します。- Grub 引数
- DPDK パラメーター
-
tuned のインストールと設定。
tunedパッケージに含まれるtunedデーモンは、システムコンポーネントの使用状況をモニターし、その情報を元にシステム設定を動的にチューニングします。OVS-DPDK および SR-IOV デプロイメントで適切な CPU アフィニティー設定を提供するには、tuned-cpu-partitioningプロファイルを使用する必要があります。
これらの Heat テンプレートファイルは、アンダークラウドノードの /usr/share/openstack-tripleo-heat-templates/ にあります。
NFV 向けのこれらの heat テンプレートファイルの例については、YAML ファイルの例 を参照してください。
NFV の設定には、YAML ファイルが使用されます。YAML ファイル形式の概要は、「YAML in a Nutshell」を参照してください。
以下の項では、Red Hat OpenStack Platform director を使用した NFV 用 Heat テンプレートファイルの設定方法について説明します。
1.1. コンポーザブルロール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform 10 では、コンポーザブルロールを使用して、NFV 用のカスタムデプロイメントロールを作成することができます。コンポーザブルロールを使用して、各ロールにサービスを追加/削除することができます。コンポーザブルロールの詳しい情報は、『オーバークラウドの高度なカスタマイズ』の「コンポーザブルサービスとカスタムロール」を参照してください。
コンポーザブルロールの設定方法:
-
roles-data.yamlファイルをコピーし、これを編集して OVS-DPDK または SR-IOV 用のコンポーザブルロールを追加します。 - OpenStack フレーバーを作成し、そのフレーバーに適切な属性を割り当てます。
- この新しいフレーバーをノードに関連付けます。
-
適切な
network-environment.yamlファイルを更新して、カーネル引数と DPDK または SR-IOV 引数のパラメーターを追加します。 -
overcloud_deploy.shスクリプトを実行して、コンポーザブルロールと共にオーバークラウドをデプロイします。
第2章 NFV を実装した Red Hat OpenStack Platform の更新 リンクのコピーリンクがクリップボードにコピーされました!
OVS-DPDK を設定している場合には、Red Hat OpenStack Platform を更新する際に追加の考慮事項とステップが必要です。追加のステップについては、『Red Hat OpenStack Platform のアップグレード』の「director ベースの環境: マイナーバージョンへの更新の実行」に説明があります。
第3章 仮想ネットワークの SR-IOV サポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
本章では、director を使用した Red Hat OpenStack Platform 10 環境への Single Root Input/Output Virtualization (SR-IOV) の設定について説明します。
本ガイドでは、CPU の割り当て、メモリーの確保、NIC の設定の例を紹介します。これらは、トポロジーとユースケースによって異なる場合があります。ハードウェアと設定のオプションについて理解するには、『ネットワーク機能仮想化 (NFV) の製品ガイド』および『ネットワーク機能仮想化 (NFV) のプランニングガイド』を参照してください。
etc/tuned/cpu-partitioning-variables.conf の isolated_cores や他の値を編集または変更しないでください。これらは、ここで説明する director の heat テンプレートにより変更されます。
以下の手順では、network-environment.yaml ファイルを更新して、カーネルの引数、SR-IOV ドライバー、PCI パススルーなどのパラメーターを追加します。また、compute.yaml ファイルも更新して、SR-IOV インターフェースのパラメーターを追加して、overcloud_deploy.sh スクリプトを実行し、その SR-IOV パラメーターを使用してオーバークラウドをデプロイする必要があります。
3.1. VLAN トンネリングを使用する 2 ポート SR-IOV の設定 リンクのコピーリンクがクリップボードにコピーされました!
本項では、OpenStack 環境に VLAN トンネリングを使用する 2 ポート SR-IOV を設定する際に変更する必要のある YAML ファイルについて説明します。
3.1.1. first-boot.yaml の変更 リンクのコピーリンクがクリップボードにコピーされました!
以前のデプロイメントで first-boot.yaml ファイルに以下の行を追加している場合、Open vSwitch 2.9 を使用する Red Hat OpenStack Platform 10 ではこれらの行を削除してください。
tuned設定を定義して CPU アフィニティーを有効にします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow カーネルの引数を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.2. network-environment.yaml の変更 リンクのコピーリンクがクリップボードにコピーされました!
resource_registryセクションにfirst-boot.yamlを追加して CPU のチューニングを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、トンネル種別を無効にし (値を""に設定)、ネットワーク種別をvlanに設定します。NeutronTunnelTypes: '' NeutronNetworkType: 'vlan'
NeutronTunnelTypes: '' NeutronNetworkType: 'vlan'Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、Open vSwitch の物理ネットワークをブリッジにマッピングします。NeutronBridgeMappings: 'tenant:br-link0'
NeutronBridgeMappings: 'tenant:br-link0'Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、OpenStack Networking ML2 および Open vSwitch VLAN のマッピング範囲を設定します。NeutronNetworkVLANRanges: 'tenant:22:22,tenant:25:25'
NeutronNetworkVLANRanges: 'tenant:22:22,tenant:25:25'Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、SR-IOV の設定パラメーターを定義します。SR-IOV メカニズムドライバー (
sriovnicswitch) を有効にします。NeutronMechanismDrivers: "openvswitch,sriovnicswitch"
NeutronMechanismDrivers: "openvswitch,sriovnicswitch"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Compute の
pci_passthrough_whitelistパラメーターを設定し、SR-IOV インターフェースのdevnameを設定します。ホワイトリストで、インスタンスが利用可能な PCI デバイスを設定します。NovaPCIPassthrough: - devname: "p7p1" physical_network: "tenant" - devname: "p7p2" physical_network: "tenant"NovaPCIPassthrough: - devname: "p7p1" physical_network: "tenant" - devname: "p7p2" physical_network: "tenant"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 物理ネットワークおよび SR-IOV インターフェースを
PHYSICAL_NETWORK:PHYSICAL DEVICEの形式で指定します。サーバーの
network_vlan_rangesに記載されるすべての物理ネットワークには、各エージェントの適切なインターフェースへのマッピングが必要です。NeutronPhysicalDevMappings: "tenant:p7p1,tenant:p7p2"
NeutronPhysicalDevMappings: "tenant:p7p1,tenant:p7p2"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各 SR-IOV インターフェース用に確保する Virtual Function (VF) の数を指定します。
Red Hat OpenStack Platform では、NIC ベンダーがサポートする VF 数がサポートされます。その他の関連情報は、「Deployment Limits for Red Hat OpenStack Platform」を参照してください。以下の例では、各 SR-IOV インターフェースに 5 つの VF を確保しています。
NeutronSriovNumVFs: "p7p1:5,p7p2:5"
NeutronSriovNumVFs: "p7p1:5,p7p2:5"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記動作中の環境で
NeutronSriovNumVFsパラメーターを変更すると、その PF 上の SR-IOV ポートを持つ実行中のインスタンスがすべて使用できなくなることが知られています。これらのインスタンスをハードリブートしない限り、インスタンスは SR-IOV PCI デバイスを認識しません。
parameter_defaultsセクションにおいて、ホストプロセス用の RAM を確保します。NovaReservedHostMemory: 4096
NovaReservedHostMemory: 4096Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、仮想マシンプロセス用に確保する物理 CPU コアのコンマ区切りリストまたは範囲を設定します。NovaVcpuPinSet: "1-19,21-39"
NovaVcpuPinSet: "1-19,21-39"Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、適用可能なフィルターの一覧を設定します。Nova スケジューラーは、ここで指定するリスト順にこれらのフィルターを適用します。ノードに対するフィルタリングのプロセスがより効率的になるように、最も制限の厳しいフィルターを最初に設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、初回ブート時にデフォルトのgrubファイルに追加するComputeKernelArgsパラメーターを定義します。ComputeKernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=12 intel_iommu=on iommu=pt"
ComputeKernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=12 intel_iommu=on iommu=pt"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記DPDK インスタンスに関連付けるフレーバーに
hw:mem_page_size=1GBを追加する必要があります。追加しない場合、DHCP による割り当てがインスタンスに適用されません。parameter_defaultsセクションにおいて、チューニングする物理 CPU コアの一覧または範囲を設定します。指定した引数がチューニングされた
cpu-partitioningプロファイルに追加されます。HostIsolatedCoreList: "1-19,21-39"
HostIsolatedCoreList: "1-19,21-39"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3. controller.yaml の変更 リンクのコピーリンクがクリップボードにコピーされました!
分離ネットワーク用の Linux ボンディングを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Linux ボンディングに VLAN を割り当てます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow neutron-dhcp-agent および neutron-metadata-agent サービスにアクセスするための OVS ブリッジを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.4. compute.yaml の変更 リンクのコピーリンクがクリップボードにコピーされました!
分離ネットワーク用の Linux ボンディングを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Linux ボンディングに VLAN を割り当てます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の設定を
compute.yamlファイルに追加することで、2 つの SR-IOV インターフェースを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.5. overcloud_deploy.sh スクリプトの実行 リンクのコピーリンクがクリップボードにコピーされました!
VLAN 環境用の openstack overcloud deploy コマンドの例を以下に示します。
-
/usr/share/openstack-tripleo-heat-templates/environments/neutron-sriov.yamlはデフォルトのneutron-sriov.yamlファイルの場所です。これによりコンピュートノードの SR-IOV パラメーターを有効にします。 -
/home/stack/<relative-directory>/network-environment.yamlはnetwork-environment.yamlファイルへのパスです。デフォルトのneutron-sriov.yamlの値をnetwork-environment.yamlファイルでオーバーライドすることができます。
3.2. SR-IOV 用フレーバーの作成とインスタンスのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
NFV を実装する Red Hat OpenStack Platform デプロイメントの SR-IOV の設定を完了した後には、以下の手順を実施してフレーバーを作成してインスタンスをデプロイする必要があります。
SR-IOV 用にアグリゲートグループを作成し、ホストを追加します。フレーバーメタデータに一致するメタデータを定義します (例:
"aggregate_instance_extra_specs:sriov"="true")。openstack aggregate create sriov_group
# openstack aggregate create sriov_group # openstack aggregate set --property \ "aggregate_instance_extra_specs:sriov"="true" sriov_group # openstack aggregate add host sriov compute-sriov-0.localdomainCopy to Clipboard Copied! Toggle word wrap Toggle overflow フレーバーを作成します。
openstack flavor create <flavor> --ram <MB> --disk <GB> --vcpus <#>
# openstack flavor create <flavor> --ram <MB> --disk <GB> --vcpus <#>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 追加のフレーバー属性を設定します。定義したメタデータ (
"aggregate_instance_extra_specs:sriov"="true") と SR-IOV アグリゲートで定義したメタデータが一致している点に注意してください。openstack flavor set --property "aggregate_instance_extra_specs:sriov"="true" \ --property hw:cpu_policy=dedicated \ --property hw:mem_page_size=large <flavor>
# openstack flavor set --property "aggregate_instance_extra_specs:sriov"="true" \ --property hw:cpu_policy=dedicated \ --property hw:mem_page_size=large <flavor>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ネットワークを作成します。
openstack network create net1 --provider-physical-network tenant --provider-network-type vlan --provider-segment <VLAN-ID>
# openstack network create net1 --provider-physical-network tenant --provider-network-type vlan --provider-segment <VLAN-ID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow サブネットを作成します。
openstack subnet create subnet1 --network net1 --subnet-range 192.0.2.0/24 --dhcp
# openstack subnet create subnet1 --network net1 --subnet-range 192.0.2.0/24 --dhcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow ポートを作成します。
SR-IOV VF ポートを作成するには、
vnic-typeに direct を使用します。openstack port create --network net1 --vnic-type direct sriov_port
# openstack port create --network net1 --vnic-type direct sriov_portCopy to Clipboard Copied! Toggle word wrap Toggle overflow SR-IOV PF ポートを作成するには、
vnic-typeに direct-physical を使用します。openstack port create --network net1 --vnic-type direct-physical sriov_port
# openstack port create --network net1 --vnic-type direct-physical sriov_portCopy to Clipboard Copied! Toggle word wrap Toggle overflow
インスタンスをデプロイします。
openstack server create --flavor <flavor> --image <glance_image> --nic port-id=sriov_port <name>
# openstack server create --flavor <flavor> --image <glance_image> --nic port-id=sriov_port <name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、NFV ユースケースで SR-IOV 用インスタンスがデプロイされました。
第4章 DPDK で高速化した Open vSwitch (OVS) のネットワーク設定 リンクのコピーリンクがクリップボードにコピーされました!
本章では、Red Hat OpenStack Platform 環境内で DPDK を Open vSwitch とともにインストールしてチューニングする方法について説明します。
OVS-DPDK を設定するのに使用されるパラメーターについて理解するには、「OVS-DPDK デプロイメントのプランニング」を参照してください。
本ガイドでは、CPU の割り当て、メモリーの確保、NIC の設定の例を紹介します。これらは、トポロジーとユースケースによって異なる場合があります。ハードウェアと設定のオプションについて理解するには、『ネットワーク機能仮想化 (NFV) の製品ガイド』および『ネットワーク機能仮想化 (NFV) のプランニングガイド』を参照してください。
etc/tuned/cpu-partitioning-variables.conf の isolated_cores や他の値を編集または変更しないでください。これらは、ここで説明する director の heat テンプレートにより変更されます。
以降の手順で、以下の設定を行う必要があります。
-
適切な
network-environment.yamlファイルを更新して、カーネル引数と DPDK 引数のパラメーターを追加する。 -
compute.yamlファイルを更新して、DPDK インターフェース用のブリッジを追加する。 -
controller.yamlファイルを更新して、DPDK インターフェースパラメーター用の同じブリッジ情報を追加する。 -
overcloud_deploy.shスクリプトを実行して、DPDK パラメーターを使用してオーバークラウドをデプロイする。
デプロイメントでヒュージページが使用される場合は、reserved_huge_pages を設定する必要もあります。詳しくは、「How to set reserved_huge_pages in /etc/nova/nova.conf in Red Hat OpenStack Platform」を参照してください。
手順を開始する前に、以下の項目が揃っていることを確認します。
- Red Hat Enterprise Linux 7.5 上で動作している Red Hat OpenStack Platform 10
- OVS-DPDK 2.9
- テスト済み NIC。NFV 向けのテスト済み NIC の一覧は、「テスト済み NIC」を参照してください。
OVS-DPDK デプロイメントでは、Red Hat OpenStack Platform 10 と OVS 2.9 の組み合わせは、OVS クライアントモードで稼働します。
4.1. 命名規則 リンクのコピーリンクがクリップボードにコピーされました!
OpenStack デプロイメントでカスタムロールを使用する場合、特にノードが複数あるケースでは、一貫性のある命名規則に従うことを推奨します。この命名規則は、以下のファイルおよび設定を作成する際に役立ちます。
instackenv.json: ハードウェアまたは NIC 機能が異なるノードを区別する。"name":"computeovsdpdk-0"
"name":"computeovsdpdk-0"Copy to Clipboard Copied! Toggle word wrap Toggle overflow roles_data.yaml: DPDK をサポートする Compute ベースのロールを区別する。`ComputeOvsDpdk`
`ComputeOvsDpdk`Copy to Clipboard Copied! Toggle word wrap Toggle overflow network-environment.yaml: カスタムロールを正しいフレーバー名に一致させる。`OvercloudComputeOvsDpdkFlavor: computeovsdpdk`
`OvercloudComputeOvsDpdkFlavor: computeovsdpdk`Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
nic-configのファイル名: DPDK インターフェースをサポートするコンピュートノードの NIC yaml ファイルを区別する。 フレーバー作成: フレーバーおよび
capabilities:profileの値を適切なベアメタルノードおよびカスタムロールに容易に一致させる。openstack flavor create --id auto --ram 4096 --disk 40 --vcpus 4 computeovsdpdk openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="computeovsdpdk" computeovsdpdk
# openstack flavor create --id auto --ram 4096 --disk 40 --vcpus 4 computeovsdpdk # openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="computeovsdpdk" computeovsdpdkCopy to Clipboard Copied! Toggle word wrap Toggle overflow ベアメタルノード: ベアメタルノードを適切なハードウェアおよび
capability:profileの値に一致させる。openstack baremetal node update computeovsdpdk-0 add properties/capabilities='profile:computeovsdpdk,boot_option:local'
# openstack baremetal node update computeovsdpdk-0 add properties/capabilities='profile:computeovsdpdk,boot_option:local'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
フレーバー名をフレーバーの capabilities:profile の値に一致させる必要はありませんが、フレーバーの capabilities:profile の値をベアメタルノードの properties/capabilities='profile の値に一致させる必要があります。上記の例では、3 つすべてに computeovsdpdk が使用されています。
カスタムロールおよびプロファイルに使用するすべてのノードの CPU、RAM、および PCI ハードウェアトポロジーが、同じになるようにしてください。
4.2. VLAN トンネリングを使用する 2 ポート OVS-DPDK データプレーンボンディングの設定 リンクのコピーリンクがクリップボードにコピーされました!
本項では、OpenStack 環境用に、コントロールプレーンの Linux ボンディングと共に、OVS-DPDK ボンディングの 2 つのデータプレーンポートを持つ OVS-DPDK を設定およびデプロイする手順について説明します。
4.2.1. first-boot.yaml の変更 リンクのコピーリンクがクリップボードにコピーされました!
first-boot.yaml ファイルを変更し、OVS および DPDK パラメーターを設定し、CPU アフィニティー用に tuned を設定します。
以前のデプロイメントで first-boot.yaml ファイルに以下の行を追加している場合、Open vSwitch 2.9 を使用する Red Hat OpenStack Platform 10 ではこれらの行を削除してください。
新たなリソースを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DPDK パラメーターを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tuned設定を定義して CPU アフィニティーを提供します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow カーネルの引数を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.2. network-environment.yaml の変更 リンクのコピーリンクがクリップボードにコピーされました!
resource_registryセクションに OVS-DPDK 用のカスタムリソースを追加します。resource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::Compute::Net::SoftwareConfig: nic-configs/compute.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yaml OS::TripleO::NodeUserData: first-boot.yamlresource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::Compute::Net::SoftwareConfig: nic-configs/compute.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yaml OS::TripleO::NodeUserData: first-boot.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、トンネル種別を無効にし (値を""に設定)、ネットワーク種別をvlanに設定します。NeutronTunnelTypes: '' NeutronNetworkType: 'vlan'
NeutronTunnelTypes: '' NeutronNetworkType: 'vlan'Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、物理ネットワークを仮想ブリッジにマッピングします。NeutronBridgeMappings: 'tenant:br-link0'
NeutronBridgeMappings: 'tenant:br-link0'Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、OpenStack Networking ML2 および Open vSwitch VLAN のマッピング範囲を設定します。NeutronNetworkVLANRanges: 'tenant:22:22,tenant:25:25'
NeutronNetworkVLANRanges: 'tenant:22:22,tenant:25:25'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記の例では、物理ネットワーク上の VLAN 範囲を設定しています。
parameter_defaultsセクションにおいて、OVS-DPDK の設定パラメーターを定義します。注記NeutronDPDKCoreListとNeutronDPDKMemoryChannelsは、本手順では 必須の 設定です。適切な値を設定せずに DPDK のデプロイメントを試みると、デプロイメントが失敗したり、不安定なデプロイメントになったりします。DPDK Poll Mode Driver (PMD) として使用することのできる CPU コアの一覧を、
[allowed_pattern: "'[0-9,-]+'"]の形式で指定します。NeutronDpdkCoreList: "'2,22,3,23'"
NeutronDpdkCoreList: "'2,22,3,23'"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ゲストインスタンス作成の失敗を避けるために、DPDK PMD 用の DPDK NIC の有無にかかわらず、各 NUMA ノード上で少なくとも 1 つの CPU を (シブリングスレッドと共に) 割り当てる必要があります。
OVS-DPDK のパフォーマンスを最適化するために、以下のオプションを検討してください。
-
DPDK インターフェースの NUMA ノードに関連付けられた CPU を選択する。インターフェースに関連付けられた NUMA ノードを一覧表示するには、
cat /sys/class/net/<interface>/device/numa_nodeを使用します。その NUMA ノードに関連付けられた CPU を一覧表示するには、lscpuを使用します。 -
CPU シブリングをまとめてグループ化する (ハイパースレッディングの場合)。CPU のシブリングを確認するには、
cat /sys/devices/system/cpu/<cpu>/topology/thread_siblings_listを使用します。 - ホストプロセス用に CPU 0 を確保する。
- ホストプロセスが PMD に割り当てられた CPU を使用しないように、これらの CPU を分離する。
NovaVcpuPinsetを使用して、PMD に割り当てられた CPU を Compute のスケジューリングから除外する。メモリーチャネルの数を、
[allowed_pattern: "[0-9]+"]の形式で指定します。NeutronDpdkMemoryChannels: "4"
NeutronDpdkMemoryChannels: "4"Copy to Clipboard Copied! Toggle word wrap Toggle overflow ソケットごとに、ヒュージページプールから事前に割り当てられたメモリーを設定します。
NeutronDpdkSocketMemory: "'3072,1024'"
NeutronDpdkSocketMemory: "'3072,1024'"Copy to Clipboard Copied! Toggle word wrap Toggle overflow CPU ソケットの降順で、形式はコンマ区切り文字列です。上記の例は 2 つの NUMA ノード構成を前提とし、ソケット 0 およびソケット 1 を設定してそれぞれ 1024 MB のヒュージページを事前割り当てします。NUMA ノードが 1 つのシステムでは、この値を 1024,0 に設定します。
OVS ブリッジの DPDK ドライバーの種別を設定します。
NeutronDpdkDriverType: "vfio-pci"
NeutronDpdkDriverType: "vfio-pci"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
parameter_defaultsセクションにおいて、OVS 用の vhost-user ソケットディレクトリーを設定します。NeutronVhostuserSocketDir: "/var/lib/vhost_sockets"
NeutronVhostuserSocketDir: "/var/lib/vhost_sockets"Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、ホストプロセス用の RAM を確保します。NovaReservedHostMemory: 4096
NovaReservedHostMemory: 4096Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、仮想マシンプロセス用に確保する物理 CPU コアのコンマ区切りリストまたは範囲を設定します。NovaVcpuPinSet: "4-19,24-39"
NovaVcpuPinSet: "4-19,24-39"Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、適用可能なフィルターの一覧を設定します。Nova スケジューラーは、ここで指定するリスト順にこれらのフィルターを適用します。ノードに対するフィルタリングのプロセスがより効率的になるように、最も制限の厳しいフィルターを最初に設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、ComputeKernelArgsパラメーターを追加して、初回ブート時にこれらのパラメーターをデフォルトのgrubファイルに追加します。ComputeKernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=32 iommu=pt intel_iommu=on"
ComputeKernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=32 iommu=pt intel_iommu=on"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記これらのヒュージページは仮想マシンよって消費されると共に、本手順に示すように
NeutronDpdkSocketMemoryパラメーターを使用して OVS-DPDK によって消費されます。仮想マシンが利用可能なヒュージページの数は、bootパラメーターからNeutronDpdkSocketMemoryを減算した値です。DPDK インスタンスに関連付けるフレーバーに
hw:mem_page_size=1GBを追加する必要があります。追加しない場合、DHCP による割り当てがインスタンスに適用されません。parameter_defaultsセクションにおいて、チューニングする物理 CPU コアの一覧または範囲を設定します。指定した引数がチューニングされた
cpu-partitioningプロファイルに追加されます。HostIsolatedCoreList: "2-19,22-39"
HostIsolatedCoreList: "2-19,22-39"Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameters_defaultセクションにおいて、論理 OVS-DPDK コアの一覧を設定します。これらのコアは、NeutronDpdkCoreListおよびNovaVcpuPinSetのコアの一覧と相互に排他的でなければなりません。HostCpusList: "'0,20,1,21'"
HostCpusList: "'0,20,1,21'"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.3. controller.yaml の変更 リンクのコピーリンクがクリップボードにコピーされました!
独立したプロビジョニングインターフェースを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 分離ネットワーク用のコントロールプレーンの Linux ボンディングを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Linux ボンディングに VLAN を割り当てます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow neutron-dhcp-agent および neutron-metadata-agent サービスにアクセスするための OVS ブリッジを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.4. compute.yaml の変更 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの compute.yaml ファイルを編集し、以下のように変更します。
独立したプロビジョニングインターフェースを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 分離ネットワーク用のコントロールプレーンの Linux ボンディングを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Linux ボンディングに VLAN を割り当てます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OVS-DPDK データプレーンボンディングの 2 つの DPDK ポートを持つ構成されるブリッジを設定し、コントローラーにリンクします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記複数の DPDK デバイスを含めるには、追加する DPDK デバイスごとに
typeのコードセクションを繰り返します。注記OVS-DPDK を使用する場合には、同じコンピュートノード上の 全 ブリッジが
ovs_user_bridgeの種別である必要があります。同じノード上でovs_bridgeとovs_user_bridgeが混在する構成は、director では受け入れ可能ですが、Red Hat OpenStack Platform ではサポートされていません。
4.2.5. overcloud_deploy.sh スクリプトを実行します。 リンクのコピーリンクがクリップボードにコピーされました!
bash スクリプトに記述した OVS-DPDK 環境用の openstack overcloud deploy コマンドの例を以下に示します。
-
/usr/share/openstack-tripleo-heat-templates/environments/neutron-ovs-dpdk.yamlはデフォルトのneutron-ovs-dpdk.yamlファイルの場所です。これにより Compute ロールの OVS-DPDK パラメーターを有効にします。 -
/home/stack/<relative-directory>/network-environment.yamlはnetwork-environment.yamlファイルへのパスです。このファイルを使用して、neutron-ovs-dpdk.yamlファイルからのデフォルト値を上書きします。
この構成の OVS-DPDK は、セキュリティーグループおよびライブマイグレーションをサポートしません。
4.3. VXLAN トンネリングを使用する単一ポート OVS-DPDK の設定 リンクのコピーリンクがクリップボードにコピーされました!
本項では、OpenStack 環境用に、コントロールプレーンの Linux ボンディングおよび VXLAN トンネリングと共に、単一ポートの OVS-DPDK を設定する手順について説明します。
4.3.1. Modify first-boot.yaml リンクのコピーリンクがクリップボードにコピーされました!
first-boot.yaml ファイルを変更し、OVS および DPDK パラメーターを設定し、CPU アフィニティー用に tuned を設定します。
以前のデプロイメントで first-boot.yaml ファイルに以下の行を追加している場合、Open vSwitch 2.9 を使用する Red Hat OpenStack Platform 10 ではこれらの行を削除してください。
新たなリソースを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DPDK パラメーターを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tuned設定を定義して CPU アフィニティーを提供します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow カーネルの引数を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2. network-environment.yaml の変更 リンクのコピーリンクがクリップボードにコピーされました!
resource_registryセクションに OVS-DPDK 用のカスタムリソースを追加します。resource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::Compute::Net::SoftwareConfig: nic-configs/compute.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yaml OS::TripleO::NodeUserData: first-boot.yamlresource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::Compute::Net::SoftwareConfig: nic-configs/compute.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yaml OS::TripleO::NodeUserData: first-boot.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、トンネルの種別とテナントの種別をvxlanに設定します。NeutronTunnelTypes: 'vxlan' NeutronNetworkType: 'vxlan'
NeutronTunnelTypes: 'vxlan' NeutronNetworkType: 'vxlan'Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、OVS-DPDK の設定パラメーターを定義します。注記NeutronDPDKCoreListとNeutronDPDKMemoryChannelsは、本手順では 必須の 設定です。適切な値を設定せずに DPDK のデプロイメントを試みると、デプロイメントが失敗したり、不安定なデプロイメントになったりします。DPDK Poll Mode Driver (PMD) として使用することのできる CPU コアの一覧を、
[allowed_pattern: "'[0-9,-]+'"]の形式で指定します。NeutronDpdkCoreList: "'2,22,3,23'"
NeutronDpdkCoreList: "'2,22,3,23'"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ゲストインスタンス作成の失敗を避けるために、DPDK PMD 用の DPDK NIC の有無にかかわらず、各 NUMA ノード上で少なくとも 1 つの CPU を (シブリングスレッドと共に) 割り当てる必要があります。
OVS-DPDK のパフォーマンスを最適化するために、以下のオプションを検討してください。
-
DPDK インターフェースの NUMA ノードに関連付けられた CPU を選択する。インターフェースに関連付けられた NUMA ノードを一覧表示するには、
cat /sys/class/net/<interface>/device/numa_nodeを使用します。その NUMA ノードに関連付けられた CPU を一覧表示するには、lscpuを使用します。 -
CPU シブリングをまとめてグループ化する (ハイパースレッディングの場合)。CPU のシブリングを確認するには、
cat /sys/devices/system/cpu/<cpu>/topology/thread_siblings_listを使用します。 - ホストプロセス用に CPU 0 を確保する。
- ホストプロセスが PMD に割り当てられた CPU を使用しないように、これらの CPU を分離する。
NovaVcpuPinsetを使用して、PMD に割り当てられた CPU を Compute のスケジューリングから除外する。メモリーチャネルの数を、
[allowed_pattern: "[0-9]+"]の形式で指定します。NeutronDpdkMemoryChannels: "4"
NeutronDpdkMemoryChannels: "4"Copy to Clipboard Copied! Toggle word wrap Toggle overflow ソケットごとに、ヒュージページプールから事前に割り当てられたメモリーを設定します。
NeutronDpdkSocketMemory: "'3072,1024'"
NeutronDpdkSocketMemory: "'3072,1024'"Copy to Clipboard Copied! Toggle word wrap Toggle overflow CPU ソケットの降順で、形式はコンマ区切り文字列です。NUMA ノードが 1 つのシステムでは、この値を 3072,0 に設定します。
OVS ブリッジの DPDK ドライバーの種別を設定します。
NeutronDpdkDriverType: "vfio-pci"
NeutronDpdkDriverType: "vfio-pci"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
parameter_defaultsセクションにおいて、OVS 用の vhost-user ソケットディレクトリーを設定します。NeutronVhostuserSocketDir: "/var/lib/vhost_sockets"
NeutronVhostuserSocketDir: "/var/lib/vhost_sockets"Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、ホストプロセス用の RAM を確保します。NovaReservedHostMemory: 4096
NovaReservedHostMemory: 4096Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、仮想マシンプロセス用に確保する物理 CPU コアのコンマ区切りリストまたは範囲を設定します。NovaVcpuPinSet: "4-19,24-39"
NovaVcpuPinSet: "4-19,24-39"Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、適用可能なフィルターの一覧を設定します。Nova スケジューラーは、ここで指定するリスト順にこれらのフィルターを適用します。ノードに対するフィルタリングのプロセスがより効率的になるように、最も制限の厳しいフィルターを最初に設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションにおいて、ComputeKernelArgsパラメーターを追加して、初回ブート時にこれらのパラメーターをデフォルトのgrubファイルに追加します。ComputeKernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=32 iommu=pt intel_iommu=on"
ComputeKernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=32 iommu=pt intel_iommu=on"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記これらのヒュージページは仮想マシンよって消費されると共に、本手順に示すように
NeutronDpdkSocketMemoryパラメーターを使用して OVS-DPDK によって消費されます。仮想マシンが利用可能なヒュージページの数は、bootパラメーターからNeutronDpdkSocketMemoryを減算した値です。DPDK インスタンスに関連付けるフレーバーに
hw:mem_page_size=1GBを追加する必要があります。追加しない場合、DHCP による割り当てがインスタンスに適用されません。parameter_defaultsセクションにおいて、チューニングする物理 CPU コアの一覧または範囲を設定します。指定した引数がチューニングされた
cpu-partitioningプロファイルに追加されます。HostIsolatedCoreList: "2-19,22-39"
HostIsolatedCoreList: "2-19,22-39"Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameters_defaultセクションにおいて、論理 OVS-DPDK コアの一覧を設定します。これらのコアは、NeutronDpdkCoreListおよびNovaVcpuPinSetのコアの一覧と相互に排他的でなければなりません。HostCpusList: "'0,20,22-39'"
HostCpusList: "'0,20,22-39'"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3. controller.yaml の変更 リンクのコピーリンクがクリップボードにコピーされました!
独立したプロビジョニングインターフェースを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 分離ネットワーク用のコントロールプレーンの Linux ボンディングを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Linux ボンディングに VLAN を割り当てます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow neutron-dhcp-agent および neutron-metadata-agent サービスにアクセスするための OVS ブリッジを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.4. compute.yaml の変更 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの compute.yaml ファイルから compute-ovs-dpdk.yaml ファイルを作成し、次のように変更します。
独立したプロビジョニングインターフェースを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 分離ネットワーク用のコントロールプレーンの Linux ボンディングを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Linux ボンディングに VLAN を割り当てます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コントローラーにリンクする DPDK ポートを備えたブリッジを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記複数の DPDK デバイスを含めるには、追加する DPDK デバイスごとに
typeのコードセクションを繰り返します。注記OVS-DPDK を使用する場合には、同じコンピュートノード上の 全 ブリッジが
ovs_user_bridgeの種別である必要があります。同じノード上でovs_bridgeとovs_user_bridgeが混在する構成は、director では受け入れ可能ですが、Red Hat OpenStack Platform ではサポートされていません。
4.3.5. overcloud_deploy.sh スクリプトを実行します。 リンクのコピーリンクがクリップボードにコピーされました!
bash スクリプトに記述した OVS-DPDK 環境用の openstack overcloud deploy コマンドの例を以下に示します。
-
/usr/share/openstack-tripleo-heat-templates/environments/neutron-ovs-dpdk.yamlはデフォルトのneutron-ovs-dpdk.yamlファイルの場所です。これにより Compute ロールの OVS-DPDK パラメーターを有効にします。 -
/home/stack/<relative-directory>/network-environment.yamlはnetwork-environment.yamlファイルへのパスです。このファイルを使用して、neutron-ovs-dpdk.yamlファイルからのデフォルト値を上書きします。
この構成の OVS-DPDK は、セキュリティーグループおよびライブマイグレーションをサポートしません。
4.4. OVS-DPDK インターフェースの MTU 値の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform は OVS-DPDK 向けにジャンボフレームをサポートしています。ジャンボフレーム用の MTU 値を設定するには、以下の操作を行う必要があります。
-
network-environment.yamlファイルで、ネットワークのグローバル MTU 値を設定する。 -
compute.yamlファイルで、物理 DPDK ポートの MTU 値を設定する。この値は、vhost のユーザーインターフェースでも使用されます。 - コンピュートノード上の任意のゲストインスタンスで MTU 値を設定し、設定内でエンドツーエンドに同等の MTU 値が設定されるようにする。
VXLAN パケットには追加で 50 バイトがヘッダーに含まれます。MTU の必要値は、ヘッダーの追加バイト値に基づいて計算してください。たとえば、MTU 値 が 9000 の場合には、これらの追加バイト値を計算に入れると、VXLAN トンネルの MTU 値は 8950 となります。
物理 NIC は DPDK PMD によって制御され、compute.yaml ファイルで設定されているのを同じ MTU 値が適用されるので、特別な設定は必要ありません。MTU 値には、物理 NIC でサポートされているよりも高い値を設定することはできません。
OVS-DPDK インターフェースの MTU 値を設定するには、以下の手順を実行します。
network-environment.yamlファイルでNeutronGlobalPhysnetMtuパラメーターを設定します。parameter_defaults: # Global MTU configuration on Neutron NeutronGlobalPhysnetMtu: 9000
parameter_defaults: # Global MTU configuration on Neutron NeutronGlobalPhysnetMtu: 9000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記network-environment.yamlファイルの NeutronDpdkSocketMemory の値がジャンボフレームをサポートするのに十分な容量であることを確認します。詳しくは、「メモリーパラメーター」を参照してください。controller.yamlファイルでコンピュートノードへのブリッジ上の MTU 値を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
compute.yaml ファイルで OVS-DPDK インターフェースおよびボンディング用の MTU 値を定義するには、以下のように設定します。
4.5. OVS-DPDK インターフェース向けのマルチキューの設定 リンクのコピーリンクがクリップボードにコピーされました!
コンピュートノード上の OVS-DPDK ポートのキューの数を設定するには、compute.yaml ファイルを以下のように変更します。
4.6. 既知の制限事項 リンクのコピーリンクがクリップボードにコピーされました!
NFV のユースケース向けに Red Hat OpenStack Platform 10 で OVS-DPDK を設定する場合には特定の制限事項があります。
- コントロールプレーンのネットワークには、Linux ボンディングを使用します。最大限のパフォーマンスを得るために、ボンディングに使用されている両方の PCI デバイスが同じ NUMA ノード上に設定されるようにしてください。Red Hat では、Neutron の Linux ブリッジ構成はサポートしていません。
- ヒュージページは OVS-DPDK を使用するホスト上で実行される全インスタンスに必要です。ゲストのヒュージページがない場合には、インターフェースは表示されても機能しません。
TAP デバイスは DPDK をサポートしないため、これらのデバイスを使用するサービスのパフォーマンスが低下します。TAP デバイスを使用するサービスの例としては、DVR、FWaaS、および LBaaS 等が挙げられます。
-
OVS-DPDK を使用する場合、
netdev datapathにより DVR を有効にすることができますが、そのパフォーマンスは低く、実稼働環境に適するものではありません。DVR は カーネル名前空間および TAP デバイスを使用してルーティングを行います。 - OVS-DPDK との組み合わせで DVR のルーティングが適切に機能するためには、OpenFlow ルールとしてルーティングを実装する ODL 等のコントローラーを使用する必要があります。OVS-DPDK を使用する場合、OpenFlow のルーティングが Linux カーネルインターフェースに起因するボトルネックを排除するので、データパスの完全なパフォーマンスが維持されます。
-
OVS-DPDK を使用する場合、
-
OVS-DPDK を使用する場合には、コンピュートノード上の 全 ブリッジの種別が
ovs_user_bridgeでなければなりません。ovs_bridgeとovs_user_bridgeが混在する構成は、director では受け入れ可能ですが、Red Hat OpenStack Platform ではサポートされていません。
4.7. OVS-DPDK 用フレーバーの作成とインスタンスのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
NFV を実装する Red Hat OpenStack Platform デプロイメントの OVS-DPDK の設定を完了した後には、以下の手順に従ってフレーバーを作成してインスタンスをデプロイすることができます。
OVS-DPDK 用にアグリゲートグループを作成し、ホストを追加します。フレーバーメタデータに一致するメタデータを定義します (例:
"aggregate_instance_extra_specs:dpdk"="true")。openstack aggregate create dpdk_group
# openstack aggregate create dpdk_group # openstack aggregate set --property \ "aggregate_instance_extra_specs:dpdk"="true" dpdk_group # openstack aggregate add host dpdk compute-ovs-dpdk-0.localdomainCopy to Clipboard Copied! Toggle word wrap Toggle overflow フレーバーを作成します。
openstack flavor create <flavor --ram <MB> --disk <GB> --vcpus <#>
# openstack flavor create <flavor --ram <MB> --disk <GB> --vcpus <#>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 追加のフレーバー属性を設定します。定義したメタデータ (
"aggregate_instance_extra_specs:dpdk"=true") と DPDK アグリゲートで定義したメタデータが一致している点に注意してください。openstack flavor set --property "aggregate_instance_extra_specs:dpdk"="true" \ --property hw:cpu_policy=dedicated \ --property hw:mem_page_size=large <flavor>
# openstack flavor set --property "aggregate_instance_extra_specs:dpdk"="true" \ --property hw:cpu_policy=dedicated \ --property hw:mem_page_size=large <flavor>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ネットワークを作成します。
openstack network create net1 --provider-physical-network tenant --provider-network-type vlan --provider-segment <VLAN-ID>
# openstack network create net1 --provider-physical-network tenant --provider-network-type vlan --provider-segment <VLAN-ID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow サブネットを作成します。
openstack subnet create subnet1 --network net1 --subnet-range 192.0.2.0/24 --dhcp
# openstack subnet create subnet1 --network net1 --subnet-range 192.0.2.0/24 --dhcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスをデプロイします。
openstack server create --flavor <flavor> --image <glance_image> --nic net-id=net1 <name>
# openstack server create --flavor <flavor> --image <glance_image> --nic net-id=net1 <name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、NFV ユースケースで OVS-DPDK 用インスタンスがデプロイされました。
4.7.1. エミュレータースレッドの固定によるパフォーマンスの最適化 リンクのコピーリンクがクリップボードにコピーされました!
パフォーマンスを改善するために、Qemu エミュレータースレッドを代替のコアに固定することができます。
インスタンスの仮想 CPU として使用されているコアを把握します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow エミュレータースレッドを固定するコアを選択します。選択したコアが NovaVcpuPinSet の一覧に含まれることを確認します。
#virsh emulatorpin <vm-name> --cpulist 2
#virsh emulatorpin <vm-name> --cpulist 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記エミュレーター固定スレッドに関連付けられる物理 CPU は、
NovaVcpuPinSetの一覧に含まれる仮想 CPU の 1 つ (ハイパースレッディングが有効な場合は 2 つのスレッド) を使用します。
4.8. 設定のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
本項では、DPDK-OVS 設定のトラブルシューティングの手順を説明します。
ブリッジの設定を見直して、ブリッジが
datapath_type=netdevで作成されたことを確認します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow neutron-ovs-agentが自動的に起動するように設定されていることを確認して、OVS サービスを見直します。systemctl status neutron-openvswitch-agent.service
# systemctl status neutron-openvswitch-agent.service neutron-openvswitch-agent.service - OpenStack Neutron Open vSwitch Agent Loaded: loaded (/usr/lib/systemd/system/neutron-openvswitch-agent.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2015-11-23 14:49:31 AEST; 25min agoCopy to Clipboard Copied! Toggle word wrap Toggle overflow サービスが起動しない場合には、関連する何らかのメッセージが表示されるはずです。
journalctl -t neutron-openvswitch-agent.service
# journalctl -t neutron-openvswitch-agent.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow ovs-dpdkの PMD CPU マスクが CPU にピニングされていることを確認します。HT の場合には、シブリング CPU を使用します。CPU4の例を以下に示します。cat /sys/devices/system/cpu/cpu4/topology/thread_siblings_list 4,20
# cat /sys/devices/system/cpu/cpu4/topology/thread_siblings_list 4,20Copy to Clipboard Copied! Toggle word wrap Toggle overflow CPU 4 と 20 を使用します。
ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x100010
# ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x100010Copy to Clipboard Copied! Toggle word wrap Toggle overflow ステータスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 同一コンピュートノード上での SR-IOV および DPDK インターフェースの設定 リンクのコピーリンクがクリップボードにコピーされました!
本項では、同じコンピュートノード上に SR-IOV および DPDK インターフェースをデプロイする方法について説明します。
本ガイドでは、CPU の割り当て、メモリーの確保、NIC の設定の例を紹介します。これらは、トポロジーとユースケースによって異なる場合があります。ハードウェアと設定のオプションについて理解するには、『ネットワーク機能仮想化 (NFV) の製品ガイド』および『ネットワーク機能仮想化 (NFV) のプランニングガイド』を参照してください。
同じコンピュートノード上に SR-IOV および DPDK インターフェースを作成およびデプロイするプロセスは以下のとおりです。
-
network-environment.yamlファイルに SR-IOV ロールおよび OVS-DPDK ロール用のパラメーターを設定する。 -
compute.yamlファイルに SR-IOV インターフェースおよび DPDK インターフェースを設定する。 - 更新されたこのロールセットでオーバークラウドをデプロイする。
- これらのインターフェース種別に対応する、適切な OpenStack フレーバー、ネットワークおよびポートを作成する。
以下のネットワーク設定を推奨します。
- ゲストインスタンスに Floating IP アドレスを使用する。
- ルーターを作成し、それを DPDK VXLAN ネットワーク (管理ネットワーク) に接続する。
- プロバイダーネットワークに SR-IOV を使用する。
-
2 つのポートをアタッチしたゲストインスタンスをブートする。ゲストインスタンスに
cloud-initを使用して、管理ネットワークのデフォルトルートを設定することを推奨します。 - ブートしたゲストインスタンスに Floating IP アドレスを追加する。
最大限のパフォーマンスを得るために、必要に応じてゲストインスタンスに SR-IOV ボンディングを使用して、両方の SR-IOV インスタンスが同じ NUMA ノード上に設定されるようにしてください。
オーバークラウドにコンピュートノードをデプロイする前に、アンダークラウドのインストールと設定が完了している必要があります。詳しくは、『director のインストールと使用方法』を参照してください。
このカスタムロールに一致する OpenStack フレーバーを作成するようにしてください。
5.1. first-boot.yaml ファイルの変更 リンクのコピーリンクがクリップボードにコピーされました!
first-boot.yaml ファイルを変更し、OVS および DPDK パラメーターを設定し、CPU アフィニティー用に tuned を設定します。
以前のデプロイメントで first-boot.yaml ファイルに以下の行を追加している場合、Open vSwitch 2.9 を使用する Red Hat OpenStack Platform 10 ではこれらの行を削除してください。
新たなリソースを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DPDK パラメーターを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow tuned設定を定義して CPU アフィニティーを提供します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow カーネルの引数を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2. セキュリティーグループ用 openvswitch の設定 (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
データプレーンインターフェースのステートフルファイアウォールには、高いパフォーマンスが要求されます。これらのインターフェースを保護するためには、通信業界グレードのファイアウォール (VNF) をデプロイすることを検討してください。
コントロールプレーンインターフェースを設定するには、NeutronOVSFirewallDriver パラメーターに openvswitch を設定します。これにより、OpenStack Networking はフローベースの OVS ファイアウォールドライバーを使用するように設定されます。この設定は、network-environment.yaml ファイルの parameter_defaults セクションで行います。
以下に例を示します。
parameter_defaults: NeutronOVSFirewallDriver: openvswitch
parameter_defaults:
NeutronOVSFirewallDriver: openvswitch
Openvswitch はテクノロジープレビューの機能で、テスト環境でのみ使用する必要があります。サポートされる NeutronOVSFirewallDriver パラメーターの値は noop だけです。
OVS ファイアウォールドライバーを使用する場合には、データプレーンインターフェース用にはこのドライバーを無効にすることが重要です。そのためには、openstack port set コマンドを使用します。
以下に例を示します。
openstack port set --no-security-group --disable-port-security ${PORT}
openstack port set --no-security-group --disable-port-security ${PORT}
5.3. SR-IOV および OVS-DPDK パラメーターの定義 リンクのコピーリンクがクリップボードにコピーされました!
network-environment.yaml ファイルを変更し、SR-IOV および OVS-DPDK ロールに固有のパラメーターを設定します。
これらのノードのネットワーク設定と共に、OVS-DPDK および SR-IOV サービスのリソースマッピングを
network-environment.yamlファイルに追加します。resource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::Compute::Net::SoftwareConfig: nic-configs/compute.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yaml OS::TripleO::NodeUserData: first-boot.yamlresource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::Compute::Net::SoftwareConfig: nic-configs/compute.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yaml OS::TripleO::NodeUserData: first-boot.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow フレーバーを定義します。
OvercloudControlFlavor: controller OvercloudComputeFlavor: compute
OvercloudControlFlavor: controller OvercloudComputeFlavor: computeCopy to Clipboard Copied! Toggle word wrap Toggle overflow トンネルの種別を定義します。
# The tunnel type for the tenant network (vxlan or gre). Set to '' to disable tunneling. NeutronTunnelTypes: 'vxlan' # The tenant network type for Neutron (vlan or vxlan). NeutronNetworkType: 'vlan'
# The tunnel type for the tenant network (vxlan or gre). Set to '' to disable tunneling. NeutronTunnelTypes: 'vxlan' # The tenant network type for Neutron (vlan or vxlan). NeutronNetworkType: 'vlan'Copy to Clipboard Copied! Toggle word wrap Toggle overflow SR-IOV のパラメーターを設定します。
lspci -nvを実行すると、NeutronSupportedPCIVendorDevsパラメーターに PCI ベンダーおよびデバイスの値が表示されます。注記以下の例に示すように、OpenvSwitch ファイアウォールドライバーはテクノロジープレビューの機能で、コントロールプレーンインターフェースにのみ使用する必要があります。サポートされる
NeutronOVSFirewallDriverパラメーターの値はnoopだけです。詳しくは、「セキュリティーグループ用 openvswitch の設定」を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OVS-DPDK のパラメーターを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ゲストインスタンス作成の失敗を避けるために、DPDK PMD 用の DPDK NIC の有無にかかわらず、各 NUMA ノード上で少なくとも 1 つの CPU を (シブリングスレッドと共に) 割り当てる必要があります。
-
実際の OpenStack デプロイメントでの必要に応じて、
network-environment.yamlファイルの残りのパラメーターを設定して、neutron-ovs-dpdk-agent.yamlおよびneutron-sriov-agent.yamlファイルからのデフォルトパラメーターをオーバーライドします。
OVS-DPDK 向けの OpenStack ネットワークを最適化するには、『ネットワーク機能仮想化 (NFV) のプランニングガイド』を参照し、network-environment.yaml ファイルで設定する OVS-DPDK パラメーターの最適値を決定する方法を確認してください。
5.4. SR-IOV および DPDK インターフェース用のコンピュートノードの設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、SR-IOV および DPDK インターフェースに対応する compute.yaml ファイルのサンプルを使用しています。
分離ネットワーク用のコントロールプレーンの Linux ボンディングを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Linux ボンディングに VLAN を割り当てます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DPDK ポートを持つブリッジを設定し、コントローラーにリンクします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記複数の DPDK デバイスを含めるには、追加する DPDK デバイスごとに
typeのコードセクションを繰り返します。注記OVS-DPDK を使用する場合には、同じコンピュートノード上の 全 ブリッジが
ovs_user_bridgeの種別である必要があります。同じノード上でovs_bridgeとovs_user_bridgeが混在する構成は、director では受け入れ可能ですが、Red Hat OpenStack Platform ではサポートされていません。コントローラーに SR-IOV インターフェースを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5. オーバークラウドのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
OVS-DPDK と SR-IOV の両方をデプロイする overcloud_deploy.sh bash スクリプトの例を以下に示します。
5.6. フレーバーの作成ならびに SR-IOV および DPDK インターフェースに対応したインスタンスのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
デプロイが正常に完了したオーバークラウドで、インスタンスのデプロイを開始することができます。source コマンドで /home/stack ディレクトリーに新たに作成した overcloudrc ファイルを読み込むことから始めます。続いて、フレーバーを作成してインスタンスをデプロイします。
フレーバーを作成します。
source overcloudrc openstack flavor create --vcpus 6 --ram 4096 --disk 40 compute
# source overcloudrc # openstack flavor create --vcpus 6 --ram 4096 --disk 40 computeCopy to Clipboard Copied! Toggle word wrap Toggle overflow それぞれのオプション引数についての説明は以下のとおりです。
-
compute: フレーバー名 -
4096: メモリーの容量 (MB 単位) -
40: GB 単位のディスク容量 (デフォルトは 0) -
6: 仮想 CPU の数
-
ラージページのフレーバーを設定します。
openstack flavor set compute --property hw:mem_page_size=1GB
# openstack flavor set compute --property hw:mem_page_size=1GBCopy to Clipboard Copied! Toggle word wrap Toggle overflow 外部ネットワークを作成します。
openstack network create --share --external \ --provider-physical-network <net-mgmt-physnet> \ --provider-network-type <flat|vlan> external
# openstack network create --share --external \ --provider-physical-network <net-mgmt-physnet> \ --provider-network-type <flat|vlan> externalCopy to Clipboard Copied! Toggle word wrap Toggle overflow SR-IOV および DPDK 用のネットワークを作成します。
openstack network create net-dpdk openstack network create net-sriov openstack subnet create --subnet-range <cidr/prefix> --network net-dpdk net-dpdk-subnet openstack subnet create --subnet-range <cidr/prefix> --network net-sriov net-sriov-subnet
# openstack network create net-dpdk # openstack network create net-sriov # openstack subnet create --subnet-range <cidr/prefix> --network net-dpdk net-dpdk-subnet # openstack subnet create --subnet-range <cidr/prefix> --network net-sriov net-sriov-subnetCopy to Clipboard Copied! Toggle word wrap Toggle overflow SR-IOV ポートを作成します。
SR-IOV VF ポートを作成するには、
vnic-typeに direct を使用します。openstack port create --network net-sriov --vnic-type direct sriov_port
# openstack port create --network net-sriov --vnic-type direct sriov_portCopy to Clipboard Copied! Toggle word wrap Toggle overflow SR-IOV PF ポートを作成するには、
vnic-typeに direct-physical を使用します。openstack port create --network net-sriov --vnic-type direct-physical sriov_port
# openstack port create --network net-sriov --vnic-type direct-physical sriov_portCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ルーターを作成し、DPDK VXLAN ネットワークに接続します。
openstack router create router1 openstack router add subnet router1 net-dpdk-subnet
# openstack router create router1 # openstack router add subnet router1 net-dpdk-subnetCopy to Clipboard Copied! Toggle word wrap Toggle overflow Floating IP アドレスを作成し、それをゲストインスタンスのポートに関連付けます。
openstack floating ip create --floating-ip-address FLOATING-IP external
# openstack floating ip create --floating-ip-address FLOATING-IP externalCopy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスをデプロイします。
openstack server create --flavor compute --image rhel_7.3 --nic port-id=sriov_port --nic net-id=NET_DPDK_ID vm1
# openstack server create --flavor compute --image rhel_7.3 --nic port-id=sriov_port --nic net-id=NET_DPDK_ID vm1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
それぞれのオプション引数についての説明は以下のとおりです。
- compute: フレーバーの名前または ID
-
rhel_7.3: インスタンスの作成に使用されるイメージ (名前または ID) -
sriov_port: 前のステップで作成したポートの名前 - NET_DPDK_ID: DPDK のネットワーク ID
-
vm1: インスタンス名
これで、同じコンピュートノード上の SR-IOV インターフェース および DPDK インターフェースを使用するインスタンスがデプロイされました。
より多くのインターフェースを使用するインスタンスの場合は、cloud-init を使用することができます。詳しくは、「インスタンスの作成」の表 3.1 を参照してください。
第6章 詳細情報 リンクのコピーリンクがクリップボードにコピーされました!
以下の表には、参考となるその他の Red Hat ドキュメントの一覧を記載しています。
Red Hat OpenStack Platform のドキュメントスイートは、Red Hat OpenStack Platform 10 の製品ドキュメント を参照してください。
| コンポーネント | 参考情報 |
|---|---|
| Red Hat Enterprise Linux | Red Hat OpenStack Platform は Red Hat Enterprise Linux 7.3 でサポートされています。Red Hat Enterprise Linux のインストールについては、Red Hat Enterprise Linux のドキュメントスイート で該当するインストールガイドを参照してください。 |
| Red Hat OpenStack Platform | OpenStack のコンポーネントとそれらの依存関係をインストールするには、Red Hat OpenStack Platform director を使用します。director は、基本的な OpenStack 環境をアンダークラウドとして使用して、最終的なオーバークラウド内の OpenStack ノードをインストール、設定、管理します。アンダークラウドのインストールには、デプロイしたオーバークラウドに必要な環境に加えて、アンダークラウドのインストールには、追加のホストマシンが必要となる点に注意してください。詳しい手順は、『Red Hat OpenStack Platform director のインストールと使用方法』を参照してください。 ネットワークの分離、ストレージ設定、SSL 通信など、Red Hat OpenStack Platform director を使用して Red Hat OpenStack Platform エンタープライズ環境に高度な機能を設定する方法、および一般的な設定方法については、『オーバークラウドの高度なカスタマイズ』を参照してください。 Red Hat OpenStack Platform コンポーネントを手動でインストールすることもできます。『手動インストール手順』を参照してください。 |
| NFV のドキュメント | NFV の概念に関する俯瞰的な情報は、『ネットワーク機能仮想化 (NFV) の製品ガイド』を参照してください。 NFV 対応の Red Hat OpenStack Platform デプロイメントのプランニングに関する詳しい情報は、『ネットワーク機能仮想化 (NFV) のプランニングガイド』を参照してください。 |
付録A SR-IOV YAML ファイルのサンプル リンクのコピーリンクがクリップボードにコピーされました!
本項では、ネットワーク機能仮想化インフラストラクチャー (NFVi) 向けに、参考として Single Root I/O Virtualization (SR-IOV) の設定ファイルの例を示します。
以下のテンプレートは完全に設定された環境から取得したもので、NFV とは関係の無いパラメーターが含まれています。したがって、これらのパラメーターは、ご自分のデプロイメントには該当しない/適切ではない場合があります。
A.1. VLAN SR-IOV YAML ファイルのサンプル リンクのコピーリンクがクリップボードにコピーされました!
A.1.1. network-environment.yaml リンクのコピーリンクがクリップボードにコピーされました!
A.1.2. first-boot.yaml リンクのコピーリンクがクリップボードにコピーされました!
A.1.3. controller.yaml リンクのコピーリンクがクリップボードにコピーされました!
A.1.4. compute.yaml リンクのコピーリンクがクリップボードにコピーされました!
A.1.5. overcloud_deploy.sh リンクのコピーリンクがクリップボードにコピーされました!
付録B OVS-DPDK YAML ファイルのサンプル リンクのコピーリンクがクリップボードにコピーされました!
本項では、ネットワーク機能仮想化インフラストラクチャー (NFVi) 向けに、参考として Data Plane Development Kit 対応 Open vSwitch (OVS-DPDK) の設定ファイルの例を説明します。
以下のテンプレートは完全に設定された環境から取得したもので、NFV とは関係の無いパラメーターが含まれています。したがって、これらのパラメーターは、ご自分のデプロイメントには該当しない/適切ではない場合があります。
B.1. VLAN OVS-DPDK データプレーンボンディング YAML ファイルのサンプル リンクのコピーリンクがクリップボードにコピーされました!
B.1.1. first-boot.yaml リンクのコピーリンクがクリップボードにコピーされました!
B.1.2. network-environment.yaml リンクのコピーリンクがクリップボードにコピーされました!
B.1.3. controller.yaml リンクのコピーリンクがクリップボードにコピーされました!
B.1.4. compute-ovs-dpdk.yaml リンクのコピーリンクがクリップボードにコピーされました!
B.1.5. overcloud_deploy.sh リンクのコピーリンクがクリップボードにコピーされました!
B.2. VXLAN OVS-DPDK データプレーンボンディング YAML ファイルのサンプル リンクのコピーリンクがクリップボードにコピーされました!
B.2.1. first-boot.yaml リンクのコピーリンクがクリップボードにコピーされました!
B.2.2. network-environment.yaml リンクのコピーリンクがクリップボードにコピーされました!
B.2.3. controller.yaml リンクのコピーリンクがクリップボードにコピーされました!
B.2.4. compute-ovs-dpdk.yaml リンクのコピーリンクがクリップボードにコピーされました!
B.2.5. overcloud_deploy.sh リンクのコピーリンクがクリップボードにコピーされました!
付録C 同一コンピュートノード上の異なるインターフェース用 YAML ファイル リンクのコピーリンクがクリップボードにコピーされました!
本項では、同じコンピュートノードに SR-IOV および DPDK インターフェースを追加する際の参考として、YAML ファイルの例を示します。
以下のテンプレートは完全に設定された環境から取得したもので、NFV とは関係の無いパラメーターが含まれています。したがって、これらのパラメーターは、ご自分のデプロイメントには該当しない/適切ではない場合があります。
C.1. 同一コンピュートノード上の SR-IOV および DPDK YAML ファイルのサンプル リンクのコピーリンクがクリップボードにコピーされました!
本項では、参考として DPDK および SR-IOV YAML ファイルの例を示します。
C.1.1. first-boot.yaml リンクのコピーリンクがクリップボードにコピーされました!
C.1.2. network-environment.yaml リンクのコピーリンクがクリップボードにコピーされました!
C.1.3. controller.yaml リンクのコピーリンクがクリップボードにコピーされました!
C.1.4. compute.yaml リンクのコピーリンクがクリップボードにコピーされました!
C.1.5. overcloud_deploy.sh リンクのコピーリンクがクリップボードにコピーされました!
付録D Revision History リンクのコピーリンクがクリップボードにコピーされました!
| 改訂履歴 | ||
|---|---|---|
| 改訂 10.3-0 | July 31 2018 | |
| Updated network creation steps to use OSC parameters. | ||
| 改訂 10.2-0 | July 24 2018 | |
| Removed section 'Configure OVS-DPDK Composable Role'. | ||
| 改訂 10.1-0 | June 27 2018 | |
| Updates for 10zasync release with OVS 2.9 support. | ||
| 改訂 10.0-0 | April 11 2018 | |
| Updates for 10z7 release. | ||