snmp - 谁来挑选不可访问的 MIB 表索引值? SNMP 代理是否强制值的唯一性?

标签 snmp mib

我正在实现一个 SNMP 代理,我不确定我对“t11ZsZoneMemberIndex”对象(见下文)的值是如何选择的,以及谁强制执行值的唯一性的理解是否正确。

我的理解是,SNMP 管理器会选择“t11ZsZoneMemberIndex”对象的值,并在 SET 操作中将其用在 VarBind 的“名称”字段中。 SNMP 代理在接收到 SET 时会强制执行“t11ZsZoneMemberIndex”值的唯一性。这样对吗?如果不是,为什么?

MIB 表是 SMIv2,带有一个 RowStatus 对象。我了解其他索引值的来源。

t11ZsZoneMemberTable OBJECT-TYPE

    SYNTAX SEQUENCE OF T11ZsZoneMemberEntry
    MAX-ACCESS not-accessible
::= { t11ZsConfiguration 6 }

t11ZsZoneMemberEntry OBJECT-TYPE

    SYNTAX T11ZsZoneMemberEntry
    MAX-ACCESS not-accessible
INDEX { fcmInstanceIndex, fcmSwitchIndex,
    t11ZsServerFabricIndex, t11ZsZoneMemberParentType,
    t11ZsZoneMemberParentIndex, t11ZsZoneMemberIndex }

::= { t11ZsZoneMemberTable 1 }

T11ZsZoneMemberEntry ::= SEQUENCE {

    t11ZsZoneMemberParentType INTEGER,
    t11ZsZoneMemberParentIndex Unsigned32,
    t11ZsZoneMemberIndex Unsigned32,
    t11ZsZoneMemberFormat T11ZsZoneMemberType,
    t11ZsZoneMemberID OCTET STRING,
    t11ZsZoneMemberRowStatus RowStatus
}

t11ZsZoneMemberParentType OBJECT-TYPE

    SYNTAX INTEGER {
        zone(1), -- member belongs to a Zone
        alias(2) -- member belongs to a Zone Alias
    }
    MAX-ACCESS not-accessible
::= { t11ZsZoneMemberEntry 1 }

t11ZsZoneMemberParentIndex OBJECT-TYPE

    SYNTAX Unsigned32 (1..4294967295)
    MAX-ACCESS not-accessible
::= { t11ZsZoneMemberEntry 2 }

t11ZsZoneMemberIndex OBJECT-TYPE

    SYNTAX Unsigned32 (1..4294967295)
    MAX-ACCESS not-accessible
    DESCRIPTION
        "An index value that uniquely identifies this Zone
        Member amongst all Zone Members in the Zone Set
        database of a particular Fabric on a particular switch."
::= { t11ZsZoneMemberEntry 3 }

t11ZsZoneMemberFormat OBJECT-TYPE

    SYNTAX T11ZsZoneMemberType
    MAX-ACCESS read-create
::= { t11ZsZoneMemberEntry 4 }

t11ZsZoneMemberID OBJECT-TYPE

    SYNTAX OCTET STRING (SIZE (1..255))
    MAX-ACCESS read-create
::= { t11ZsZoneMemberEntry 5 }

t11ZsZoneMemberRowStatus OBJECT-TYPE

    SYNTAX RowStatus
    MAX-ACCESS read-create
::= { t11ZsZoneMemberEntry 6 }

最佳答案

你没看错,是的。但它稍微复杂一些:SNMP 要求整套 MIB 索引放在一起时必须是唯一的。因此,上面的 MIB 有 6 个索引,因此表中的每一行都可以有一行对应这 6 个值的每个组合。这意味着从技术上讲,只要另一个索引值不同,t11ZsZoneMemberIndex 的值就可能重复。

如果要求 t11ZsZoneMemberIndex 本身是唯一的,那么 MIB 确实应该以这种方式定义,并使其成为 MIB INDEX 列表中的唯一对象。不需要为索引本身添加多个唯一索引(并且浪费带宽)。

但是,如果有多个唯一实例,并且当管理器执行 SET 时它们可能会发生冲突,那么是的......当发送的数据不兼容时,管理器会拒绝 SET 请求并返回错误具有可接受的内部概念。

关于snmp - 谁来挑选不可访问的 MIB 表索引值? SNMP 代理是否强制值的唯一性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8045326/

相关文章:

tcp - 为什么 UDP 在有损网络中表现优于 TCP

linux - OID MIB 值存储在哪里?

linux - SNMP Traphandle 不工作

java - Java 中人类可读格式的 SNMP EventTime

c - 如何更改默认的 MIB 搜索路径?

perl - 在 Perl 中解析 SNMP 结果

networking - NETCONF(.Yin/Yang 文件)中的 include 和 import 语句有什么区别

snmp - 在 SNMP MIB 中, "MODULE-IDENTITY"和 "OBJECT IDENTIFIER"有什么区别?

C# SNMP 代理 - 表示 MIB 中的复杂类型

java - 如何从 MIB 获取 DisplayString 大小约束?