【问题标题】:variable instance number in snmp trapssnmp 陷阱中的可变实例编号
【发布时间】:2010-03-02 17:50:01
【问题描述】:

假设我正在编写一个 SNMP v1/2 代理。

是否必须将实例编号附加到陷阱 PDU 中的变量 OID 中?

例如,在 SNMP V1 中,RFC 1157 中定义了一个陷阱,其中包含以下字段:

  • 企业
  • 代理地址
  • 通用陷阱类型
  • 具体的陷阱代码
  • 时间戳
  • 变量绑定

“变量绑定”部分由变量名称和值的列表组成。 根据 RFC 1157:

一般来说,SNMP 的名称 变量是一个对象标识符 x.y 的形式,其中 x 是 a 的名称 中定义的非聚合对象类型 MIB 和 y 是一个对象标识符 片段,以特定于 命名对象类型,标识 所需的实例。

困扰我的是“一般”,.y 是强制性的吗?

【问题讨论】:

    标签: snmp


    【解决方案1】:

    是的,必须在变量绑定中包含任何变量 OID 的实例子标识符。该段落描述了变量 OID 的一般(即通用)形式,而不是使用“一般”来表示不明确的“嗯,通常是这样的,但并非总是如此”。后来的 RFC 使用更具体的措辞:

    变量绑定列表是变量绑定的简单列表。

    变量的名称是一个对象标识符,它是 对应对象的 OBJECT IDENTIFIER 的串联 - 键入与标识 实例。对应对象类型的 OBJECT IDENTIFIER 是 称为变量的 OBJECT IDENTIFIER 前缀。

    [RFC 3416,第 2.1 节]

    【讨论】:

    • 很高兴知道。我们实际上面临着其他几个在不提供实例号的情况下发送陷阱的 snmp 代理,这会造成一些麻烦。为了识别相应的实例,我们必须遍历所有实例并与陷阱中的值进行比较。我觉得这有点骇人听闻。
    • 在 10 到 15 年前,当我进行 SNMP 合规性测试时,这并不是一个不常见的代理错误。令人惊讶的是,实施者仍然犯了这个错误!不过,我应该注意,如果 VALUE 没有标识任何实例,则它没有必要具有实例标识符。例如,SNMPv2c/v3 中的 linkUp 陷阱由 snmpTrapOID.0 = linkUp (1.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.6.3.1.1.5.4) 标识,而不是 linkUp.0。但标识变量的 OID 必须包含实例标识符(对于标量,始终为 .0)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    相关资源
    最近更新 更多