2011-11-08 18 views
2

我正在实现一个SNMP代理,并且不确定我的理解是否正确选择了“t11ZsZoneMemberIndex”对象(请参见下文)的值,以及谁强制值唯一性。谁挑选不可访问的MIB表索引值? SNMP代理是否强制实施该值的唯一性?

我的理解是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 } 

回答

2

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

如果要求t11ZsZoneMemberIndex本身是唯一的,那么MIB确实应该已经这样定义并且使其成为MIB INDEX列表中的唯一对象。没有必要为索引本身添加多个唯一索引(并且浪费带宽)。

但是,如果有多个唯一实例,并且它们可以在管理器执行SET时进行协调,那么是的......这取决于管理器拒绝SET请求并在发送的数据不是时返回错误与可接受的内部概念相一致。

+0

好的,谢谢你指出的微妙。所以在技术上,我必须跟踪每个唯一的{fcmInstanceIndex,fcmSwitchIndex,t11ZsServerFabricIndex,t11ZsZoneMemberParentType,t11ZsZoneMemberParentIndex}元组的t11ZsZoneMemberIndex唯一性。听起来像很多簿记。 – user1034804

+0

是的,虽然具有索引缓存的优秀软件组件可以帮助您。 –