SNMP 嵌套 table 定义低于 parent table 一级

SNMP nested table defined one level below the parent table

this post and this note 中所述,可以使用以下结构在 SNMP 中对嵌套 table 进行建模:

parentTable ... ::= { parentNode 1 } -- using index x
childTable  ... ::= { parentNode 2 } -- using index x and y

也就是parent和childtable注册在同一个节点下(即同级),这是我想避免的(主要是因为它腰部在这个节点上有一个 OID,这在我正在处理的应用程序中是有问题的)。

我的问题是:是否可以做完全相同的事情,唯一的区别是我在 的 sub-node 中注册了 child tableparent节点?它看起来像这样:

subNode OBJECT IDENTIFIER ::= { parentNode 512 }
parentTable ... ::= { parentNode 1 } -- using index x
childTable  ... ::= { subNode 1 }    -- using index x and y

如果此语法有效,它是否具有与第一个版本相同的属性(删除 parentNode 中的 raw 也会删除相应的child节点)?

试试吧!您的 MIB 编译器应该会告诉您它是否有效。

如果您没有使用 MIB 编译器,您真的应该使用!将无效的 MIB 文件发布到世界上是非常糟糕的形式,因此您应该采取一切预防措施。 (好吧,在这里发帖是一个好的开始。) 由于 SNMP 实际上不允许您破坏 MIB 的任何用户的向后兼容性,如果您的 MIB 已传播给更广泛的受众,即使删除非法构造也会造成麻烦。

当谈到 "parent" 和 "child" table 索引时,我觉得这听起来像是 SNMP 中通常所说的 "Augmented Tables"。您必须使用 AUGMENTS 关键字定义 childTable。如果您想象的不是这种情况,请告诉我。 From the WebNMS API documentation:

Augmented Table comes into picture when there is one-to-one dependency between rows of one table and rows in another table. In such cases, one table is the base and the other is the augmenting table. This might arise when a particular MIB imports another MIB and shares the same table. A classic example is IF-MIB importing the group interfaces defined in RFC 1213-MIB, where IF-MIB augments the ifTable defined in RFC 1213-MIB.

我的直觉是你的构造是完全合法的。 MIB 树看起来像这样,类似的树我见过很多次。 我认为索引根本不涉及问题,它们真的无关紧要。

parentNode (1)
|
|-parentTable(1.1)
| |
| |-x(1.1.1)
| \-secondColumn(1.1.2)
\-subNode(1.512)
   |
   \-childTable(1.512.1)
      |
      |-x(1.1.1)
      |-y(1.512.1.1)
      \-someData(1.512.1.2)

至于你的table的语义,是的,增加一个table意味着当删除parentTable中的一行时,应该从childTable中删除相应的数据。您的 MIB 实施需要确保发生这种情况。

详细解释请参考link https://sourceforge.net/p/net-snmp/mailman/message/24158139/

感谢 chenyapu 引自优秀书籍 了解 SNMP MIB(第 277 页):

The SNMP SMI does not allow a MIB writer to state that an object in a table is an array (an ASN.1 sequence). This restriction, known as "no table in a table" in the SNMP community, is a frequent source of frustration for beginning SNMP MIB designers.