flat7th

+ 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なし
RReqPDURRspPDU
RRspPDUなし
TrapPDUなし
GetPDUGetResponsePDU
GetNextPDUGetResponsePDU
SetPDUGetResponsePDU(正常: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が定められている

MSDNのサイトより引用


  • その他: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サブエージェント関係
リンク備考
Linux Kernel AgentX Sub-Agentsまだちゃんと読んでないけど、マスタ・サブエージェント通信についてよくまとまっている。ドイツの学生さんの論文か?PDF直リンク
SNMP Agent Extensibility (agentx)IETFのSNMP拡張WG。AgentXのRFCが発行されて活動終わったぽい
IETF Agentx Working Group↑の補助ページみたい
google:SNMP proxySNMP proxyをググる
RFC 1227 - SNMP MUX protocol and MIBSMUX
RFC 1592 - Simple Network Management Protocol Distributed Protocol Interface Version 2.0SNMP DPI
RFC 2741 - Agent Extensibility (AgentX) Protocol Version 1AgentX Protocol
RFC 2742 - Definitions of Managed Objects for Extensible SNMP AgentsAgentX MIB
EMANATESNMP研究所
Platform SDK: Simple Network Management ProtocolWindows2000のMSDN文書。WinSNMP APIリファレンスへのリンクなど
RFCのリンクがietf.orgじゃないのは愛嬌で

snmp関係(その他)
リンク備考
RFC 1155 - Structure and identification of management information for TCP/IP-based internetsSMI(v1)
RFC 2578 - Structure of Management Information Version 2 (SMIv2)SMIv2
SNMP for linuxリンク集ページ
net-snmp
rstory's NET-SNMP Developers Frequently Asked Questions PageNET-SNMPの非公式FAQ
NET-SNMPの光と影
www.SNMPLink.org - Tools & Productsリンク集ページ
Link:SNMP関連リンク