Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Contrail vRouter と統合されたデータ プレーン開発キット(DPDK)の設定

Contrail での DPDK サポート

Contrail Networkingは、データプレーン開発キット(DPDK)をサポートしています。DPDKは、高速パケット処理のためのライブラリとドライバーのオープンソースセットです。DPDK は、ネットワーク インターフェイス カード (NIC) がダイレクト メモリ アクセス (DMA) パケットをアプリケーションのアドレス空間に直接送信できるようにすることで、アプリケーションがパケットをポーリングできるようにすることで、高速パケット処理を可能にし、NIC からの割り込みのオーバーヘッドを回避します。

DPDK との統合により、Contrail vRouter はカーネル モジュールとして実行している場合よりも多くのパケット/秒を処理できます。

Contrail Networkingでは、DPDKを使用する前に、Ansibleベースのプロビジョニングの場合は で、Helmベースのプロビジョニングhost.yamlの場合は でDPDK設定を定義するinstances.yaml必要があります。AGENT_MODE設定では、ハイパーバイザーを DPDK モードの動作でプロビジョニングするかどうかを指定します。

Contrail コンピューティング ノードが DPDK でプロビジョニングされると、対応する yaml ファイルに、パケットの転送に使用する CPU コアの数、DPDK に割り当てるヒュージ ページの数、DPDK に使用する UIO ドライバーが指定されます。

DPDKを使用してクラスタノードをプロビジョニングするための環境ファイルの準備

環境ファイルは、DPDKを使用するようにノードを設定する必要があるかどうかなど、Contrailクラスターのインストールに必要なすべてのオプションを指定するためにプロビジョニング時に使用されます。

DPDK vRouter を使用して構成する各ノードは、DPDK ヒュージ ページのメモリの割合と使用する CPU と共に、ディクショナリ エントリとともにプロビジョニング ファイルにリストされている必要があります。

次に、サーバー構成に必要なエントリについて説明します。:

  • HUGE_PAGES- DPDK ヒュージ ページ用に予約するホスト メモリの割合を指定します。予約済みメモリは、そのホストで生成された仮想マシン(VM)にメモリリソースを割り当てるために、vRouter とクイックエミュレータ(QEMU)によって使用されます。

    メモ:

    ホストLinuxカーネルにもメモリが必要なため、割り当てる HUGE_PAGES 割合は高すぎないようにする必要があります。

    DPDKでヒュージ・ページを使用する場合は、以下のことを確認してください。

    • デフォルトでは、2MBのヒュージ・ページがプロビジョニングされます。

    • ノードに1GBの巨大ページが必要な場合は、1GBの巨大ページ設定を好みに合わせて設定し、2MBの巨大ページを無効にします。ノードが2Mの巨大ページを使用しようとしないように、変数を削除するのではなく、2Mの巨大ページ設定を0に設定することを強くお勧めします。

    • ヒュージ ページの設定は環境によって異なりますが、contrail_services.yaml ファイル内の ContrailDpdkParameters 階層で 2M のヒュージ ページを 0 に設定することで、ほとんどの環境で 2M のヒュージ ページを 0 に設定することができます。

  • CPU_CORE_MASK- vRouter を実行する CPU アフィニティ マスクを指定します。vRouter は、その実行スレッドに指定された CPU のみを使用します。これらのCPUコアは常にパケットをポーリングし、「top」の出力では100%ビジーとして表示されます。

    サポートされている形式は 16 進数 (0xf など) です。

  • DPDK_UIO_DRIVER- DPDK で使用する UIO ドライバを指定します。

    サポートされている値は次のとおりです。

    • vfio-pci- uio の代わりに Linux カーネルの vfio モジュールを使用することを指定します。SR-IOV 仮想関数が vrouter の物理インターフェイスとして使用されている場合、vfio モジュールは IOMMU を使用してメモリ アクセスを保護します。

    • uio_pci_generic- Linux カーネルに組み込まれている UIO ドライバーを使用することを指定します。このオプションでは、SR-IOV VF の使用はサポートされていません。これは、DPDK_UIO_DRIVERが指定されていない場合の既定のオプションです。

    • mlnx – Mellanox ConnectX-4 および ConnectX-5 NIC 用。

メモ:

RHEL および Intel x710 フォートビル ベースの NIC の場合は、既定のuio_pci_genericの代わりに を使用します vfio-pci

標準の Ansible または helm ベースのプロビジョニング手順を使用します。完了すると、DPDK vRouter 実装を使用する指定されたノードを含むクラスターを使用できるようになります。

ansibleベースのプロビジョニングのためのinstances.ymlの設定例

helm ベースのプロビジョニングのための host.yml での設定例

DPDKのフレーバーの作成と巨大なページの理解

DPDK 対応の vRouter ハイパーバイザーで VM を起動するには、VM のフレーバーをヒュージ ページを使用するように設定する必要があります。ヒュージ ページの使用は、DPDK vRouter を使用するための要件です。

次のコマンドを使用してフレーバーを追加します。はフレーバーの名前です。 m1.large このフレーバーを使用して VM が作成されると、OpenStack は、ヒュージ・ページが有効になっているコンピュート・ノードでのみ VM が生成されるようにします。

ヒュージ ページは、vRouter が DPDK でプロビジョニングされているコンピューティング ノードで有効になります。

ヒュージ ページが有効になっていないフレーバーを使用して VM を生成する場合は、vRouter が DPDK でプロビジョニングされているコンピューティング ノードに VM を作成しないでください。

OpenStack アベイラビリティーゾーンまたはホストアグリゲートを使用して、vRouter が DPDK でプロビジョニングされているホストを除外できます。

DPDK でヒュージ・ページを使用する場合は、以下の点に注意してください。

  • ノード上のフローテーブルのサイズは、巨大ページ構成のサイズを決定する必要があります。フローテーブルエントリが多い環境では、1GBのヒュージページを使用します。

  • デフォルトでは、2MBのヒュージ・ページがプロビジョニングされます。

  • ノードに1GBの巨大ページが必要な場合は、1GBの巨大ページ設定を好みに合わせて設定し、2Mの巨大ページを無効にします。変数を削除するのではなく、2M の巨大ページ設定を 0 に設定して、環境で 2M の巨大ページの使用を試みないようにすることを強くお勧めします。

    ヒュージ ページの設定は環境によって異なりますが、contrail_services.yaml ファイル内の ContrailDpdkParameters 階層で 2M のヒュージ ページを 0 に設定することで、ほとんどの環境で 2M のヒュージ ページを 0 に設定することができます。

DPDK vRouter の MTU の設定と検証

このセクションでは、DPDK vRouter の最大送信単位(MTU)を設定する方法について説明します。MTU を設定するには、contrail_vrouter_dpdk_bond.yaml ファイルで目的の値mtuを指定する必要があります。

ハイパーバイザーから設定された値を確認するには、次のコマンドを実行します。

vif -gまたは vif --get コマンドを使用して、DPDK vRouter のボンディング インターフェイスのステータスを表示できます。

例えば