連載
» 2003年04月25日 00時00分 公開

監視を自動化するSNMP(3):MIBの監視対象オブジェクトを分類する

[北原静香,@IT]

 SNMPの動作自体は名前の示すように非常にシンプルですが、アクセス対象であるMIBはお世辞にもシンプルとは言えません(第2回「どのようにしてネットワークを管理するのか?」参照)。そこで、今回はこのMIBがどのような構造をしているか、また標準MIBの中でも基本であるMIB-2にどのような情報が定義されているかを具体的に解説したいと思います。

3種類の機能を5つのコマンドで実行

 SNMPによるネットワークシステムの管理とは「機器の管理情報ベース(MIB:Management Information Base)の情報を取得(または更新)する」ことであるといえます。どのような情報がMIBで管理されているかは機器によって異なりますが、SNMPで管理される機器は必ずMIBを保持しています。

 MIBの目的はネットワーク管理における標準的な情報管理構造の確立です。そのため多くのベンダが作成することが予想されるMIBは、定義ルールや値の取得(または更新)方法を規定(*1)する必要があります。

*1

MIBの定義ルールや値の参照方法として「SMI(Structure of Management Information)」が「RFC1155」に定義されています。また、MIBの書式は「ASN.1(Abstract Syntax Notation.1)」という言語が利用され、実際のエンコーディングには、BER(Basic Encoding Rules)を利用しています。


 しかしすべての機器が固有のMIBを持っているというわけではありません。SNMPマネージャは監視対象の機器が実装しているMIBのオブジェクトID(OID)を指定して情報を取得しますが、もし対象機器がすべて異なるMIBを実装してしまうとすべての対象機器のMIBファイルを参照しなければなりません(なぜなら取得するオブジェクトのOIDが分からないからです)。

 この問題を解決するため、TCP/IPによるネットワークシステムに接続される機器が実装するべきMIBが標準MIBとしてRFCで定義されています。この標準MIBに対し、ベンダなどが独自に用意したMIBをプライベートMIBや拡張MIBなどと呼んで区別します。

機器の基本的な情報を管理する標準MIBの「MIB-2」

 機器の管理する情報は多岐にわたりますが、その中でも最も標準的なMIBとして位置付けられているのが「MIB-2」です。MIB-2は図1の示すように、MIBのオブジェクトツリーの中ではインターネットサブツリーの下(1.3.6.1.2.1)にあります(オブジェクトツリーに関しては、第2回「どのようにしてネットワークを管理するのか?」参照)。

図1 オブジェクトのツリー(画面をクリックすると拡大表示します) 図1 オブジェクトのツリー(画面をクリックすると拡大表示します)

 MIB-2の解説をする前に、少しだけ歴史的経緯を説明します。最初の標準MIBとしてRFC1156で定義されたのは「MIB-1」でした。MIB-1では114種類の管理対象オブジェクトを定義していますが、OIDの割り当てを単純で分かりやすいものにするためにこれらを8個のグループ(System、Interface、Address Translation、IP、ICMP、TCP、UDP、EGP)に分類しています。

 その後RFC1213において、新たに57種類の管理対象オブジェクトを追加した171種類の管理対象オブジェクトを11個のグループに分類したMIB-2が定義され、MIB-1を置き換えました。その後もMIB-2をはじめとする標準MIBは拡張されていますが、RFC1213に定義されているMIB-2が最も標準的なMIBと呼んで差し支えないでしょう。

1 System
2 Interface
3 Address Translation
4 IP
5 ICMP
6 TCP
7 UDP
8 EGP
9 OIM
10 Transmission
11 SNMP
表1 RFC1213で定義されたMIB-2の監視対象オブジェクトのグループ

Systemグループ

 Systemグループには、機器のシステムに関係する設定が管理されています。このグループのオブジェクトは次のとおりです。

sysDescr エンティティの情報
sysObjectID ベンダのOID
sysUpTime 最後に初期化されてからの経過時間
sysContact ノードの管理者の情報
sysName ドメイン名
sysLocation ノードの物理的な位置
sysService エンティティが提供するサービス
表2 Systemグループ(1.3.6.1.2.1.1)

Interfaceグループ

 Interfaceグループには、機器の保有するハードウェアインターフェイスに関係する設定が管理されています。最初のオブジェクトである「ifNumber」にこの機器が保有するインターフェイス数が格納されており、その数に応じて設定を格納するテーブル行が追加されます。このグループのオブジェクトは次のとおりです。

ifNumber 機器の保持しているインターフェイス数
ifTable 各インターフェイスの設定が格納されたテーブル
ifEntry テーブルのリスト
ifIndex インターフェイスのインデックス
ifDescr このインターフェイスの説明
ifType インターフェイスタイプ(*2
ifMTU MTUの値
ifSpeed 帯域
ifPhysAddress 物理アドレス
ifAdminStatus 設定状態
ifOperStatus 動作状態
ifLastChange 現在の動作状態に変化した時刻
ifInOctets 受信したすべてのオクテット数
ifInUcastPkts 受信したユニキャストパケット数
ifInNUcastPkts 受信した非ユニキャストパケット数
ifInDiscards エラー以外の理由で破棄された受信パケット数
ifInErrors エラーになった受信パケット数
ifInUnknownProts サポートされていないプロトコルのため破棄された受信パケット数
ifOutOctets 転送したすべてのオクテット数
ifOutUcastPkts 送信したユニキャストパケット数
ifOutNUcastPkts 送信した非ユニキャストパケット数
ifOutDiscards エラー以外の理由で破棄された送信パケット数
ifOutErrors エラーになった送信パケット数
ifOutQLen 出力用のキューにためられるパケット数
ifSpecific 追加情報への参照
*2)インタ-フェイスタイプのリストは、RFC1213にあります。
表3 interfaceグループ(1.3.6.1.2.1.2)
(ここをクリックすると別ウィンドウが開きます)

Address Translationグループ

 Address Translationグループは、MIB-1との互換性のために残されていますが、MIB-2では使用していません。このグループのオブジェクトIDは(1.3.6.1.2.1.3)です。

IPグループ

 IP(Internet Protocol)グループには、プロトコルの使用に関する設定が格納されています。このグループのオブジェクトは次のとおりです。

ipForwarding このエンティティがゲートウェイであるかどうか
ipDefaultTTL 標準のTTL値
ipInRecevies 受信データグラム総数
ipInHdrErrors ヘッダーのエラーのために破棄した受信データグラム数
ipInAddErrors 無効なIPアドレスのために破棄した受信データグラム数
ipInForw-Datagrams ほかのエンティティへ転送した受信データグラム数
ipInUnknown-Protos サポートされていないプロトコルのため破棄された受信データグラム数
ipInDiscards エラー以外の理由で破棄された受信データグラム数
ipInDelivers 正常に受信したデータグラム数
ipOutRequests 送信データグラム総数
ipOutDiscards エラー以外の理由で破棄された送信データグラム数
ipOutNoRoutes 経路不明で破棄された送信データグラム数
ipReasm
-Timeout
再構成のためにデータを保持できる時間
ipReasmReqds 再構成を必要としたIPフラグメント数
ipReasmOKs 正常に再構成できたフラグメント数
ipReasmFails 再構成で検出したエラー数
ipFragOKs 正常にフラグメントされたデータグラム数
ipFragFails フラグメントされずに破棄されたデータグラム数
ipFragCreates フラグメント作成数
ipAddrTable IPアドレスに関するテーブル
ipAddrEntry IPアドレスに関する情報のリスト
ipAdEnt-
Addr
エントリのIPアドレス
ipAdEnt-
IfIndex
インターフェイスのインデックス
ipAdEnt-
NetMask
サブネットマスク
ipAdEnt-BcastAddr ブロードキャストアドレスの
最下位ビット値
ipAdEnt-Reasm-
MaxSize
処理可能なデータグラムのサイズ
ipRoutingTable IPルーティングテーブル(現在は未使用)
ipNetTo-MediaTable IPアドレスから物理アドレスへのマッピングテーブル
ipNetTo-MediaEntry テーブルのリスト
ipNetToMedia-IfIndex インターフェイスのインデックス
ipNetToMedia-PhysAddress 物理アドレス
ipNetToMedia-
NetSddress
対応するIPアドレス
ipNetToMedia-
Type
メディアタイプ
ipRouting-Discards 破棄されたルーティング項目数
ipForward IPの転送テーブル
ipForward-Number 転送テーブルの
エントリ数
ipForward-Table 転送テーブル
ipForward-Entry テーブルのリスト
ipForward-Dest あて先のIPアドレス
ipForward-Mask サブネットマスク
ipForward-Policy 転送ポリシー
ipForward-NextHop 次にルーティ
ングするノードのIPアドレス
ipForward-IfIndex 次にルーティ
ング するローカルインターフェイスのインデックス
ipForward-Type ルートタイプ
ipForward-Proto ルートを調査したプロトコル
ipForward-Age ルートが最後に更新されてからの経過時間
ipForwardInfo ルーティング
プロトコルの
MIB定義参照
ipForward-NextHopAS 次にルーティン グするAS
(Autonomous System)番号
ipForward-Metric1 ルートの1次メトリック
ipForward-Metric2 ルートの代替メトリック
ipForward-Metric3 ルートの代替メトリック
ipForward-Metric4 ルートの代替メトリック
ipForward-Metric5 ルートの代替メトリック
表4 IPグループ(1.3.6.1.2.1.2)
(ここをクリックすると別ウィンドウが開きます)

ICMPグループ

 ICMP(Internet Control Message Protocol)グループには、ICMPの動作に関する設定が格納されています。このグループのオブジェクトは次のとおりです。

icmpInMsgs ICMPメッセージの受信総数
icmpInErrors エラーの発生したICMPメッセージの受信数
icmpInDestUnreachs Destination Unreachable(到達不能)の受信数
icmpInTimeExcds TimeExceeded(時間超過)の受信数
icmpInParmProbs Parameter Problem(パラメータ異常)の受信数
icmpInSrcQuenchs Source Quench(送信元の消失)ICMPメッセージの受信数
icmpInRedirects Redirectの受信数
icmpInEchos Echo Requestの受信数
icmpInEchosReps Echo Replyの受信数
icmpInTimestamps Timestamp Requestの受信数
icmpInTimestampsReps Timestamp Replyの受信数
icmpInAddMasks Address Mask Requestの受信数
icmpInAddMasksReps Address Mask Replyの受信数
icmpOutMsgs ICMPメッセージの送信総数
icmpOutErrors エラーの発生したICMPメッセージの送信数
icmpOutDestUnreachs Destination Unreachable(到達不能)の送信数
icmpOutTimeExcds TimeExceeded(時間超過)の送信数
icmpOutParmProbs Parameter Problem(パラメータ異常)の送信数
icmpOutSrcQuenchs Source Quench(送信元の消失)ICMPメッセージの送信数
icmpOutRedirects Redirectの送信数
icmpOutEchos Echo Requestの送信数
icmpOutEchosReps Echo Replyの送信数
icmpOutTimestamps Timestamp Requestの送信数
icmpOutTimestampsReps Timestamp Replyの送信数
icmpOutAddMasks Address Mask Requestの送信数
icmpOutAddMasksReps Address Mask Replyの送信数
表5 ICMPグループ(1.3.6.1.2.1.5)
(ここをクリックすると別ウィンドウが開きます)

TCPグループ

 TCP(Transmission Control Protocol)グループには、TCPの動作に関する設定が格納されています。このグループのオブジェクトは次のとおりです。

tcpRtoAlgorithm オクテット再送のアルゴリズム
tcpRtoMin 再送のタイムアウトとして許可される時間の最小値
tcpRtoMax 再送のタイムアウトとして許可される時間の最大値
tcpMaxConn 接続の最大数
tcpActivOpens 接続がCLOSEDからSYN-SENTに移行した回数
tcpPassiveOpens 接続がLISTENからSYN-REVDに移行した回数
tcpAttemptFails 接続の失敗回数
tcpEstabResets リセット回数
tcpCurrEstab 現在ESTABLISHDまたはCLOSE-WAITの接続数
tcpInSegs 受信セグメント総数
tcpOutSegs 送信セグメント総数
tcpRetransSegs 再送セグメント総数
tcpConnTable TCP接続に関するテーブル
tcpConnEntry TCP接続のリスト
tcpConnState 接続のステータス
tcpConnLocalAddress ローカルの
IPアドレス
tcpConnLocalPort ローカルの
ポート番号
tcpConnRemAddress リモートの
IPアドレス
tcpConnRemPort リモートの
ポート番号
tcpInErrs エラーになった受信セグメント数
tcpOutRsts RSTフラグを含んだ送信セグメント数
表6 TCPグループ(1.3.6.1.2.1.6)
(ここをクリックすると別ウィンドウが開きます)

UDPグループ

 UDP(User Datagram Protocol)グループには、UDPの動作に関する設定が格納されています。このグループのオブジェクトは次のとおりです。

udpInDatagrams データグラムの受信総数
udpNoPorts 受信ポートに対応アプリケーションのなかった受信データグラム数
udpInErrors 上記以外の理由でエラーになった受信データグラム数
udpOutDatagrams データグラムの送信総数
udpTable UDPのエンドポイントに関するテーブル
udpEntry テーブルのリスト
udpLocalAddress ローカルのIPアドレス
udlLocalPort ローカルのポート番号
表7 UDPグループ(1.3.6.1.2.1.7)

EGPグループ

 EGP(Exterior Gateway Protocol)グループには、EGPの動作に関する設定が格納されています。EGPはautonomousシステムの通信に使用されるプロトコルで、RFC904で定義されています。EGPを実装していないシステムでは、このグループのオブジェクトの実装は必須ではありません。このグループのオブジェクトIDは(1.3.6.1.2.1.8)です。

OIMグループ

 OIMグループはCMOT(Common Management Information Protocol over TCP/IP)に関する設定が格納されるグループですが、現在のMIB-2では使用されていません。このグループのOIDは(1.3.6.1.2.1.9)です。

Transmissionグループ

 Transmissionグループには、データ転送に関する設定が格納されています。MIB-2を最初に定義したRFC1213ではTransmissionグループのオブジェクトが明確に定義されていません。その後RFC1700でデータ転送に関するオブジェクトのリストが定義されていましたので、興味のある方は参照してください。このグループのOIDは(1.3.6.1.2.1.10)です。

SNMPグループ

 SNMPグループには、SNMPの動作に関する設定が格納されています。このグループのオブジェクトは次のとおりです。

snmpInTooBigs tooBigエラーの受信数
snmpInNoSuchNames noSuchNamesエラーの受信数
snmpInBadValues badValuesエラーの受信数
snmpInReadOnlys readOnlysエラーの受信数
snmpInGenErrs genErrsエラーの受信数
snmpInTotalReqVars リクエストに応答して取り出したオブジェクトの総数
snmpInTotalSetVars 変更されたオブジェクトの総数
snmpInGetRequests GetRequestの受信数
snmpInGetNexts GetNextRequestの受信数
snmpInSetRequests SetRequestの受信数
snmpInGetResponces GetResponceの受信数
snmpInTraps Trapの受信数
snmpOutTooBigs tooBigエラーの送信数
snmpOutNoSuchNames noSuchNamesエラーの送信数
snmpOutBadValues badValuesエラーの送信数
---- 使用されていないオブジェクト
snmpOutGenErrs genErrsエラーの送信数
snmpOutGetRequests GetRequestの送信数
snmpOutGetNexts GetNextRequestの送信数
snmpOutSetRequests SetRequestの送信数
snmpOutGetResponces GetResponceの送信数
snmpOutTraps Trapの送信数
snmpEnableAuthenTraps 認証失敗トラップの生成の許可
表8 SNMPグループ(1.3.6.1.2.1.11)

「private」サブツリー中の機器固有のオブジェクト

 通常ベンダが機器固有の機能を管理するために補完しているMIBは、privateサブツリーのenterprisesグループ以下(図1参照)にあります。ほかの機器との差別化を図るため、積極的に新しい機能を搭載した機器がリリースされていますが、その多くはプライベートMIBによって独自の管理情報が取得できるようになっています。

 これらの追加されたMIBの情報は、各ベンダの提供するMIBファイルを参照することで確認することができるでしょう。

まとめ

 この連載ではSNMPによってネットワークシステムを管理する仕組みと、それらの情報の管理構造である管理情報ベース(MIB)について解説しました。ここまでに解説した内容はあくまでもSNMPというプロトコルの概要であり、より本格的にSNMPを理解したいのであれば、やはりRFCなどの多くの資料に目を通す必要があります。


いかがでしたか?

今後もSNMPの需要はさらに高まることが予想されます。この連載が読者の皆さまのSNMPへの理解に少しでも役に立てば幸いです。


ご愛読どうもありがとうございました


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。