2010-03-02 134 views
2

假设我正在编写SNMP v1/2代理。snmp陷阱中的变量实例号

是否需要将实例号添加到陷阱PDU中的变量OID?

在SNMP V1例如陷阱是在RFC 1157中定义,与以下字段:

  • 企业
  • 代理地址
  • 通用陷阱型
  • 具体凝汽阀编码
  • 时间戳
  • 变量绑定

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

通常,SNMP 变量的名称是 xy形式,其中x是在 定义的MIB一个 非集合对象类型的名称的对象标识符并且y是对象标识符 片段,其以特定于 的方式特定的对象类型标识所需的实例 。

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

回答

4

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

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

变量的名称是一个OBJECT IDENTIFIER其是对应的对象 - 类型的对象标识符的 级联与OBJECT IDENTIFIER片段识别 实例在一起。相应对象类型的OBJECT IDENTIFIER是 ,称为变量的OBJECT IDENTIFIER前缀。

[RFC 3416,第2.1节]

+0

好知道。实际上,我们面临着其他几个snmp代理,它们发送陷阱时没有提供实例编号,这导致了一些麻烦。要确定相应的实例,我们必须通过所有这些实例并与陷阱中的值进行比较。我觉得这有点冒险。 – 2010-03-02 22:59:32

+2

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)。 – 2010-03-03 06:30:57