SNMP(Simple Network Management Protocol)

ネットワーク機器の管理したいけど・・・

たくさんのネットワーク機器がある場合、その管理をどのように行うのかということを考える必要がありますね。管理をなにも考えずに、ネットワーク機器をどんどん設置していくと、あとでレイアウト変更が発生したときやネットワークを拡張したいとき、何がなんだかわからないって状態にもなりかねません。
さらに、トラブルが発生したときにどの機器が原因なのか?ということを特定するのが非常にやっかいになってしまいます。

そこで何らかのネットワーク機器の管理を行う仕組みを考えることになるわけですが、たくさんのネットワーク機器のベンダがそれぞれ独自のプロトコルを考えたりしています。

もちろん、ベンダが違うとプロトコルが異なってしまうので管理できなくなってしまいます。そこで、ベンダが異なっても管理できるような標準化されたネットワーク管理プロトコルが必要になります。この標準化されたネットワーク管理プロトコルこそがSNMP(Simple Network Management Protocol)です。

SNMP

SNMPはTCP/IPのアプリケーション層プロトコルです。トランスポート層にはUDPを利用しています。これはSNMPの性質上、特にTCPで一回一回コネクションの確立を行って、送ったデータに対して確認応答をしなければいけないというほど信頼性が重要ではないので、通信の効率がいいUDPが使われています。SNMPのポート番号は、161と162の2つを利用します。

どのポートを何の目的で使うんでしょうね?RFC1700に載っています。RFC1700を見てみると、次のようにかかれています。

snmp 161/udp SNMP
snmptrap 162/udp SNMPTRAP

これからわかるように、162は、SNMPTRAPというものに使います。これはあとで説明します。2つのポートを使っていることを知っていないと、たとえばファイアウォールの設定で困ったことになってしまうかもしれませんので気をつけないといけませんね。

さて、SNMPは2つの要素に分けて考えることができます。その2つとは、「SNMPマネージャ」「SNMPエージェント」です。
SNMPマネージャとは、SNMPに対応した管理ソフトウェアをインストールしているコンピュータのことです。SNMP対応の管理ソフトウェアというのは、非常にたくさん発売されていますが、もっとも有名なのがヒューレットパッカードの「OpenView」だと思います。基本的にGUIの画面で操作することが可能です。あとシスコシステムズの「Cisco Works」なんかも有名ですね。
SNMPエージェントとは、管理されるルータやスイッチといったようなネットワーク機器のことです。まず、この2つの役割があるんだなということをわかっていただければいいです。

さらに、もうひとつ大事なキーワードとして「MIB(Management Information Base)」というものがあります。(ちなみに、「ミブ」と呼びます。京都の地名みたいですね(笑))
このMIBとは、SNMPエージェントが収集したネットワーク情報を格納するためのデータベースです。たとえば、自分のIPアドレスややってきたパケットの数やサイズ、ネットワークの利用率、コリジョンが何回発生したか?などのSNMPエージェントが収集したネットワーク情報を格納されています。

SNMPでの管理は、このSNMPエージェントのMIB情報をSNMPマネージャから見たり変更したりすることによって行っています。

MIBの詳しい内容については、ちょっと細かい話になるので今回は省略しておきます。もっとも、ぼくもあんまりMIBの詳細については知らなかったりするのですが・・・たくさんの希望があれば、もっと勉強してメルマガで解説していこうかなと思います。

MIBの操作

で、そのMIB情報を参照したり、変更したりするために5つの操作があります。

  • Get-Request
  • Get-Response
  • Get-Next-Request
  • Set-Request
  • Trap

「Get-Request」「Get-Next-Request」「Get-Response」はMIB情報の参照に使われます。Get-RequestでMIBのあるパラメータを指定して、「この情報を見せて!」とSNMPエージェントに送ると、その返事としてGet-Responseが返ってきて、要求した情報を見ることができます。で、「その次の情報をみたい!」ということをGet-Next-Reqeustで要求します。同じように返事として、Get-Responseが返ってきます。

次に何かMIB情報の内容を変更したいというときに、Set-Requestを使います。変更したいMIBのパラメータを指定して、「こういう風に変更してね!」とSNMPエージェントに送り、「わかったよ」という返事をGet-Responseで返してくれます。

ここまでは、SNMPマネージャが主導になっています。マネージャから何か情報をみたいとか変更したいときに行うことです。ですが、最後のTrapは、SNMPエージェントが主導になります。Trapによって、SNMPエージェントからマネージャに対するイベント通知を行うことができます。

イベント通知とは、監視したい項目のあるしきい値を設定しておきます。そのしきい値を超えると、自動的にSNMPエージェントからマネージャに「超えちゃったよ。見たほうがいいんじゃない?」ってことを通知することです。たとえば、やってきたパケットのエラーチェックをしてエラーパケットの数が設定したしきい値を超えると、Trapを送るようにすることができます。

Trapを活用すると、障害が発生する予兆をすばやく見つけることができるようになるかもしれませんね。

ちなみに、これらの操作はユーザが本当に何かコマンドを入力して行うというわけではなくて、OpenViesなどのSNMPマネージャソフトウェアのGUI画面上でクリックしたりすると自動的にコマンドを発行してくれています。実際にデータをキャプチャしてみると面白いですね。

以上のように、SNMPはエージェントのMIBを操作することによってさまざまな管理を行うことが可能です。ただ、一点注意しないといけないのが、IPをベースにしています。つまり、IPによってSNMPエージェントとSNMPマネージャが通信可能な状態でないと、SNMPは何もできません。最初にきちんと自分たちのネットワークのルーティングの設定をしっかり行ってから、はじめてSNMPを使うことができます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA