[[ネットワーク用語]] > SNMP

* SNMP [#h6d6bcfc]

SNMP = Simple Network Management Protocol

[[SNMPとは【Simple Network Management Protocol】 - IT用語辞典>http://e-words.jp/w/SNMP.html]]
>SNMP 【Simple Network Management Protocol】
読み :エスエヌエムピー
 
[[TCP/IP]]ネットワークにおいて、[[ルータ]]やコンピュータ、端末など、ネットワークに接続された通信機器を&color(red){ネットワーク経由で監視・制御する};ための[[プロトコル]]。
制御の対象となる機器は[[MIB]]と呼ばれる&color(red){管理情報データベース};を持っており、管理を行う機器は対象機器の[[MIB]]に基づいて適切な設定を行う。

[[Simple Network Management Protocol - Wikipedia>http://ja.wikipedia.org/wiki/Simple_Network_Management_Protocol]]
>Simple Network Management Protocol(シンプル ネットワーク マネージメント プロトコル、SNMP)は、DARPAモデルに準じた[[IP]]ネットワーク上のネットワーク機器を監視(モニタリング)・制御するための情報の通信方法を定める[[プロトコル]]である。

>''概要''
巨大なネットワーク上で、数多くの機器の状態を把握するためには、この規格化されたプロトコルを使い、機器からの情報を集めて監視や制御を行なう。
コンピュータ等の能動的な機器以外にも[[ルータ]]や[[ハブ]]などもSNMPを使って監視することが出来る。
 
プロトコルを管理情報の構造から分離することにより、SNMPはネットワーク上の非常に多種多様なサブシステムを容易にモニターできるようになった。
それは[[OSI参照モデル]]の全ての層を超えて、データベースやe-mail、J2EE参照モデルなどにまでその範囲を拡大している。
 
SNMPのフレームワークの構造は、マスターエージェント、サブエージェント、マネージャからなる3つの主要な要素から構成されている。

** アーキテクチャ [#n68fddbc]
SNMP v1 (SNMP version 1) で、次の4つのProtocol Data Unit ([[PDU]]) が定義されている。

- GET REQUEST: 一部の管理情報を取得するときに使用する
- GETNEXT REQUEST: 連続する管理情報を取得するときに使用する
- GET RESPONSE
- SET REQUEST: 管理するサブシステムに対して変更を加えるときに使用する
- TRAP (トラップ): 管理するサブシステムに関する警告や非同期イベントの通知に使用する

それ以降のバージョンで、次のPDU が追加されている。

- GETBULK REQUEST: 高速に複数の管理情報を取得するときに使用する
- INFORM: マネージャからマネージャへの通信するときに使用する

SNMP は、[[OSI参照モデル]]の[[アプリケーション層]] (第7層) に相当する。
SNMP は、下位プロトコルとして[[UDP]]を使用する。
一般的に、エージェントが&color(red){161番ポート};を、マネージャが&color(red){162番ポート};を使用している。

*** エージェント [#p12c40aa]
管理対象の機器を&color(red){エージェント};と呼ぶ ([[スイッチ]]、[[ルータ]]、ホストなど)。

エージェントは、その役割から次の2つに分類される。
+ マスター・エージェント
+ サブ・エージェント

マスター・エージェントは、1つ以上のサブ・エージェントを監視することができる。

エージェントは、Management Information Base([[MIB]]; &color(red){管理情報ベース};) と呼ばれる一種のデータベースを持つ。

*** マネージャ [#kdff5afb]
ネットワークを管理するシステムを&color(red){マネージャ}; (管理ステーション) と呼ぶ。
これはクライアント・サーバ型のクライアントに相当する。

マネージャは、主に次のような管理操作を行う。
+ エージェントへリクエスト (要求) を送信し、そのレスポンス (応答) を受信する
+ エージェントからトラップ (通知) を受信する

** SNMPとは? [#mb59b757]
[[SNMPとは -- Key:雑学事典>http://www.7key.jp/nw/technology/protocol/snmp.html]]

SNMPは[[TCP/IP]]ネットワークに接続されている通信機器を&color(red){ネットワーク経由で監視や制御をする};ための[[プロトコル]]です。
1988年に開発されRFC1157で規定されています。
SNMPは[[アプリケーション層]]プロトコルの1つで[[UDP]](ポート番号161番及び162番)を利用し、更にこのUDPが[[IP]]を使うようになっています。

*** マネージャとエージェント [#nabc9d10]
SNMPによるネットワーク管理は、管理対象となるネットワーク機器に常駐する&color(red){エージェント};と、管理する側の機器上の&color(red){マネージャ};とのUDP通信により実現されます。

- 情報の要求と応答
マネージャからエージェントに対象機器の情報を要求します。
エージェントは情報をマネージャに応答します。

- 情報の設定要求と応答
マネージャからエージェントに対象機器の設定変更を要求します。
エージェントは設定を変更し、結果をマネージャに応答します。

- 状態変化の通知
対象機器の状態変化をエージェントからマネージャに通知します。 

*** ポーリングとトラップ [#f1ed187b]
マネージャとエージェントの間で情報をやり取りする方法には、&color(red){ポーリング};と&color(red){トラップ};の2つがあります。

- ''ポーリング''
マネージャが&color(red){定期的};に要求を送信し、これにエージェントが応答をする方法です。
エージェントから定期的に情報を抜き出し、その情報の推移からエージェントの状態を知るために使用します。
&color(red){UDP161番ポート};が使われます。
情報の重要度によって数分から数時間の間隔でマネージャはエージェントに対してOIDを指定し、情報を取得します。
ポーリングはネットワークトラフィックの監視やディスクの使用率といったシステムリソースの監視などに利用されます。

- ''トラップ''
&color(red){障害が発生};した際など自らの状態に何らかの変化が起きた際に、エージェントが自発的にマネージャへ情報を通知する方法です。
このため、エージェントは事前に指定された情報機器の情報を定期的に取得しておく必要があります。
&color(red){UDP162番ポート};が使われます。
トラップはリブートの検知や機器の温度上昇の検知などに利用されます。

*** コミュニティとは [#c8a56896]
SNMPでマネージャがエージェントと通信をする際には、&color(red){コミュニティ};と呼ばれる文字列を指定します。
コミュニティは管理したい&color(red){機器をグループ化};するために使われる概念で、マネージャとエージェントが同コミュニティの場合のみ通信が可能な仕様となっています。
エージェントは複数のマネージャと通信することを視野に入れ、複数のコミュニティを設定可能となっています。
また、エージェントはコミュニティに対して読み込み専用、書き込み専用、読み書き可能の3つの属性を指定することができます。

マネージャがコマンドを発行する際にコミュニティ名が一致しないと通信できないので、コミュニティに使われる文字列はアクセス制御のためのパスワードのような役割も持っています。
ただ、SNMPではパケットが暗号化されるわけではなく、コミュニティ名は平文のままネットワークを流れますので注意が必要です。

** SNMPの仕組み [#kc172583]
SNMPではコマンドのやり取りで機器やネットワークの管理を行います。
ただ、Simpleと言う名が示す通り、SNMPのコマンドは非常に簡単なもので、基本的にはGetRequest、GetNextRequest、SetRequest、GetResponse、Trapと言う5つのオペレーションしかありません。
マネージャがエージェントの情報を知りたい場合は、指定した[[MIB]]のOIDを送りそのOIDに格納されている情報を得ることとなります。

CENTER:''SNMPコマンド''
| コマンド | 意味 |h
| GetRequest | MIB変数の値を要求する。 |
| GetNextRequest | 指定し他MIBの次のMIB変数を読み込む。連続する範囲のMIB値を次々に読み出すことをMIB Walkと呼ぶ。 |
| SetRequest | MIB変数の値を更新する。 |
| GetResponse | GetRequest、GetNextRequest、SetRequestに対するエージェントからの応答。 |
| Trap | トラップ送信。 |
| GetBulkRequest | GetNextRequestの拡張コマンドで繰り返す回数を指定できる。 |
| InformRequest | 複数のマネージャ間で情報交換用の通信に利用する。 |

上記コマンドは以下のSNMPメッセージとしてマネージャとエージェントでやり取りされます。

CENTER:&ref(snmp_msg.gif);

~
CENTER:''SNMPメッセージ各フィールドの説明''
| フィールド | 説明 |h
| リクエストID | エージェントからの応答パケットがどのリクエストに対する応答かを判別するために使用する。 |
| エラーステータス | エージェントからのエラー通知情報。GetResponseのPDUで利用される。 |
| エージェントIPアドレス | どのエージェントからのトラップかを判別するために使用。 |
| 一般トラップ番号 | トラップの種類を表す。 |
一般トラップ番号が7の場合は、その機器固有のトラップであり、同PDUの固有トラップ番号に別途そのトラップを識別する番号が付与される。

CENTER:''SNMPのエラーステータス''
| 値 | Status | 意味 |h
| 0 | noError | エラー無し。 |
| 1 | tooBig | 与えられた結果が大きすぎて管理エージェントが応答を作成できないことを表す。 |
| 2 | noSuchName | 可変結合フィールドで指定された名前(オブジェクト)が存在しないことを表す。 |
| 3 | badValue | 要求されたオブジェクトについて、指定値のフォーマットが正しくないことを表す。 |
| 4 | readOnly | MIBビューでRead-Onlyとなっているオブジェクトを変更しようとしたことを表す。 |
| 5 | genError | その他エラーが発生したことを表す。 |

CENTER:''一般トラップ番号''
| 値 | Trap | 意味 |
| 1 | coldStart | MIB設定値はクリアされ、エージェントが再起動した。 |
| 2 | warmStart | MIB設定値は保存され、エージェントが再起動した。 |
| 3 | linkDown | 通信インターフェイスは使用不可である。 |
| 4 | linkUp | 通信インターフェイスは使用可である。 |
| 5 | authenticationFailure | 認証不可メッセージを受信した。 |
| 6 | egpNeighborLoss | 送信元エージェントがEGP隣接装置の1つのダウンを検出した。 |
| 7 | enterpriseSpecific | ベンダ固有のトラップである。 |

** リンク [#h3f31596]
[[MIB]]

SNMP(Simple Network Management Protocol)
http://www.n-study.com/network/snmp.htm

@IT:監視を自動化するSNMP(1)
http://www.atmarkit.co.jp/fnetwork/rensai/snmp01/01.html

ITmedia エンタープライズ:SNMPによるネットワークモニタリング「第2版」
http://www.itmedia.co.jp/enterprise/special/0705/snmp/

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS