snmp 陷阱特定陷阱代码

Posted

技术标签:

【中文标题】snmp 陷阱特定陷阱代码【英文标题】:snmp trap specific trap code 【发布时间】:2014-08-19 05:43:04 【问题描述】:

我正在构建一个 SNMP 代理,现在正在处理陷阱消息。在我开始编写陷阱消息的代码之前,我有一个问题: 在 SNMPv1 中,具体的陷阱代码是什么?在我搜索的所有地方,我都得到了肤浅的定义,我想得到一个深入的定义,以及它可能包含的内容。

【问题讨论】:

每个问题一个问题 【参考方案1】:

一个 SNMPv1 trap PDU 包含以下项目:

    生成陷阱的对象类型(这是NOTIFICATION-TYPE 类型的OID) 生成对象的地址(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 == 企业基础、2021 == UC Davis、251 == ucdTraps,而尾随的12 分别用于usdStartup 和usdShutdown。

这些陷阱会将陷阱数据类型设置为6,并且由于它们未指定企业数据字段的任何内容,因此无法解释。

最后对于变量数据,它是一个OID、值对的序列,需要解包为指定的ASN.1数据。

coldStart OID 是.1.3.6.1.6.3.1.1.5.1 - ColdStart、warmStart 和 authenticationFailure 的基本定义在 the SNMPv2 MIB 文件中,linkDown 和 linkUp 的定义可以在 RFC2863 中找到。

说实话,除非我掌握了陷阱的规范,否则我不会费心去解释数据,因为没有它你就无法理解它的含义。

【讨论】:

在我看来,您避免专门回答 OP 的问题:对于 OP 所称的 specific trap code、RFC 所称的 specific-trap 和您所称的 @987654343,什么值是正确的值@? (为什么你对该字段使用与 RFC 完全不同的名称?)整数是强制性的。在例如的情况下ucdStart,正确的值是 specific-trap 0(对于“未指定”)还是 1(对于 ucdStart 的 OID 的最后一个整数)?

以上是关于snmp 陷阱特定陷阱代码的主要内容,如果未能解决你的问题,请参考以下文章

什么 .NET 的 SNMP 库使陷阱、设置或变得简单? [关闭]

为啥我将所有 snmp 陷阱都作为未知陷阱接收

发送和接收 SNMP 陷阱并为 NAS 设备创建 MIB 文件

如何配置引擎 ID 以使用 SNMP4J 发送 SNMP 陷阱 V3?

需要支持:SNMP 陷阱发送器 (SNMPv3)

SNMP 陷阱发送到其他文件,而不是 /var/log/messages