はじめてのSNMP

1.マネージャーとエージェント
SNMPは下位層にUDPを使用し、マネージャーとエージェント間の相互通信により成り立ちます。
エージェントは機器側、つまり監視される側の機器です。
当社製品など、大抵の機器がこれにあたります。
マネージャーは監視する側で、主にパソコン上で動作するソフトウェアになります。
フリーウェアで「TWSNMP」というソフトが有名です。
 
2.プロトコル
マネージャーとエージェント間は主に下記4つのPDU(コマンドのようなもの)をやりとりすることにより成り立ちます。
(1) GetRequest(GetNextRequest)
 マネージャーからエージェントに情報要求を行います。
(2) SetRequest
 マネージャーからエージェントに情報設定や制御を行います。
(3) GetResponse
 エージェントからマネージャーに要求された情報を返します。
 GetRequestの戻り、あるいはSetRequestの戻りです。
(4) Trap
 エージェントからマネージャーにアラーム情報等を送信します。
マネージャーから(1)や(2)がエージェントに送信されることにより、エージェントが(3)を返します。
このやりとりがメインで、後はエージェントが自発的にアラーム等を知らせる(4)になります。
(4)はエージェントからマネージャーに一方的に送られ、マネージャーからの応答はありません。

3.MIB
実際のエージェント機器がどのような情報を持っているかを規定するものです。
例えば当社製品の「I/OdeLANシリーズ」には接点情報や変化点によるTrapの規定をしています。もっと何かに特化した製品であれば光入力アラーム等、その機器特有の情報が記述されています。
具体的にはOID(その情報の位置を示すxxx.xxx.xxx形式)と、integerやstringのようなその情報のデータ形式からなります。(参照)
MIBは各社、各機器によりまちまちのオリジナルの定義になります。
この部分をベンダーMIBなどと言い、新しいSNMP実装の製品をつくるときに添付のようなMIBファイルを作成し定義することになります。
これとは別にRFCとして規定され、世界的に統一されている部分が標準MIB(MIB-2)などと呼ばれ、各社、各機器とも同一の実装がなされています。
このように新しい製品には固有のベンダーMIBの定義がほぼ必須であるため、ひとつの製品を作ると、ひとつのMIBファイルを作成し、製品と同梱して販売することになります。
そのMIBファイルをマネージャーソフトが読み込むことにより、その製品がどんな実装をしているのかをマネージャー側は理解できるようになっています。
 
4.ASN.1とBER
MIBファイル等の実装状態やPDUの構成などを記述する言語のことをASN.1と言います。
難しそうですが、C言語の構造体を書くようなレベルで記述できます。
この統一された言語で記述することにより、マネージャー側は各社のMIBを読み込むことができ、各社オリジナルの実装状態を把握できます。
また、2.のプロトコルのデータフォーマットもASN.1で規定されており、RFCとして公開されています。
プロトコル上を流れる実際のデータにはBERという符号化をほどこしやりとりされます。
そのためキャプチャソフト等でマネージャーとエージェントのやりとりをモニタしても、生データでは何が流れているのかわかりません。
しかし、最近のキャプチャソフトは賢いのでキャプチャソフトが翻訳してくれると思います。

5.SNMPv2
SNMPv2とv2cとv2uがあります。
SNMPv2は認証、暗号化等も含んだ仕様ですが、仕様が複雑すぎてあまり使われず、幻の仕様と言われています。v2uはv2から認証、暗号化をできるだけ簡易にとりだしました。
一部で使われているようですが、v2uの仕様がv3に引き継がれたので実質はv3を使うと思います。よって、v2のデファクトスタンダードはv2cであり、以下はv1との主な違いになります。
・get-nextからget-bulkとなりPDUのやりとりが半減しました。(データ取得が約倍早くなりました)
・PDUにinformが追加されました。マネージャー間通信用かと思っていましたが、ack付きのTrapとして使用されているようです。
・Trapの形式が他のPDUと同じになりました。

6.SNMPv3
v2cからの主な違いは下記になります。
・コミュニティベースからユーザーベースとなりました。
・認証、暗号化が追加されました。
・エンジンIDが追加されました。エンジンIDはシステム内でユニークである必要があるためMACアドレス等と組み合わせるのがよくあるIDの決め方です。
エンジンID=1エンティティとなります。(エンティティ=マネージャー&エージェントの総称)
・ビューベースのアクセス制御モデルとなり、ユーザー毎にmibツリーを細かく、読み書き設定できるようになりました。(今まではコミュニティによるmibツリー一括管理)
OIDとそれに対するマスク設定との組み合わせになります。

2008/11/10


事例掲載製品