DynagenでCCIEを目指す
INE Workbook Volume I QoS Tips
最終更新:
it_certification
-
view
Tips
10.1. Hold-Queue and Tx-Ring
hardware queueのsizeをチューニングするには、以下のコマンドを使用します。
Router(config-if)# tx-ring-limit num
hardware queuのsizeを確認するためには、以下のコマンドを使用します。
Router#show controllers FastEthernet 0/0 | include tx_limit tx_limited=0(15) Router#
software queueのsizeをチューニングするには、以下のコマンドを使用します。
Router(config-if)# hold-queu num [{ in | out }]
10.2. Weighted Fair Queue
WFQは、IPアドレス, port番号を基にflowに分類し、各flow毎に帯域を割り当てる方法です。WFQはIP precendenceによって帯域を決定し、正確な重みづけの計算式は以下の通りです。。(例えば、IP precendece 1とIP precedence 2では、帯域の比率は2:3になります)
Weight = 32384 / ( IP precedence + 1 )
WFQは、以下のパラメータでチューニングする事ができます。
Router(config-if)# fair-queue CDT N_flow_queue N_reserved_queue
パラメータ | 説明 |
---|---|
CDT (congestion discard threthold) | 各flowに割り当てられるqueueのsizeが閾値を超えた場合、discardします |
N_flow_queue | flowに対するqueue数の上限を定義します |
N_reserved_queue | RSVP用に予約されたqueueの数を定義します |
10.3. Legacy RTP Reserved Queue
Voice bearer trafficはIP Precedence 5なので、Precendence値が大きいflowが存在する場合や他のflow数が多い場合などは、WFQはそれほど多くの帯域を割り当てられません。しかし、ip rtp reserveを使用すると、Voice用の帯域を確保するので、Voiceが枯渇する事はありません。本機能を使用するためには、以下のコマンドを投入します。
Router(config-if)# ip rtp reserve start_upd_port port_range bandwidth
デフォルトで帯域の75%までがWFQ, CBWFQとして使用する事ができます。75%までに制限するのは、残りの帯域をrouting update, L2 Keepaliveなどに使用させようとした配慮です。WFQ, CBWFQが使用できる最大帯域を変更するためには、以下のコマンドを投入します。#blockquote(){{Router(config-if)# max-reserved bandwidth percent }}
10.4. Legacy RTP Prioritization
本機能は、ip rtp reserveの後続の機能です。ip rtp reserveと異なり、Voice用のqueueはstrict priority queue (絶対優先queue)として扱われます。Voiceは真っ先に送信されるようになるので、jitter, letancyを軽減する事ができます。本機能を使用するためには、以下のコマンドを投入します。
Router(config-if)# ip rtp priority start_upd_port port_range bandwidth
10.5. Legacy Custom Queueing
以下のコマンドで、各queueに割り当てるパケットを定義する事ができます。queue_numは0から16までの17個が定義可能で、0を指定した場合は絶対優先されるsystem queueが使用されます。
Router(config)# queue-list list_num protocol ip queue_num tcp port
Router(config)# queue-list list_num protocol ip queue_num udp port
Router(config)# queue-list list_num protocol ip queue_num [{ lt | gt }] size
Router(config)# queue-list list_num protocol ip queue_num list acl_num
以下のコマンドでデフォルトで使用されるqueueを定義する事ができます。
Router(config)# queue-list list_num default queue_num
以下のコマンドで、各queueに対するbyte count(送信権)を設定します。なお、byte countはL2 frameのsizeに基づいて計算されます。CCIE試験では、L2 header (HDLC, ethernetなど) sizeを考慮した上での設定が求められます。
Router(config)# queue-list list_num byte-count size
以下のコマンドで、各queueに対するqueue sizeを定義する事ができます。
Router(config)# queue-list list_num limit queue_num
以下のコマンドでsystem queueの次に絶対優先されるqueueを定義する事ができます。Voiceのようにjitter, letencyを軽減したいパケットに使用します。但し、lowest-customで定義されたパケットは全く制限されないので他flowが枯渇する恐れがある事に注意して下さい。
Router(config)# queue-list list_num lowest-custom queue_num
定義したcustom queueをI/Fに適用するには、以下のコマンドを使用します。
Router(config-if)# custom-queue-list list_num
10.7. Legacy Priority Queue
Priorityは優先度が異なるhigh, midium, normal, lowの4種類のqueueで構成されるqueuingです。highの送信が完了すると、midiumに送信権が移ります。high, midiumの送信が完了すると、normalに送信権が移ります。high, midium, normalの送信が完了すると、lowに送信権が移ります。注意点は、優先度の低いflowが枯渇しやすい事です。
設定方法は以下の通りです。
設定方法は以下の通りです。
Router(config-if)# priority-list list_num protocol ip [{ high | midium | normal | low }] tcp port
Router(config-if)# priority-list list_num protocol ip [{ high | midium | normal | low }] udp port
Router(config-if)# priority-list list_num protocol ip [{ high | midium | normal | low }] [{ lt | gt }] size
Router(config-if)# priority-list list_num protocol ip [{ high | midium | normal | low }] list acl
各queueのsizeを定義します。
Router(config-if)# priority-list list_num queue-list high_size midium_size normal_size low_size
10.8. Legacy Random Early Detection
precedenceまたはDSCPに基づいたWREDを有効にします。
Router(config-if)# random-detect { precedence-based | dscp-based }
優先度(precendence, dscp)に基づいたdropされる確立を定義します。
queueの長さがminになった時点でdropされはじめ(drop確率0%)ます。queueが長くなるとdropされる確率は線形で上昇し、queueの長さがmaxになるとdropされる確率はdrop%になります。queueの長さがmaxを超えると100%の確率でdropされます。
queueの長さがminになった時点でdropされはじめ(drop確率0%)ます。queueが長くなるとdropされる確率は線形で上昇し、queueの長さがmaxになるとdropされる確率はdrop%になります。queueの長さがmaxを超えると100%の確率でdropされます。
Router(config-if)# random-detect precedence precedence min max [ drop ]
Router(config-if)# random-detect dscp dscp min max [ drop ]
exponential-weight-constantを定義します。このパラメータは、AvgQueueSizeを計算する際に使用します。大きい値を設定すればするほど、AvgQueueの変化が緩やかになります。
Router(config-if)# random-detect exponential-weight-constant num
Router(config-if)# random-detect exponential-weight-constant num
AvgQueueSize = OldQueueSize * ( 1 - 1/2^N ) + NewQueueSize * 1/(2^N) }}
10.9. Legacy Flow-Based Random Early Detection
フローベースのWREDを有効にします。
Router(config-if)# random-detect flow
WREDのフロー数を定義します。
Router(config-if)# random-detect flow count num
average-depth-factorを定義します。このパラメータは、dropのされやすさを定義します。2,4,8,16が設定可能でデフォルト値は4です。dropされるかどうかの判断基準は以下の式によって与えられ、値を大きくするとdropされずらくなりますがtail dropのリスクは大きくなります。言い換えれば、scaling-factorは各flowのキューサイズを定義するとも考えられます。(出典 : Flow-based_WRED)
Router(config-if)# random-detect flow average-depth-factor scaling-factor
average-flow-depth * scaling-factor < flow-depth
10.10. Selective Packet Discard
Selective Packet Discard (SPD; 選択パケット破棄) とは、Routing Processor (RP; ルートプロセッサ) で入力キューを管理する仕組みです。この仕組みにより、入力キューの輻輳が発生した時に、ルーティングプロトコルなど重要なパケットを優先させる事ができます。
具体的には以下の3つのキューを用いて制御します。
具体的には以下の3つのキューを用いて制御します。
general packet queue -> 一般のパケット SPD headroom -> BGP, IGP, L2 Keepalive extended SPD headroom -> IGP, L2 Keepalive
http://www.cisco.com/en/US/products/hw/routers/ps167/products_tech_note09186a008012fb87.shtml
http://www.cisco.com/JP/support/public/ht/tac/100/1007059/spd-j.shtml
http://www.cisco.com/JP/support/public/ht/tac/100/1007059/spd-j.shtml
RPはパケットをgeneral packet queueとpriority queueに格納します。ルーティングプロトコルなど優先度の高いパケットはpriority queueに格納しますが、その他のパケットはgeneral packet queueに格納します。
general packet queueに格納されたパケットは、以下のパラメータでdropされる確率を定義し、queue sizeによって以下の通りのdropが実行されます。
general packet queueに格納されたパケットは、以下のパラメータでdropされる確率を定義し、queue sizeによって以下の通りのdropが実行されます。
Router(config-if)# ip spd queue min-threshold max
Router(config-if)# ip spd queue max-threshold min
queue sizeがmin以下 -> NORMAL (破棄しない)
min以上 max以下 -> RNADOM DROP (ランダムに破棄する)
max以上 -> FULL DROP (必ず破棄する)
SPDにはnormal (default) modeとaggressive modeの2つのモードがあります。aggressive modeは無効なパケット(checksumによる破損発見, version不正, header長不正など)を破棄します。設定方法は以下の通りです。
TODO
Router(config-if)# ip spd mode [ aggressive | xxx ]
SPDは、ルーティングプロトコルやL2 Keepaliveなど優先度の高いパケット・フレームをpriority queue (SPD headroom) に格納します。SPDは、優先度が高いかどうかはIP preccedence値を見て判断します。ルーティングプロトコルは、IP precedenceが6に設定されているので、特別な設定を投入しなくてもpriority queueに格納されます。
SPD headroomのsizeは以下コマンドで定義する事ができます。
SPD headroomのsizeは以下コマンドで定義する事ができます。
Router(config-if)# spd headroom size
IGPとBGPは同一のIP precendence値が与えられます。そのため、BGPコンバージェンスなどの際は、IGPが破棄されてしまう事もあり得ます。IGPの安定性はBGPよりも優先されるべきですので、IGPやL2 Keep aliveにはExtended SPD headroomと呼ばれるキューが与えられます。SPD headroomが満杯の時は、Extended SPD headroomに格納する事で破棄を防ぎます。
Router(config-if)# spd extended-headroom size
10.11. Paylaod Compression on Serial Links
Payload Compression on Serial Links
Cisco IOSでは、stacker compression, predictor compressionをサポートします。それぞれの特徴をまとめると以下の通りです(CPU-insentiveは"CPU負荷が高い"の意味です。機会翻訳すると"CPU集約型"となってしまうので、日本語ドキュメントは充分な注意が必要です。)。
stac | predictor | |
---|---|---|
カプセル化 | ppp, hdlcなど多数 | pppのみ |
CPU負荷 | less CPU-insentive | more CPU-intensive |
memory負荷 | more memory-insentive | less memory-intensive |
Payload Compressionを有効にする設定は以下の通りです。
{{Router(config-if)# compress [{ stac | predictor }] }
Payload Compression on Frame-Relay
PVC単位でもI/F単位でも設定可能。
one-way-negotiationなどのオプションの意味は要調査
one-way-negotiationなどのオプションの意味は要調査
TODO
10.12. Generic TCP/UDP Header Compression
TCP/UDP header Compressionの設定は以下の通りです。また、passiveオプションを指定する事で、対向にCompressionの設定がなされている場合のみ、圧縮されたパケットを送信します。
Router(config-if)# ip tcp header-compression { passive }
Router(config-if)# ip rtp header-compression { passive }
TCP/UDP CompressionはCPU負荷が高い処理です。compressionするコネクション数を制限する事で、CPUを保護する機能も存在します。以下のコマンドで片方向コネクション数を制限する事ができます。( 例 : "Allow for a maximum of 16 concurrent TCP session"と出題された場合は、片方向コネクション数は32で指定して下さい )
Router(config-if)# ip tcp compression-connections num
Router(config-if)# ip rtp compression-connections num
10.13. MLP Link Fragmentation and Interleaving
Muti Link PPP
MLPPP(Multi Link PPP)とは複数の回線をまとめて、ひとつのPPP接続を実現する機能です。
以下の要領で、I/Fとvirtual templateを紐づける事で設定できます。
以下の要領で、I/Fとvirtual templateを紐づける事で設定できます。
interface Serial0/0
ppp multilink
!
interface Serial0/1
ppp multilink
!
multilink virtual-template 1
!
interface Virtual-Tempalate1
ip address 192.168.0.1 255.255.255.0
Fragmentation and Interleave
Cisco IOSでは、MLPPPに対してFragmentation and Interleaveを設定する事ができます。設定例は以下の通りです。なお、delayコマンドで、フラグメントする間隔を設定する事ができます。
interface Virtual-Tempalate1
ppp multilink interleave
ppp multilink fragment delay 10
10.14. Legacy Generic Traffic Shaping
Generic Traffic Shapingはトラフィックの送信量(Out方向のみ設定可)を制限する機能です。設定コマンドは以下の通りです。
Router(config-if)# traffic-shape rate cir bc be { queue_limit }
Router(config-if)# traffic-shape group acl cir bc be { queue_limit }
10.15. Legacy CAR for Admission Control
CARはトラフィックの送受信量(Out, Inの双方向設定可)を制限する機能です。
Router(config-if)# rate-limit [{ input | output }] cir bc be action
Router(config-if)# rate-limit [{ input | output }] access-group acl cir bc be action
10.18. Legacy CAR Access-Lists
CARはMACアドレスやIP Precedenceに基づいて帯域を制限する事ができます。これらの設定を使用するためには、以下の特殊なACLを定義する必要があります。
Router(config)# access-list rate-limit num mac_address
Router(config)# access-list rate-limit num precedence_mask
precedence_maskはIP precedence値を定義する16進数で2桁のマスクです。以下の書式で与えられるマスクで、例えば、precedence値が3, 7に合致するマスクは0x88 (10001000)と定義できます。{{ [p7][p6][p5][p4][p3][p2][p1][p0]
このACLを用いて帯域を制限する設定は以下の通りです。
Router(config-if)# rate-limit [{ input | output }] rate-limite acl cir bc be action
10.67 Catalyst QoS Port-Based Policing and Marking
個人的には、以下のように明示的にIPを拒否しないと気持ち悪いのですが、"deny any nay 0x0800 0x0"は投入しなくてもIP以外が合致するACLになるようです。また、0x0 0xFFFFは省略してしまうと、IPを含め全フレームが合致するACLになるようです(0x0 0xFFFFとすると、IP以外の全フレームの意味になるらしいです)。
mac access-list extended ACL_NON_IPdeny any any 0x0800 0x0permit any any 0x0 0xFFFF
10.68 Catalyst 3550 Per-Port Per-VLAN Policing
INE模範解答を見ると、"なぜpoliceをparent policyに設定しないのか"など、若干の遠回りな印象を受けますが、INE模範解答で問題ありません。
若干の遠回りを感じるのは、Cat 3550の制約のせいです。制約に違反すると以下のようなエラーメッセージが出力されます。
若干の遠回りを感じるのは、Cat 3550の制約のせいです。制約に違反すると以下のようなエラーメッセージが出力されます。
Rack9SW2(config-if)#service-policy input PMAP_POLICE %QoS: policy-map with police action at parent level not supported on Vlan146 interface. %QoS: policy-map with police action at parent level not supported on Vlan146 interface. %QoS: policy-map with police action at parent level not supported on Vlan146 interface. %QoS: policy-map with police action at parent level not supported on Vlan146 interface. Rack9SW2(config-if)#^Z Rack9SW2(config-if)#service-policy input PMAP_VLAN146 'set' command is not supported in a 2nd level policymap Rack9SW2(config-if)#policy-map PMAP_POLICE