Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

CoS明示的輻輳通知について

明示的輻輳通知 (ECN) を使用すると、TCP/IP ベースのネットワーク上の 2 つのエンドポイント間でエンドツーエンドの輻輳通知を行うことができます。2 つのエンドポイントは、ECN 対応の送信側と ECN 対応の受信側です。ECN が正しく機能するには、両方のエンドポイントとエンドポイント間のすべての中間デバイスで ECN を有効にする必要があります。ECNをサポートしていない伝送パス内のデバイスは、エンドツーエンドのECN機能を破壊します。

ECNは、パケットを落とさずに、送信デバイスに輻輳が解消されるまで伝送速度を下げさせることで、パケットロスと遅延を減らすことを目的として、ネットワークに輻輳を通知します。RFC 3168 , The Add of Explicit Congestion Notification (ECN) to IP は、ECN を定義しています。

ECNはデフォルトで無効になっています。通常、ECN はベストエフォート型トラフィックを処理するキューでのみ有効にします。これは、他のトラフィック タイプでは輻輳通知の方法が異なるためです。ロスレス トラフィックはプライオリティ ベースのフロー制御(PFC)を使用し、厳密高プライオリティ トラフィックは、構成された最大レートのポイントまで、必要なポート帯域幅をすべて受信します。

個々の出力キュー(転送クラスで表される)でECNを有効にするには、キュースケジューラ設定でECNを有効にし、スケジューラを転送クラス(キュー)にマッピングしてから、スケジューラをインターフェイスに適用します。

手記:

ECN がキューを機能させるには、WRED(Weighted Random Early Detection)パケット ドロップ プロファイルもキューに適用する必要があります。

ECNの仕組み

ECN を使用しない場合、スイッチは TCP/IP パケットをドロップすることでネットワークの輻輳に対応します。ドロップされたパケットは、輻輳が発生していることをネットワークに知らせます。IPネットワーク上のデバイスは、パケット伝送速度を下げて輻輳を解消することで、TCPパケットドロップに応答します。ただし、輻輳通知・管理のパケットドロップ方式にはデメリットがあります。例えば、パケットはドロップされ、再送する必要があります。また、バースト性トラフィックは、ネットワークの伝送速度を低下させすぎ、帯域幅の非効率な利用につながる可能性があります。

ECNは、パケットをドロップしてネットワーク輻輳を通知する代わりに、パケットをドロップせずに、ネットワーク輻輳を通知するようにパケットをマークします。ECN が機能するには、2 つの ECN 対応エンドポイント間のパスにあるすべてのスイッチで ECN が有効になっている必要があります。ECN は、エンドポイント間の TCP 接続の確立中にネゴシエートされます。

ECN 対応スイッチは、キューに適用された WRED パケット ドロップ プロファイル設定に基づいてキュー輻輳状態を決定するため、各 ECN 対応キューにも WRED ドロップ プロファイルが必要です。WRED ドロップ プロファイルのパケット ドロップ確率がゼロ(0)より大きいレベルまでキューがいっぱいになると、スイッチはパケットに輻輳が発生しているとマークする可能性があります。スイッチがパケットを輻輳発生としてマークするかどうかは、その充満レベルでのキューのドロップ確率と同じ確率です。

ECN は、IP ヘッダーの差別化サービス (DiffServ) フィールドの 2 つの最下位ビットをマークすることで、輻輳が発生しているかどうかを通信します。DiffServ フィールドの最上位 6 ビットには、DSCP(差別化されたサービス コード ポイント)ビットが含まれています。2 つの ECN ビットの状態は、パケットが ECN 対応パケットであるかどうか、および輻輳が発生しているかどうかを示します。

ECN対応の送信者は、パケットをECN対応としてマークします。送信者が ECN に対応していない場合、パケットは ECN に対応していないとマークされます。ECN 対応パケットでスイッチのエグレス キューで輻輳が発生した場合、スイッチはそのパケットに輻輳発生としてマークします。パケットが ECN 対応の受信者(宛先エンドポイント)に到達すると、受信者は、輻輳を示すマークが付けられたパケットを送信することにより、送信者(送信元エンドポイント)に輻輳インジケータをエコーします。

受信側から輻輳インジケータを受信した後、送信元エンドポイントは伝送速度を下げて輻輳を緩和します。これはTCP輻輳通知と管理の結果に似ていますが、パケットをドロップしてネットワーク輻輳を通知する代わりに、ECNはパケットにマークを付け、受信者は輻輳通知を送信者にエコーします。パケットはドロップされないため、パケットを再送する必要はありません。

DiffServ フィールドの ECN ビット

1 に示すように、DiffServ フィールドの 2 つの ECN ビットは、パケットが ECN 対応トランスポート(ECT)パケットとしてマークされているかどうか (トランスポート プロトコルの両方のエンドポイントが ECN 対応であることを意味する)、および輻輳が発生しているかどうか(CE)を判断する 4 つのコードを提供します。

表1: ECNビットコード

ECNビット(コード)

意味

00

非 ECT—パケットは ECN 非対応としてマークされます

01

ECT(1)—トランスポートプロトコルのエンドポイントはECN対応です

10

ECT(0)—トランスポート プロトコルのエンドポイントは ECN 対応です

11

CE:輻輳が発生しました

コード01と10は同じ意味を持ち、トランスポートプロトコルの送信エンドポイントと受信エンドポイントはECN対応です。これらのコードに違いはありません。

エンドツーエンドのECN動作

送信エンドポイントと受信エンドポイントが ECN をネゴシエートした後、送信エンドポイントは DiffServ ECN フィールドを ECT(1) (01) または ECT(0) (10) に設定することで、パケットを ECN 対応としてマークします。エンドポイント間のすべての中間スイッチでECNが有効になっている必要があります。

パケットがスイッチを通過し、WRED パケット ドロップ メカニズムを使用する出力キューで輻輳が発生した場合、スイッチは DiffServ ECN フィールドを CE(11)に設定することで、パケットに輻輳が発生しているとマークします。スイッチは(TCP 輻輳通知のように)パケットをドロップするのではなく、パケットを転送します。

手記:

エグレス キューでは、WRED アルゴリズムが、キュー フィル レベル(キューの満杯)に基づいて、パケットがドロップ対象かどうかを判断します。パケットがドロップ対象で、ECN対応としてマークされている場合、パケットはCEとマークされて転送されます。パケットがドロップ対象であり、ECN対応としてマークされていない場合、パケットはドロップされる可能性があります。WRED アルゴリズムの詳細については、 ECN しきい値の WRED ドロップ プロファイル制御 を参照してください。

パケットが受信エンドポイントに到達すると、CEマークは受信側にネットワークの輻輳があることを通知します。次に、受信者は、ネットワークに輻輳があることを示すメッセージを送信(エコー)します。送信者は輻輳通知メッセージを確認し、伝送速度を低下させます。 図1 は、ECNがネットワークの輻輳を緩和するためにどのように機能するかをまとめたものです。

図1:明示的な輻輳通知 Explicit Congestion Notification

エンドツーエンドのECN動作には、次のものが含まれます。

  1. ECN 対応の送信側と受信側は、接続の確立中に ECN 機能をネゴシエートします。

  2. ECN 機能のネゴシエーションが成功すると、ECN 対応の送信側は、ECT フィールドを受信側に設定した IP パケットを送信します。

    手記:

    送信側と受信側の間のパスにある すべての 中間デバイスで ECN を有効にする必要があります。

  3. デバイスのエグレス キューの WRED アルゴリズムがキューに輻輳が発生していると判断し、パケットがドロップ対象である場合、デバイスはパケットを「輻輳発生」(CE)としてマークして、ネットワークに輻輳があることを受信者に示すことができます。パケットがすでにCEとマークされている場合(別のスイッチのエグレスですでに輻輳が発生している場合)、スイッチはCEマークを付けたパケットを転送します。

    エグレス キューに輻輳がない場合、デバイスはパケットを転送し、ECN ビットの ECT 対応マーキングを変更しないため、パケットは引き続き ECN 対応としてマークされますが、輻輳が発生しているとはマークされません。

  4. 受信側は、輻輳パスに沿って輻輳が発生したことを示す CE とマークされたパケットを受信します。

  5. 受信者は、TCPヘッダーのフラグフィールドにECEビット(ビット9)がマークされたパケットを送信側にエコー(送信)します。ECEビットはECNエコーフラグビットであり、ネットワークに輻輳があることを送信側に通知します。

  6. 送信側はデータ転送速度を下げ、TCP ヘッダーのフラグ フィールドにマークされた CWR ビット (ビット 8) を使用してパケットを受信側に送信します。CWR ビットは、輻輳ウィンドウ低減フラグ ビットであり、輻輳発生通知を受信したことを受信側に確認します。

  7. 受信者がCWRフラグを受信すると、受信者は送信者への応答でECEビットの設定を停止します。

表 2 は、ECN 対応キューでのトラフィックの動作をまとめたものです。

表 2: ECN 対応キューのトラフィック動作

ECNビットの着信IPパケットマーキング

出力キューでの ECN 設定

WRED アルゴリズムがパケットをドロップ対象と判断した場合のアクション

ECNビットの発信パケットマーキング

非 ECT (00)

関係ありません

落とす。

マークされたECNビットなし

ECT (10 または 01)

ECNは無効になっています

落とす

パケットがドロップ—マークされたECNビットなし

ECT (10 または 01)

ECN 対応

落とさないでください。パケットに輻輳が発生しているとしてマークします(CE、ビット11)。

輻輳を示すためにECT(11)とマークされたパケット

セリウム (11)

ECNは無効になっています

落とす

パケットがドロップ—マークされたECNビットなし

セリウム (11)

ECN 対応

落とさないでください。パケットはすでに輻輳が発生しているとマークされています。ECNマーキングを変更せずにパケットを転送します。

輻輳を示すためにECT(11)とマークされたパケット

出力キューにマッピングされた WRED ドロップ プロファイルで定義されている輻輳が発生していない場合、すべてのパケットが転送され、パケットはドロップされません。

ECN と PFC およびイーサネット ポーズの比較

ECN は、IP トラフィックのエンドツーエンドのネットワーク輻輳通知メカニズムです。プライオリティベースのフロー制御(PFC)(IEEE 802.1Qbb)とイーサネットPAUSE(IEEE 802.3X)は、異なるタイプの輻輳管理メカニズムです。

ECN では、出力キューにも関連する WRED パケット ドロップ プロファイルが必要です。PFC が有効になっているトラフィックに使用される出力キューには、WRED ドロップ プロファイルを関連付けないでください。イーサネットPAUSEが有効になっているインターフェイスには、WREDドロッププロファイルを関連付けないでください。

PFC は、ロスレス トラフィックをサポートするピアツーピアのフロー制御メカニズムです。PFC を使用すると、輻輳発生時に、接続されたピア デバイスがフロー送信を一時停止できます。PFC を使用すると、リンク上のすべてのトラフィックではなく、リンク上の特定のタイプのフローでトラフィックを一時停止できます。例えば、 fcoe 転送クラスなどのロスレストラフィッククラスでPFCを有効にすることができます(また有効にする必要があります)。 イーサネットPAUSEもピアツーピアのフロー制御メカニズムですが、イーサネットPAUSEは、指定されたトラフィックフローのみを一時停止するのではなく、物理リンク上のすべてのトラフィックを一時停止します。

PFC およびイーサネット PAUSE を使用すると、フローの送信エンドポイントと受信エンドポイントが中間スイッチ間で輻輳情報を相互に通信することはありません。代わりに、PFC は、DCB(データ センター ブリッジング)標準をサポートする 2 つの PFC 対応ピア デバイス(スイッチなど)間のフローを制御します。PFC は、フロー出力キューが輻輳したときに、接続されたピアに一時停止メッセージを送信することで機能します。イーサネットPAUSEは、輻輳中にリンク上のすべてのトラフィックを一時停止するだけで、DCBは必要ありません。

PFC はこのように機能します。スイッチの出力キューが特定のしきい値に達すると、スイッチはデータを送信している接続されたピアデバイスに PFC 一時停止メッセージを送信します。一時停止メッセージは、送信スイッチにフローの送信を一時停止するように指示します。輻輳が解消すると、スイッチは別のPFCメッセージを送信して、接続されたピアに送信を再開するように指示します。(送信スイッチの出力キューも特定のしきい値に達すると、そのスイッチは、送信中の接続ピアにPFC一時停止メッセージを送信できます。このようにして、PFC は伝送一時停止をネットワーク経由で伝播できます)。

詳細については、「 CoSフロー制御(イーサネット、一時停止およびPFC)について」 を参照してください。『 レイヤ 3 インターフェイス全体の PFC 機能について』も参照してください。

ECNスレッショルドのWREDドロッププロファイル制御

WRED ドロップ プロファイルを転送クラス(出力キューにマッピング)に適用して、スイッチが ECN 対応パケットをマーキングする方法を制御します。スケジューラ マップは、ドロップ プロファイルをスケジューラおよび転送クラスに関連付け、そのスケジューラ マップをインターフェイスに適用して、これらのインターフェイスに転送クラスのスケジューリング プロパティを実装します。

ドロップ プロファイルは、キュー フィル レベル(キューがいっぱいになる割合)とドロップ確率(パケットがドロップされる確率の割合)のペアを定義します。キューが指定されたレベルまでいっぱいになると、ドロップ プロファイルに一致するトラフィックのドロップ確率とそのフィル レベルが対になります。ドロッププロファイルを設定する場合、フィルレベルとドロップ確率のペアを設定して、異なるレベルのキューフルネスでパケットがどのようにドロップするかを制御します。

最初の塗りつぶしレベルとドロップ確率のペアがドロップ開始点です。キューが最初の充てるレベルに達するまで、パケットはドロップされません。キューが最初の充てるレベルに達すると、充てるレベルを超えるパケットは、充てるレベルと対になった廃棄確率と等しい確率で破棄されます。

最後の塗りつぶしレベルと落下確率のペアが落下の終了点です。キューが最後の充てんレベルに達すると、ECN 用に設定されていない限り、すべてのパケットがドロップされます。

手記:

ロスレス キュー( no-loss パケット ドロップ属性で設定された転送クラス)および絶対優先キューは、ドロップ プロファイルを使用しません。ロスレス キューは、PFC を使用してトラフィックのフローを制御します。Strict-High プライオリティ キューは、構成された最大帯域幅制限に達するまで、必要なポート帯域幅をすべて受信します。

スイッチが異なれば、ドロッププロファイルの充填レベル/ドロップ確率のペアも異なります。

手記:

最後の充填レベルを 100% に設定しないでください。

ドロッププロファイル設定は、ECNパケットに以下のような影響を与えます。

  • ドロップ開始点 - ECN 対応パケットは、輻輳発生(CE)としてマークされる場合があります。

  • ドロップエンドポイント—ECN対応パケットは常にCEとマークされます。

キューがドロップ開始点からドロップ終了点までいっぱいになると、ECN パケットが CE とマークされる確率は、ベストエフォート型トラフィックにドロップ プロファイルを適用した場合の非 ECN パケットがドロップされる確率と同じです。キューがいっぱいになると、ECN パケットが CE とマークされる確率が高くなります。これは、ベストエフォート型トラフィックにドロップ プロファイルを適用すると、非 ECN パケットがドロップされる確率が高くなるのと同じです。

廃棄エンドポイントでは、すべての ECN パケットが CE とマークされますが、ECN パケットはドロップされません。キュー充満レベルが廃棄エンドポイントを超えると、すべての ECN パケットが CE とマークされます。この時点で、ECN 以外のパケットはすべてドロップされます。ECN パケット(およびその他のすべてのパケット)は、キューが完全にいっぱいになるとテール ドロップされます。

WRED パケット ドロップ プロファイルを設定して出力キューに適用する(ETS をサポートするスイッチで階層スケジューリングを使用)。

  1. ステートメント set class-of-service drop-profiles profile-name interpolate fill-level drop-start-point fill-level drop-end-point drop-probability 0 drop-probability percentageを使用してドロッププロファイルを設定します。

  2. ステートメント set class-of-service schedulers scheduler-name drop-profile-map loss-priority (low | medium-high | high) protocol any drop-profile profile-name を使用して、ドロップ・プロファイルをキュー・スケジューラーにマップします。ドロップ プロファイルの名前はステップ 1 で設定された WRED プロファイルの名前です。

  3. ステートメント set class-of-service scheduler-maps map-name forwarding-class forwarding-class-name scheduler scheduler-name を使用して、ステップ 2 がドロップ・プロファイルに関連付けるスケジューラーを出力キューにマップします。転送クラスは出力キューを識別します。転送クラスはデフォルトで出力キューにマップされますが、明示的なユーザー設定によって別のキューに再マップできます。スケジューラ名は、ステップ 2 で設定したスケジューラです。

  4. ステートメント set class-of-service traffic-control-profiles tcp-name scheduler-map map-nameを使用して、スケジューラ マップをトラフィック制御プロファイルに関連付けます。スケジューラ マップ名は、ステップ 3 で設定した名前です。

  5. ステートメント set class-of-service interface interface-name forwarding-class-set forwarding-class-set-name output-traffic-control-profile tcp-nameを使用して、トラフィック制御プロファイルをインターフェイスに関連付けます。出力トラフィック制御プロファイル名は、ステップ 4 で設定したトラフィック制御プロファイルの名前です。

    インターフェイスは、トラフィック制御プロファイルのスケジューラ マップを使用して、ドロップ プロファイル(およびイネーブル ECN 属性を含むその他の属性)をそのインターフェイスの出力キュー(転送クラス)に適用します。異なるトラフィック制御プロファイルを使用して、異なるスケジューラを異なるインターフェイスにマッピングできるため、異なるインターフェイスの同じキュー番号でトラフィックを異なる方法で処理できます。

WRED パケット ドロップ プロファイルを設定し、ポート スケジューリングをサポートするスイッチの出力キューに適用できます(ETS 階層スケジューリングはサポートされていないか、使用されていません)。WRED パケット ドロップ プロファイルを設定し、ポート スケジューリングをサポートするスイッチの出力キューに適用するには(ETS 階層スケジューリングはサポートされていないか、使用されていません)。

  1. ステートメント set class-of-service drop-profiles profile-name interpolate fill-level level1 level2 ... level32 drop-probability probability1 probability2 ... probability32を使用してドロッププロファイルを設定します。充填レベル/落下確率のペアは2つだけ、または最大32のペアを指定できます。

  2. ステートメント set class-of-service schedulers scheduler-name drop-profile-map loss-priority (low | medium-high | high) drop-profile profile-name を使用して、ドロップ・プロファイルをキュー・スケジューラーにマップします。ドロップ プロファイルの名前はステップ 1 で設定された WRED プロファイルの名前です。

  3. ステートメント set class-of-service scheduler-maps map-name forwarding-class forwarding-class-name scheduler scheduler-name を使用して、ステップ 2 がドロップ・プロファイルに関連付けるスケジューラーを出力キューにマップします。転送クラスは出力キューを識別します。転送クラスはデフォルトで出力キューにマップされますが、明示的なユーザー設定によって別のキューに再マップできます。スケジューラ名は、ステップ 2 で設定したスケジューラです。

  4. ステートメント set class-of-service interfaces interface-name scheduler-map scheduler-map-nameを使用して、スケジューラマップをインターフェイスに関連付けます。

    インターフェイスは、スケジューラ マップを使用して、そのインターフェイスの転送クラスにマッピングされた出力キューにドロップ プロファイル(およびその他の属性)を適用します。異なるインターフェイスで異なるスケジューラ マップを使用できるため、異なるインターフェイスで同じキュー番号でトラフィックを異なる方法で処理できます。

サポート、制限事項、および注意事項

キューにマッピングされた WRED アルゴリズムがパケット ドロップの対象と判断しない場合、ECN 設定と ECN ビット マーキングは重要ではありません。パケット転送の動作は、ECN が有効になっていない場合と同じです。

ECNはデフォルトで無効になっています。通常、ECN はベストエフォート型トラフィックを処理するキューでのみイネーブルにし、ロスレス トラフィックや厳密優先度の高いトラフィックを処理するキューでは ECN はイネーブルにしません。

ECN は以下をサポートしています。

  • IPv4 および IPv6 パケット

  • タグなしパケット、単一タグ付きパケット、および二重タグ付きパケット

  • IP トンネリングされたパケットの外部 IP ヘッダー(内部 IP ヘッダーは除く)

ECN は以下をサポートしていません。

  • MPLS カプセル化を使用した IP パケット

  • IPトンネリングパケットの内部IPヘッダー(ただし、ECNは外部IPヘッダーで動作します)

  • マルチキャスト、ブロードキャスト、宛先ルックアップ失敗(DLF)トラフィック

  • 非 IP トラフィック

手記:

非 ECT トラフィックに WRED ドロップ プロファイルを適用するには、ECN が有効ではない別の出力キューに非 ECT トラフィックを割り当て、そのキューに WRED ドロップ プロファイルを適用するようにマルチフィールド(MF)分類子を設定します。

プラットフォーム固有の動作

機能エクスプローラーを使用して、ECN のプラットフォームとリリースのサポートを確認します。

次の表を使用して、この機能のプラットフォーム固有の動作を確認します。

プラットホーム

QFX5000シリーズ

QFX5Kプラットフォームでは、ECN機能はWREDしきい値と緊密に統合されています。WRED しきい値は静的であるため、ECN もバッファしきい値の静的計算に基づいて機能します。ただし、キューの実際の共有バッファー使用量は動的です。ECN設定時のECNマーキング閾値計算に使用される計算式を以下に示します。

  • max buffer access eligibility for ECN enabled queue = (( shared pool size * hardware_alpha)/(1 + hardware_alpha)) + egress queue dedicated buffer

  • ECN marking start threshold = WRED start fill level percent * Max buffer access eligibility for ECN enabled queue

  • ECN 100% marking threshold = WRED end fill level percent * Max buffer access eligibility for ECN enabled queue

ECN 対応パケットの輻輳中は、 ECN marking start threshold に達すると ECN CE マーキングが開始されます。ECN 対応パケットは、 ECN 100% marking threshold に達するまで確率的に ECN CE マーキングされます。このしきい値を超えると、キューが max buffer access eligibility for ECN enabled queue に達するまで、すべての ECN 対応パケットに ECN CE マークが付けられます。このしきい値を超えると、テールドロップが発生します。

上記の max buffer access eligibility for ECN enabled queue の計算では、1 つのキューだけで共有バッファー領域をめぐって競合するという最良のシナリオが想定されています。ただし、輻輳したキューに対する実際の共有バッファーの使用は、任意の時点での共有バッファーの競合するキューの数に基づいて動的に減少する可能性があります。以下は、 actual dynamic max buffer usage per queueを計算する式です。

  • actual max buffer usage for ECN enabled queue = (shared pool size * hw_alpha) / (1 + (hw_alpha * number of competing queues)) + egress queue dedicated buffer + ingress Pg dedicated buffer by the traffic flow

計算に使用される2つのパラメータ number of competing queuesingress Pg dedicated buffer by the traffic flowactual dynamic max buffer usage per queue これらのパラメータはどちらも本質的に動的であるため、ECNしきい値の計算中に考慮することはできません。これにより、ECN 対応キューの実際の最大バッファ使用量が、計算された静的 ECN マーキングしきい値を下回る可能性があります。

そのため、特定の共有バッファおよび WRED フィル レベル設定では、ECN 対応の損失キューで ECN マーキングを行う前でも、共有バッファの枯渇によりパケット テール ドロップが発生する可能性があります。ロスレスキューの場合、上記の制限により、PFC XOFFしきい値は静的ECNしきい値とは異なり動的であるため、PFCはECNマーキングの前にイングレスポートから開始できます。輻輳したキューのピーク バッファ使用量を監視し、それに応じて ECN/WRED しきい値を微調整することで、適切な ECN マーキングしきい値を決定できます。

QFX10000シリーズ

  • QFX10000 スイッチでは、ECN のキューを有効にし、WRED ドロップ プロファイルをキューに適用すると、WRED ドロップ プロファイルは ECN トラフィックを輻輳が発生しているとマークするためのしきい値のみを設定します(CE、11)。ECN 対応キューでは、WRED ドロップ プロファイルは非 ECT(00)トラフィック(ECN に対応していないトラフィック)のドロップしきい値を設定しません。代わりに、スイッチはトラフィックにテールドロップ アルゴリズムを使用します。つまり、輻輳の期間中は ECN 対応キューで非 ECT とマークされます。

変更履歴テーブル

機能のサポートは、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がプラットフォームでサポートされているかどうかを判断します。

解放
形容
15.1
リリース 15.1 以降では、WRED パケット ドロップ プロファイルを設定し、ポート スケジューリングをサポートするスイッチの出力キューに適用できます(ETS 階層スケジューリングはサポートされていないか、使用されていません)。