SNMP:3 エージェントの拡張
created 2005-11-16 modified 2009-01-13
- 構成
- マネージャ - マスタエージェント - サブエージェント
- 自分がやりたいことをサブエージェントとして拡張
- マスタとかサブとかの用語は実装技術によりまちまち
- プロセス配置
- 別プロセス
- 同一プロセス
- カーネルモジュール
- 実例
- SNMP Proxy
- SMUX
- DPI
- AgentX
- EMANATE
- WinSNMP
3.1 SNMP Proxy
- 概要
- BulkではないただのGetでも1PDU内に複数VarBindがあるため、VarBindによってサブを使い分ける機能がないと破綻する。で、必然的にSMUXなどと同じになる。
- 通信:UDP
3.2 SMUX
- 概要
- SNMP MUltipleXing protocol
- 通信:TCP
- 文書:RFC1227
- 役者の呼び方
役割 | 呼び方 |
---|---|
マスタ | SNMPエージェント |
サブ | SMUXピア |
- メッセージ

- 注意:通常のSNMPのPDUフォーマットを流用する
- メッセージの方向
メッセージ | マスタ | サブ | |
---|---|---|---|
OpenPDU | ![]() | ||
ClosePDU | ![]() | ||
RReqPDU | ![]() | ||
RRspPDU | ![]() | ||
TrapPDU | ![]() | ||
GetPDU | ![]() | ||
GetNextPDU | ![]() | ||
SetPDU | ![]() | ||
SOutPDU | ![]() |
SOutPDUにはrollbackまたはcommitの情報が入る
- 応答
要求 | 応答 |
---|---|
OpenPDU | 正常:なし、エラー:ClosePDU |
ClosePDU | なし |
RReqPDU | RRspPDU |
RRspPDU | なし |
TrapPDU | なし |
GetPDU | GetResponsePDU |
GetNextPDU | GetResponsePDU |
SetPDU | GetResponsePDU(正常:error-status=ゼロ、エラー:同=非ゼロ) |
SOutPDU | なし |
3.3 DPI
- 概要
- SNMP Distributed Protocol Interface ver.2
- 目的:SNMPエージェントを再コンパイルせずにエンドユーザが動的にMIBを追加・削除できること
- 通信:TCP、UDP
- 文書:RFC1592
- ベンダ:IBM
- 役者の呼び方
役割 | 呼び方 |
---|---|
マスタ | SNMPエージェント |
サブ | クライアント(サブエージェント) |
- メッセージ

- メッセージの方向
メッセージ | マスタ | サブ | |
---|---|---|---|
OPEN | ![]() | ||
CLOSE | ![]() | ||
ARE_YOU_THERE | ![]() | ||
REGISTER | ![]() | ||
UNREGISTER | ![]() | ||
GET | ![]() | ||
GETNEXT | ![]() | ||
GETBULK | ![]() | ||
SET | ![]() | ||
COMMIT | ![]() | ||
UNDO | ![]() | ||
RESPONSE | ![]() | ||
TRAP | ![]() |
3.4 AgentX
- 概要
- Agent eXtensibility protocol ver.1
- 目的:装置内、およびLAN内のMIBモジュールを束ねること
- 通信:TCP、Unixドメインソケット(装置内)
- 文書:RFC2741(Protocol)、RFC2742(MIB)
- 同種の概念の中で最初にIETFの標準化プロセスに乗った
- 役者の呼び方
役割 | 呼び方 |
---|---|
マスタ | AgentXマスタエージェント |
サブ | AgentXサブエージェント |
- メッセージ

- 注意:通常のSNMPのPDUフォーマットとは別。上記はすべてAgentX-FUGAHOGE-PDUの略記。
- メッセージの方向
メッセージ | マスタ | サブ | |
---|---|---|---|
Open | ![]() | ||
Close | ![]() | ||
Register | ![]() | ||
Unregister | ![]() | ||
Get | ![]() | ||
GetNext | ![]() | ||
GetBulk | ![]() | ||
TestSet | ![]() | ||
CommitSet | ![]() | ||
UndoSet | ![]() | ||
CleanupSet | ![]() | ||
Notify | ![]() | ||
Ping | ![]() | ||
IndexAllocate | ![]() | ||
IndexDeallocate | ![]() | ||
AddAgentCaps | ![]() | ||
RemoveAgentCaps | ![]() | ||
Response | ![]() |
3.5 EMANATE
- 概要
- Enhanced MANagement Agent Through Extensions
- ベンダ:SNMPリサーチ
- 通信:TCP、Unixドメインソケット、ライブラリコール
3.6 WinSNMP
- 概要
- 実はWinSNMP APIはマネージャ側のAPI群。エージェント側のAPIはSNMP Utility API
- ベンダ:Microsoftが仕様を定める。サードパーティも提供可能
- 通信:ライブラリコール
- サブエージェントはすべてDLL。いくつかのエントリポイントと、通信用のAPIが定められている
- 図

- その他:APIのドキュメントはわりとまとまっている。見出しのみコピペ。
- Opening and closing a WinSNMP application
- Opening and closing a WinSNMP session
- Managing traps and notifications
- Working with variable binding lists
- Working with protocol data units
- Sending SNMP messages
- Receiving SNMP messages
- Managing object identifiers
- Freeing WinSNMP descriptors
- Setting the entity and context translation mode
- Managing the retransmission policy
- Writing WinSNMP applications with multiple threads
- Registering an SNMP agent application