RDMAとは ~高速化技術とクラウド 第7回~
ネットワーク処理高速化技術の一つであるRDMA(Remote Direct Memory Access)について解説します。
テクノロジーコラム
- 2024年07月17日公開
NTTテクノクロスの山下です。高速なデータ転送を実現するための通信技術の1つに、RDMA(Remote Direct Memory Access)というものがあります。
今回からRDMA技術について連載予定です。初回の本記事では、RDMAの基本的な概念とその利点について解説します。
RDMA概要
1.1 RDMAとは何か?
1.2 RDMAの仕組み
RDMAは、ネットワーク上でのデータ転送に特化したプロトコルやハードウェアを使用し、データを送信する側と受信する側の間で直接メモリのアドレスを交換することで、データを転送します。
RDMAの仕組みは、以下のようになっています。
①データ送信元のアプリケーションは、RDMA API(verbs)を使用してデータを送信します。このAPIは、データの送信元と送信先のメモリアドレスを指定することができます。プロトコル処理はカーネルをバイパスされてNICで実行されます。ここは同じくカーネルバイパスするDPDK(Data Plane Development Kit)と似ています。
②ネットワーク上はRDMA対応ネットワークカード(NIC)間で送受信が実行されます。ネットワーク間はFiberChannelあるいはEthernetが利用されます。プロトコルに関しては後ほど、もう少し詳しく解説します
③データ受信先のアプリケーションもRDMA APIを使用して、データを受信するためのバッファを準備します。データ送信元のNICは、RDMAの命令を使用してデータを送信します。この際、NICはデータを直接送信先のメモリに書き込むことができます。この際もCPUの介入は必要ありません。送信時と同様にカーネルでのプロトコル処理がバイパスされます。
このように、RDMAではデータの転送にCPUを介さずに直接メモリ間で行うため、高速なデータ転送が可能となります。また、RDMAは低遅延でのデータ転送も実現できるため、リアルタイム性の要求があるアプリケーションにも適しています。
RDMAの利点
2.1 高速なデータ転送
RDMAは、CPUを介さずに直接メモリにアクセスするため、高速なデータ転送が可能です。
これにより、遅延やボトルネックの問題を解決し、高性能なアプリケーションやシステムを実現できます。
2.2 低いCPU使用率
RDMAは、データ転送においてCPUの負荷を軽減します。
CPUはデータ転送に関与せず、他の処理にリソースを割り当てることができます。
2.3 低いネットワーク遅延
RDMAは、ネットワーク遅延を最小限に抑えることができます。データ転送において、ネットワークのプロトコルや処理のオーバーヘッドが少ないため、高速な通信が可能です。
CPUがメモリとデバイスの間でデータ転送に介在していても遅延が気にならないほどネットワーク帯域が遅かった時代もありました。しかし、現代ではひと昔前に比べてネットワーク帯域が飛躍的に増大しています。CPU自体の性能もひと昔前に比べて向上していますが、処理すべきネットワークトラフィック量の増大に追いついてはいません。このことから、CPUがデータの読み書きをすること自体が遅延につながり、システム性能のボトルネックになりえます。
上記により、RDMAを活用しCPUを経由せずにデータ転送処理を行う事で、低遅延のデータ転送が実現できます
RDMAの適用事例
3.1 データセンターの高速ネットワーク
RDMAは、データセンター内のサーバー間通信において広く利用されています。高速なデータ転送と低い遅延を実現し、大量のデータを効率的に処理することができます。
膨大なデータに対して複雑な処理を高速で実行するHPC(ハイパフォーマンスコンピューティング)という言葉を聞いたことがあるでしょうか?そのような分野でもRDMAは利用されます。2021年,2022年と世界一位の性能をたたき出したスーパーコンピュータである「富岳」のノード間通信にもRDMAの技術が利用されています。
3.2 ストレージネットワーク
RDMAを実現するプロトコル
以下では、RDMAを実現するプロトコルについて紹介します。
その1 InfiniBandプロトコル
InfiniBand仕様は、IBTA(InfiniBand Trade Association)という業界団体が仕様を定めています。
RDMAは、InfiniBandの重要な機能の一つであり、データを直接メモリ間で転送する役割を果たしています。InfiniBandプロトコルは、イーサネット上では動作しません。リンクレイヤより上位のプロトコルはInfiniBand独自です。NICもスイッチもInfiniBand仕様に特化しているため、一般的に高価で、既存のイーサネットとは互換性はありませんが非常に高速なネットワーク伝送と低遅延を実現します。InfiniBandは、高性能コンピューティングやデータセンターなどの分野で使用されています。
その2 iWARP(Internet Wide Area RDMA Protocol)
InfiniBandの利点は高速通信と低遅延ですが、イーサネット上で動作しないという難点があります。これを克服するため、イーサネット上でRDMAを動作させるプロトコルがIETF(Internet Engineering Task Force)によって策定されました。それがiWARP(Internet Wide Area RDMA Protocol)です。iWARPでは高速なRDMA over TCPが実現されます。いわば、InfiniBandをイーサネット上で実現しようとしたのがiWARPといえます。ただしInfiniBand仕様で定めるアトミック動作(注)など、多くの仕様の実現は省略されています。
注:アトミック操作は、平たく言うとアドレス上の処理で競合を発生させないようにする操作です。
その3 RoCE(RDMA over Converged Ethernet)
RoCE(RDMA over Converged Ethernet, ロッキーと呼びます)は、先に述べたIWARPの後継プロトコルです。イーサネット上でのRDMAを実現するためのプロトコルです。IBTAによって策定されました。
RoCEにはRoCEv1とRoCEv2があり、RoCEv1はイーサネット上のリンクプロトコル、RoCEv2はインターネット層上のプロトコルとなっています。iWARPではTCP/IP通信をサポートしていましたが、RoCEv2ではUDP/IP通信をサポートしています。iWARPよりも高速・低遅延を実現するRoCEは高いコスト効率、高性能、低遅延を実現しています。
3つのプロトコルのスタック構造比較
3つのプロトコルスタックの比較
InfiniBandとiWARP,RoCEは、それぞれ異なるプロトコルを使用してデータの転送を行います。以下に、各プロトコルのメリット・デメリットを示します。
プロトコル名 | 策定団体 | メリット | デメリット |
InfiniBand | IBTA | ・iWARPやRoCEと比較した場合にも、最も高速・CPU負荷軽減・低遅延 |
・イーサネットとの互換性がないIBTA独自仕様の為、専用NICや専用スイッチ等を必要であり、一般的に高価 |
iWARP | IETF |
・イーサネットとの互換性がある ・TCP/IPの再送等の機能を利用するためロスレスイーサネットを必要としない |
・NICがiWARP対応している必要がある ・UDP/IPが利用できない ・InfiniBandの一部機能のみ実装している(実装が省略されている操作がある) |
RoCE | IBTA |
・イーサネットとの互換性がある ・UDP/IPの利用が可能(RoCEv2) |
・IBTA独自仕様 ・RoCEv2の場合は、UDPベースのためData Center Bridging (DCB)やDCQCN等の機能を用いたロスレスイーサネットを必要とする |
まとめ
RDMA(Remote Direct Memory Access)について解説しました。RDMAを利用することによりネットワークをまたがった複数のコンピューター間で高速・低遅延な通信を実現することができます。RDMAを実現するプロトコルは主に3種類存在しますが特徴が異なりますので、利用用途に応じて使い分けをしていく必要があります。次回記事では、ネットワーク高速化技術のDPDK(Data Plane Development Kit)との比較を行います。
[著者プロフィール]
フューチャーネットワーク事業部 第二ビジネスユニット
山下 英之(YAMASHITA HIDEYUKI)