Snmp 我是否可以在AGENT-CAPABILITIES的include子句中包含模块合规性?

Snmp 我是否可以在AGENT-CAPABILITIES的include子句中包含模块合规性?,snmp,mib,Snmp,Mib,据我所知,通常的做法是创建MODULE-COMPLIANCE中列出的对象组(这是由MIB设计器完成的),然后agent实现者根据单个/多个模块COMPLIANCE中使用的组描述agent-CAPABILITIES及其变体。AGENT-CAPABILITIES应该描述AGENT与模块-COMPLIANCE中包含的组相比可以做什么。如果实施完全符合模块合规性怎么办?我是否可以包括MODULE-COMPLIANCE,而不是列出它包含的所有组 snmpb验证器和其他几个验证器不会发出任何警告 xyzCo

据我所知,通常的做法是创建MODULE-COMPLIANCE中列出的对象组(这是由MIB设计器完成的),然后agent实现者根据单个/多个模块COMPLIANCE中使用的组描述agent-CAPABILITIES及其变体。AGENT-CAPABILITIES应该描述AGENT与模块-COMPLIANCE中包含的组相比可以做什么。如果实施完全符合模块合规性怎么办?我是否可以包括MODULE-COMPLIANCE,而不是列出它包含的所有组

snmpb验证器和其他几个验证器不会发出任何警告

xyzCompl MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION "Module Compliance"
    MODULE 
    MANDATORY-GROUPS { xyzFirstGroup, ... , xyzLastGroup }
    ::= { xyzCompanyCompl 1}

xyzAgent AGENT-CAPABILITIES
    PRODUCT-RELEASE "Agent release v1"
    STATUS      current
    DESCRIPTION     "xyz Agent"

    SUPPORTS        XYZ-MIB

    -- what usually gets included
    INCLUDES        { xyzFirstGroup, ... , xyzLastGroup }
    -- what I want to include
    INCLUDES        { xyzCompl }

    ::= { xyzCompanyAgents 1 }

Include引用SMIv1模块中除对象组和通知组以外的OID是明确合法的,根据(强调):

为了简化共存,在SMIv1中定义了对象组 兼容MIB模块可由 调用AGENT-CAPABILITIES宏:遇到 对SMIv1 MIB中定义的对象标识符子树的引用 模块,从属于子树的所有叶对象,以及 具有强制性的状态条款值被视为包括在内

对于SMIv2模块的包含引用非组OID,规范没有说明,因此对于包含{xyzCompl}是否合法有点含糊不清

一方面,除了某些例外情况,SMIv2模块可以转换为SMIv1,反之亦然,从SMIv2到SMIv1 xyzCompl的转换将转换为一个简单的对象标识符::=赋值,它与任何其他的赋值都不可区分;这意味着它是合法的

另一方面,它规定,只有那些具有强制状态的对象才被视为包括在内。SMIv2状态“当前”与SMIv1状态“强制性”不同(尽管它们彼此最接近;SMIv2中的模块合规规则包含了“强制性”的“必须实施”含义)。这可能被解释为因为其状态不是“强制性”而不被包括在内,或者可以解释为,由于模块合规性在支持条款中规定,模块合规性规定了哪些是强制性组,因此这足以等同于要包括的强制性状态

但是,根据RFC 2576引用部分中的强调位,所有这些仅在您打算指定为包含的对象类型的OID前缀与您的模块符合性OID相同时适用,这是非常不推荐的,也是不可能的,所以这一切都是毫无意义的:除非您的对象类型是xyzCompl的OID子对象,否则它们不会被包括在内,尽管它们是您在强制组中指定的组的成员


结论:这是一个合法的语法,因此没有投诉,但不太可能详细说明您的意图。在没有看到MIB的其余部分的情况下,我想说,这个代理功能会说它支持XYZ-MIB,同时也不支持XYZ-MIB中的任何对象,如果它使用包括{xyzCompl}

,亲爱的Michael,谢谢你花时间回复一篇3年的帖子!据我记忆所及,我有4个类似的设备,具有联锁功能。我想将设计模块化,以提高代理功能的可读性。