第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 を参照してください。