第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 用インスタンスがデプロイされました。