第1章 InfiniBand および RDMA について

InfiniBand は、以下の 2 つを指します。

  • InfiniBand ネットワーク用の物理リンク層プロトコル
  • リモートダイレクトメモリーアクセス (RDMA) テクノロジーの実装である InfiniBand Verbs API

RDMA は、どちらのコンピューターのオペレーティングシステムも必要とせずに、あるコンピューターから別のコンピューターのメモリーへのアクセスを提供します。このテクノロジーにより、CPU 使用量が低く、高スループットおよび低レイテンシーのネットワークが可能になります。

通常の IP データ転送では、あるマシンのアプリケーションが別のマシンのアプリケーションにデータを送信すると、受信側で次のことが起こります。

  1. カーネルがデータを受信する必要がある。
  2. カーネルが、データがアプリケーションに属するかどうかを判別する必要がある。
  3. カーネルは、アプリケーションを起動する。
  4. カーネルは、アプリケーションがカーネルへのシステムコールを実行するまで待機する。
  5. アプリケーションは、データをカーネルの内部メモリー領域から、アプリケーションが提供するバッファーにコピーする。

このプロセスは、ホストアダプターがダイレクトメモリーアクセス (DMA) を使用する場合にはシステムのメインメモリーにほとんどのネットワークトラフィックをコピーするか、または少なくとも 2 回コピーされることを意味します。また、コンピューターは数多くのコンテキストスイッチを実行して、カーネルとアプリケーションコンテキストを切り替えます。どちらのコンテキストスイッチも、トラフィック速度が速くなると CPU 負荷が高くなり、他のタスクが遅くなる可能性があります。

RDMA 通信は、通常の IP 通信とは異なり、通信プロセスでのカーネルの介入を回避します。これにより、CPU のオーバーヘッドが軽減されます。RDMA プロトコルにより、ホストアダプターは、ネットワークからパケットを受信するタイミング、受信するアプリケーション、およびアプリケーションのメモリー領域内でパケットを保存する場所を認識できます。パケットをカーネルに送信して処理される代わりに、InfiniBand でユーザーアプリケーションのメモリーにコピーする代わりに、ホストアダプターはパケットの内容をアプリケーションのバッファーに直接保存します。このプロセスでは、RDMA を使用する前に、個別の API、InfiniBand Verbs API、およびアプリケーションがこの API に対応している必要があります。

Red Hat Enterprise Linux 8 は、InfiniBand ハードウェアと InfiniBand Verbs API の両方に対応しています。また、Red Hat Enterprise Linux は、InfiniBand 以外のハードウェアで InfiniBand Verbs API を使用できるようにする以下のテクノロジーに対応しています。

  • iWARP (Internet Wide Area RDMA Protocol) - IP ネットワーク上で RDMA を実装するネットワークプロトコル。
  • RoCE (RDMA over Converged Ethernet) (IBoE (InfiniBand over Ethernet) とも呼ばれます) - RDMA over Ethernet ネットワークを実装するネットワークプロトコル。

関連情報

  • RoCE のソフトウェア実装の設定に関する詳細は、2章RoCE の設定 を参照してください。