+ SNMP関連
created 2005-11-16 modified 2011-02-10
SNMP関係のメモ。
SNMP:1 基本
SNMP:2 ネット機器ベンダがSNMP agentを開発するとは
SNMP:3 エージェントの拡張
1 基本
- マネージャとエージェント
- パケット定義表記方法はASN.1(拡張BNFみたいなもの)
- ビットパターンへの符号化はBER(いわゆるTLV=タグ・長さ・値形式)で定めている
- v1では、SetRequestの応答もGetResponse
- v1以外はTrapはなくてNotify
- 基本はポーリング
- Notifyは届く保障がない
- BulkではないただのGetでも1PDU内に複数VarBindがある
- SMIv1にはwrite-onlyがあるけどSMIv2にはない
- read-createはread-write-createということ
- すでにv3がSTDになっている
- SMIv3というものは今のところ、ない
2 ネット機器ベンダがSNMP agentを開発するとは
- 標準MIB(IF-MIBなど)の実装作業
- 拡張MIBの定義
- SMIv2 → SMIv1 のツールはあるが、逆はない
- 拡張MIBの実装作業
- マネージャを同時に開発できる場合の考慮点
- Atomicアクセス(トランザクション)
- RFC3512 Configuring Networks and Devices with Simple Network Management Protocol (SNMP)
3 エージェントの拡張
- 構成
- マネージャ - マスタエージェント - サブエージェント
- 自分がやりたいことをサブエージェントとして拡張
- マスタとかサブとかの用語は実装技術によりまちまち
- プロセス配置
- 別プロセス
- 同一プロセス
- カーネルモジュール
- 実例
- 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
関連リンク
snmpサブエージェント関係
RFCのリンクがietf.orgじゃないのは愛嬌で
snmp関係(その他)
リンク | 備考 |
---|---|
Linux Kernel AgentX Sub-Agents | まだちゃんと読んでないけど、マスタ・サブエージェント通信についてよくまとまっている。ドイツの学生さんの論文か?PDF直リンク |
SNMP Agent Extensibility (agentx) | IETFのSNMP拡張WG。AgentXのRFCが発行されて活動終わったぽい |
IETF Agentx Working Group | ↑の補助ページみたい |
google:SNMP proxy | SNMP proxyをググる |
RFC 1227 - SNMP MUX protocol and MIB | SMUX |
RFC 1592 - Simple Network Management Protocol Distributed Protocol Interface Version 2.0 | SNMP DPI |
RFC 2741 - Agent Extensibility (AgentX) Protocol Version 1 | AgentX Protocol |
RFC 2742 - Definitions of Managed Objects for Extensible SNMP Agents | AgentX MIB |
EMANATE | SNMP研究所 |
Platform SDK: Simple Network Management Protocol | Windows2000のMSDN文書。WinSNMP APIリファレンスへのリンクなど |
snmp関係(その他)