CoSの明示的な輻輳通知を理解する
ECN(Explicit Congestion Notification)により、TCP/IP ベースのネットワーク上の 2 つのエンドポイント間でエンドツーエンドの輻輳通知が可能になります。2 つのエンドポイントは、ECN 対応送信者と ECN 対応受信者です。両方のエンドポイントで ECN を有効にする必要があります。ただし、サポートされていないピアの場合、ECNをサポートするSRXデバイスは、サポートされていないピアからの受信パケットをブートストラップし、パケットが発生したときにネットワーク輻輳を通知するマークを付けます。
ECN は、パケットをドロップすることなく、送信デバイスが輻輳が解消されるまで伝送速度を下げることで、パケットの損失と遅延を減らすことを目的として、ネットワークに輻輳を通知します。RFC 3168、 IPへの明示的輻輳通知(ECN)の追加は、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(0)を超えるレベルに満たされた場合、デバイスはそのパケットに輻輳が発生しているとマークします。デバイスがパケットに輻輳の発生を示すかどうかは、そのフィル レベルでのキューのドロップ確率と同じ確率です。
ECNは、IPヘッダーの差別化サービス(DiffServ)フィールドの2つの最も重要なビットをマークすることで、輻輳が発生したかどうかを通信します。DiffServ フィールドの最上位の 6 ビットには、DSCP(差別化サービス コード ポイント)ビットが含まれています。2つのECNビットの状態は、パケットがECN対応パケットであるか否か、輻輳が発生したか否かを示します。
ECN 対応送信者は、パケットを ECN 対応としてマークします。送信者が ECN 対応でない場合、パケットは ECN 対応でないとマークされます。ECN 対応パケットがデバイスのエグレス キューで輻輳を経験した場合、デバイスはそのパケットが輻輳を経験しているとマークします。パケットがECN対応レシーバー(宛先エンドポイント)に到達すると、レシーバーは輻輳を示すマークが付いたパケットを送信することで、送信者(送信元エンドポイント)に輻輳インジケータをエコーします。
受信側から輻輳インジケータを受信した後、送信元エンドポイントは伝送速度を低下させ、輻輳を緩和します。これは、TCP輻輳通知と管理の結果と似ていますが、ネットワーク輻輳を通知するためにパケットをドロップする代わりに、ECNはパケットをマークし、受信者は送信者に輻輳通知をエコーします。パケットは破棄されないため、パケットを再送信する必要はありません。
ECN は、SRX380、SRX300、SRX320、SRX340、SRX345、vSRX3.0 でサポートされています。
DiffServ フィールドの ECN ビット
DiffServフィールドの2つのECNビットは、パケットがECN対応トランスポート(ECT)パケットとしてマークされているかどうかを判断する4つのコードを提供します。 これは、表1 に示すように、トランスポートプロトコルの両方のエンドポイントがECN対応であり、輻輳が発生した場合(CE)があることを意味します。
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 対応としてマークします。
パケットがデバイスを通過し、WREDパケットドロップメカニズムを使用する出力キューで輻輳が発生すると、デバイスはDiffServ ECNフィールドをCE(11)に設定することで、パケットに輻輳が発生しているとマークします。TCP輻輳通知と同様にパケットをドロップする代わりに、デバイスがパケットを転送します。
エグレス キューでは、WRED アルゴリズムによって、キューのフィル レベル(キューのフル数)に基づいて、パケットがドロップするかどうかを判断します。パケットがドロップすると、適格で、ECN 対応とマークされた場合、そのパケットは CE とマークされて転送できます。パケットがドロップすると、適格で、ECN 対応としてマークされていない場合、破棄されます。WRED アルゴリズムの詳細については、 ECN しきい値の WRED ドロップ プロファイル制御 を参照してください。
パケットがレシーバーエンドポイントに到達すると、CEマークがネットワーク輻輳があることを受信者に伝えます。次に、受信者はネットワークに輻輳があることを示すメッセージを送信者に送信(エコー)します。送信者は輻輳通知メッセージを確認し、送信レートを削減します。 図 1 は、ECN がネットワーク輻輳を緩和するためにどのように機能するかをまとめたものです。
エンドツーエンドの ECN 動作には以下が含まれます。
ECN 対応の送信者と受信者は、接続確立中に ECN 機能をネゴシエートします。
メモ:クライアントが ECN 対応でない場合、SRX デバイスは接続確立中にクライアントに代わって ECN をネゴシエートします。SRXデバイスは、SYNパケットのTCPヘッダーにECEビットとCWRビットを設定します。
ECN 機能のネゴシエーションに成功した後、ECN 対応送信者は ECT フィールドがレシーバに設定された IP パケットを送信します。
-
デバイスのエグレス キュー上の WRED アルゴリズムが、キューで輻輳が発生していると判断し、パケットが対象となるパケットをドロップした場合、デバイスはパケットを「輻輳が発生した」(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)SYN |
WRED が有効 —しきい値を超えた場合としきい値制限内にある両方のシナリオ |
ECN サポートを提供するブートストラップ |
TCP ヘッダーで ECE と CWR を設定し、IP ヘッダーで ECT を設定します。 |
ECT-ビット:00 WRED-MET:true |
非 ECT(00)データ |
WRED が有効 |
ドロップしないでください。ECN ビットを 01/10 にマークします。 |
パケットマーク ECT 01/10 |
該当なし |
非 ECT(00)データ |
WRED が有効—しきい値を満たす |
ドロップしないでください。- ECN ビット 11 をマークします。 |
パケット マーク付き ECT(CE) |
ECT-ビット:00 WRED-MET:true |
非 ECT(00) |
WRED 無効 |
変更なし |
変更なし |
該当なし |
ECT(10 または 01) |
WRED が有効 |
変更なし |
変更なし |
該当なし |
ECT(10 または 01) |
WRED が有効—しきい値を満たす |
ドロップしないでください。ECN ビットを 11 にマークし、ドロップ プロファイルに従ってドロップします。 |
パケット マーク付き ECT(CE) |
ECT-ビット:10 WRED-MET:true |
ECT(10 または 01) |
WRED 無効 |
変更なし |
変更なし |
該当なし |
ECT(11) |
WRED が有効 |
ドロップしないでください。パケットがすでに CE でマークされているため、変更せずにパケットを送信します。 |
ECT(11)とマークされ、輻輳を示すパケット |
ECT ビット:11 WRED-MET:偽 |
ECT(11) |
WRED 無効 |
パケットのドロップ |
パケットのドロップ |
該当なし |
ECT(11) |
WRED が有効—しきい値を満たす |
ドロップしないでください。パケットはすでに輻輳が発生しているとマークされており、ECN マーキングを変更せずにパケットを転送します。 |
ECT(11)とマークされ、輻輳を示すパケット |
ECT ビット:11 WRED-MET:true |
キューにマッピングされた WRED ドロップ プロファイルで定義された出力キューで輻輳が発生していない場合、すべてのパケットが転送され、パケットはドロップされません。
PFC およびイーサネット PAUSE と ECN の比較
ECN は、IP トラフィックに対するエンドツーエンドのネットワーク輻輳通知メカニズムです。プライオリティベースのフロー制御(PFC)(IEEE 802.1Qbb)とイーサネット PAUSE(IEEE 802.3X)は、異なるタイプの輻輳管理メカニズムです。
ECN では、出力キューにも WRED パケット ドロップ プロファイルが関連付けられている必要があります。PFC が有効になっているトラフィックに使用される出力キューは、関連する WRED ドロップ プロファイルを持つべきではありません。イーサネット一時停止が有効になっているインターフェイスには、WRED ドロップ プロファイルが関連付けられていない必要があります。
PFCは、ロスレストラフィックをサポートするピアツーピアフロー制御メカニズムです。PFCは、接続されたピアデバイスが、輻輳状態の間にフロー送信を一時停止することを可能にします。PFC では、リンク上のすべてのトラフィックではなく、リンク上の指定されたタイプのフローでトラフィックを一時停止できます。例えば、転送クラスなどの fcoe
ロスレストラフィッククラスでPFCを有効にすることができます(そして、必要があります)。イーサネット PAUSEは、ピアツーピアのフロー制御メカニズムでもありますが、指定されたトラフィックフローのみを一時停止する代わりに、イーサネット PAUSEは物理リンク上のすべてのトラフィックを一時停止します。
PFC およびイーサネット PAUSE を使用すると、フローの送受信エンドポイントは、中間デバイス間で互いに輻輳情報を通信しません。代わりに、PFC は、データ センター ブリッジング(DCB)規格をサポートする 2 台の PFC 対応ピア デバイス間のフローを制御します。PFC は、フロー出力キューが輻輳した場合、接続されたピアに一時停止メッセージを送信することで機能します。イーサネット一時停止は、輻輳中にリンク上のすべてのトラフィックを一時停止するだけで、DCBを必要としません。
WRED ドロップ プロファイル ECN しきい値の制御
WRED ドロップ プロファイルを転送クラス(出力キューにマッピングされている)に適用して、デバイスが ECN 対応パケットをマークする方法を制御します。スケジューラ マップは、ドロップ プロファイルをスケジューラと転送クラスに関連付け、スケジューラ マップをインターフェイスに適用して、それらのインターフェイスに転送クラスのスケジューリング プロパティを実装します。
ドロッププロファイルは、キューの塗りつぶしレベル(キューのフルネスの割合)とドロップ確率(パケットがドロップする確率の割合)のペアを定義します。キューが指定されたレベルにフィルされると、ドロッププロファイルに一致するトラフィックは、そのフィルレベルとドロップ確率と組み合わせています。ドロッププロファイルを設定する場合、一組のフィルレベルとドロップ確率を設定して、パケットが異なるレベルのキューフルネスでどのようにドロップするかを制御します。
最初のフィルレベルとドロップ確率のペアは、ドロップ開始点です。キューが最初のフィル レベルに達するまで、パケットはドロップされません。キューが最初のフィルレベルに達すると、フィルレベルを超えるパケットは、ドロップ確率とフィルレベルの組み合わせのドロップ確率と等しい破棄確率を持つ可能性があります。
最後のフィルレベルとドロップ確率のペアは、ドロップエンドポイントです。キューが最後のフィル レベルに達すると、ECN 用に設定されていない限り、すべてのパケットがドロップされます。
ロスレス キュー(パケット ドロップ属性で no-loss
設定された転送クラス)と絶対高優先度キューは、ドロップ プロファイルを使用しません。損失のないキューは、PFC を使用してトラフィックフローを制御します。
ドロッププロファイル設定は、以下のようにECNパケットに影響を与えます。
-
ドロップ開始点—ECN 対応パケットが、CE(輻輳経験値)としてマークされる場合があります。
-
ドロップエンドポイント-ECN対応パケットは常にCEとマークされます。
キューがドロップ開始点からドロップエンドポイントまで満たされると、ECNパケットがCEとマークされる可能性は、ベストエフォート型トラフィックにドロッププロファイルを適用した場合、ECN以外のパケットがドロップする可能性と同じです。キューが満たされると、ベストエフォート型トラフィックにドロップ プロファイルを適用すると、ECN 以外のパケットがドロップする可能性が高くなるのと同様に、ECN パケットが CE とマークされる可能性が高くなります。
ドロップエンドポイントでは、すべての ECN パケットが CE とマークされますが、ECN パケットはドロップされません。キューのフィル レベルがドロップ エンド ポイントを超えると、すべての ECN パケットが CE としてマークされます。キューが完全に満たされた場合、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
を使用してインターフェイスに関連付けます。インターフェイスはスケジューラ マップを使用して、ドロップ プロファイル(およびその他の属性)を、そのインターフェイス上の転送クラスにマッピングされた出力キューに適用します。異なるインターフェイスで異なるスケジューラ マップを使用できるので、異なるインターフェイス上の同じキュー番号が異なる方法でトラフィックを処理できます。
サポート、制限、注意事項
キューにマッピングされた WRED アルゴリズムが対象となるパケット ドロップを見つからなければ、ECN 設定と ECN ビット マーキングは重要ではありません。パケットトランスポートの動作は、ECNが有効になっていない場合と同じです。
ECN はデフォルトで無効になっています。通常、ベストエフォート型トラフィックを処理するキューでのみ ECN を有効にし、ロスレス トラフィックや絶対優先トラフィックを処理するキューでは ECN を有効にしません。
ECN は以下をサポートします。
IPv4 および IPv6 パケット
タグなし、単一タグ付き、および二重タグ付きパケット
IPトンネリングパケットの外側IPヘッダー(内部IPヘッダーではない)
ECNは以下をサポートしていません。
MPLS カプセル化された IP パケット
IPトンネリングパケットの内部IPヘッダー(ただし、ECNは外部IPヘッダーで動作します)
マルチキャスト、ブロードキャスト、および宛先ルックアップ失敗(DLF)トラフィック
非 IP トラフィック