Snmp MIB表中的索引

Snmp MIB表中的索引,snmp,mib,snmp-trap,Snmp,Mib,Snmp Trap,我想在一个MIB中为SNMPv2陷阱使用一个分层表结构,类似于这个答案中描述的陷阱 但是,我并没有真正了解MIB表中条目的索引概念。例如,在以下引用答案的摘录中,使用了子表中条目的childIndex: childEntry OBJECT-TYPE SYNTAX ChildEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Entry in Child table" INDEX { p

我想在一个MIB中为SNMPv2陷阱使用一个分层表结构,类似于这个答案中描述的陷阱

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

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

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

此索引仅用于表检索,您可以使用“获取下一个”或“获取批量消息”查询表中的所有对象。只有根据索引信息,您才能知道如何将接收到的对象格式化为正确的表

“然而,如果我不这样做,我的陷阱接收器(通过iReasoning)也能工作 在所使用的陷阱MIB中指定一个特殊的
childIndex
。”

编辑: 对于陷阱接收器,理解如何解释传入通知取决于MIB文档。幸运的是,在几乎所有标准MIB文档中,对于通知类型的对象,定义都很清楚。例如,在RFC4898中

“对象”部分显示如何解释对象

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


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

为了让我的问题更清楚:陷阱接收器(例如,通过iReasoning的接收器)是否是否还使用GET-NEXT/GET-BULK来获取表数据?据我所知,陷阱数据只是完全发送到目的地,因此索引在这种情况下没有实际用途。如果我错了,请纠正我。刚刚编辑了我的答案。除非无法解释接收到的数据,否则MIB文档中的某些错误不会被检测到。
tcpEStatsEstablishNotification NOTIFICATION-TYPE
   OBJECTS     {
                 tcpEStatsConnectIndex
               }
   STATUS      current
   DESCRIPTION
       "The indicated connection has been accepted
       (or alternatively entered the established state)."
   ::= { tcpEStatsNotifications 1 }