Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

選択的動的ロードバランシング(DLB)

概要

AI-MLワークロードでは、アプリケーショントラフィックの大部分が、転送にRemote Direct Memory Access(RDMA)over Converged Ethernet version 2(RoCEv2)を使用します。動的ロードバランシング(DLB)は、RoCEv2ネットワークで効率的なロードバランシングを実現し、輻輳を防ぐのに理想的です。ただし、静的ロードバランシング(SLB)は、トラフィックの種類によってはより効果的な場合があります。 選択的 DLB を使用すると、デバイスを通過するすべてのトラフィックに対して DLB と SLB のどちらかを選択する必要がなくなります。グローバル レベルで優先する DLB モードを設定し、デフォルトのタイプのロードバランシングを設定してから、特定の種類のトラフィックに対して DLB を選択的に有効または無効にすることができます。

ロードバランシングを有効にするには、フロー単位またはパケット単位の 2 つの方法があります。フロー単位のロードバランシングは、一度に処理するパケット数が最も多いため、最も広く使用されています。デバイスは、同じ 5 タプルのパケットヘッダーを持つパケットを 1 つのフローとして分類します。デバイスは、フロー内のすべてのパケットに同じロードバランシング処理を与えます。フローベースのロードバランシングは、すべてのリンクをほぼ均等に使用するため、一般的なTCPおよびUDPトラフィックに適しています。ただし、パケット単位のロードバランシングによって一部のパケットが並べ替えられる可能性があり、パフォーマンスに影響を与える可能性があります。

多くのAIクラスターは、誤順序パケットを処理できるスマートネットワークインターフェイスカード(SmartNIC)を介してアプリケーションをネットワークに接続します。パフォーマンスを向上させるには、ネットワーク上でパケットごとのDLBを有効にします。次に、順不同のパケットを処理できるエンドポイントサーバーのみに対して DLB を有効にします。デバイスは、これらのパケットのBTH+ヘッダーにあるRDMAオペレーションコード(オペコード)をリアルタイムで確認します。任意のファイアウォールフィルターの一致条件を使用して、これらのオペコードに基づいてDLBを選択的に有効または無効にできます。他のフローは、SLB とも呼ばれるデフォルトのハッシュベースロードバランシングを引き続き使用します。

選択的DLBは、エレファントフローがデータフロー全体に対して小さすぎるリンクに遭遇した場合にも役立ちます。このシナリオでは、選択的DLBによって、データセンターファブリックにおけるリンクの利用可能な帯域幅の最適な使用量を計算できます。エレファントフローの選択的パケット単位DLBを有効にすると、アルゴリズムはパケットを最初に最高品質のリンクに誘導します。リンク品質が変化すると、アルゴリズムは後続のパケットを次に品質の高いリンクに転送します。

利点

  • 大規模なデータフローのネットワーク処理を改善します。

  • パフォーマンスを向上させるため、同じトラフィックストリーム内でパケット単位およびフロー単位のロードバランシングを使用します。

  • ファイアウォールフィルターの一致条件に基づいてロードバランシングをカスタマイズします。

構成

構成の概要

DLB を選択的に有効にするには、デフォルトで DLB を無効にし、特定のフローで DLB を選択的に有効にする方法と、DLB をグローバルに有効にして DLB を選択的に無効にする方法の 2 つがあります。いずれの場合も、最初に パケット単位モードで DLB を構成する必要があります。パケット単位は、DLB が有効になっている場所で使用される DLB モードです。同じデバイス上で同時にフロー単位およびパケット単位のモードで DLB を設定することはできません。

この機能は Flowlet モードと互換性があります。DLB がフローレット モードで設定されている場合は、オプションでこの機能を有効にすることができます。

位相幾何学

図 1 に示したトポロジーでは、DLB はデフォルトで使用不可になっています。パケット単位のモードで、Flow2 で DLB を選択的に有効にしました。表 1 は、示されている 2 つのフローのロードバランシング設定と、フローに適用されたロードバランシングの結果をまとめたものです。

表 1: フローの動作

流れる

DLB の有効性

結果

フロー1

いいえ

デバイスは、フロー単位のモードであるデフォルトのロードバランシング設定を使用します。フローは 1 つのデバイスに向けられます。

フロー2

はい

デバイスは、パケット単位の DLB 設定を使用します。デバイスは、このフローをパケットに分割します。DLB は、パケット ヘッダーの RDMA オペコードと対応するフィルターに基づいて、各パケットをパスに割り当てます。

図 1:フロー単位およびパケット単位のロードバランシング Per-Flow and Per-Packet Load Balancing

DLB をグローバルに無効にし、DLB を選択的に有効にする

DLB を必要とするパケットが非常に少ない場合は、グローバル レベルで DLB を無効にし、フローごとに選択的に有効にすることができます。

  1. DLB パケット単位モードを有効にします。フローで DLB が有効になっている場合は常に、DLB はこのモードを使用してトラフィックを誘導します。
  2. すべてのイーサネットタイプでDLBをオフにして、グローバルに無効にします。デフォルトでは、すべてのパケットがハッシュベースのロードバランシング(SLB)を取得します。
  3. BTH+ ヘッダー内の特定の RDMA オペコードと一致するようにファイアウォール フィルターを構成します。

    この例は、 rdma-opcode 10に基づいて一致します。

  4. そのファイアウォールフィルター内でパケットごとのDLBを有効にして、BTH+ヘッダーで選択したRDMAオペコードを持つパケットにのみDLBを適用します。
  5. その他のパケットは、デフォルトのロードバランシング方法である SLB を取得します。

DLB をグローバルに有効にし、DLB を選択的に無効にする

ほとんどのパケットが DLB の恩恵を受ける場合は、すべてのパケットに対してグローバル レベルで DLB を有効にし、パケットごとに選択的に無効にします。

  1. すべてのフローについて、パケット単位のモードでグローバルレベルで DLB を設定します。
  2. BTH+ ヘッダー内の特定の RDMA オペコードと一致するようにファイアウォール フィルターを構成します。

    この例は、 rdma-opcode 10に基づいて一致します。

  3. BTH+ヘッダーに選択したRDMAオペコードを持つパケットについて、そのファイアウォールフィルター内でパケットごとのDLBを無効にします。
  4. その他のパケットは、デフォルトのロードバランシング方式である DLB を取得します。

検証

次のコマンドを使用して、DLBが想定どおりに有効になっていることを確認します。

例:ファイアウォールフィルター一致条件でDLBを選択的に有効にする

選択的 DLB の利点の 1 つは、ファイアウォール フィルターの一致条件に基づいてロードバランシングをカスタマイズできることです。この例では、RDMA キューペアに一致するファイアウォールフィルターに基づいて DLB を有効にする方法を示しています。この例では、パケット並べ替えをサポートするネットワーク インターフェイス カード(NIC)で終端するフローに対してのみ、パケット単位の DLB を有効にする場合に使用します。

アプリケーション トラフィックのトランスポートに RoCEv2 を使用するネットワークでは、RDMA 接続は送信キューでトラフィックを送信し、受信キューでトラフィックを受信します。これらのキューは、RDMA 接続を形成します。送信キューと受信キューを合わせて、キュー ペアと呼びます。各キュー ペアには、識別可能なプレフィックスがあります。この例では、キュー ペア プレフィックスを使用して、DLB が有効になるタイミングを制御します。

この例は、QFX5240-64QDスイッチで設定されています。

  1. 特定の RDMA 宛先キュー・ペア宛てのパケットを照合するためのユーザー定義フィールドをファイアウォールに作成します。パケットの並べ替えが可能な NIC で終端することがわかっているキュー ペアを選択します。
    このファイアウォールフィルターを sDLBと名付けました。条件 QP-match は、以下の特性を持つ宛先キュー ペアを持つ着信パケットに一致します。
  2. ファイアウォール フィルターを設定して、フィルターに一致するキュー ペアでパケットごとの DLB を有効にします。
    キューペアが一致しない場合、デバイスはそのパケットにデフォルトのロードバランシングタイプのSLBを使用します。
  3. 一致するたびに増加するカウンターを構成します。
    カウンタは、DLB でロード バランシングされたパケットの数を QP-match-count 追跡します。この情報は、トラブルシューティング時に使用できます。
  4. 該当するインターフェイスでファイアウォールフィルターを有効にします。
  5. ファイアウォールフィルターの条件が、デバイスを通過するパケットで一致していることを確認します。
    QP-match-countカウンターは、ファイアウォールフィルターがDLBでロードバランシングリダイレクトしたバイト数とパケット数を示します。

プラットフォームのサポート

プラットフォームとリリースのサポートについては 、Feature Explorer を参照してください。