我正在构建一个 SNMP 代理,现在正在处理陷阱消息。在我开始编写陷阱消息的代码之前,我有一个问题:
在 SNMPv1 中,具体的陷阱代码是什么?在我搜索的任何地方,我都得到了肤浅的定义,我想得到一个深入的定义,以及它可以包含的可能性。
1 回答
SNMPv1陷阱 PDU包含以下项目:
- 生成陷阱的对象类型(这是一个
OID
类型NOTIFICATION-TYPE
) - 生成对象的地址(IP地址)
- 通用陷阱数据 - 列出的枚举之一(0==coldStart,1==warmStart ... 6==Enterprise)
- 企业陷阱数据 - 0 或指定的企业陷阱数据
- 时间戳 - 生成了时间戳陷阱
- 变量绑定。
通用陷阱数据项 0-5在规范中明确定义了它们的含义,一旦您点击6
(企业),那么它完全取决于企业 MIB 中提供的定义。除非您实际加载和解释定义值含义的 MIB 的内容,否则您实际上无法理解它的含义。如果我们查看UCD-SNMP-MIB
,它定义了两种陷阱类型:
ucdTraps OBJECT IDENTIFIER ::= { ucdavis 251 }
ucdStart NOTIFICATION-TYPE
STATUS current
DESCRIPTION
"This trap could in principle be sent when the agent start"
::= { ucdTraps 1 }
ucdShutdown NOTIFICATION-TYPE
STATUS current
DESCRIPTION
"This trap is sent when the agent terminates"
::= { ucdTraps 2 }
这些分别对应于 OID.1.3.6.1.4.1.2021.251.1
和.1.3.6.1.4.1.2021.251.2
。
OID 被解释为.1.3.6.1.4.1
== Enterprise base、2021
== UC Davis、251
== ucdTraps 和尾随的1
or2
分别用于 usdStartup 和 usdShutdown。
这些陷阱会将陷阱数据类型设置为,6
并且由于它们未指定企业数据字段的任何内容,因此无法解释。
最后,对于可变数据,它是一个 OID、值对的序列,需要解包为指定的 ASN.1 数据。
coldStart
OID 是- ColdStart、warmStart 和 authenticationFailure的.1.3.6.1.6.3.1.1.5.1
基本定义在SNMPv2 MIB文件中,linkDown 和 linkUp 的定义可以在RFC2863中找到。
老实说,除非我掌握了陷阱的规范,否则我不会费心去解释数据,因为没有它你将无法理解它的含义。