付録E.2 定義を追加する

ここでは,「付録E.1 定義が必要なオブジェクトかを判定する」により,定義が必要なMIBオブジェクトと判定したものについて,どのように定義文を作成するかを説明します。

<この項の構成>
(1) ASN.1によるMIB定義文から作成する方法
(2) ASN.1以外の形式で記述されたMIBの仕様から作成する方法

(1) ASN.1によるMIB定義文から作成する方法

ASN.1によるMIB定義文から作成する場合は,定義フォーマットとして種別指定を使用します。

  1. オブジェクトIDの定義
    定義が必要なMIBテーブルの,テーブルのオブジェクトIDを定義します。「付録E.1(1) ASN.1によるMIB定義文から判定する方法」の手順1で探したMIBテーブルのオブジェクトIDを,ドットと数字を使った形式で記述します。MIB定義文から数字とドットを使った形式を知るには,ASN.1の定義を解釈し,MIBツリーを上へとたどります。MIB定義文の解釈の方法については,一般の書籍などを参考にしてください。
  2. 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種別への変換表

SYNTAXINDEX種別
IpAddressipaddr
NetworkAddressnetaddr
INTEGER,Integer32integer
Counter,Counter32,Counter64integer
Gauge,Gauge32,Unsigned32integer
TimeTicksinteger
OBJECT IDENTIFIERobjectid
PhysAddress,MacAddressfixoctet(6)
OCTET STRINGvaroctet
DisplayStringvaroctet
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定義文から作成する場合は,定義フォーマットとして種別指定,または位置指定を使用します。

  1. オブジェクト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です。
  2. 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オブジェクトが可変長の場合は,位置指定による定義はできません。