vSphere 6.5 以降では、準仮想化 RDMA(PVRDMA) ネットワーク アダプタを搭載した仮想マシン間で、リモート ダイレクト メモリ アクセス (RDMA) 通信がサポートされます。

RDMA の概要

RDMA を使用すると、一方のコンピュータのメモリからもう一方のコンピュータのメモリに、オペレーティング システムや CPU を介さずに直接アクセスすることができます。メモリの転送は、RDMA 対応のホスト チャネル アダプタ (HCA) にオフロードされます。PVRDMA ネットワーク アダプタは、仮想環境におけるリモート ダイレクト メモリ アクセスを実現します。

vSphere における RDMA

vSphere では、仮想マシンが PVRDMA ネットワーク アダプタを使用して、PVRDMA デバイスを持つ他の仮想マシンと通信することができます。これらの仮想マシンは、同じ vSphere Distributed Switch に接続されている必要があります。

仮想マシン間の通信方法は、PVRDMA デバイスによって自動的に選択されます。物理 RDMA デバイスの有無にかかわらず、同じESXiホスト上で稼働する仮想マシンでは、2 台の仮想マシン間の memcpy によってデータ転送が行われます。この場合、物理 RDMA ハードウェアは使用されません。

仮想マシンがそれぞれ異なるESXiホスト上に存在し、いずれも物理 RDMA 接続を備えている場合、物理 RDMA デバイスは、分散スイッチ上のアップリンクであることが必要です。この場合、PVRDMA を使った仮想マシン間の通信には、基盤となる物理 RDMA デバイスが使用されます。

2 台の仮想マシンがそれぞれ異なる ESXiホスト上に存在し、物理 RDMA デバイスを持たない ホストが 1 つでも存在する場合は、通信が TCP ベースのチャネルにフォールバックされ、パフォーマンスが低下します。

仮想マシンへの PVRDMA アダプタの割り当て

仮想マシンが RDMA を使用してデータをやり取りできるようにするには、その仮想マシンを PVRDMA ネットワーク アダプタに関連付ける必要があります。

vSphere 7.0.2 以降を使用する場合は、最大 10 個の PVRDMA ネットワーク アダプタを仮想マシンに追加できます。

前提条件

  • 仮想マシンが実行されているホストが RDMA 用に構成されていることを確認します。PVRDMA 用に ESXi ホストを構成を参照してください。
  • ホストが vSphere Distributed Switch に接続されていることを確認します。
  • 仮想マシンで仮想ハードウェア バージョン 13 以降が使用されていることを確認します。
  • ゲスト OS が Linux 64 ビット ディストリビューションであることを確認します。

手順

  1. vSphere Clientで仮想マシンを探します。
    1. データセンター、フォルダ、クラスタ、リソース プール、またはホストを選択し、[仮想マシン] タブをクリックします。
    2. [仮想マシン] をクリックしてリスト内の仮想マシンをクリックします。
  2. 仮想マシンをパワーオフします。
  3. アクション メニューから [設定の編集] を選択します。
  4. 設定内容を表示するダイアログ ボックスで [仮想ハードウェア] タブを選択します。
  5. [新規デバイスを追加] ドロップダウン メニューから [ネットワーク アダプタ] を選択します。
    [仮想ハードウェア] タブのリストに [新規ネットワーク] セクションが追加されます。
  6. [新規ネットワーク] セクションを展開して、仮想マシンを分散ポート グループに接続します。
  7. [アダプタ タイプ] ドロップダウン メニューから [PVRDMA] を選択します。
  8. [メモリ] セクションを展開し、[すべてのゲスト メモリを予約 (すべてロック)] を選択して、[OK] をクリックします
  9. 仮想マシンをパワーオンします。

PVRDMA ネイティブ エンドポイントを使用する仮想マシンの構成

PVRDMA ネイティブ エンドポイントは、高度な仮想マシン構成として使用できます。

PVRDMA ネイティブ エンドポイントは、vSphere 7.0 Update 1 以降のリリースから、仮想マシン ハードウェアバージョン 18 以降でサポートされています。PVRDMA ネイティブ エンドポイントを使用するには、PVRDMA 名前空間を有効にする必要があります。環境の特定のハードウェアで PVRDMA 名前空間を有効にする方法については、ベンダーのドキュメントを参照してください。

vSphere Client を使用して、ネイティブ エンドポイントを構成したり、仮想マシンの VMX ファイルを編集したりできます。VMX ファイルを直接編集する場合は、パラメータ vrdmax.nativeEndpointSupport = "TRUE" を追加します。x は、PVRDMA アダプタのインデックスです。次の手順では、vSphere Client を使用してネイティブ エンドポイントを構成します。

前提条件

環境で PVRDMA がサポートされていることを確認します。PVRDMA サポートを参照してください。

手順

  1. vSphere Client で、仮想マシンを参照して移動します。
    1. データセンター、フォルダ、クラスタ、リソース プール、またはホストを選択して、仮想マシンを検索します。
    2. [仮想マシン] タブをクリックします。
  2. 仮想マシンを右クリックし、[設定の編集] を選択します。
  3. [仮想マシン オプション] をクリックします。
  4. [詳細] を展開します。
  5. [構成パラメータ] の [構成の編集] ボタンをクリックします。
  6. 表示されるダイアログ ボックスで [行の追加] をクリックして、新しいパラメータとその値を入力します。
  7. パラメータ vrdmax.nativeEndpointSupport を入力し(x は PVRDMA アダプタのインデックス)、値を TRUE に設定します。
    インデックス x は、PVRDMA アダプタの値から 1 を差し引いた値になります。たとえば、ネイティブ エンドポイントを有効にするのに使用する PVRDMA アダプタのラベルが「Network Adapter 2」の場合、インデックスは 1 になります。

PVRDMA 非同期モードを使用する仮想マシンの構成

PVRDMA 非同期モードを使用するように仮想マシンを構成する方法について説明します。これは、高度な仮想マシン構成として利用できます。

PVRDMA 非同期モードは、vSphere 8.0 以降で実行されている仮想マシンで使用できます。非同期モードでは、仮想マシンで実行される RDMA ワークロードのスループットと遅延が改善する可能性があります。非同期モードを有効にすると、ホストの CPU 使用量が増加する可能性があります。非同期モードを使用するときは、仮想マシンの遅延感度を高くするように構成することを推奨します。

前提条件

環境で PVRDMA がサポートされていることを確認します。PVRDMA サポートを参照してください。

手順

  1. vSphere Clientで仮想マシンを探します。
    1. データセンター、フォルダ、クラスタ、リソース プール、またはホストを選択し、[仮想マシン] タブをクリックします。
    2. [仮想マシン] をクリックしてリスト内の仮想マシンをクリックします。
  2. 仮想マシンを右クリックし、[設定の編集] を選択します。
  3. [仮想マシン オプション] をクリックします。
  4. [詳細] を展開します。
  5. [構成パラメータ] の [構成の編集] ボタンをクリックします。
  6. 表示されるダイアログ ボックスで [行の追加] をクリックして、新しいパラメータとその値を入力します。
  7. パラメータ vrdma.asyncMode を入力し、値を TRUE. に設定します。

RDMA over Converged Ethernet のネットワーク要件

RDMA over Converged Ethernet により、イーサネット ネットワーク経由の低遅延、軽量、および高スループット RDMA 通信が実現します。RoCE には、レイヤー 2 のみ、またはレイヤー 2 とレイヤー 3 の両方で、ロスレス情報トラフィック用に構成されたネットワークが必要です。

RDMA over Converged Ethernet (RoCE) は、RDMA を使用して、ネットワークに負荷のかかるアプリケーションに対して高速データ転送を提供するネットワーク プロトコルです。RoCE を使用すると、ホスト間のメモリ転送を、ホストの CPU を使用せずに直接行うことができます。

RoCE プロトコルには 2 つのバージョンがあります。RoCE v1 は、リンク ネットワーク レイヤー(レイヤー 2)で動作します。RoCE v2 は、インターネット ネットワーク レイヤー(レイヤー 3)で動作します。RoCE v1 と RoCE v2 の両方に、ロスレス ネットワーク構成が必要です。RoCE v1 にはロスレス レイヤー 2 ネットワークが必要です。また、RoCE v2 では、レイヤー 2 とレイヤー 3 の両方が、ロスレス操作に対して構成されている必要があります。

ロスレス レイヤー 2 ネットワーク

ロスレス レイヤー 2 環境を確保するには、トラフィック フローを制御できなければなりません。フロー制御は、ネットワーク全体でグローバル一時停止を有効にするか、Data Center Bridging (DCB) グループで定義された PFC (Priority Flow Control) プロトコルを使用することで実現します。PFC は、サービス クラス フィールド 802.1Q VLAN タグを使用して、トラフィックの優先順位を個別に設定するレイヤー 2 プロトコルです。このプロトコルは、個別のサービス クラスの優先順位に従って、レシーバに対するパケット転送を一時停止します。この方法で、1 つのリンクが、ロスレス RoCE トラフィックと、損失の多いベストエフォート トラフィックの両方を伝送します。トラフィック フローの輻輳により、損失が多い重要なトラフィックが影響を受ける場合があります。フローを相互に切り離すには、PFC 優先順位対応 VLAN で RoCE を使用します。

ロスレス レイヤー 3 ネットワーク

RoCE v2 では、レイヤー 3 のルーティング デバイスでロスレス データ転送を保持する必要があります。レイヤー 3 ルーターでレイヤー 2 PFC ロスレス優先順位の転送を有効にするには、パケットの受信優先順位の設定が、レイヤー 3 の対応する Differentiated Serviced Code Point (DSCP) QoS 設定にマッピングされるように、ルーターを構成します。転送された RDMA パケットは、レイヤー 3 DSCP または レイヤー 2 Priority Code Point (PCP)、あるいはその両方でマークされます。優先順位情報をパケット ルーターから抽出するには、DSCP または PCP を使用します。PCP を使用する場合、パケットには VLAN タグが必要です。ルーターは、このタグの PCP ビットをコピーして、次のネットワークに転送します。パケットが DSCP でマークされている場合、ルーターは、DSCP ビットをそのままにしておく必要があります。

RoCE v1 と同様、RoCE v2 も、PFC 優先順位対応 VLAN で実行する必要があります。

注: NIC で RDMA を使用する場合は、RoCE NIC をグループにまとめないでください。

ベンダー固有の構成情報については、各デバイスまたはスイッチ ベンダーの公式ドキュメントを参照してください。