Akira's Blog

神奈川在住のITエンジニアの雑記です。主にプログラミング(Perl, Java など)やネットワーク技術についての小ネタを、ちょっとずつ書いていきます。

Cisco機器に対するSNMPリクエスト

Cisco機器に対してSNMPリクエストを行うと、機器のCPU使用率が高騰することがあるようだ。

IP簡易ネットワーク管理プロトコル (SNMP) は高いCPU使用率を引き起こす - Cisco

 

CPU使用率が高騰する理由は以下の通り。(上記のページより抜粋)

ネットワーク管理ステーションは、他のネットワークを学習するために、ルート テーブル全体に関してルータにクエリーを実行します。 この情報を使用して他のルータを見つけ、それらのルータの周辺ネットワークに関する情報についてクエリーを実行します。 このようにすることで、管理ステーションはネットワーク全体のトポロジを把握できます。ルータには、ルート検索を効率化するために、ハッシュ形式でルート テーブルが保存されています。 ところが、RFC1213 では、ルートの SNMP 応答については辞書順で返す必要があると規定されています。 そのため、ルータが SNMP 要求を受信するごとに、SNMP 応答の PDU を構築する前に、ハッシュ テーブルを辞書順にソートする必要があります。 ルート テーブルが大きくなるほど、ソートに必要な CPU の負荷も大きくなります。

 

ただ、上述のページに、SNMPリクエストを受けてCPU高騰しても、ネットワーク機器としての動作には影響がないという記載もあるので、これは気にしなくても良いのかもしれない。

CPU スケジューラでは、SNMP は優先順位の低いプロセスであるため、CPU リソースを必要とする別のプロセスが優先されます。 そのため、このシナリオでは CPU の使用率は急激に高まりますが、パフォーマンスには影響を及ぼしません。