モジュラ QoS の輻輳回避

輻輳回避技術では、トラフィック フローをモニタすることにより、共通ネットワークのボトルネックでの輻輳を予測し、回避します。発生した後に輻輳を制御する輻輳管理技術に対し、回避技術は輻輳が発生する前に実行されます。

輻輳の回避は、パケットのドロップにより行われます。Cisco NCS 540 シリーズ ルータは、次の QoS 輻輳回避技術をサポートしています。

テール ドロップと FIFO キュー

テール ドロップは、出力キューが満杯のときに、輻輳が削除されるまでパケットをドロップする輻輳回避技術です。テール ドロップでは、すべてのトラフィック フローを平等に扱い、サービス クラス間で区別しません。テール ドロップは、ファーストイン ファーストアウト(FIFO)キューに入り、下位リンク帯域幅によって決定したレートで転送された未分類のパケットを管理します。

テール ドロップの設定

クラスの一致基準を満たすパケットは、サービスを提供されるまで、クラス用に予約されたキューに蓄積されます。queue-limit コマンドを使用して、クラスの最大しきい値を定義します。最大しきい値に達すると、クラス キューへの待機パケットがテール ドロップ(パケット ドロップ)します。

制約事項

  • queue-limit コマンドを設定するときは、デフォルト クラスを除き、priority コマンド、shape average コマンド、bandwidth コマンド、または bandwidth remaining コマンドのいずれかを設定する必要があります。

設定例

テール ドロップの設定を実行するには、以下を完全に行う必要があります。
  1. 1 つ以上のインターフェイスに付加できるポリシー マップを作成(または変更)し、サービス ポリシーを指定します。

  2. トラフィック クラスのトラフィック ポリシーへの関連付け

  3. ポリシー マップに設定されているクラス ポリシーにキューが保持できる最大限度の指定

  4. ポリシー マップに属するトラフィックのクラスへの優先順位の指定

  5. (任意)ポリシー マップに属するクラスに割り当てた帯域幅の指定、またはさまざまなクラスに残りの帯域幅を割り当てる方法の指定

  6. 出力インターフェイスのサービス ポリシーとして使用するためのその出力インターフェイスへのポリシー マップの付加


Router# configure
Router(config)# policy-map test-qlimit-1
Router(config-pmap)# class qos-1
Router(config-pmap-c)# queue-limit 100 us
Router(config-pmap-c)# priority level 7
Router(config-pmap-c)# exit
Router(config-pmap)# exit

Router(config)# interface HundredGigE 0/6/0/18
Router(config-if)# service-policy output test-qlimit-1
Router(config-if)# commit

実行コンフィギュレーション


policy-map test-qlimit-1
 class qos-1
  queue-limit 100 us
  priority level 7
 !
 class class-default
 !
 end-policy-map
!

確認


Router# show qos int hundredGigE 0/6/0/18 output

NOTE:- Configured values are displayed within parentheses
Interface HundredGigE0/6/0/18 ifh 0x3000220  -- output policy
NPU Id:                        3
Total number of classes:       2
Interface Bandwidth:           100000000 kbps
VOQ Base:                      11176
VOQ Stats Handle:              0x88550ea0
Accounting Type:               Layer1 (Include Layer 1 encapsulation and above)
------------------------------------------------------------------------------
Level1 Class (HP7)                       =   qos-1
Egressq Queue ID                         =   11177 (HP7 queue)
TailDrop Threshold                       =   1253376 bytes / 100 us (100 us)
WRED not configured for this class

Level1 Class                             =   class-default
Egressq Queue ID                         =   11176 (Default LP queue)
Queue Max. BW.                           =   101803495 kbps (default)
Queue Min. BW.                           =   0 kbps (default)
Inverse Weight / Weight                  =   1 (BWR not configured)
TailDrop Threshold                       =   1253376 bytes / 10 ms (default)
WRED not configured for this class
 

関連項目

関連コマンド

ランダム早期検出と TCP

ランダム早期検出(RED)の輻輳回避技術は、TCP の輻輳制御メカニズムを利用しています。高輻輳期間の前にランダムにパケットをドロップすることにより、RED はパケットの送信元に、その伝送レートを低下させるよう指示します。パケット送信元が TCP を使用している場合、送信元はすべてのパケットが宛先に届くようになるまで伝送レートを下げます。これは輻輳が解消されたことを示します。TCP にパケットの送信速度を下げさせる手段として RED を使用できます。TCP は停止するだけでなく、素早く再起動して、ネットワークがサポート可能なレートに伝送レートを対応させます。

RED は時間の損失を分散させて、トラフィックのバーストを吸収しながら通常の低いキューの深さを維持します。インターフェイスでイネーブルにすると、RED は、設定時に選択したレートで輻輳が発生した場合にパケットのドロップを開始します。

ランダム早期検出の設定

ランダム早期検出(RED)を有効にするには、random-detect コマンドと default キーワードを使用する必要があります。

ガイドライン

class-default を含めて、任意のクラスで random-detect default コマンドを設定した場合は、shape average コマンド、bandwidth コマンド、および bandwidth remaining コマンドのいずれかを設定する必要があります。

設定例

ランダム早期検出の設定を実行するには、以下を完全に行う必要があります。
  1. 1 つ以上のインターフェイスに付加できるポリシー マップを作成(または変更)し、サービス ポリシーを指定します。

  2. トラフィック クラスのトラフィック ポリシーへの関連付け

  3. デフォルトの最小しきい値および最大しきい値を使用した RED の有効化

  4. (任意)ポリシー マップに属するクラスに割り当てた帯域幅の指定、またはさまざまなクラスに残りの帯域幅を割り当てる方法の指定

  5. (任意)指定したビット レートまたは使用可能な帯域幅のパーセンテージに従ったトラフィックのシェーピング

  6. 出力インターフェイスのサービス ポリシーとして使用するためのその出力インターフェイスへのポリシー マップの付加


Router# configure
Router(config)# policy-map test-wred-2
Router(config-pmap)# class qos-1
Router(config-pmap-c)# random-detect default
Router(config-pmap-c)# shape average percent 10
Router(config-pmap-c)# end-policy-map
Router(config)# commit
Router(config)# interface HundredGigE 0/6/0/18
Router(config-if)# service-policy output test-wred-2
Router(config-if)# commit

実行コンフィギュレーション


policy-map test-wred-2
 class qos-1
  random-detect default
  shape average percent 10
 !
 class class-default
 !
 end-policy-map
!

interface HundredGigE 0/6/0/18
 service-policy output test-wred-2
!

確認


Router# show qos int hundredGigE 0/6/0/18 output

NOTE:- Configured values are displayed within parentheses
Interface HundredGigE0/6/0/18 ifh 0x3000220  -- output policy
NPU Id:                        3
Total number of classes:       2
Interface Bandwidth:           100000000 kbps
VOQ Base:                      11176
VOQ Stats Handle:              0x88550ea0
Accounting Type:               Layer1 (Include Layer 1 encapsulation and above)
------------------------------------------------------------------------------
Level1 Class                             =   qos-1
Egressq Queue ID                         =   11177 (LP queue)
Queue Max. BW.                           =   10082461 kbps (10 %)
Queue Min. BW.                           =   0 kbps (default)
Inverse Weight / Weight                  =   1 (BWR not configured)
Guaranteed service rate                  =   10000000 kbps
TailDrop Threshold                       =   12517376 bytes / 10 ms (default)

Default RED profile
WRED Min. Threshold                      =   12517376 bytes (10 ms)
WRED Max. Threshold                      =   12517376 bytes (10 ms)

Level1 Class                             =   class-default
Egressq Queue ID                         =   11176 (Default LP queue)
Queue Max. BW.                           =   101803495 kbps (default)
Queue Min. BW.                           =   0 kbps (default)
Inverse Weight / Weight                  =   1 (BWR not configured)
Guaranteed service rate                  =   50000000 kbps
TailDrop Threshold                       =   62652416 bytes / 10 ms (default)
WRED not configured for this class

関連項目

関連コマンド

Weighted Random Early Detection:重み付けランダム早期検出

重み付けランダム初期検知(WRED)は、discard-class のような指定された任意の条件に基づいて選択的にパケットをドロップします。WRED は、この一致基準を使用して、異なるタイプのトラフィックの処理方法を決定します。

WRED は random-detect コマンドとさまざまな discard-class 値を使用して設定できます。値には、そのフィールドにおいて有効な値の範囲またはリストを指定できます。また、最小キューしきい値および最大キューしきい値を使用して、ドロップするポイントを決定できます。

パケットが着信すると、次の処理が行われます。

  • 平均キュー サイズが計算されます。

  • 平均キュー サイズが最小キューしきい値よりも小さい場合、着信パケットはキューイングされます。

  • 平均キュー サイズがそのトラフィック タイプの最小キューしきい値と、インターフェイスの最大しきい値の間の場合、そのトラフィック タイプのパケット ドロップ確率に応じて、パケットはドロップされるか、キューイングされます。

  • 平均キュー サイズが最大しきい値を超える場合、パケットはドロップします。

WRED の平均キュー サイズ

ルータで、WRED 計算で使用するパラメータが自動的に定義されます。平均キュー サイズは、キューの前回の平均と現在のサイズを基にしています。式は次のようになります。

average = (old_average * (1-2 -x)) + (current_queue_size * 2 -x)

ここで、x は指数加重係数です。

x を高い値にすると、前回の平均が重要視されます。係数を大きくすると、キューの長さの最大値と最小値が滑らかになります。平均キュー サイズは、素早い変化はしにくく、サイズの急激な変化を回避します。WRED 処理で、パケットのドロップの開始が遅くなりますが、実際のキュー サイズが最低しきい値を下回った時点でも、パケットのドロップが続く場合があります。ゆっくりと平均が推移するため、トラフィックの一時的なバーストが緩和されます。


(注)  

  • 指数加重係数 x は固定されており、ユーザが設定することはできません。

  • x の値が高すぎる場合、WRED は輻輳に反応しません。パケットは、WRED が無効のときのように送信またはドロップします。

  • x の値が低すぎると、WRED は一時的なトラフィック バーストに過剰反応し、不必要にトラフィックをドロップします。


x の値が低い場合、平均キュー サイズは現在のキュー サイズ付近を追跡します。結果、平均はトラフィック レベルの変化とともに上下します。この場合、WRED 処理は、長いキューに素早く応答します。キューが最低しきい値を下回ると、パケットのドロップ処理が停止します。

重み付けランダム早期検出の設定

この設定タスクは、RED に random-detect コマンドを設定しないことを除き、RED の場合と同様です。

制約事項

  • priority コマンドを使用して設定したクラスでは random-detect コマンドを使用できません。これは、プライオリティ キューイング(PQ)に設定されているクラスでは WRED が設定できないからです。

  • random-detect コマンドを設定するときは、shape average コマンド、bandwidth コマンド、および bandwidth remaining コマンドのいずれかを設定する必要があります。

設定例

ランダム早期検出の設定を実行するには、以下を完全に行う必要があります。
  1. 1 つ以上のインターフェイスに付加できるポリシー マップを作成(または変更)し、サービス ポリシーを指定します。

  2. トラフィック クラスのトラフィック ポリシーへの関連付け

  3. 一致条件(discard-class)の指定による WRED の有効化

  4. (任意)ポリシー マップに属するクラスに割り当てた帯域幅の指定、またはさまざまなクラスに残りの帯域幅を割り当てる方法の指定

  5. (任意)指定したビット レートまたは使用可能な帯域幅のパーセンテージに従ったトラフィックのシェーピング

  6. (任意)キュー制限の変更による各キューで使用可能なバッファ量の微調整

  7. 出力インターフェイスのサービス ポリシーとして使用するためのその出力インターフェイスへのポリシー マップの付加


Router# configure
Router(config)# policy-map test-wred-1
Router(config-pmap)# class qos-1
Router(config-pmap-c)# random-detect default
Router(config-pmap-c)# random-detect 10 ms 500 ms
Router(config-pmap-c)# shape average percent 10
Router(config-pmap-c)# commit

Router(config)# interface HundredGigE 0/6/0/18
Router(config-if)# service-policy output policy1
Router(config-if)# commit

実行コンフィギュレーション


policy-map test-wred-1
 class qos-1
  random-detect default
  random-detect 10 ms 500 ms
  shape average percent 10
 !
 class class-default
 !
 end-policy-map
!

interface HundredGigE 0/6/0/18
 service-policy output test-wred-1
!

確認


Router# show qos int hundredGigE 0/6/0/18 output

NOTE:- Configured values are displayed within parentheses
Interface HundredGigE0/6/0/18 ifh 0x3000220  -- output policy
NPU Id:                        3
Total number of classes:       2
Interface Bandwidth:           100000000 kbps
VOQ Base:                      11176
VOQ Stats Handle:              0x88550ea0
Accounting Type:               Layer1 (Include Layer 1 encapsulation and above)
------------------------------------------------------------------------------
Level1 Class                             =   qos-1
Egressq Queue ID                         =   11177 (LP queue)
Queue Max. BW.                           =   10082461 kbps (10 %)
Queue Min. BW.                           =   0 kbps (default)
Inverse Weight / Weight                  =   1 (BWR not configured)
Guaranteed service rate                  =   10000000 kbps
TailDrop Threshold                       =   1073741824 bytes / 858 ms (default)

Default RED profile
WRED Min. Threshold                      =   12517376 bytes (10 ms)
WRED Max. Threshold                      =   629145600 bytes (500 ms)

Level1 Class                             =   class-default
Egressq Queue ID                         =   11176 (Default LP queue)
Queue Max. BW.                           =   101803495 kbps (default)
Queue Min. BW.                           =   0 kbps (default)
Inverse Weight / Weight                  =   1 (BWR not configured)
Guaranteed service rate                  =   50000000 kbps
TailDrop Threshold                       =   62652416 bytes / 10 ms (default)
WRED not configured for this class

関連項目

関連コマンド