付録E.2 定義を追加する
ここでは,「付録E.1 定義が必要なオブジェクトかを判定する」により,定義が必要なMIBオブジェクトと判定したものについて,どのように定義文を作成するかを説明します。
- <この項の構成>
- (1) ASN.1によるMIB定義文から作成する方法
- (2) ASN.1以外の形式で記述されたMIBの仕様から作成する方法
(1) ASN.1によるMIB定義文から作成する方法
ASN.1によるMIB定義文から作成する場合は,定義フォーマットとして種別指定を使用します。
- オブジェクトIDの定義
定義が必要なMIBテーブルの,テーブルのオブジェクトIDを定義します。「付録E.1(1) ASN.1によるMIB定義文から判定する方法」の手順1で探したMIBテーブルのオブジェクトIDを,ドットと数字を使った形式で記述します。MIB定義文から数字とドットを使った形式を知るには,ASN.1の定義を解釈し,MIBツリーを上へとたどります。MIB定義文の解釈の方法については,一般の書籍などを参考にしてください。
- INDEX種別の指定
MIBテーブルのインスタンス識別子となるMIBオブジェクトの種別を,順に指定します。MIBオブジェクトのSYNTAXの定義を基に,表E-1の対応表に従って,指定するINDEX種別を決定します。IpAddress,NetworkAddress,INTEGER,Integer32,Counter,Counter32,Counter64,Gauge,Gauge32,Unsigned32,TimeTicks,OBJECT IDENTIFIERなど,SYNTAXから一意にINDEX種別が決まるものについては,表E-1を参考に種別を指定します。また,物理アドレスを表すPhysAddressは,一般に6オクテットで定義されているので,fixoctet(6)として指定します。また,MacAddressは,6オクテットで定義されているので,fixoctet(6)として指定します。
OCTET STRINGおよびDisplayStringは,固定長か可変長かによってINDEX種別が異なります。固定長か可変長かは,MIBオブジェクトのSYNTAX定義を次のように読み取ります。
- SYNTAXの定義で,OCTET STRINGまたはDisplayStringとだけ定義されている場合,可変長となり,INDEX識別子はvaroctetとなります。
- SIZEを使ってサイズを指定している場合,その指定している内容によって固定長か,可変長が決まります。
OCTET STRING(SIZE(4))やDisplayString(SIZE(20))のように,サイズが定義されている場合は,固定長です。その場合は実際に定義されているサイズの値を使って,OCTET STRING(SIZE(4))ならばfixoctet(4),DisplayString(SIZE(20))ならばfixoctet(20)と定義します。
OCTET STRING(SIZE(0..16))やDisplayString(SIZE(1..255))のようにサイズが範囲で指定されていた場合は可変長となり,varoctetとして定義します。
OCTET STRING(SIZE(2..2))のように定義されている場合があります。このような場合,固定長とみなすか可変長とみなすかはエージェントの実装によるので,注意が必要です。
SYNTAXからINDEX種別への変換表を次の表に示します。
表E-1 SYNTAXからINDEX種別への変換表
SYNTAX | INDEX種別 |
---|
IpAddress | ipaddr |
NetworkAddress | netaddr |
INTEGER,Integer32 | integer |
Counter,Counter32,Counter64 | integer |
Gauge,Gauge32,Unsigned32 | integer |
TimeTicks | integer |
OBJECT IDENTIFIER | objectid |
PhysAddress,MacAddress | fixoctet(6) |
OCTET STRING | varoctet |
DisplayString | varoctet |
OCTET STRING(SIZE(4)) | fixoctet(4)※1 |
DisplayString(SIZE(20)) | fixoctet(20)※2 |
OCTET STRING(SIZE(0..16)) | varoctet |
DisplayString(SIZE(1..255)) | varoctet |
注※1 4の部分はMIBにより変わる
注※2 20の部分はMIBにより変わる
(2) ASN.1以外の形式で記述されたMIBの仕様から作成する方法
ASN.1以外の形式で記述されたMIB定義文から作成する場合は,定義フォーマットとして種別指定,または位置指定を使用します。
- オブジェクトIDの定義
定義が必要なMIBテーブルのテーブルのオブジェクトIDを定義します。
MIBの仕様として,MIBテーブルのオブジェクトIDが示されている場合は,そのオブジェクトIDを指定します。MIBの仕様としてMIBテーブル中のMIBオブジェクトのオブジェクトIDしか示されていない場合は,MIBオブジェクトのオブジェクトIDの末尾2オクテットを除きます。それが,テーブルのオブジェクトIDとなります。例えば,テーブル型のMIBオブジェクトのオブジェクトIDが.1.3.6.1.4.1.116.100.10.1.1の場合,テーブルのオブジェクトIDは.1.3.6.1.4.1.116.100.10となります。
MIBオブジェクトのオブジェクトIDの末尾から一つ目がMIBオブジェクトを表すサブID,末尾から二つ目はエントリを表すサブID,末尾から三つ目がテーブルを表すサブIDです。
- INDEX種別またはINDEX位置の指定
MIBの仕様で,テーブルのインスタンス識別子に使用されるオブジェクトのSYNTAXがすべて示されている場合は,種別指定をします。「付録E.1(1) ASN.1によるMIB定義文から判定する方法」と同様に,表E-1に従ってINDEX種別を定義します。
インスタンス識別子に使用されるオブジェクトのSYNTAXが不明な場合は,そのオブジェクトがインスタンス識別子のサブIDに,どのようにマッピングされているかを調べます。インスタンス識別子中のIPアドレスは,四つのサブIDにマッピングされますが,その先頭のサブIDが,インスタンス識別子のサブIDの中で何番目の位置かを指定します。インスタンス識別子として先頭のサブIDを1と数えます。例えば,二つのMIBオブジェクトがインスタンス識別子に使用されている場合,一つ目のMIBオブジェクトのSYNTAXが不明で,二つ目のMIBオブジェクトのSYNTAXがIpAddressの場合,INDEX位置の指定は,一つ目のMIBオブジェクトがマッピングされるサブIDの数に,1を加えたものになります。
なお,インスタンス識別子にマッピングされるMIBオブジェクトが可変長の場合は,位置指定による定義はできません。