版本标志是NMS和代理都知道的常量,用于实现版本控制。在SNMP中,没有版本仲裁。如果NMS或代理接收到含有非法的或不支持的版本号的报文,则该消息被丢弃。在第一版里,版本字段的值总是0,而在SNMPv2中,该值必须是1。
SNMP共同体名是一个字符串,代表由特定NMS和代理组成的管理组。共同体的成员之间采用一种很简单的口令方案来鉴别身份。通信中的NMS和代理采用的这种未加密的、平常文字构成的共同体名来实现的简单方法被称为琐细鉴别方案(Trivial Authentication)。对SNMPv1而言,这是唯一的安全措施。共同体名是一个8位字节串,“public”通常是配置时默认共同体名。
SNMP参考模型:
SNMP参考模型由以下4个主要部件构成: ? 互连网络 ? 网络协议 ? 网络管理进程 ? 被管网络实体
网络管理进程 用户界面 网络管理应用1 网络管理应用2 网络管理应用3 被管网络实体NMS MIB NMS SNMP协议 代理 进程 代理进程MIB 网络协议 网络协议 互连网 SNMP的管理信息结构(第一版)
SMI(管理信息结构)是SNMP网络管理框架三要素之首,它定义了SNMP框架所用信息的组织、组成和标识,它还为描述MIB(管理信息库)对象和描述协议怎样交换信息奠定基础。
5
SMI的一个基本用途就是定义SNMP使用的管理对象。按照SMI定义的SNMP管理对象都有3个属性:名字、语法、编码。 管理对象 名字 语法 编码 每一个管理对象都有一个唯一的对象标识符作为其名字。 每一个管理对象的抽象数据结构用抽象语法记法1(ASN.1)来定义。 管理对象的实例也用ASN.1编码,发送和接收的包含管理对象值的协议报文用基本编码规则(BER)来定义。 SMI为MIB定义管理对象以及协议使用管理对象提供了模版。它定义了所用的ASN.1子集以及BER规则如何在传输和接收SNMP信息中使用。
每一个管理对象都有一个名字。所有对象标识符形成一个层次化结构模型。这一层次化结构用一棵全局树来表示,这棵树以一个没有名字的根结点开始,用挂在根上的结点代表已命名的各种对象。要注意以这种方式表示的不仅仅是SNMP管理的MIB对象名。这一全局命名方案同时容纳了用来表示组织、规约和其他的相关对象。只有在命名树上遍历到一棵特定的子树时,才知道SNMP的MIB变量名。
对象标识符用点分十进制整数字符串来表示。每个后继的十进制数代表层次化全局命名结构中的下一个层次。
Internet体系结构部(IAB)命名分支:
O 根结点
iso[1] [1] [2] Identified-organization[3] dod[6] [1]??[5] internet[1] experimental[3] private[4] management[2] directory[1]
directory(目录)分支目前不用,是为将来在internet上实现的OSI目录服务预留的。 management(管理)分支包括那些在IAB文档中定义的对象,例如RFC文档中定义的对象。在此分支中,SNMP标准MIB位于第一个分支。因此,所有的标准MIB对象都有相同的对象标志符前缀1.3.6.1.2.1。IANA(Internet编号分配管理局)管理management(管理)分支及其所有子分支。
用于实验进行测试和研究的对象可置于expermental(实验)分支。IANA机构也管理该分支内对象标识符分配。
private(专用)分支分配给单方面定义的对象,也就是由各组织或团体命名的对象。专用分支的主要作用是在其enterprises(企业)子分支中分配厂商自定义MIB对象名。
6
抽象语法记法1(ASN.1)
ASN.1(抽象语法记法1)提供了一种表示数据的标准方法,这些数据是要在互连网中传输的。ASN.1是一种高级的数据类型定义语言,它描述了在网络管理进程和代理进程之间传输的SNMP报文的格式。 SNMP始终使用ASN.1概念中的描述块(module)来组织ASN.1对象。ASN.1不仅是一个形式化的文法,还是一个抽象的记法。也就是说,ASN.1可用来定义对象,而不必考虑机器之间的不兼容性。 与SNMP有关的是3个主要ASN.1组件: ? 定义管理对象数据类型的类型符号 ? 定义数据类型值和实例的值符号
? 发送和接收用ASN.1编码的信息的传送语法
类型记法和值记法实现ASN.1的语法定义和它们的值定义。传送语法是用BER定义的一个专题。BER是ASN.1规则的应用之一。
SNMP中使用的类型符号是用ObjectSyntax数据类型定义的,ObjectSyntax是用ASN.1定义的Choice类型。Choice类型是一个类联合(union-like)的数据结构,它可取若干数据类型之中的一种。对SNMP来说,ObjectSyntax数据结构可以是下列3种数据类型之一: ? 简单类型(simple)
简单数据类型是所有实现中都共同的和必需具有的基本数据类型。包括INTEGER,OCTET STRING,OBJECT IDENTIFIER,NULL ? 简单结构类型(simple-constructed)
简单数据类型指列表(list)和表格(table),它们是SNMP中十分重要的两种结构类型。简单结构类型常被称作聚合(aggregate)类型。在SNMP子集中使用的两种简单结构数据类型是:SEQUENCE和SEQUENCE OF ? 应用类型(application-wide)
应用数据类型是为SNMP专门定义的。它们采用隐式定义,因为它们都是引用前面的简单数据类型来定义的。SMI定义了SNMP中使用的6种应用数据类型:IpAddress,Network Address,Counter,Gauge,TimeTicks,Opaque 基本编码规则(BER)
ISO标准8825,抽象语法记法1的基本编码规则规约说明了语法如何编码成字节并在互连网上传输。BER是一种算法,它把ASN.1数据比特编码为适合在互连网上传输的字节格式。BER规定最高位是BIT8,最低位是BIT1。BIT8是在网上传输的第一个比特。 在SNMP中使用时,ASN.1和BER的一个重要问题是,如何用这些数据类型来表示一个更大的抽象数据项。这个数据项是由3个可变长部分组成的3元组:包括数据类型的标签、数据长度和数据值。它通常被称为TLV3元组。在NMS和代理进程之间传输的SNMP信息是一组用ASN.1编码的复杂的“标签—长度—内容”: 标签(类型标识符) 长度标识符 值(内容)
7
MIB对象定义格式
除了定义网管框架中使用的形式语法和编码规则外,SMI还规定了MIB中管理对象的格式。这里介绍一下用于定义所有管理对象的通用模板,下面是按SMI表示对象的最通用层次上的情况。
OBJECT:
-------------------------
对象描述符 对象标识符
SYNTAX:
对象抽象数据结构的ASN.1语法
DEFINITION:
对可打印的ASCII字符对象的描述
ACCESS:
只读、可读写、只可写或者不可访问
STATUS:
必备的、可选的或废弃的 为使对象的定义更易于处理,SMI还引入了宏。第一个宏叫做OBJECT-TYPE(对象类型)宏。它为对象定义提供了一个形式化的模板,这些对象构成了管理信息库MIB。注意宏的格式:它有几个关键字,如定界符BEGIN和END,描述对象访问规则和对象状况而罗列的用符号表示的值等。 OBJECT-TYPE宏: OBJECT-TYPE MACRO ::= BEGIN TYPE NOTATION ::= “SYNTAX” type(TYPE ObjectSyntax) “ACCESS” Access “STATUS” Status VALUE NOTATION ::= value(VALUE ObjectName) ACCESS ::= “read-only” | “read-write” | “write-only” | “not-accessible” STATUS ::= “mandatory” | “optional” | “obsolete” END SMI提供的是一种非常直接的形式化方法,在对象的表示及操作方面既简单又易于扩展。
8