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

谁选择不可访问的MIB表索引值?SNMP代理是否强制值的唯一性?,snmp,mib,Snmp,Mib,我正在实现一个SNMP代理,不确定我对“t11ZsZoneMemberIndex”对象(见下文)的值选择方式以及谁强制值唯一性的理解是否正确 我的理解是,SNMP管理器会为“t11ZsZoneMemberIndex”对象选择值,并在设置操作中在VarBind的“name”字段中使用该值。SNMP代理在接收到集合时将强制“t11ZsZoneMemberIndex”值的唯一性。这是正确的吗?若否,原因为何 MIB表是SMIv2,带有RowStatus对象。我知道其他索引的值是从哪里派生的 t11Zs

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

我的理解是,SNMP管理器会为“t11ZsZoneMemberIndex”对象选择值,并在设置操作中在VarBind的“name”字段中使用该值。SNMP代理在接收到集合时将强制“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个值的每一个组合都可以有一行。这意味着从技术上讲,只要另一个索引值不同,T11zZoneMemberIndex的值就可以重复

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


但是,如果存在多个唯一实例,并且它们可以在管理器执行集合时冲突,则是。。。当发送的数据与可接受内容的内部概念不兼容时,由管理员拒绝SET请求并返回错误。

好的,感谢您指出其中的微妙之处。所以从技术上讲,我必须跟踪每个唯一的{fcmInstanceIndex,fcmSwitchIndex,t11ZsServerFabricIndex,t11ZsZoneMemberParentType,t11zZoneMemberParentIndex}元组的T11zZoneMemberIndex唯一性。听起来像是很多簿记。是的,尽管一个带索引缓存的好软件组件可以帮你很大的忙。