0

我想在 MIB 中使用分层表结构来实现 SNMPv2-Trap,类似于此答案中描述的结构https://stackoverflow.com/a/2510340/346899

但是,对于 MIB 表中的条目,我并没有真正了解 INDEX 的概念。例如,在以下引用答案的摘录中,childIndex使用了子表中的条目:

childEntry OBJECT-TYPE
SYNTAX       ChildEntry
MAX-ACCESS   not-accessible
STATUS       current
DESCRIPTION  "Entry in Child table"
INDEX        { parentIndex,
               childIndex }
::= { childTable 1 }

但是,如果我没有childIndex在它使用的已使用 Trap-MIB 中指定特殊内容,我的 Trap 接收器(通过 iReasoning)也可以工作。那么索引的目的是什么?

4

1 回答 1

1

此索引仅用于表检索,您可以使用 GET NEXT 或 GET BULK 消息来查询表中的所有对象。只有基于 INDEX 信息,您才能知道如何将接收到的对象格式化为适当的表格。

“但是,如果我没有childIndex在它使用的已用 Trap-MIB 中指定特殊内容,我的 Trap 接收器(通过 iReasoning)也可以工作。”

编辑: 对于陷阱接收器,它取决于 MIB 文档来了解如何解释传入的通知。幸运的是,在几乎所有标准 MIB 文档中,对于 NOTIFICATION-TYPE 对象,定义都很明确。例如,在 RFC 4898

https://www.rfc-editor.org/rfc/rfc4898

tcpEStatsEstablishNotification NOTIFICATION-TYPE
   OBJECTS     {
                 tcpEStatsConnectIndex
               }
   STATUS      current
   DESCRIPTION
       "The indicated connection has been accepted
       (or alternatively entered the established state)."
   ::= { tcpEStatsNotifications 1 }

OBJECTS 部分显示了如何解释对象。

因此,陷阱接收器确实没有必要返回并检查您是否错误地定义了表(在此 MIB 的开头)。

您对表的更改只会是一个问题,当此 MIB 文档用于解释表的 GET NEXT 或 GET BULK 结果时,因为那时实用程序会发现缺少一些索引项。

于 2013-04-24T06:53:31.870 回答