【问题标题】:Index in MIB tableMIB 表中的索引
【发布时间】:2013-04-14 18:05:01
【问题描述】:

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

但是,对于 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)也可以工作。那么索引的目的是什么?

【问题讨论】:

    标签: snmp mib snmp-trap


    【解决方案1】:

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

    “但是,如果我不这样做,我的 Trap 接收器(通过 iReasoning)也可以工作 在它使用的已用 Trap-MIB 中指定一个特殊的 childIndex。"

    已编辑: 对于陷阱接收器,它依赖于 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 结果时,您对表的更改只会是一个问题,因为那时实用程序会发现缺少一些索引项。

    【讨论】:

    • 为了让我的问题更清楚:陷阱接收器(例如 iReasoning 的那个)是否也使用 GET NEXT / GET BULK 来获取表数据?据我所知,陷阱数据只是完全发送到目的地,因此在这种情况下索引没有真正的用处。如果我错了,请纠正我。
    • 刚刚编辑了我的答案。除非无法解释接收到的数据,否则无法检测 MIB 文档中的某些错误。
    猜你喜欢
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    相关资源
    最近更新 更多