コンフィグレーションガイド Vol.1


18.1.3 SNMPv1,SNMPv2Cオペレーション

管理データ(MIB:management information base)の収集や設定を行うため,SNMPでは次に示す4種類のオペレーションがあります。

各オペレーションはSNMPマネージャから装置(SNMPエージェント)に対して行われます。各オペレーションについて説明します。

〈この項の構成〉

(1) GetRequestオペレーション

GetRequestオペレーションは,SNMPマネージャから装置(エージェント機能)に対してMIBの情報を取り出すときに使用します。このオペレーションでは,一つまたは複数MIBを指定できます。

装置が該当するMIBを保持している場合,GetResponseオペレーションでMIB情報を応答します。該当するMIBを保持していない場合は,GetResponseオペレーションでnoSuchNameを応答します。GetRequestオペレーションを次の図に示します。

図18‒7 GetRequestオペレーション

[図データ]

[図データ]

SNMPv2Cでは,装置が該当するMIBを保持していない場合は,GetResponseオペレーションでMIB値にnoSuchObjectを応答します。SNMPv2Cの場合のGetRequestオペレーションを次の図に示します。

図18‒8 GetRequestオペレーション(SNMPv2C)

[図データ]

(2) GetNextRequestオペレーション

GetNextRequestオペレーションは,GetRequestオペレーションに似たオペレーションです。GetRequestオペレーションは,指定したMIBの読み出しに使用しますが,GetNextRequestオペレーションは,指定したMIBの次のMIBを取り出すときに使用します。このオペレーションも一つまたは複数のMIBを指定できます。

装置が指定した次のMIBを保持している場合は,GetResponseオペレーションでMIBを応答します。指定したMIBが最後の場合は,GetResponseでnoSuchNameを応答します。GetNextRequestオペレーションを次の図に示します。

図18‒9 GetNextRequestオペレーション

[図データ]

[図データ]

SNMPv2Cの場合,指定したMIBが最後の場合はGetResponseでMIB値にendOfMibViewを応答します。SNMPv2Cの場合のGetNextRequestオペレーションを次の図に示します。

図18‒10 GetNextRequestオペレーション(SNMPv2C)

[図データ]

(3) GetBulkRequestオペレーション

GetBulkRequestオペレーションは,GetNextRequestオペレーションを拡張したオペレーションです。このオペレーションでは繰り返し回数を設定し,指定したMIBの次の項目から指定した繰り返し回数個分のMIBを取得できます。このオペレーションも,一つまたは複数のMIBを指定できます。

装置が,指定したMIBの次の項目から指定した繰り返し回数個分のMIBを保持している場合は,GetResponseオペレーションでMIBを応答します。指定したMIBが最後の場合,または繰り返し数に達する前に最後のMIBになった場合,GetResponseオペレーションでMIB値にendOfMibViewを応答します。GetBulkRequestオペレーションを次の図に示します。

図18‒11 GetBulkRequestオペレーション

[図データ]

[図データ]

(4) SetRequestオペレーション

SetRequestオペレーションは,SNMPマネージャから装置(エージェント機能)に対して行うオペレーションという点でGetRequest,GetNextRequest,GetBulkRequestオペレーションと似ていますが,値の設定方法が異なります。

SetRequestオペレーションでは,設定する値とMIBを指定します。値を設定すると,GetResponseオペレーションでMIBと設定値を応答します。SetRequestオペレーションを次の図に示します。

図18‒12 SetRequestオペレーション

[図データ]

(a) MIBを設定できない場合の応答

MIBを設定できないケースは,次に示す3とおりです。

  • MIBが読み出し専用の場合(読み出し専用コミュニティに属するマネージャの場合も含む)

  • 設定値が正しくない場合

  • 装置の状態によって設定できない場合

各ケースによって,応答が異なります。MIBが読み出し専用の場合,noSuchNameのGetResponse応答をします。SNMPv2Cの場合,MIBが読み出し専用のときはnotWritableのGetResponse応答をします。MIBが読み出し専用の場合のSetRequestオペレーションを次の図に示します。

図18‒13 MIB変数が読み出し専用の場合のSetRequestオペレーション

[図データ]

[図データ]

設定値のタイプが正しくない場合,badValueのGetResponse応答をします。SNMPv2Cの場合,設定値のタイプが正しくないときはwrongTypeのGetResponse応答をします。設定値のタイプが正しくない場合のSetRequestオペレーションを次の図に示します。

図18‒14 設定値のタイプが正しくない場合のSetRequestオペレーション例

[図データ]

[図データ]

装置の状態によって設定できない場合,genErrorを応答します。例えば,装置内で値を設定しようとしたときに,装置内部で設定タイムアウトを検出した場合などがこれに当てはまります。装置の状態によって設定できない場合のSetRequestオペレーションを次の図に示します。

図18‒15 装置の状態によって設定できない場合のSetRequestオペレーション

[図データ]

(5) コミュニティによるオペレーション制限

SNMPv1およびSNMPv2Cでは,オペレーションを実行するSNMPマネージャを限定するため,コミュニティという概念があります。コミュニティはオペレーションを実行するSNMPマネージャとSNMPエージェントを一つのグループとして割り当てる名称です。MIBに対してオペレーションする場合は,SNMPマネージャとSNMPエージェントは,同一のグループ(コミュニティ)に属する必要があります。コミュニティによるオペレーションを次の図に示します。

図18‒16 コミュニティによるオペレーション

[図データ]

装置Aはコミュニティ(public)およびコミュニティ(localnetwork)に属しています。コミュニティ(othernetwork)には属していません。この場合,装置Aはコミュニティ(public)およびコミュニティ(localnetwork)のSNMPマネージャA,BからMIBのオペレーションを受け付けますが,コミュニティ(othernetwork)のSNMPマネージャCからのオペレーションは受け付けません。

(6) IPアドレスによるオペレーション制限

本装置では,セキュリティを考慮し,アクセスリストを使用することでコミュニティとSNMPマネージャのIPアドレスの組み合わせが合わないときはMIBのオペレーションを受け付けないようにできます。本装置でSNMPv1およびSNMPv2Cを使用するときは,コミュニティをコンフィグレーションコマンドで登録する必要があります。なお,コミュニティは文字列で設定します。また,一般的にコミュニティ名称は,publicを使用している場合が多いです。

(7) SNMPオペレーションのエラーステータスコード

オペレーションでエラーが発生した場合,SNMPエージェントはエラーステータスにエラーコードを設定し,何番目のMIB情報でエラーが発生したかをエラー位置番号に設定したGetResponseオペレーションの応答を返します。オペレーションの結果が正常なら,エラーステータスにエラーなしのコードを設定し,MIB情報内にオペレーションしたMIB情報を設定したGetResponseオペレーションの応答を返します。エラーステータスコードを次の表に示します。

表18‒1 エラーステータスコード

エラーステータス

コード

内容

noError

0

エラーはありません。

tooBig

1

データサイズが大きくPDUに値を設定できません。

noSuchName

2

指定MIBがない,または書き込みできませんでした。

badValue

3

設定値が不正です。

readOnly

4

書き込みできませんでした(本装置では,応答することはありません)。

genError

5

その他のエラーが発生しました。

noAccess

6

アクセスできないMIBに対してsetを行おうとしました。

wrongType

7

MIBで必要なタイプと異なるタイプが指定されました。

wrongLength

8

MIBで必要なデータ長と異なる長さが指定されました。

wrongEncoding

9

ASN.1符号が不正でした。

wrongValue

10

MIB値が不正でした。

noCreation

11

該当するMIBが存在しません。

inconsistentValue

12

現在何か理由があって値が設定できません。

resourceUnavailable

13

値の設定のためにリソースが必要ですが,リソースが利用できません。

commitFailed

14

値の更新に失敗しました。

undoFailed

15

値の更新に失敗したときに,更新された値を元に戻すのに失敗しました。

notWritable

17

セットできません。

inconsistentName

18

該当するMIBが存在しないため,現在は作成できません。