MIBファイル構成
7.3 MIBファイル構成
MIBファイルは大まかに言うと、以下の構成になっています。
- モジュール名
- リンケージ
- MIBツリー定義
- 値の定義
今回使用するMATSU-TEST-MIB.txtも同様の構成になっています。以下、各々を説明します。
7.3.1 モジュール名
まず以下の一文を最初に記述します。これによってMIB定義の開始を表します。
MATSU-TEST-MIB DEFINITIONS ::= BEGIN
MATSU-TEST-MIB というのがモジュール名になります。これはファイル名と同じでなくてはいけません(拡張子は何でも良いが.txtが望ましそう)。
BEGINとある通り、ファイルの最後にはENDが必要で、MIB定義の終了を意味します。
7.3.2 リンケージ
次に以下の記述を行います。IMPORTSとは、既に定義されてるマクロ名やデータタイプを当MIBファイルでも使用することを宣言するものです。ちなみにEXPORTと記述することで、MIBファイル内で定義した新しいマクロ名やデータタイプを他のMIBファイルで使用できるようにするものです。複数のMIBファイルを作成する場合に有効です。
IMPORTS MODULE-IDENTITY FROM SNMPv2-SMI NOTIFICATION-TYPE FROM SNMPv2-SMI Integer32 FROM SNMPv2-SMI TEXTUAL-CONVENTION FROM SNMPv2-TC SnmpAdminString FROM SNMP-FRAMEWORK-MIB;
SNMPv2-SMIとは、/usr/share/snmp/mibs/SNMPv2-SMI.txt を指しています。このファイルの中に、MODULE-IDENTITY やInteger32とは何者なのかが定義されていて、それらをこのMIBファイルで使用します、と宣言しています。
- MODULE-IDENTITY
連絡先やら更新履歴など、一般的な管理情報や説明文などを定義するために使用します。 - NOTIFICATION-TYPE
イベント通知の定義を行うために使用します。 - TEXTUAL-CONVENTION
既に定義されたデータタイプを利用して新しいデータタイプを定義する際に使用します - Integer32
32ビットの範囲で数値データを使用する際に宣言します - SnmpAdminString
文字列のデータタイプを使用する際に宣言します
7.3.3 MIBツリー定義
当MIBファイルがツリー上に展開される場所を定義します。7.1章で述べたとおり、今回は12345という拡張番号をenterprises以下に追加します。
org OBJECT IDENTIFIER ::= { iso 3 }
dod OBJECT IDENTIFIER ::= { org 6 }
internet OBJECT IDENTIFIER ::= { dod 1 }
private OBJECT IDENTIFIER ::= { internet 4 }
enterprises OBJECT IDENTIFIER ::= { private 1 }
matsutest OBJECT IDENTIFIER ::= { enterprises 12345 }
なお、enterprisesまではSNMPv2-SMIで定義されているので、リンケージでenterprisesの使用を宣言した場合、下記の通り省略可能です。-- はコメントを表します。
IMPORTS
enterprises FROM SNMPv2-SMI
-- org OBJECT IDENTIFIER ::= { iso 3 }
-- dod OBJECT IDENTIFIER ::= { org 6 }
-- internet OBJECT IDENTIFIER ::= { dod 1 }
-- private OBJECT IDENTIFIER ::= { internet 4 }
-- enterprises OBJECT IDENTIFIER ::= { private 1 }
matsutest OBJECT IDENTIFIER ::= { enterprises 12345 }
OBJECT IDENTIFIERは、左辺の文字列がOIDを意味し、右辺の括弧内の値が具体的なOIDの値を示します。
7.3.4 値の定義
以下からは具体的にOIの定義をしていきます。
mtuObject1 OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-only
STATUS current
DESCRIPTION "this element is for akamatsu test 1!!"
::= { matsutest1 1 }
上記は、OID名がmtuObject1でOIDの値がmatsutest1の下で1(enterprises.12345.1.1)、文字列でread-onlyであることが定義されています。STATUS は状態を通知しているだけで、廃止予定であれば"deprecated"を、廃止されたものであれば"obsolete"を設定します。通常は"current"です。
もう1つ、Trap送信用のOIについての定義を見ます。
mtuStatusTrap NOTIFICATION-TYPE
OBJECTS { mtuTrap }
STATUS current
DESCRIPTION "Trap of mtuTrap Status."
::= { matustrap 1 }
Trap用OIを表す場合は"NOTIFICATION-TYPE"を設定します。OID名がmtuStatusTrapでOIDの値がmatsutrapの下で1(enterprises.12345.3.1)、関連するOIは"mtuTrap"であることを定義しています。
値の定義を終えたら、"END"を記述して拡張MIB定義を終えています。
