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 割合は高すぎないようにする必要があります。

  • 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 および Mellanox 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 でプロビジョニングされているホストを除外できます。

メモ:

注: デフォルトでは、2MB のヒュージ・ページがプロビジョニングされます。1GBの巨大なページが必要な場合は、管理者が行う必要があります。

DPDK vRouter の MTU の設定と検証

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

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

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

例えば

vRouter コマンド ライン ユーティリティのリストについては、 vRouter コマンド ライン ユーティリティ を参照してください。