RDMAを使用してロスレス・ネットワークを構築する方法とは？

<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">RDMAとロスレス・ネットワークの領域を掘り下げると、よく2つの基本的な疑問に遭遇します。なぜロスレス・ネットワークの採用が重要なのか？これらの最先端テクノロジーはどのような利点をもたらしますか?</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">このような問い合わせにネットワークの観点だけで対応するのは難しいかもしれません。しかし、FSの技術専門家は、フロントエンド・ビジネスとバックエンド・アプリケーションの両方の観点から、実例紹介を通じて洞察を提供する用意があります。</p>
<h2 class="tit_one community_blog_detail_tit_one">なぜロスレス・ネットワークが必要なのか？</h2>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">検索、ショッピング、ライブストリーミングなど、広大なオンラインビジネスの領域では、高頻度のユーザーリクエストへの迅速な対応が不可欠です。データセンターのどこかで発生するわずかな遅延は、ユーザーエクスペリエンスに大きな影響を与え、ウェブサイトのトラフィック、評判、アクティブユーザーなどの要素に影響を与えます。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">さらに、機械学習やAI技術のトレンドが急上昇するにつれ、計算能力に対する需要も急増しています。複雑なニューラルネットワークやディープラーニングモデルの複雑な要件に対応するため、データセンターは多数の分散コンピューティングクラスターを導入しています。しかし、大規模な並列プログラムに固有の通信待ち時間は、全体的な計算効率を大幅に阻害する可能性があります。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">データセンター内で急増するデータの保存と取得における効率の課題に対処するため、イーサネット・コンバージェンスを使用した分散ストレージ・ネットワークの人気が高まっています。ただし、データフローが主にエレファントフローによって特徴付けられるストレージ・ネットワークでは、輻輳によるパケット損失がこれらの大規模なフローの再送信を引き起こし、効率が低下して輻輳が悪化する可能性があります。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">フロントエンドのユーザー・エクスペリエンスとバックエンド・アプリケーションの効率性の両方の観点から、データセンター・ネットワークの現在の前提条件は明らかです。つまり、遅延が短いほど優れており、効率が高いことが最も重要です。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">内部ネットワークの遅延を軽減し、データセンターの処理効率を向上させるために、RDMAテクノロジーが登場しました。RDMAは、複数のメモリコピーにCPUを関与させることなく、ユーザーレベルのアプリケーションがリモートメモリに対して直接読み書きできるようにするため、カーネルをバイパスし、データをネットワークカードに直接書き込みます。これにより、高スループット、超低遅延、最小限のCPUオーバーヘッドが実現します。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">現在、イーサネット上のRDMAのトランスポート・プロトコルはRoCEv2（RDMA over Converged Ethernet v2）です。RoCEv2は、UDP（ユーザー・データグラム・プロトコル）に基づくコネクションレス型プロトコルで、コネクション型のTCP（伝送制御プロトコル）に比べて高速で、消費するCPUリソースが少なくなります。ただし、TCPに固有のスライディング・ウィンドウや確認応答などのメカニズムが欠けているため、課題が生じます。パケット損失が発生した場合、上位層アプリケーションは再送信を検出して開始する必要があり、RDMA送信の効率が低下する可能性があります。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">RDMAの真のパフォーマンスを解放し、データセンター内の大規模分散システムにおけるネットワーク・パフォーマンスのボトルネックを克服するには、RDMAに特化したロスレス・ネットワーク環境を確立することが不可欠です。ロスレス伝送を実現する鍵は、ネットワークの輻輳に効果的に対処することにあります。</p>
<h2 class="tit_one community_blog_detail_tit_one">RDMAとは？</h2>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">RDMA（リモート・ダイレクト・メモリ・アクセス）は、ネットワーク転送中のサーバー側のデータ処理に伴う遅延を軽減するために作られた高度なテクノロジです。</p>
<p><img title="hpc" src="https://media.fs.com/images/community/erp/JfxE6_output-1mpRw8.png" alt="hpc" width="100%" /></p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">2つのサーバー上のアプリケーション間でデータを転送する従来のモードでは、プロセスは次のように展開されます:</p>
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>データはアプリケーション・キャッシュからカーネル内のTCPプロトコル・スタック・キャッシュにコピーされます。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>その後、ドライバー層にコピーされます。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>最後に、NIC（ネットワーク・インターフェイス・カード）キャッシュにコピーされます。</p>
</li>
</ul>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">複数のメモリコピーではCPUの介入が必要となり、処理遅延が大幅に増加し、多くの場合、数十マイクロ秒にまで延長されます。さらに、このプロセス全体にわたる広範なCPUの関与により、かなりの量のCPUパフォーマンスが消費され、通常のデータ計算に影響を与える可能性があります。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">RDMAモードに入ります。このモードでは、アプリケーション・データがカーネル・プロトコル・スタックを回避し、ネットワーク・カードに直接書き込まれることができます。このアプローチは、次のような注目すべき利点をもたらします:</p>
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>処理遅延が数十マイクロ秒から1マイクロ秒以内に大幅に短縮されました。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>プロセス全体を通じてCPUの関与が最小限に抑えられ、パフォーマンスが節約されます。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>強化された伝送帯域幅。</p>
</li>
</ul>
<h2 class="tit_one community_blog_detail_tit_one">RDMAはネットワークに何を要求するのか？</h2>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">RDMA は、高性能コンピューティング、ビッグデータ分析、および同時実行性の高いI/Oシナリオでの応用が増加しています。iSICI、SAN、Ceph、MPI、Hadoop、Spark、Tensorflowなどのテクノロジーは、運用にRDMAを採用しています。エンドツーエンド伝送をサポートする基盤となるネットワークの場合、最も重要な指標は低遅延（マイクロ秒単位）と無損失性です。</p>
<h3 class="new_community_detaile_section_h3 new_community_detaile_section_h3_1">低レイテンシー</h3>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">ネットワーク転送遅延は主にデバイスノードで発生します（光電気伝送遅延とデータ シリアル化遅延を除く）。デバイス転送遅延には3つの主要な部分が含まれます:</p>
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>ストレージ転送の遅延: チップの転送パイプライン処理遅延により、ホップごとに約1マイクロ秒のチップ処理遅延が発生します（業界では、カットスルーモードの使用を試みて、シングルホップの遅延を約0.3マイクロ秒に削減することを目指しています）。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>バッファーキャッシュのレイテンシー: ネットワークが輻輳している状況では、パケットは転送前にバッファリングされます。バッファが大きいほど、パケットがキャッシュされる時間が長くなり、レイテンシーが長くなります。RDMA ネットワークの場合、最適なバッファ サイズの選択が重要ですが、バッファが大きいほど必ずしも優れているわけではありません。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>再送信レイテンシー: RDMAネットワークは、パケット損失を防ぐためにさまざまな技術を活用しています。</p>
</li>
</ul>
<h3 class="new_community_detaile_section_h3 new_community_detaile_section_h3_1">ロスレス・ネットワーク</h3>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">RDMAはロスレス状態でフルレート伝送を実現しますが、パケット損失や再伝送が発生するとパフォーマンスが急激に低下します。従来のネットワークモードでは、大きなバッファがロスレスを実現するための主な手段です。ただし、前述したように、これは低遅延の要件と矛盾します。RDMAネットワーク環境では、より小さなバッファでロスレスを実現することが目的です。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">この制約内で、RDMAは主にPFC（優先フロー制御）と ECN（明示的輻輳通知）に基づくネットワークフロー制御技術を通じてロスレス性を実現します。</p>
<h2 class="tit_one community_blog_detail_tit_one">ロスレスRDMAネットワークを実現するキーテクノロジー: PFC</h2>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">優先度ベースのフロー制御（PFC）は、優先度レベルで動作するキューベースのバックプレッシャー・メカニズムです。一時停止フレームを送信し、上流のデバイスにパケット送信を停止するよう信号を送信することで、バッファ・オーバーフローとパケット損失を防ぎます。</p>
<p><img title="rdma" src="https://media.fs.com/images/community/erp/W5Dbx_output-2mQFc7.jpg" alt="rdma" width="100%" /></p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">PFCを使用すると、他のトラフィックに影響を与えることなく、特定の仮想チャネルを個別に一時停止および再開できます。図示のシナリオでは、キュー7のバッファ消費量が設定されたPFCフロー制御しきい値に達すると、次のようになります:</p>
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>ローカルスイッチは、アップストリームでPFC一時停止フレームの送信を開始します。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>Pauseフレームを受信した上流装置は、そのキューからのパケット送信を一時的に停止します。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>アップストリーム・デバイスのバッファもしきい値に達すると、アップストリームにバックプレッシャーを適用するためにポーズ・フレームをトリガーし続けます。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>最終的に、データパケット損失の回避は、優先キューの送信速度を下げることによって達成されます。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>バッファ占有率が回復しきい値を下回ると、PFC 解放フレームが送信されます。</p>
</li>
</ul>
<h2 class="tit_one community_blog_detail_tit_one">ロスレスRDMAネットワークを実現するキーテクノロジー: ECN</h2>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">明示的輻輳通知（ECN）は確立されたテクノロジーであり、以前はあまり普及していませんでしたが、現在ではホスト間で広く採用されています。.</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">ECNは、ネットワークデバイスの出力ポートで輻輳が発生し、ECNしきい値を超えた場合に、IPヘッダーのECNフィールドを使用してパケットにマーキングを埋め込むことによって動作します。このマーキングは、パケットがネットワークの輻輳に遭遇したことを示すものとして機能します。パケット内のECNマーキングを識別すると、受信側サーバーは直ちに輻輳通知パケット（CNP）を生成し、送信元サーバーに送り返します。このCNPには、輻輳の原因となるフローに関する情報が含まれています。CNPを受信すると、ソースサーバーは対応するフローの送信レートを調整し、ネットワークの混雑を緩和し、パケット損失を防ぎます。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">前述したように、PFCおよびECNを介したエンドツーエンドのロスレス伝送を実現するには、個別のしきい値を設定する必要があります。これらのしきい値を正確に設定するには、スイッチのバッファ管理に対処する、スイッチのメモリ管理ユニット（MMU）の細心の注意が必要です。</p>
<h2 class="tit_one community_blog_detail_tit_one">結論: RDMAネットワークにおけるロスレス伝送の実現</h2>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">RDMAネットワークは、PFCおよびECN機能の展開を通じてロスレス伝送を実現します。PFC テクノロジーは、リンク上のRDMA固有のキュー・トラフィックを制御し、スイッチの入力ポートでの輻輳中にアップストリーム・デバイスにバックプレッシャーを適用します。ECNテクノロジーを使用すると、出力ポートでの輻輳中にパケットにマークを付け、送信側に送信速度の低下を促すことで、エンドツーエンドの輻輳制御が実現されます。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">ECNとPFCのバッファしきい値を調整することで最適なネットワーク・パフォーマンスが実現され、PFCよりもECNのトリガーが速くなります。これにより、ネットワークはフルスピードのデータ転送を維持しながら、サーバーの送信速度を積極的に下げて輻輳に対処できるようになります。問題が解決しない場合、PFCの使用率が低下し、上流のスイッチからのパケット送信が一時停止され、パケット損失なしでネットワーク・スループットが低下する可能性があります。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">データセンター・ネットワークにRDMAを導入するには、ロスレス・ネットワーク伝送の需要に対処する必要があります。レイテンシーやパケット損失に敏感なネットワーク環境の要件を満たすには、きめ細かい運用とメンテナンスに重点を置くことが重要になります。PFCストーム、デッドロックの問題、多層ネットワークにおける複雑なECNしきい値設計などの課題にもかかわらず、FSの研究開発チームは強化されたサービスの提供に尽力し、高レベルの信頼性を維持しながらお客様に最適なソリューションを提供することに重点を置いています。FSは、<a href="https://www.fs.com/jp/c/nvidiar-infiniband-switches-4156" target="_blank" rel="noopener">NVIDIA® InfiniBandスイッチ</a>、<a href="https://www.fs.com/jp/c/infiniband-ethernet-2875" target="_blank" rel="noopener">100G/200G/400G/800G</a> InfiniBandトランシーバー、<a href="https://www.fs.com/jp/c/nvidiar-infiniband-adapters-4173" target="_blank" rel="noopener">NVIDIA® InfiniBandアダプタ</a>などの幅広い製品を提供し、通信および高速ネットワーク・システム・ソリューションのプロフェッショナル・プロバイダーになることに尽力しています。</p>