ITエンジニアの技術メモ

神奈川在住のITエンジニアの備忘録です。主にプログラミング(Perl, Java など)やネットワーク技術について、仕事などを通じて学んだことを自分の中で整理するためにゆるゆると書いています。誰かのご参考になれば幸いです。

SNMPv3のengine id について

SNMPv3エージェントは、システム内に一意なengine idを持つことになっている。詳細は以下を参照。

RFC 3411 - An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks

 

これを読むと、あるSNMPv3エージェントが通信で使用するengine idは一意になるように思えるが、機器(SNMPv3エージェント)によっては、snmp responseに入れるengine idとsnmp trapに入れるengine idが異なるケースがあった。

 

この場合、例えば、SNMPマネージャがSNMPv3エージェントからのsnmp response内のengine idを記憶していて、snmp trap受信時にtrap中のengine idをチェックしていると、SNMPマネージャ側は、知らないSNMPv3エージェント(engine id)からsnmp trapが来た、と誤認識してしまう。

 

これは、SNMPv3エージェントがsnmp responseとsnmp trapとで異なるengine idを送信するのが悪いのか、それともSNMPマネージャがsnmp responseとsnmp trapとでengine idが同一であることを前提にしているのが悪いのか・・?

 

いろいろ調べてみたが、この辺の細かいところはRFCに書かれていなかったが、上述のページに、

Within an administrative domain, an snmpEngineID is the unique and
unambiguous identifier of an SNMP engine. Since there is a one-to-
one association between SNMP engines and SNMP entities, it also
uniquely and unambiguously identifies the SNMP entity within that
administrative domain.

とあることから、SNMPv3エージェントは、snmp responseとsnmp trapとで同じengine idを送信すべきな気がする。