このページの目次
選択的動的ロードバランシング(DLB)
概要
AI-MLワークロードでは、アプリケーショントラフィックの大部分が、トランスポートにコンバージドイーサネットバージョン2(RoCEv2)上のリモートダイレクトメモリアクセス(RDMA)を使用します。動的ロードバランシング(DLB)は、効率的なロードバランシングを実現し、RoCEv2ネットワークの輻輳を防止するのに最適です。ただし、トラフィックの種類によっては、静的ロード バランシング(SLB)の方が効果的な場合があります。 選択的 DLB を使用すると、デバイスを通過するすべてのトラフィックに対して DLB と SLB のどちらかを選択する必要がなくなります。グローバル レベルで任意の DLB モードを設定し、特定の種類のトラフィックに対して DLB を選択的に有効にすることができます。
負荷分散を有効にするには、フローごととパケットごとの 2 つの方法があります。フロー単位のロード バランシングは、一度に最も多くのパケットを処理するため、最も広く使用されています。デバイスは、同じ 5 タプルのパケット ヘッダーを持つパケットを 1 つのフローとして分類します。デバイスは、フロー内のすべてのパケットに同じロード バランシング処理を行います。フローベースのロードバランシングは、トラフィックがすべてのリンクを均等に利用するため、一般的なTCPおよびUDPトラフィックに適しています。ただし、パケット単位のロード バランシングによって一部のパケットの順序が変更される場合があり、パフォーマンスに影響を与える可能性があります。
多くのAIクラスターは、順不同のパケットを処理できるスマートネットワークインターフェイスカード(SmartNIC)を介してアプリケーションをネットワークに接続します。パフォーマンスを向上させるには、ネットワーク上でパケット単位の DLB を有効にします。次に、順不同のパケットを処理できるエンドポイントサーバーのみに対してDLBを有効にします。デバイスは、これらのパケットのBTH+ヘッダー内のRDMA命令コード(オペコード)をリアルタイムで確認します。ファイアウォールフィルターの一致条件を使用して、これらのオペコードに基づいてDLBを選択的に有効または無効にできます。その他のフローでは、SLB とも呼ばれるデフォルトのハッシュベース ロード バランシングが引き続き使用されます。
選択的 DLB は、エレファント フローがデータ フロー全体に対して小さすぎるリンクを検出した場合にも役立ちます。このシナリオでは、選択的DLBは、データセンターファブリックでリンクの利用可能な帯域幅の最適な使用を計算することができます。エレファント フローに対してパケット単位の選択的 DLB を有効にすると、アルゴリズムによってパケットが最高品質のリンクに最初に転送されます。リンク品質が変化すると、アルゴリズムは後続のパケットを次に高品質のリンクに誘導します。
利点
-
大規模なデータフローのネットワーク処理を改善します。
-
同じトラフィックストリームでパケット単位とフロー単位のロードバランシングを使用して、パフォーマンスを向上させます。
-
ファイアウォールフィルターの一致条件に基づいてロードバランシングをカスタマイズします。
プラットフォームのサポート
プラットフォームとリリースのサポートについては、「 機能エクスプローラー 」を参照してください。Junos OS Evolvedリリース23.4R2以降、この機能は次のプラットフォームでサポートされています。
-
QFX5230-64CD
-
QFX5240-64OD
-
QFX5240-64QD
位相幾何学
このトポロジーでは、DLB はパケット単位モードでグローバルに設定され、選択的に有効になります。Flow1 では、DLB が有効になっていないため、デバイスはデフォルトでロード バランシング設定になります。この場合、ロード バランシングはフロー単位モードで構成されているため、フローは 1 つのデバイスに送信されます。
Flow2 の場合、デバイスはフローのパケット ヘッダー内の RDMA オペコードを検出し、フィルター一致条件をトリガーします。DLB はパケット単位モードでグローバルに設定されるため、デバイスはこのフローをパケットに分割します。DLB は、パケット ヘッダーの RDMA オペコードと対応するフィルターに基づくパスに各パケットを割り当てます。
設定ステートメント
2 つの方法で DLB を選択的に有効にすることができます。いずれの場合も、最初にパケット単位モードで DLB を設定する必要があります。パケット単位は、DLB が有効になっている場所で使用される DLB モードです。
DLB をグローバルに無効にし、選択的に DLB を有効にする
DLB を必要とするパケットが非常に少ない場合は、グローバル レベルで DLB を無効にし、フローごとに選択的に有効にすることができます。まず、DLB をパケット単位モードにします。次に、すべてのイーサネットタイプでDLBをオフにして、グローバルにDLBを無効にします。デフォルトでは、すべてのパケットがハッシュベースのロードバランシングを取得します。
set system packet-forwarding-options firewall profiles <inet | inet6 | ethernet-switching> udf-profile-name set forwarding-options enhanced-hash-key ecmp-dlb per-packet set forwarding-options enhanced-hash-key ecmp-dlb ether-type none
これで、BTH+ ヘッダー内の特定の RDMA オペコードに一致するようにファイアウォール フィルターを構成できます。ファイアウォール フィルター内でパケット単位の DLB を有効にして、それらのパケットにのみ DLB を適用します。例えば:
set firewall family inet filter f1 term t1 from rdma-opcode 10 set firewall family inet filter f1 term t1 then dynamic-load-balance enable set firewall family inet filter f1 term default then accept
他のパケットは引き続きSLBを取得します。
DLB をグローバルに有効にし、DLB を選択的に無効にする
ほとんどのパケットがDLBの恩恵を受ける場合は、まずすべてのパケットに対してグローバルレベルでDLBを設定します。
set system packet-forwarding-options firewall profiles <inet | inet6 | ethernet-switching> udf-profile-name set forwarding-options enhanced-hash-key ecmp-dlb per-packet
これで、BTH+ ヘッダー内の特定の RDMA オペコードに一致するようにファイアウォール フィルターを構成できます。SLB で処理したいパケットのファイアウォール フィルター内で、パケット単位の DLB を無効にします。例えば:
set firewall family inet filter f1 term t1 from rdma-opcode 10 set firewall family inet filter f1 term t1 then accept set firewall family inet filter f1 term t1 then dynamic-load-balance disable set firewall family inet filter f1 term default then accept
実装ノート
(オプション)この機能は、フローレットモードで設定されたDLBで有効にできます。
同じデバイス上で、フロー単位モードとパケット単位モードで同時にDLBを設定することはできません。
検証とトラブルシューティング
show forwarding-options enhanced-hash-key show pfe filter hw profile-info