CoS Explicit Congestion Notification(CoS明示的輻輳通知)
明示的輻輳通知(ECN)は、TCP/IPベースのネットワーク上の2つのエンドポイント間のエンドツーエンドの輻輳通知を可能にします。2つのエンドポイントは、ECN対応の送信側とECN対応の受信者です。ECNが正しく動作するためには、両方のエンドポイントと、エンドポイント間のすべての中間デバイスでECNを有効にする必要があります。ECN をサポートしていない伝送パス内のデバイスは、エンドツーエンドの ECN 機能を中断します。
ECNは、パケットをドロップすることなく、混雑が解消されるまで送信デバイスに伝送速度を落とさせることで、パケットの損失と遅延を減らすことを目的として、ネットワークに輻輳を通知します。RFC 3168、 IPへの明示的輻輳通知(ECN)の追加は、ECNを定義します。
ECNはデフォルトで無効になっています。通常、ECN を有効にするのはベストエフォート トラフィックを処理するキューだけです。これは、他のトラフィック タイプでは輻輳通知の方法が異なるためです。ロスレス トラフィックは優先度ベースのフロー制御(PFC)を使用し、ストリクト高優先度トラフィックは、設定された最大レートに達するまで必要なポート帯域幅をすべて受信します。
個々の出力キュー(転送クラスで表される)で ECN を有効にするには、キュースケジューラ設定で ECN を有効にし、スケジューラを転送クラス(キュー)にマッピングしてから、スケジューラをインターフェイスに適用します。
ECN には、静的 ECN と動的 ECN(D-ECN)の 2 種類があります。静的ECNでは、輻輳通知をトリガーするしきい値を手動で設定する必要があり、設定を変更するまでしきい値は変わりません。ダイナミックECNは、キューの長さやトラフィックパターンなどのリアルタイムの状態に基づいて、しきい値を自動的に調整します。
サポートされているデバイスでは、両方のECNバージョンをデバイス上で同時に有効にできますが、特定のキューに割り当てることができるバージョンは一度に1つだけです。
ECNがキューで動作するためには、加重ランダム早期検出(WRED)パケットドロッププロファイルをキューに適用する必要もあります。
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 ビット
DiffServフィールドの2つのECNビットは、 表1に示すように、パケットがECN対応トランスポート(ECT)パケットとしてマークされているかどうか、つまり、トランスポートプロトコルの両方のエンドポイントがECN対応であるかどうか、および混雑が発生しているかどうか(CE)を決定する4つのコードを提供します。
ECNビット(コード) |
意味 |
---|---|
00 |
Non-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が有効になっている必要があります。そうでなければ、ECNは機能しません。
パケットがデバイスを通過し、WRED パケット ドロップ メカニズムを使用する出力キューで輻輳が発生した場合、デバイスは DiffServ ECN フィールドを CE(11)に設定して、パケットに輻輳が発生しているとマークします。(TCP 輻輳通知のように)パケットをドロップする代わりに、デバイスはパケットを転送します。
出力キューでは、WRED アルゴリズムが、キューのフィル レベル(キューのフル状態)に基づいてパケットがドロップ適格かどうかを判断します。パケットがドロップ適格であり、ECN 対応とマークされている場合、そのパケットは CE とマークされて転送されます。パケットがドロップ適格であり、ECN 対応としてマークされていない場合、ドロップされる可能性があります。WRED アルゴリズムの詳細については 、「ECN しきい値の WRED ドロップ プロファイル制御 」を参照してください。
パケットが受信側のエンドポイントに到達すると、CEマークはネットワークが混雑していることを受信側に知らせます。次に、受信者は、ネットワークに輻輳があることを示すメッセージを送信側に送信(エコー)します。送信側は輻輳通知メッセージを確認し、伝送速度を低下させます。 図1 は、ECNがネットワークの輻輳を緩和する仕組みをまとめたものです。
エンドツーエンドのECNの動作には以下が含まれます。
-
ECN 対応の送信側と受信側は、接続の確立中に ECN 機能をネゴシエートします。
-
ECN ケーパビリティのネゴシエーションが成功した後、ECN 対応送信者は、ECT フィールドが設定された IP パケットを受信者に送信します。
手記:送信側と受信側の間のパスにある すべての 中間デバイスで ECN を有効にする必要があります。
-
デバイス出力キューの WRED アルゴリズムが、キューに輻輳が発生しており、パケットがドロップ適格であると判断した場合、デバイスはパケットを「congestion experienced」(CE)としてマークして、ネットワーク上で輻輳が発生していることを受信者に示すことができます。パケットにすでに CE のマークが付けられている場合(別のデバイスのエグレスですでに輻輳が発生している)、デバイスは CE マーク付きのパケットを転送します。
エグレスキューに混雑がない場合、デバイスはパケットを転送し、ECN ビットの ECT 対応マーキングを変更しないため、パケットは ECN 対応としてマークされますが、混雑が発生しているとはマークされません。
-
受信者は、輻輳パスに沿って輻輳が発生したことを示す CE とマークされたパケットを受信します。
-
受信側は、TCPヘッダーのフラグフィールドにECEビット(ビット9)がマークされたパケットを送信側にエコー(送信)します。ECEビットはECNエコーフラグビットで、ネットワーク上に輻輳があることを送信側に通知します。
-
送信側はデータ伝送速度を下げ、TCPヘッダーのフラグフィールドにCWRビット(ビット8)がマークされたパケットを受信側に送信します。CWRビットは、混雑ウィンドウ削減フラグビットであり、混雑が発生したという通知が受信側に通知されたことを受信側に確認します。
-
受信側がCWRフラグを受信すると、受信側は送信側への返信のECEビットの設定を停止します。
表 2 は、ECN 対応キュー上のトラフィックの振る舞いをまとめたものです。
ECNビットの着信IPパケットマーキング |
出力キューでの ECN 設定 |
WREDアルゴリズムがパケットをドロップ適格と判断した場合のアクション |
ECNビットの発信パケットマーキング |
---|---|---|---|
非ECT (00) |
関係ない |
落とす。 |
ECNビットがマークされていません |
ECT (10 または 01) |
ECN無効化 |
落とす |
パケットドロップ。ECN ビットはマークされていません |
ECT (10 または 01) |
ECN対応 |
落とさないでください。パケットに輻輳が発生しているとマークします(CE、ビット11)。 |
混雑を示すために ECT(11)とマークされたパケット |
CE (11) |
ECN無効化 |
落とす |
パケットドロップ。ECN ビットはマークされていません |
CE (11) |
ECN対応 |
落とさないでください。パケットはすでに輻輳が発生しているとマークされています。ECN マーキングを変更せずにパケットを転送します。 |
混雑を示すために ECT(11)とマークされたパケット |
キューにマッピングされた WRED ドロップ プロファイルによって定義された輻輳が出力キューで発生していない場合、すべてのパケットが転送され、パケットはドロップされません。
ECNとPFCおよびEthernet PAUSEの比較
ECNは、IPトラフィックのエンドツーエンドのネットワーク輻輳通知メカニズムです。プライオリティベースのフロー制御(PFC)(IEEE 802.1Qbb)とイーサネット一時停止(IEEE 802.3X)は、異なるタイプの輻輳管理メカニズムです。
ECN では、出力キューにも WRED パケット ドロップ プロファイルが関連付けられている必要があります。PFC が有効になっているトラフィックに使用される出力キューには、WRED ドロップ プロファイルを関連付けないでください。イーサネット ポーズが有効になっているインターフェイスには、WRED ドロップ プロファイルを関連付けないでください。
PFC は、ロスレス トラフィックをサポートするピアツーピアのフロー制御メカニズムです。PFC により、輻輳時に接続されたピア デバイスがフロー伝送を一時停止できます。PFC を使用すると、リンク上のすべてのトラフィックではなく、リンク上の特定のタイプのフローでトラフィックを一時停止できます。例えば、 fcoe
転送クラスなどのロスレス トラフィック クラスで PFC を有効にすることができます(また、有効にする必要があります)。Ethernet PAUSE もピアツーピアのフロー制御メカニズムですが、Ethernet PAUSE は、指定されたトラフィック フローのみを一時停止するのではなく、物理リンク上のすべてのトラフィックを一時停止します。
PFC と Ethernet PAUSE を使用すると、フローの送信エンドポイントと受信エンドポイントは、中間デバイス間で輻輳情報を相互に伝達しなくなります。代わりに、PFC は、データ センター ブリッジング(DCB)標準をサポートする 2 つの PFC 対応ピア デバイス(デバイスなど)間のフローを制御します。PFC は、フロー出力キューが輻輳したときに、接続されたピアに一時停止メッセージを送信することで機能します。Ethernet PAUSE は、輻輳時にリンク上のすべてのトラフィックを一時停止するだけであり、DCB は必要ありません。
PFC はこのように機能します: 装置出力待ち行列が特定のしきい値までいっぱいになると、装置はデータを伝送している接続ピア装置に PFC 一時停止メッセージを送信します。一時停止メッセージは、送信デバイスにフローの送信を一時停止するように指示します。輻輳が解消されると、デバイスは別の PFC メッセージを送信して、接続されたピアに送信を再開するように指示します。(送信デバイスからの出力キューも一定のしきい値に達すると、そのデバイスは、送信先の接続ピアに PFC 一時停止メッセージを送信できます。このようにして、PFC は伝送の一時停止をネットワークを介して伝播できます)。
詳細については、 CoS フロー制御(イーサネット、一時停止、および PFC)について を参照してください。「 レイヤー 3 インターフェイス全体の PFC 機能について」も参照してください。
ECNしきい値のWREDドロッププロファイル制御
WRED ドロップ プロファイルを転送クラス(出力キューにマッピング)に適用して、デバイスが ECN 対応パケットをマーキングする方法を制御します。スケジューラ マップは、ドロップ プロファイルをスケジューラおよび転送クラスに関連付け、そのスケジューラ マップをインターフェイスに適用して、それらのインターフェイスに転送クラスのスケジューリング プロパティを実装します。
ドロップ プロファイルは、キューのフィル レベル(キューのフルネスの割合)とドロップ確率(パケットがドロップされる確率の割合)のペアを定義します。キューが指定されたレベルまでいっぱいになると、ドロップ プロファイルに一致するトラフィックは、そのフィル レベルとペアになったドロップ確率を持ちます。ドロップ プロファイルを設定するときは、フィル レベルとドロップ確率のペアを設定して、キューのフルネスのさまざまなレベルでパケットがどのようにドロップするかを制御します。
最初の約定レベルとドロップ確率のペアがドロップ開始点です。キューが最初のフィルレベルに達するまで、パケットはドロップされません。キューが最初のフィル レベルに達すると、フィル レベルを超えたパケットは、フィル レベルとペアになったドロップ確率に等しい確率でドロップされます。
最後の約定レベルとドロップ確率のペアがドロップ エンド ポイントです。キューが最後のフィルレベルに達すると、ECN用に設定されていない限り、すべてのパケットが破棄されます。
ロスレス キュー( no-loss
パケット ドロップ属性で設定された転送クラス)とストリクト ハイ プライオリティ キューは、ドロップ プロファイルを使用しません。ロスレス キューは、PFC を使用してトラフィックのフローを制御します。ストリクト高プライオリティ キューは、設定された最大帯域幅制限まで、必要なすべてのポート帯域幅を受信します。
デバイスによって、ドロップ プロファイルでサポートされる充填レベルとドロップ確率のペアの量は異なります。
最後の塗りつぶしレベルを 100% に設定しないでください。
ドロッププロファイル設定は、ECNパケットに以下のように影響します。
-
ドロップ開始点 - ECN対応パケットは、混雑経験(CE)としてマークされる場合があります。
-
ドロップエンドポイント - ECN対応パケットには必ずCEとマークされます。
ドロップ開始ポイントからドロップ終了ポイントまでキューがいっぱいになると、ECNパケットがCEとマークされる確率は、ベストエフォートトラフィックにドロッププロファイルを適用した場合に非ECNパケットがドロップされる確率と同じになります。キューがいっぱいになると、ベストエフォート型トラフィックにドロッププロファイルを適用すると、非ECNパケットがドロップされる確率が高くなるのと同様に、ECNパケットがCEとマークされる確率が高まります。
ドロップエンドポイントでは、すべてのECNパケットはCEとマークされますが、ECNパケットはドロップされません。キューのフィルレベルがドロップエンドポイントを超えると、すべてのECNパケットにCEのマークが付けられます。この時点で、ECN 以外のパケットはすべて破棄されます。ECN パケット (および他のすべてのパケット) は、キューが完全にいっぱいになるとテールドロップされます。
WRED パケット ドロップ プロファイルを設定し、それを出力キューに適用するには(ETS をサポートするデバイスで階層型スケジューリングを使用):
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
ステートメントを使用してドロッププロファイルを設定します。ステートメント
set class-of-service schedulers scheduler-name drop-profile-map loss-priority (low | medium-high | high) protocol any drop-profile profile-name
を使用して、ドロッププロファイルをキュースケジューラにマッピングします。ドロッププロファイルの名前は、ステップ1で設定したWREDプロファイルの名前です。ステップ 2 でドロップ プロファイルに関連付けるスケジューラを、ステートメント
set class-of-service scheduler-maps map-name forwarding-class forwarding-class-name scheduler scheduler-name
を使用して出力キューにマップします。転送クラスは、出力キューを識別します。転送クラスはデフォルトで出力キューにマップされ、明示的なユーザー設定によって別のキューに再マップできます。スケジューラ名は、ステップ 2 で設定したスケジューラです。ステートメント
set class-of-service traffic-control-profiles tcp-name scheduler-map map-name
を使用して、スケジューラ マップをトラフィック制御プロファイルに関連付けます。スケジューラ マップ名は、ステップ 3 で設定した名前です。ステートメントを使用して、トラフィック制御プロファイルをインターフェイスに関連付け
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 階層スケジューリングがサポートされていないか、使用されていません)。
set class-of-service drop-profiles profile-name interpolate fill-level level1 level2 ... level32 drop-probability probability1 probability2 ... probability32
ステートメントを使用してドロッププロファイルを設定します。フィル レベル/ドロップ確率ペアは 2 つまで、最大 32 ペアまで指定できます。ステートメント
set class-of-service schedulers scheduler-name drop-profile-map loss-priority (low | medium-high | high) drop-profile profile-name
を使用して、ドロッププロファイルをキュースケジューラにマッピングします。ドロッププロファイルの名前は、ステップ1で設定したWREDプロファイルの名前です。ステップ 2 でドロップ プロファイルに関連付けるスケジューラを、ステートメント
set class-of-service scheduler-maps map-name forwarding-class forwarding-class-name scheduler scheduler-name
を使用して出力キューにマップします。転送クラスは、出力キューを識別します。転送クラスはデフォルトで出力キューにマップされ、明示的なユーザー設定によって別のキューに再マップできます。スケジューラ名は、ステップ 2 で設定したスケジューラです。ステートメント
set class-of-service interfaces interface-name scheduler-map scheduler-map-name
を使用して、スケジューラ マップをインターフェイスに関連付けます。インターフェイスは、スケジューラマップを使用して、そのインターフェイス上の転送クラスにマッピングされた出力キューにドロッププロファイル(およびその他の属性)を適用します。異なるインターフェイスで異なるスケジューラ マップを使用できるため、異なるインターフェイスの同じキュー番号が異なる方法でトラフィックを処理できます。
ダイナミックECN
ダイナミックECNは、混雑通知イベントをトリガーするしきい値を自動化する方法を提供することで、ECN機能セットを拡張します。Junos OS Evolvedは、キューの長さやトラフィックパターンなどのリアルタイム状態を監視して、しきい値を調整する必要があるかどうかを評価します。これにより、静的ECNよりも輻輳イベントへの応答が速くなり、輻輳制御効率が向上します。
D-ECNは静的ECNよりも実装が難しく、積極的な監視が必要です。ネットワークの状態と設定を評価して、D-ECN がネットワークに最も適しているかどうかを判断する必要があります。
Feature Explorerで、お使いのデバイスがD-ECNをサポートしているかどうかを確認できます。
サポート、制限、注意事項
キューにマッピングされた 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 トラフィックを割り当てるようにマルチフィールド(MF)分類子を設定し、そのキューに WRED ドロップ プロファイルを適用します。
プラットフォーム固有の動作
Feature Explorerを使用して、ECNのプラットフォームとリリースのサポートを確認します。
次の表を使用して、この機能のプラットフォーム固有の動作を確認します。
プラットホーム |
差 |
---|---|
PTX10001-36MR、PTX10004、PTX10008、PTX10016 |
スケジューラのバッファレートと低いパーセントドロッププロファイルを定義することで、低閾値ECN(バッファがいっぱいになり始めたらすぐにECNマーキングを開始する)を実装できます。 バッファー レートは、バッファー サイズ計算の基本レートとして機能します。バッファレートは、VOQの目標レートであり、典型的な輻輳時の意図されたエグレスキューレートです。 また、ドロッププロファイルに対して、より粒度の高い(10分の1パーセントまで)充填レベルのパーセンテージを小さく定義することもできます。つまり、フィルレベルを 0.7% まで低く設定できます。
手記:
PTXルーターは、静的ECNのみをサポートしています。 |
QFX5000シリーズ |
QFX5Kプラットフォームでは、ECN機能はWREDしきい値と緊密に統合されています。WREDのしきい値は静的であるため、ECNもバッファしきい値の静的計算に基づいて機能します。ただし、キューの実際の共有バッファー使用量は動的です。以下は、ECN設定時のECNマーキング閾値計算に使用される式です。
ECN対応パケットの輻輳中、ECN CEマーキングは、 上記の
したがって、特定の共有バッファと WRED フィルレベル設定では、ECN 対応損失キューでの ECN マーキングの前でも、共有バッファの枯渇によるパケットテール ドロップが発生する可能性があります。ロスレス キューの場合、上記の制限により、PFC XOFF 閾値は静的な ECN 閾値とは異なり動的であるため、PFC は ECN マーキングの前に入力ポートから開始できます。輻輳したキューのピークバッファ使用量を監視し、それに応じて ECN/WRED しきい値を微調整することで、適切な ECN マーキングしきい値を決定できます。 |
QFX10000シリーズ |
|