Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

DCQCN(データセンター量子化輻輳通知)

RDMA(リモートダイレクトメモリアクセス)は、最新のデータセンターアプリケーションに必要な高スループットと超低遅延、低CPUオーバーヘッドを提供します。RDMAは、RoCEv2プロトコルを使用して導入されます。このプロトコルは、プライオリティベースのフロー制御(PFC)に依存し、ドロップのないネットワークを実現します。DCQCN(Data Center Quantized Congestion Notification)は、RoCEv2向けのエンドツーエンドの混雑制御スキームです。Junosは、ECNとPFCを組み合わせることでDCQCNをサポートし、PFCの限界を克服し、エンドツーエンドのロスレスイーサネットをサポートします。

DCQCNを理解する

プライオリティベースのフロー制御(PFC)は、全二重イーサネットリンク上の各IEEE 802.1pコードポイント(優先度)に対してきめ細かいリンクレベルのフロー制御を提供することで機能する、ロスレストランスポートおよび混雑緩和機能です。スイッチインターフェイスの受信バッファがしきい値までいっぱいになると、スイッチは送信側(接続されたピア)に一時停止フレームを送信し、送信側によるそれ以上のフレームの送信を一時的に停止します。バッファしきい値は、送信側がフレームの送信を停止し、バッファがオーバーフローする前に受信側がすでに配線上にあるフレームを受け入れることができるように、十分に低くなければなりません。スイッチは、フレームの損失を防ぐために、キューバッファのしきい値を自動的に設定します。

輻輳によりリンク上の優先度の1つが強制的に一時停止されると、リンク上の他のすべての優先度がフレームの送信を続行します。一時停止した優先度のフレームのみ送信されません。受信バッファが別のしきい値を下回ると、スイッチはフローを再開するメッセージを送信します。ただし、リンク上のトラフィック量や優先度が割り当てられているトラフィック量によっては、トラフィックを一時停止するとイングレスポートの混雑が発生し、ネットワーク全体に輻輳が広がる可能性があります。

ECN(Explicit Congestion Notification)は、TCP/IPベースのネットワーク上の2つのエンドポイント間でエンドツーエンドの混雑通知を可能にします。2つのエンドポイントは、ECN対応の送信者とECN対応の受信者です。ECNが正常に動作するには、両方のエンドポイントとエンドポイント間のすべての中間デバイスでECNを有効にする必要があります。ECNをサポートしていない伝送経路内のデバイスは、エンドツーエンドのECN機能を中断します。

ECNは、パケットをドロップすることなく、輻輳が解消されるまで送信デバイスに伝送速度を下げさせることで、パケットの損失と遅延を削減することを目的として、ネットワークに輻輳を通知します。RFC 3168、 IPへの明示的輻輳通知(ECN)の追加は、ECNを定義しています。

DCQCNはECNとPFCを組み合わせたもので、エンドツーエンドのロスレスイーサネットをサポートします。ECNは、PFCの限界を克服してロスレスイーサネットを実現するのに役立ちます。DCQCNの考え方は、混雑が始まったときに伝送速度を下げることでECNがフロー制御を行えるようにすることで、PFCがトリガーされてフローを完全に停止させる時間を最小限に抑えることです。

DCQCNを正しく運用するには、次の2つの相反する要件のバランスを取る必要があります。

  1. PFCが早すぎないようにします。つまり、ECNに混雑フィードバックを送信してフローを遅くする機会を与える前にトリガーされます。

  2. PFCのトリガーが遅すぎてバッファオーバーフローによるパケット損失が発生しないようにします。

上記の主要な要件を達成するには、次の3つの重要なパラメータを適切に計算して設定します。

  1. Headroom Buffers—アップストリームデバイスに送信されたPAUSEメッセージが到着して有効になるまでに時間がかかります。パケットのドロップを回避するには、PAUSE送信側は、この間に受信する可能性のあるパケットを処理するのに十分なバッファを確保する必要があります。これには、PAUSEが送信されたときに転送中だったパケットと、PAUSEメッセージを処理中にアップストリームデバイスから送信されたパケットが含まれます。グローバル共有バッファからポートごと、優先順位ごとにヘッドルームバッファを割り当てます。CNP の MRU とケーブル長パラメータを使用して、各ポートと優先度に割り当てられるヘッドルームバッファの量を制御できます。PFCがトリガーされた後もわずかなイングレスドロップが見られる場合は、そのポートと優先度の組み合わせのヘッドルームバッファを増やすことで、これらのドロップを排除できます。

  2. PFC Threshold—これはイングレスしきい値です。これは、PAUSEメッセージがアップストリームデバイスに送信されるまでに、イングレス優先度グループが拡張できる最大サイズです。各PFC優先度は、各ingressポートで独自の優先度グループを取得します。PFCしきい値は、各イングレスポートで優先度グループごとに設定されます。PFCしきい値には、 PG MIN しきい値と PG shared しきい値の2つのコンポーネントがあります。優先度グループの PG MINPG shared のしきい値に達すると、対応する優先度に対してPFCが生成されます。キューがPFCしきい値を下回ると、スイッチはRESUMEメッセージを送信します。

  3. ECN Threshold—これはエグレスしきい値です。ECNしきい値は、WREDの開始充填レベル値に等しくなります。egressキューがこのしきい値を超えると、スイッチはそのキュー上のパケットに対してECNマーキングを開始します。DCQCNを有効にするためには、スイッチがパケットをECNでマークする前にPFCがトリガーされないように、このしきい値をイングレスPFCしきい値よりも低くする必要があります。非常に低い WRED 充填レベルを設定すると、ECN マーキングの確率が上がります。例えば、デフォルトの共有バッファ設定では、WRED の開始/充填レベルを 10% にすると、ロスレス パケットに ECN マークが確実に付けられます。ただし、充填レベルが高いほど、ECN マーキングの可能性は低くなります。例えば、同じエグレスポートへのロスレストラフィックを持つ2つのイングレスポートで、WREDの開始充填レベルが50%の場合、イングレスPFCしきい値が最初に満たされるため、ECNマーキングは発生しません。

DCQCN の設定(Junos OS)

DCQCNを有効にするには、トラフィックフローにECNとPFCの両方を設定します。

  1. ROCEv2トラフィックと混雑通知パケット(CNP)の分類子を設定します。次に例を示します。
  2. ロスレスフローのエグレスポートにECNを設定します。次に例を示します。
  3. 同じロスレスフローのイングレスポートにPFCを設定します。次に例を示します。
  4. 共有バッファを設定します。次に例を示します。
    注:

    Junos OSを実行しているプラットフォームで設定をコミットするには、以下のルールに従う必要があります。

    • ingressパーティションが3つすべて設定されるか、まったく設定しません。

    • 3つのエグレスパーティションすべてを設定するか、まったく設定しないようにする必要があります。

    • すべてのパーティションのイングレス共有バッファ設定の合計は100%でなければなりません。

    • すべてのパーティションのエグレス共有バッファ設定の合計は 100% でなければなりません。

  5. 転送クラスを設定し、キューを割り当てます。次に例を示します。
  6. 設定を確認します。次に例を示します。
  7. 設定をコミットします。

DCQCNの設定(Junos OS Evolved)

DCQCNを有効にするには、トラフィックフローにECNとPFCの両方を設定します。

  1. ROCEv2トラフィックと混雑通知パケット(CNP)の分類子を設定します。次に例を示します。
  2. ロスレスフローのエグレスポートにECNを設定します。次に例を示します。
  3. 同じロスレスフローのイングレスポートにPFCを設定します。次に例を示します。
  4. 共有バッファを設定します。次に例を示します。
    注:

    Junos OS Evolvedを実行しているプラットフォームで設定をコミットするには、以下のルールに従う必要があります。

    • 3つのイングレスパーティションすべてを設定する必要があります。

    • すべてのパーティションのイングレス共有バッファ設定の合計は100%でなければなりません。

    • 非可逆バッファパーティションとロスレスバッファパーティションの場合、イングレスバッファパーティションとエグレスバッファパーティションの割合の両方が同じである必要があります。

    • Junos OS Evolvedを実行しているQFX5000スイッチには、ハードウェアの制限により、マルチキャストトラフィック専用のサービスプールがないため、マルチキャストトラフィックはロスサービスプール共有バッファを使用します。

    ロスレスイングレスバッファパーティションの dynamic-threshold の設定はオプションです。ECNでは、ロスレスキューのしきい値の計算にこのオプションを使用します。このオプションを設定しない場合、 dynamic-threshold デフォルト値の7を使用します。

  5. 転送クラスを設定し、キューを割り当てます。次に例を示します。
  6. 設定を確認します。次に例を示します。
  7. 設定をコミットします。