マイクロバーストとは…
非常に短期間(msecやμsec)で突発的に発生する大容量トラフィックのことを一般的にはマイクロバーストトラフィックと言い、そうした現象のことをマイクロバーストと呼びます。
マイクロバーストが起きると…
マイクロバーストが発生するとNWの輻輳の原因になります。また、瞬間的なトラフィックの増大によりサーバがダウンしてしまう可能性も(ほとんどないと思いますが)あります。
もう少し詳しく見ていきましょう。
瞬間的にダウンポートの10GbpsのI/FであるA,B,C,Dにて5Gbpsのデータを受信しています。そのデータの宛先はとある10GbpsのI/FであるEです。
この場合、流入するデータ量は5×4=20Gbps、出力するデータ量はEのワイヤーレート上限である10Gbpsとなります。
この時、パケットを破棄しないように出力I/Fのバッファにてパケットを一時的に蓄えます。しかし、蓄えきれなかった場合はパケットが破棄されてしまいます。
パケットが破棄されるとTCPプロトコルを用いた通信についてはTCP Fast Retransmissionもしくはタイムアウトの後に再送されますが、ICMPやUDPといったプロトコルについては完全に消失してしまいます。
パケットが破棄されるとshow interfaces counters errosのoutput errorにて『OUTDISCARDED』カウンタが上昇します。
この後、NW運用管理者がこのエラーカウンターに気づき、I/Fの1秒間あたりの平均使用量を調査してもそこまでトラフィック使用率が高くない場合があります。Ciscoでは機器で確認できるI/Fの平均データ使用量は最小単位で30秒平均のためです。
こうした、瞬間的に短時間で発生する大容量トラフィックはI/Fの平均データ転送量が高く無いにもかかわらず送信I/Fのパケット破棄を招く原因となります。
マイクロバーストの検出方法
何かと悪さをするマイクロバーストですが、従来ですと検出するには相当高価な機器を購入する必要がありました。例えば東陽テクニカ様のSYNESISなどがあります。
参考:https://www.toyo.co.jp/ict/
実はNexus9000 Seriesではマイクロバーストを検知する機能が備わっております。これを使用することで任意の閾値を超えたトラフィックをマイクロバーストとして内部データベースに保存することが可能です。
マイクロバーストモニタリングの設定について
前提
・マイクロバーストを検知するにはキューを指定する必要があります。下記のように、デフォルトキューとプライオリティキューを通るトラフィックに対してモニタリングしたい場合はそれぞれのキューに設定する必要があります。
・ドキュメントにも書かれていますが、4つ以上のキューに対して同時にモニタリングしたい場合はマイクロバースト検出間隔が0.64μ秒よりも長くなります。
・検出したバーストトラフィックは検出開始時間、持続時間、終了時間をカラム(列)として1つの行で管理されます。この時タイムスタンプも付与されており0.00001秒単位で確認することができます。デフォルトの設定では1000行まで記録することができますが最大2000行まで記録することができます。
config
・下記configでは管理レコード数を上限である2000、デフォルトで設定されているキューイングポリシーのデフォルトキューを検査を対象とします。最後に対象のI/Fにポリシーを付与します。この時、I/Fがポートチャネルの場合はバンドルされた各々のI/Fに対して適用することができないため注意してください。
[config]
conf t
hardware qos burst-detect max-records 2000
policy-map type queuing test
class type queuing c-out-8q-q7
priority level 1
class type queuing c-out-8q-q6
bandwidth remaining percent 0
class type queuing c-out-8q-q5
bandwidth remaining percent 0
class type queuing c-out-8q-q4
bandwidth remaining percent 0
class type queuing c-out-8q-q3
bandwidth remaining percent 0
class type queuing c-out-8q-q2
bandwidth remaining percent 0
class type queuing c-out-8q-q1
bandwidth remaining percent 0
class type queuing c-out-8q-q-default
burst-detect rise-threshold 1040 bytes fall-threshold 208 bytes ※
bandwidth remaining percent 100
interface Portchannel 10
service-policy type queuing output test
※超過閾値は下限閾値の5倍である必要があります(推奨値)
マイクロバーストの確認方法
- show queuing burst-detect detailを入力することで表示することが可能です。
- detailは絶対つけておきましょう!I/Fが表示されないためです。
参考
コメント