IP : 簡易ネットワーク管理プロトコル(SNMP)

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

2016 年 10 月 28 日 - 機械翻訳について
その他のバージョン: PDFpdf | ライター翻訳版 (2010 年 11 月 15 日) | 英語版 (2016 年 5 月 16 日) | フィードバック


目次

概要
前提条件
      要件
      使用するコンポーネント
      表記法
SNMP ENGINE プロセスが原因で生じる CPU の高使用率
      NMS ステーションによる大きなルート テーブルと ARP テーブルのポーリング
      特定 MIB のポーリング
NetPro ディスカッション フォーラム - 特集対話
関連するシスコ サポート コミュニティ ディスカッション
関連情報

概要

この文書では、ルータ(特にローエンド ルータ)に見られる、SNMP ENGINE プロセスが原因で生じる CPU の高使用率の問題を解決する方法について説明します。

前提条件

要件

このドキュメントの読者は次のトピックについて理解している必要があります。

  • SNMP

  • Cisco IOS

使用するコンポーネント

この文書の情報は、Cisco IOS ソフトウェアが稼動しているルータに基づくものです。

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。 このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。 ネットワークが稼働中の場合は、コマンドが及ぼす潜在的な影響を十分に理解しておく必要があります。

表記法

ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。

SNMP ENGINE プロセスが原因で生じる CPU の高使用率

次のようなメッセージがルータのコンソールに表示されることがあります。

%SNMP-3-CPUHOG: Processing [chars] of [chars]

これは、デバイスの SNMP エージェントが要求を処理するために時間がかかりすぎていることを示しています。

show process cpu コマンドの出力を使用することによって、コマンドの出力を使用すると、ルータにおける CPU の高使用の原因を突き止めることができます。

次の例では、show processes cpu コマンドの出力を示しています。

cacuk#show process cpu 
CPU utilization for five seconds: 0%/0%; 
one minute: 0%;
five minutes: 0% 

PID

Runtime(ms)

Invoked

uSecs

5Sec

1Min

5Min

TTY

Process

1

68

258816

0

0.00%

0.00%

0.00%

0

Load Meter

2

0

1

0

0.00%

0.00%

0.00%

0

OSPF Hello

3

788132

131480

5994

0.00%

0.00%

0.00%

0

Check heaps

4

0

1

0

0.00%

0.00%

0.00%

0

Chunk Manager

5

56

131

427

0.00%

0.00%

0.00%

0

Pool Manager

69

202700

421730

480

0.00%

0.01%

0.00%

0

IP SNMP

71

1193648

211250

5650

0.00%

0.19%

0.15%

0

SNMP ENGINE

debug snmp コマンドは、クエリー中の Object ID(OID)または Management Information Base(MIB; 管理情報ベース)をチェックします。

実稼働中のネットワークで debug コマンドを実行すると、ルータに過剰な負荷がかかる場合があります。

Simple Network Management Protocol(SNMP; 簡易ネットワーク管理プロトコル)との関連で CPU の使用率が高くなる現象には、次の 2 つの原因が考えられます。

  1. NMS ステーションによるサイズの大きなルート テーブルまたは ARP テーブルのポーリング

  2. 特定 MIB のポーリング

NMS ステーションによる大きなルート テーブルと ARP テーブルのポーリング

ネットワーク管理ステーションは、他のネットワークを学習するために、ルート テーブル全体に関してルータにクエリーを実行します。 この情報を使用して他のルータを見つけ、それらのルータの周辺ネットワークに関する情報についてクエリーを実行します。 このようにすることで、管理ステーションはネットワーク全体のトポロジを把握できます。

ルータには、ルート検索を効率化するために、ハッシュ形式でルート テーブルが保存されています。 ところが、RFC1213 では、ルートの SNMP 応答については辞書順で返す必要があると規定されています。 そのため、ルータが SNMP 要求を受信するごとに、SNMP 応答の PDU を構築する前に、ハッシュ テーブルを辞書順にソートする必要があります。 ルート テーブルが大きくなるほど、ソートに必要な CPU の負荷も大きくなります。

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

推奨事項 1: snmp-server view コマンドの使用

パフォーマンスの問題を回避するには、ルータで実行されている、ネットワーク管理システム サーバからのルート テーブルのクエリーを強制的に終了させます。 次のように、ルート テーブルに対する要求の開始を受信したらすぐに complete メッセージで応答するようにルータを設定します。

snmp-server view cutdown iso included

!--- ISO is used as a starting point as it is the snmp 'root'.

 
snmp-server view cutdown 1.3.6.1.2.1.4.21 excluded 
snmp-server view cutdown 1.3.6.1.2.1.4.22 excluded 
snmp-server view cutdown 1.3.6.1.2.1.3 excluded
snmp-server view cutdown 1.3.6.1.6.3.15 excluded

!--- The additional object snmpUsmMIB is excluded.

snmp-server view cutdown 1.3.6.1.6.3.16 excluded

!--- The additional object snmpVacmMIB is excluded.

snmp-server view cutdown 1.3.6.1.6.3.18 excluded

!--- The additional object snmpCommunityMIB is excluded.
 
snmp-server community public view cutdown RO
snmp-server community private view cutdown RW

注意 注意: 上記の例では、snmpUsmMIB が除外され、snmpVacmMIB が除外され、さらに snmpCommunityMIB が除外されています。 これらのオブジェクトを同時に使用することによって、デバイスへの管理アクセスに必要な設定済みユーザ、およびコミュニティ ストリングに関する情報を取得できます。 これらのオブジェクトについては、パブリック ユーザがアクセス可能なデバイスでは非表示にしておくことを推奨します。

このように設定すると、ルート テーブル(ipRouteTable)および Address Resolution Protocol(ARP; アドレス解決プロトコル)テーブル(ipNetToMediaTable)の検索要求をブロックしながら、他のすべての要求については許可できるようになります。 Cisco IOS のより古いバージョンがあればか。 ソフトウェア、それは ipRouteTable MIBオブジェクトを認識しません従って次の設定を代りに使用して下さい:

snmp-server view cutdown iso included

!--- ISO is used as a starting point as it is the snmp 'root'.

snmp-server view cutdown 1.3.6.1.2.1.4.21 excluded 
snmp-server view cutdown 1.3.6.1.2.1.4.22 excluded 
snmp-server view cutdown at excluded
snmp-server view cutdown 1.3.6.1.6.3.15 excluded

!--- The additional object snmpUsmMIB is excluded.

snmp-server view cutdown 1.3.6.1.6.3.16 excluded

!--- The additional object snmpVacmMIB is excluded.

snmp-server view cutdown 1.3.6.1.6.3.18 excluded

!--- The additional object snmpCommunityMIB is excluded.
 
snmp-server community public view cutdown RO 
snmp-server community private view cutdown RW

注意 注意: 上記の例では、snmpUsmMIB が除外され、snmpVacmMIB が除外され、さらに snmpCommunityMIB が除外されています。 これらのオブジェクトを同時に使用することによって、デバイスへの管理アクセスに必要な設定済みユーザ、およびコミュニティ ストリングに関する情報を取得できます。 これらのオブジェクトについては、パブリック ユーザがアクセス可能なデバイスでは非表示にしておくことを推奨します。

どちらの例でも、ユーザ固有のコミュニティ ストリングで置き換えることができます。

このように設定すると、ルータでクエリーを行った場合に、ARP テーブルまたは IP ルート テーブルがルータから返されなくなります。 そのため、SNMP ネットワークの検出が原因で問題のルータの CPU 使用率が急激に高くなる現象は回避できますが、同時に、このルータの管理性を低下させてしまいます。

ルーティング テーブルを変更すると、以前は問題のなかったルータでも CPU 使用率が急上昇する可能性があります。 IP ルート テーブルの要求に対する応答に必要なサイクル数は、ルーティング テーブルにあるルート数に依存します。 そのため、ルート数が増加すると、CPU 使用率も増加します。

推奨事項 2: CEF のオン

Cisco Express Forwarding(CEF; シスコ高速転送)スイッチングを使用している場合に、SNMP を使用して CEF テーブルに対してクエリーを行ってルーティング エントリを検索できるように、Cisco IOS のコードが変更されました。 これにより、状況が大幅に改善されます。 CEF がイネーブルの場合、ルーティング テーブルまたは ARP テーブルの get-next/get-bulk 操作に対して、SNMP エージェントは Forwarding Information Base(FIB; 転送情報ベース)から取得した情報で応答します。 FIB は辞書編集上の順序で保管されているので、ソートの必要はありません。 CEF が有効になっていないと、SNMP エージェントは Routing Information Base(RIB; ルーティング情報ベース)から得た情報で応答します。これは、辞書編集上の順序にソートする必要があるため、CPU の使用率が高くなります。

次の Bug ID リンクを参照して、詳細な不具合情報について確認してください。

CSCdk54265登録ユーザ専用):ネットワーク管理ステーションから SNMP 経由でルーティング テーブルをポーリングする際には、CPU HOG が生成されます。

特定 MIB のポーリング

ネットワーク管理アプリケーションは、SNMP を使用してデバイスから頻繁に情報を取得します。 この一例として、CiscoWorks 2000 製品群のアプリケーションである Resource Manager Essentials(RME)があります。 RME は、CISCO-FLASH-MIB に定義されたフラッシュ情報を取得できます。 デバイスに ATA フラッシュ ディスクが装備されている場合には、CPU 使用率が急激に上昇することがあります。

次の Bug ID リンクを参照して、詳細な不具合情報について確認してください。

CSCdt97325登録ユーザ専用)

確認、および回避策の適用を行うには、次の操作を実行します。

  1. 次のように、デバイスのいずれかのスロットに ATA フラッシュ カードが装備されているかどうかを確認します。

    Router#show disk1: 
    ******** ATA Flash Card Geometry/Format Info ******** 
    
    ATA CARD GEOMETRY 
        Number of Heads:        12 
        Number of Cylinders     906 
        Sectors per Cylinder    63 
        Sector Size             512 
        Total Sectors           684936 
    
    ATA CARD FORMAT 
        Number of FAT Sectors  84 
        Sectors Per Cluster    32 
        Number of Clusters     21372 
        Number of Data Sectors 684117 
        Base Root Sector       169 
        Base FAT Sector        1 
        Base Data Sector       201 
    
    Router# 
    
    

    これで確認できない場合、または show diskX コマンドの出力が表示されない場合には、show tech コマンドを実行して、ディスクの検索を行います。

  2. ATA フラッシュ ディスクの存在が確認できたら、次の回避策を適用して FLASH-MIB での SNMP クエリーを防止できます。

    Router(config)#snmp-server view <any_word> iso included
    
    !--- ISO is used as a starting point as it is the snmp 'root'.
     
    Router(config)#snmp-server view <any_word> ciscoFlashMIB excluded 
    
    !--- The additional object snmpUsmMIB is excluded.
    
    Router(config)#snmp-server view <any_word> 1.3.6.1.6.3.15 excluded
    
    !--- The additional object snmpVacmMIB is excluded.
    
    Router(config)#snmp-server view <any_word> 1.3.6.1.6.3.16 excluded
    
    !--- The additional object snmpCommunityMIB is excluded.
    
    Router(config)#snmp-server view <any_word> 1.3.6.1.6.3.18 excluded
    Router(config)#snmp-server community <read_community_string> view <any_word> ro 
    Router(config)#snmp-server community <write_community_string> view <any_word> rw 
    Router(config)#exit
    Router#

    上記の設定では、すべての行で、<any_word> には同じ単語を使用してください。

    注意 注意: 上記の例では、snmpUsmMIB が除外され、snmpVacmMIB が除外され、さらに snmpCommunityMIB が除外されています。 これらのオブジェクトを同時に使用することによって、デバイスへの管理アクセスに必要な設定済みユーザ、およびコミュニティ ストリングに関する情報を取得できます。 これらのオブジェクトについては、パブリック ユーザがアクセス可能なデバイスでは非表示にしておくことを推奨します。

  3. 設定が正しく実装されたことを確認します。

    Router#show run 
    ... 
    snmp-server view <any_word> iso included
    
    !--- ISO is used as a starting point as it is the snmp 'root'.
    
    snmp-server view <any_word> ciscoFlashMIB excluded
    snmp-server view <any_word> internet.6.3.15 excluded
    
    !--- The additional object snmpUsmMIB is excluded.
    
    snmp-server view <any_word> internet.6.3.16 excluded
    
    !--- The additional object snmpVacmMIB is excluded.
    
    snmp-server view <any_word> internet.6.3.18 excluded 
    
    !--- The additional object snmpCommunityMIB is excluded.
    
    snmp-server community <write_community_string> view <any_word> RW 
    snmp-server community <read_community_string> view <any_word> RO
    

    <any_word>、<write_community_string>、および <read_community_string> は、この設定例で使用されているものです。

    注意 注意: 上記の例では、snmpUsmMIB が除外され、snmpVacmMIB が除外され、さらに snmpCommunityMIB が除外されています。 これらのオブジェクトを同時に使用することによって、デバイスへの管理アクセスに必要な設定済みユーザ、およびコミュニティ ストリングに関する情報を取得できます。 これらのオブジェクトについては、パブリック ユーザがアクセス可能なデバイスでは非表示にしておくことを推奨します。

  4. show proc cpu コマンドを発行して、SNMP の CPU 使用率が低下したかどうかを確認し、IP_SNMP プロセスを探します。

Cisco IOS の最近のリリースでは Bug CSCdt97325 も修正していますので、不具合情報の詳細を確認してください。

MIB のポーリングに関連するその他の不具合:

次の Cisco Bug ID リンクを参照して、詳細な不具合情報について確認してください。

  • CSCdm67427登録ユーザ専用):ATM サブ インターフェイスのポーリングで、デバイスから CPU HOG メッセージが返される。

  • CSCdu63734登録ユーザ専用):フラッシュ MIB によって ifs の呼び出しが多くなる。

  • CSCdu48652登録ユーザ専用):フラッシュ MIB のクエリーにより、7200 での音声コールがハングする。

  • CSCds53368登録ユーザ専用):CISCO-FLASH-MIB の ciscoFlashPartitionEntry オブジェクトに問題がある。

  • CSCdu55091登録ユーザ専用):特定 SNMP オブジェクトの 2500 snmpgetnext でトレース バックが発生する。

  • CSCdx54836登録ユーザ専用):SNMP でフラッシュ MIB をポーリングすると、スイッチで CPU 使用率が高くなる。

NetPro ディスカッション フォーラム - 特集対話

Networking Professionals Connection はネットワーキング プロフェッショナルが、ネットワーキングに関するソリューション、製品、およびテクノロジーについての質問、提案、情報を共有するためのフォーラムです。 特集リンクでは、このテクノロジー分野での最新の対話を取り上げています。
NetPro ディスカッション フォーラム - ネットワーク管理に関する特集対話
Network Infrastructure: ネットワーク管理
 
バーチャル プライベート ネットワーク: ネットワークとポリシー管理
 


関連情報


Document ID: 7270