读书频道 > 网站 > 网页设计 > 深入理解Net-SNMP
3.4.5 一致性陈述
15-09-06    下载编辑
收藏    我要投稿   

本文所属图书 > 深入理解Net-SNMP

本书是首部从实战的角度讲解Net-SNMP开发的书籍。本书从网络管理概念开始,到MIB的开发设计,最后到使用Net-SNMP开发网络管理应用,实现了由网络管理理论到实践的落地。它有以下几个特点:书中内容由项目而生,以立即去当当网订购
在之前的章节里,我们一直在讲述如何使用ASN.1的子集——SMI定义管理对象,并将这些管理对象组织起来定义在某个模块中构成一个适用于Agent和NMS的MIB。默认情况下,开发私有MIB时,其中所有的管理对象理所当然地要全部实现,否则就无须定义了。而实际上一个MIB中并不是所有的管理对象都需要实现,如产品版本的变更;这种情况也常出现在那些考虑到通用,兼容性问题的标准MIB中。至于哪些管理对象需要实现,或者说Agent,NMS至少需要实现、支持哪些管理对象,以及该以何种方式描述,这就是一致性陈述(Conformance Statements)所需要解决的问题了。在SMIv2中有下面的几个宏,用于解决这方面的定义。
 
解决的方式一般是,先使用宏OBJECT-GROUP和NOTIFICATION-GROUP将具有一致性需要的相关管理对象分组(分子集);再由MODULE-COMPLIANCE和AGENT-CAPABILITIES对上述的组进行一致性陈述(规定)。本节主要讲述一些概念和使用方法。更详细的信息,读者可以参考RFC2580。
 
OBJECT-GROUP:将有一致性陈述相关需求的管理对象描述在一个组中,便于一致性说明、管理和实现。
 
NOTIFICATION-GROUP:它与OBJECT-GROUP类似,是将相关的通告类消息描述在一个组中。便于一致性说明、管理和实现。
 
MODULE-COMPLIANCE:它用于描述MIB中需要实现的管理对象的最小集合,这些集合可以是由OBJECT-GROUP和NOTIFICATION-GROUP定义的。其中MANDATORY-GROUPS子句定义了该MIB中必须实现的管理对象,即当某个Agent宣称支持某个MIB时,必须实现该MIB中MANDATORY-GROUPS定义的管理对象。比如,当某个MIB中定义了10个管理对象,要求其中的5个管理对象必须实现,这就可以理解为MODULE-COMPLIANCE。
 
AGENT-CAPABILITIES:它描述Agent支持某个MIB中哪些管理对象或例外情况。接上面的例子,将5个必须实现的MIB发布后,实现者可以根据情况,按照需求实现超过5个管理对象,这种情况可以称为AGENT-CAPABILITIES,也就是说它是表示实现MODULE-COMPLIANCE的声明。
 
下面看看以上的宏是如何使用的。MODULE-COMPLIANCE宏的使用,请查看以下代码中的注释:
 
EXAMPLE-MIB DEFINITIONS ::= BEGIN
IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,   OBJECT-IDENTITY  FROM SNMPv2-SMI
    TEXTUAL-CONVENTION,StorageType  FROM SNMPv2-TC;
exampleMib MODULE-IDENTITY
    LAST-UPDATED "201403270000Z"
    ORGANIZATION "HZ"
    CONTACT-INFO "xtdwxk@mail.com"
    DESCRIPTION "for only example"
       ::= { anExampleRoot 1 }
exampleMIBConformance OBJECT IDENTIFIER ::= { exampleMib 1 }
exampleMIBCompliances OBJECT IDENTIFIER ::=
                               { exampleMIBConformance 1 }
exampleMIBGroups      OBJECT IDENTIFIER ::=
                               { exampleMIBConformance 2 }
accessChange OBJECT-TYPE
   SYNTAX       INTEGER
   MAX-ACCESS   read-write
   STATUS       current
   DESCRIPTION       "This a example for ACCESS changes."
   ::= { anExampleRoot 2 }
-- 把它定义在一个组中,组中可以有多个对象,这里只列出了一个
exampleObjectGroup OBJECT-GROUP
   OBJECTS {  accessChange    }
   STATUS       current
   DESCRIPTION       "This a example for OBJECT-GROUP use."
   ::= { exampleMIBGroups 2 }
-- 定义一致性中的模块
exampleMIBReadOnlyCompliance MODULE-COMPLIANCE
   STATUS current 
    -- 如果一个代理只支持只读模式,则称为该实现为只读一致性
   DESCRIPTION  "If an agent only support for read-only mode,
                then such an implementation claim read-only compliance."
   MODULE   -- 如果不写模块名,默认为本模块
   MANDATORY-GROUPS { exampleObjectGroup }
::= { exampleMIBCompliances 2 }
END
一个MIB模块中可以包含0、1或多个MODULE-COMPLIANCE声明。这些声明指定对象可以是普通的对象也可以是通告对象。
AGENT-CAPABILITIES宏的使用,请查看以下代码中的注释:
-- EXAMPLE-MIB-CAPABILITY,没有新的对象定义
EXAMPLE-MIB-CAPABILITY DEFINITIONS ::= BEGIN
  IMPORTS
        MODULE-IDENTITY
                FROM SNMPv2-SMI
        AGENT-CAPABILITIES
                FROM SNMPv2-CONF;
   exampleMibCapability MODULE-IDENTITY
     -- 其他字段省略
     DESCRIPTION "Agent capabilities for EXAMPLE-MIB"
     ::= { anExampleRoot 99 }
   exampleAgentCapability AGENT-CAPABILITIES
      PRODUCT-RELEASE "Understanding Net-SNMP V1.0.0 example"
      STATUS          current
      DESCRIPTION     "EXAMPLE-MIB capabilities"
     SUPPORTS        EXAMPLE-MIB
      INCLUDES        { exampleMIBGroups  }
      -- 将对象 accessChange 描述为只支持 read-only
      VARIATION           accessChange
      ACCESS              read-only
      DESCRIPTION         "only support read,can not write"
END

 

通过分析这两个宏的使用,我们基本可以了解MIB模块被实现的情况。另外在使用这两个宏时,一定要在DESCRIPTION子句中详细说明这些声明的情况和例外情形。最后需提醒读者的是,请MIB开发人员根据实际情况使用这两个宏。
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站