Congestion Management(輻輳管理)
輻輳管理は、ネットワークデバイスのキューイング機能を活用して、トラフィックが過負荷になるのを防ぐための技術です。以下のキューイング方法が主要な技術として使用されます。
Class-Based Weighted Fair Queuing (CBWFQ)
CBWFQは、トラフィックをクラスに基づいて分類し、各クラスに対して帯域幅を公平に割り当てる技術です。
以下の設定例ではVOICEクラスに対して2 Mbpsの帯域幅を保証して、ほかのすべてのトラフィックに対してフェアキューイングを適用しています。
R1(config)#class-map match-any VOICE
R1(config-cmap)#match ip dscp ef
R1(config-cmap)#exit
R1(config)#
R1(config)#policy-map CBWFQ_POLICY
R1(config-pmap)#class VOICE
R1(config-pmap-c)#bandwidth 2000
R1(config-pmap-c)#class class-default
R1(config-pmap-c)#fair-queue
Low Latency Queuing (LLQ)
LLQは、CBWFQに優先キュー(priority queue)を追加し、特定のトラフィック(通常は音声トラフィック)に対して絶対的な優先順位を与える技術です。
以下の設定例ではVOICEクラスに対して最大1.5 Mbpsの帯域幅を優先的に割り当てます。このトラフィックは、常に最優先で処理されます。
R1(config)#class-map match-any VOICE
R1(config-cmap)#match ip dscp ef
R1(config-cmap)#exit
R1(config)#
R1(config)#policy-map LLQ_POLICY
R1(config-pmap)#class VOICE
R1(config-pmap-c)#priority 1500
R1(config-pmap-c)#class class-default
R1(config-pmap-c)#fair-queue
Congestion Avoidance(輻輳回避)
輻輳回避は、ネットワークが輻輳状態に陥る前にトラフィックを制御する技術です。主な技術として以下のものがあります。
Weighted Random Early Detection (WRED)
WREDは、キューが満たされる前にランダムにパケットをドロップすることで、輻輳を回避し、TCPフローを減速させます。
以下の設定例はAF31,AD21,AF11のDSCP値を持つトラフィックを分類して、それぞれのトラフィックに対してDSPC値に基づいたWREDを有効にしています。また、最低閾値(WREDが発動し始める値)、最大閾値(すべてのパケットをドロップする値)、マックスドロップ率(パケットをドロップする割合)をそれぞれ設定しています。
AF31:20、40、10
AF21:15、30、20
AF11:10、20、30
R1(config)#class-map match-any AF31_TRAFFIC
R1(config-cmap)#match dscp af31
R1(config-cmap)#exit
R1(config)#class-map match-any AF21_TRAFFIC
R1(config-cmap)#match dscp af21
R1(config-cmap)#exit
R1(config)#class-map match-any AF11_TRAFFIC
R1(config-cmap)#match dscp af11
R1(config-cmap)#exit
R1(config)#policy-map WRED_POLICY
R1(config-pmap)#class AF31_TRAFFIC
R1(config-pmap-c)#bandwidth 2000
R1(config-pmap-c)#random-detect dscp-based
R1(config-pmap-c)#random-detect dscp af31 20 40 10
R1(config-pmap-c)#queue-limit 100
R1(config-pmap-c)#exit
R1(config-pmap)#class AF21_TRAFFIC
R1(config-pmap-c)#bandwidth 1500
R1(config-pmap-c)#random-detect dscp-based
R1(config-pmap-c)#random-detect dscp af21 15 30 20
R1(config-pmap-c)#queue-limit 80
R1(config-pmap-c)#exit
R1(config-pmap)#class AF11_TRAFFIC
R1(config-pmap-c)#bandwidth 1000
R1(config-pmap-c)#random-detect dscp-based
R1(config-pmap-c)#random-detect dscp af11 10 20 30
R1(config-pmap-c)#queue-limit 60
R1(config-pmap-c)#exit
R1(config-pmap)#class class-default
R1(config-pmap-c)#bandwidth 500
R1(config-pmap-c)#random-detect
R1(config-pmap-c)#exit
R1(config-pmap)#interface GigabitEthernet0/1
R1(config-if)#service-policy output WRED_POLICY
Tail Drop
Tail Dropは、キューがいっぱいになった時に新しいパケットをドロップする従来の手法です。シンプルですが、すべてのTCPフローが同時に減速し、パフォーマンスの急激な低下を招くことがあります。
以下の設定例では、キューのサイズを200パケットに制限し、これを超えた場合はTail Dropが発生します。
R1(config)#policy-map TAILDROP_POLICY
R1(config-pmap)#class class-default
R1(config-pmap-c)#queue-limit 200