Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

ジュニパーRDMA対応ロードバランシング(LB)およびBGP-DPF - GPUバックエンドファブリックIPサービス

このセクションでは、トラフィックの輻輳に対処し、バックエンドGPUファブリック内の負荷分散を最適化するために採用される戦略について説明します。

混雑管理と混雑制御の設定

DCQCN(Data Center Quantized Congestion Notification)アプローチを使用して輻輳管理と輻輳制御が実装され、トラフィックの公平性を確保し、ロスレスファブリック全体の安定性を維持します。

AIクラスターは、頻繁なエレファントフローと最小限のフロー変動を特徴とする、高密度低エントロピーのトラフィックパターンにより、ネットワークインフラストラクチャに独自の要求を課します。さらに、ほとんどのAIトレーニングワークロードでは、中断のないロスレスパケット配信を正常に完了する必要があります。したがって、AIトラフィックフロー用のネットワークインフラストラクチャを設計する場合、ロスレス運用を確保しながら、スループットの最大化遅延の最小化、ネットワーク干渉の最小化が主な目的となります。このような要件には、効果的な混雑制御メカニズムの導入が必要です。

DCQCN(Data Center Quantized Congestion Notification) は、 RoCEv2 環境におけるエンドツーエンドの混雑制御のための業界標準的な方法となっています。DCQCNは、パケットのドロップに頼らずに輻輳イベントに応じてトラフィックレートを調整するメカニズムを提供し、トラフィックレートの削減と継続的なトラフィックフローの維持のバランスをとっています。

DCQCNは、主にAIワークロードトラフィックの大部分が存在する GPUバックエンドファブリックで必要であることに注意することが重要です。フロントエンドおよびストレージバックエンドファブリックでは一般的に不要です。

DCQCNは、2つの補完的なメカニズムを組み合わせて、フローと混雑の制御を実装します。

  • 優先順位に基づくフロー制御(PFC)
  • 明示的輻輳通知(ECN)

優先順位に基づくフロー制御(PFC) は、 IEEE 802.1pの優先度 またはキューにマッピングされた DSCPマーキング に基づいて、特定のトラフィッククラスのトラフィック送信を一時停止することでデータ損失を軽減します。

輻輳が検出されると、PFCは PAUSE制御フレームを アップストリームに送信して動作し、特定の優先度に関連するトラフィックの送信を停止するよう送信側に要求します。送信者は、輻輳が収まるか、PAUSEタイマーが終了するまで、その優先度のトラフィックの送信を完全に停止します。

PFCはパケットのドロップを防ぎ、受信者が追いつくようにしますが、影響を受けるキューを使用するトラフィックのアプリケーションパフォーマンスにも影響を与えます。さらに、一時停止後に送信を再開すると、トラフィックが突然急増し、混雑が再び引き起こされる可能性があります。これらの理由から、PFCは最後のリソースとして使用されるように慎重に設定する必要があります。

ECN(Explicit Congestion Notification) は、事前対応型の混雑シグナリングメカニズムを提供し、伝送レートを下げながら、混雑期間中もトラフィックの流れを継続できるようにします。

輻輳が発生すると、IPヘッダーのECNビットがマーク(11)され、送信元に伝送レートを調節するよう送信元に通知する CNP(Congestion Notification Packet)を生成するよう受信側に促します。PFCとは異なり、ECNはトラフィックを完全に停止したりパケットドロップを引き起こすことなく、輻輳を徐々に緩和することを目指しています。

ベストプラクティス:PFCECNを組み合わせることで、RoCEv2をサポートするロスレスIPファブリックで最も効果的な輻輳制御戦略を提供します。PFCの前にECNメカニズムがトリガーされるように、それらのパラメーターを慎重に調整する必要があります。

より詳細なガイダンスについては、ジュニパーAIネットワークの混雑制御の概要を参照してください。DCQCN(ECNおよびPFC)混雑制御手法と動的ロードバランシング(DLB)を使用して、AIワークロード用のロスレスファブリックを構築するためのベストプラクティスの概要を説明しています。このドキュメントは、DLRMトレーニングモデルに対する検証に基づいており、ECNしきい値、PFCパラメーター、入力ドロップ、テールドロップを監視および調整して、RoCEv2トラフィックのファブリックパフォーマンスを最適化する方法を示しています。

注:

ジュニパーでは一般的な推奨事項とラボで検証済みのパラメーターを提供していますが、各AIワークロードには異なるトラフィックパターンが示される場合があります。サービス クラス(CoS)とロードバランシングの属性は、特定のモデルやクラスター環境の特定の特性に合わせてさらに調整する必要がある場合があります。

JVD内のこのリーフノードとスパインノードは、最高のパフォーマンスを提供すると判断されたCoSパラメーターで設定されています。

以下の設定は、ファブリック内のすべてのデバイスに統一に適用されます。

トラフィック分類

トラフィック分類はDSCPに基づいており、 NO-LOSS CNP の 2 つの転送クラスを定義する fabric-dscp 分類子を使用して実装されます。この分類子は、すべてのet-*ユニット*論理インターフェイスに適用されます。

DSCP 011010(26)が付いたすべての着信トラフィックは NO-LOSSとして分類され、DSCP 110000(48)でマークされたトラフィックは CNPとして分類されます。すべてのGPUサーバーは、 RoCEv2トラフィック をDSCP 26でマークし、混 雑通知パケット(CNP)を DSCP 48でマークするように設定されています。

注:

NvidiaおよびAMD GPUサーバーでDCQCNパラメーターを設定する方法の詳細については、Juniper Apstra、NVIDIA GPU、およびWEKAストレージJVDを使用したAIデータセンターネットワークの「NVIDIA DCQCN – ECNの設定」セクションと「Juniper Apstra、AMD GPU、およびVast Storage JVDを使用したAIデータセンターネットワーク」の「AMD DCQCNの設定 – ECN」セクションを参照してください。

CNP トラフィックは出力キュー 3 に割り当てられ、NO-LOSS トラフィックは出力キュー 4 に割り当てられます。

キュー4は、no-loss属性を使用してロスレスとして設定され、PFC優先度3にマッピングされています。キューをロスレスとして定義することで、このクラスにマッピングされたパケットが、RoCEv2の必須要件である混雑によってドロップされることがなくなります。フォワーディングクラスをロスレスとして設定すると、スイッチのバッファ割り当てにも影響が及び、PFCなどのフロー制御メカニズムをサポートするための追加スペースが確保されます。

バッファには2種類あります。

  • 共有バッファープール:すべてのポートで動的に共有されるグローバルメモリスペース。これは、ロス トラフィック タイプとロスレス トラフィック タイプに分割されます。共有バッファーが大きいほど、トラフィック バーストの吸収に役立ちます。
  • 専用バッファープール:ポートごとに割り当てられるメモリーの予約部分で、そのポートのキューに分割されます。調整することはできますが、システムによって常に最小量が予約されます。専用バッファプールが大きいということは、トラフィックがそれほど多くの共有バッファ領域を使用する必要がないため、あるポートでの輻輳が別のポートのトラフィックに影響を与える可能性が低いことを意味します。専用バッファプールが大きいほど、動的共有バッファメモリが少なくなるため、スイッチが処理できるバースト性トラフィックは低くなります。

このJVDの共有バッファと専用バッファの推奨値を以下に示します。

共有バッファー:

  • イングレスロスレスパーセント66: イングレス共有バッファー領域の 66%ロスレストラフィック 用に予約します(例:RoCEv2)。
  • イングレス ロスレス ヘッドルーム パーセント 24:特にバースト吸収のためのヘッドルームとして、侵入バッファースペースのさらに24%を切り出します。これにより、PFCポーズフレームが有効になるのを待機している間、RoCEv2フローにマイクロバーストを収容するのに十分なスペースを確保することができます。
  • Ingress lossy percent 10: イングレス共有バッファー領域の 10%非可損失トラフィック用に確保します。
  • イングレスロスレス動的しきい値 10:ロスレスバッファプールを未使用のロスバッファー領域に最大10%的に拡張できるため、高負荷下でも柔軟性が得られます。
  • エグレス ロスレス パーセント 66: エグレス共有バッファー領域の 66%ロスレス トラフィック用に予約します。
  • Egress損失率10:損失が多いトラフィックに10%を割り当てます。

専用バッファ(ポート単位またはキュー単位):

  • Ingress percent 15:ingressバッファー容量の 合計の15%専用 バッファーとして割り当てます。これらは共有されず、特定のトラフィッククラスまたはポート用に予約されています。
  • エグレス割合30:エグレスバッファー領域の 30% を専用用に確保します。

このバッファー領域がいっぱいになり始めると、PFCメカニズムはイーサネットPAUSEフレームをトラフィックソースに送信し、送信を一時的に停止してパケット損失を防ぐように指示します。

トラフィック分類はDSCPベースであり、GPUサーバーとリーフノード間のインターフェイスは タグなしであるため、PFC実装は DSCPベースのPFCです。すべてのet-*インターフェイスに適用されるcongestion-notification-profile pfcは、PFCの動作の詳細を定義します。

注:

Congestion-notification-profileは、ECN(Congestion Notification Packets)に関連するものとして解釈される場合があります。Congestion-notification-profileは、一部のドキュメントではCNPと略されることもできます。ただし、このプロファイルはECNではなくPFCの動作を定義します。

PFCウォッチドッグ機能は、永続的なPFCの一時停止状態によって引き起こされるデッドロックまたはスタックキューを監視します。キューが長時間一時停止されたままになる場合(ヘッドオブラインブロックの可能性を示す)、ウォッチドッグはトラフィックの停滞状態を回避するために是正措置を講じることができます。

入力dscp コードポイント 011010 pfc ステートメントは、DSCP 値 011010(10 進数 26)でマークされた着信トラフィックが輻輳を検出したときに PFC をトリガーすることを指定します。基本的に、DSCP 26(RoCEv2)トラフィックに輻輳が発生している場合、プライオリティ 3 の PFC フレームが生成され、アップストリーム送信者(PFC プライオリティ 3 はコード ポイント 26 にマッピング)を一時停止します。一時停止フレームは、前述の転送クラスのNO-LOS設定に基づいて、優先度3に対して生成されます。

以下の例では:

図1:PFCフレーム一時停止生成の例PFC Pause Frames Generation Example

インターフェイス et-0/0/0:0 と et-0/0/1:0 に適用された以下のコマンドの組み合わせにより、DSCP 26 を持つすべてのインバウンド トラフィックを、キュー 4 に割り当てられ、pfc-priority 3 にマッピングされた転送クラス NO-LOSS に分類するようにデバイスが設定され、キュー 4 を無損失キューにし、DSCP 26 のトラフィックに対して PFC が有効になります。

出力ieee-802.1コードポイント011 flow-control-queue 4ステートメントは、優先度3の一時停止フレームを受信した場合に、キュー4のトラフィックを停止する必要があることを指定します。

図2:PFC受信フレームの一時停止動作PFC Received Pause Frames Behavior

トラフィックのスケジューリング

スケジューラマップsm1は、すべてのet-*インターフェイスに適用され、各転送クラスのトラフィックをどのようにスケジューリングするかを定義します。

2つの スケジューラ が含まれています。

  • NO-LOSSトラフィックのs1(キュー4)
  • CNPトラフィック用s2-cnp(キュー3)

NO-LOSS トラフィック スケジューリング(スケジューラ s1)

ケジューラ s1 は、NO-LOSS 転送クラス(キュー 4)内のトラフィックの処理方法を制御します。ドロッププロファイルdp1を適用し、explicit-congestion-notificationステートメントを使用してExplicit Congestion Notification(ECN)マーキングを有効にします。

注:

Junosのドロッププロファイルは、キューバッファがいっぱいになったときにパケットをどれだけ積極的にドロップするかを制御するために一般的に使用されます。ただし、ECNが有効な場合、プロファイルはパケットをドロップするのではなく、マークするために使用されます。パケットをマーキングするということは、設定されたしきい値に基づいてIPヘッダーに混雑経験値(CE)ビットを設定することを意味します。

図3:ECNプロファイルのA graph with a line going up AI-generated content may be incorrect.

プロファイルdp1は、線形ドロップカーブを定義します。

  • バッファー が55%充填されると、パケットは マークされません (確率0%)。
  • バッファーが90%満たされると、一致するすべてのパケットがマークされます(100%の確率)。
  • 55%から90%の間で、マーキング確率は0%から100%に 直線的に増加します

このアプローチにより、ロスレス配信を維持しながら、RoCEv2エンドポイントへの輻輳の早期フィードバックが保証されます。

CNPトラフィックスケジューリング(スケジューラs2-cnp)

スケジューラ s2-cnp は、キュー 3 の CNP トラフィックの処理方法を指定します。キューに 絶対に高い優先度 を割り当て、インターフェイス帯域幅の 5% を予約します。

最小帯域幅とともに厳密に高い優先度を割り当てることで、輻輳時にDCQCNのソースベースのレート削減をトリガーするために必要な輻輳通知パケット(CNP)をファブリック全体に確実に送信できるようになります。

注:

優先度が最も高いキューは、優先度の低いトラフィックを枯渇させる可能性がある他の優先度の高いキューを除き、常に他のキューよりも先に処理されます。ただし、 CNP トラフィックの量は一般に非常に少ないため、この場合の飢餓のリスクは最小限に抑えられます。したがって、このキューを レート制限する必要はありません

混雑管理と混雑制御検証

show class-of-service interface <interface>コマンドは、スケジューラマップ、輻輳通知が有効になっているかどうか、プロファイル名、インターフェイスに適用されている分類子を表示します。

show class-of-service classifier <classifier-name>コマンドは、DSCP値と転送クラス間のマッピングを示し、正しい割り当てを確認するために使用できます(CNP => 48、およびNO-LOSS => 26)

show class-of-service forwarding-classコマンドの出力は、転送クラスからキューへのマッピングを示しています。正しいマッピング(CNP => キュー 3、および NO-LOSS => キュー 4)、および NO-LOSS キューの No-loss ステータスと PFC 優先度を確認するために使用できます。

show class-of-service scheduler-map sm1コマンドの出力には、スケジューラマップsm1スケジューラs1s2-cnpとその優先度、割り当てレート、ECNが有効なかどうかが表示されます。

show interfaces queue <interface>コマンドをさまざまなオプションや出力フィルターと組み合わせることで、パケットドロップ、ECNマーキング、PFCフレームの一時停止があったかどうかを判断できます。

出力は、キューに入れられたCNPパケット(DSCP 48)の数を示しています。この値の増加は、パスに沿って輻輳が検出され、受信者が CE = 1 のパケットに応答して CNP パケットを送信していることを示します。

出力は、CE=1 でマークされた NO-LOSS パケット(DSCP = 26)の数を示しています。この数値が増加している場合は、輻輳が検出されたことを示しています。

出力は、インターフェイス et-0/0/0:0 で確認された、CE=1 でマークされたパケットの数を示しています。

出力は、インターフェイス et-0/0/0:0 で優先度ごとに送受信された PFC 一時停止フレームの数を示しています。

出力は、インターフェイスet-0/0/0:0の転送クラスCNPおよびNO-LOSの帯域幅割り当て、送信レート、キュー優先度を示しています。

出力は、インターフェイス et-0/0/0:0 上の各キューのピーク キュー占有率を示しています。

出力は、システムバッファの割り当てを示しています。

注:

ジュニパー ITM(Ingress Traffic Manager) は、パケットのバッファリングとキューを管理するコンポーネントです。

負荷分散障害シナリオ – DLBへのフォールバック

このドキュメントで説明されているRDMA対応ロードバランシングは主要なロードバランシングソリューションですが、リンクまたはスイッチに障害が発生すると、トラフィックはバックアップECMPマルチパスにフォールバックし、ECMPの決定にDLBを活用します。例として、4つのスパインが存在し、4つの色が設定されているシナリオを考えてみましょう。

その結果、トラフィックは優先パスを経由して転送されます。

表1:カラーパスごとの概要
カラー 優先パス バックアップ パス
緑色 スパイン1 スパイン2、スパイン3、スパイン4
スパイン2 スパイン1、スパイン3、スパイン4
スパイン3 スパイン1、スパイン2、スパイン4
オレンジ色 スパイン4 スパイン1、スパイン2、スパイン3
図4:優先パス間のトラフィック転送 Traffic Forwarding Across Preferred Paths

Stripe 1 Leaf 1とSPINE 4の間のリンクに障害が発生した場合、オレンジ色のトラフィックはバックアップパスを介して再ルーティングされます。負荷はDLBに基づいて分散されます。

図5:障害Traffic Forwarding across Backup Paths after a Failure後のバックアップパス間のトラフィックフォワーディング

ダイナミックロードバランシング(DLB)

DLB(動的ロードバランシング)は、パケットヘッダーを確認するだけでなく、パスを選択する際にポート負荷(リンク使用率)とポートキューの深さに基づいてリアルタイムのリンク品質を考慮することで、すべてのパスがより公平に利用されるようにします。この方法では、大量のデータを移動する複数の長時間のフローでロードバランシングする必要がある場合に、より良い結果が得られます。

DLBは、2種類のモードで設定できます。

  • パケットごとモード: 同じフローからのパケットは、IP ECMP グループのリンク メンバー間にスプレーされ、パケットの順不同に到着することがあります。
  • フローレットモード:同じフローからのパケットは、IP ECMPグループのリンクメンバーを介して送信されます。フローレットは、非アクティブ期間で区切られた同じフローのバーストとして定義されます。設定された非アクティブタイマーよりも長くフローが一時停止した場合、リンクメンバーの品質を再評価し、フローを別のリンクに再割り当てすることができます。

このJVDでは、リーフノードとスパインノードの両方が、IPv4とIPv6トラフィックの両方に適用される 動的ロードバランシングフローレットモードを使用してトラフィックをロードバランシングするように設定されています。

詳細については、「 データセンターのロードバランシング」 を参照してください。このページでは、さまざまなロードバランシングメカニズムと、データセンターのニーズに合わせて進化した方法について包括的に詳しく解説しています。

以下の例は、すべてのデバイスに適用された設定を示しています。

この設定では、リアルタイムの輻輳とフロー特性に基づいて、フローを識別する方法と、代替ECMPパスに再割り当てする条件を定義します。

hash-key family inet layer-3 および hash-key family inet layer-4 ステートメントは、IPアドレスとTCP/UDPポートの両方を含むようにECMPハッシュ機能を設定し、ECMPパス全体にIPv4フローをきめ細かく分散させます。

enhanced-hash-keyのパラメーターは、ECMPトラフィック転送用のDLBハッシュアルゴリズムを変更し、フローレットベースの検出とインテリジェントな再割り当てを可能にします。それらには次のものが含まれます。

  • ecmp-dlb flowlet inactivity-interval

フローレット間の境界を検出するために使用する最小パケット間ギャップ(マイクロ秒単位)を指定します。このしきい値を超えると、新しいフローレットが認識されます。

推奨値は128μsecです。

  • ecmp-dlb flowset-table-size

DLBハッシュテーブルに格納できるフローセット(マクロフロー)エントリーの最大数を定義します。これにより、デバイスが動的な再割り当てのために追跡できるアクティブなフローの数が制御されます。この値は 8 の倍数である必要があります。

推奨値は2048です。

  • sampling rate :

QFX転送ASICを設定して輻輳を検出するためのサンプリングレートを定義し、egress ECMPメンバーのポート負荷をサンプリングし、品質スコアを更新します。

推奨値は1,000,000です。これは、オーバーヘッドと応答性のバランスを取って、100万パケットに1パケットがサンプリングされることを意味します。

  • ether-type ipv4 および ether-type ipv6 :

IPv4IPv6 の両方のパケットで拡張 ECMP DLB を有効にします

負荷分散の検証

現在使用中のDLBパラメーターを確認するには、次の操作コマンドを使用します: show forwarding-options enhanced-hash-key 。出力は、フローレットの動作を含む、ECMP DLB(動的ロードバランシング)にシステムによって適用される値を示しています。

出力に表示されるエ グレスポート負荷の重み は、 ポート品質 スコアを計算する際にポート負荷とポートキューの長さに与えられる重みを定義します。 EgressBytes Min および EgressBytes Max Thresholdsは、 品質帯域を定義します。DLBは、ポート負荷がこの最小値を下回るエグレスポートを最高品質バンド(7)に割り当てます。最大しきい値よりも大きいポート負荷は、最低品質帯域(0)に分類されます。DLBは、残りのポート負荷量を品質バンド1から6に分割します。

デフォルト値の エグレスポート負荷重 み(50)、 エグレスバイト最小 しきい値(10)、 エグレスバイト最大しきい値(50 )を維持することをお勧めします。これらの値を使用するための設定は必要ありません。

図6:DLB品質帯域A table with text and numbers AI-generated content may be incorrect.