简单网络管理协议学习理解1.SNMP网络管理协议综述SNMP(Simple Network Management Protocol)是被广泛接受并投入使用的工业标准,它是由SGMP即简单网关监控协议发展以来的。
它的目标是保证管理信息在任意两点中传送,便于网络管理员在网络上的任何节点检索信息,进行修改,寻找故障;完成故障诊断,容量规划和报告生成。
它采用轮询机制,提供最基本的功能集。
最适合小型、快速、低价格的环境使用。
它只要求无证实的传输层协议UDP,受到许多产品的广泛支持。
2.1 管理信息经由SNMP协议传输的所有管理倍息都表现为非聚集的对象类型。
这些对象类型被收集到一个或多个管理信息库[MIB]中并且对象类型按照管理信息结构和标识(SMI)定义。
简单网络管理协议策l版的sM[于1990年5月定义在一篇题为《基于因特网的了TCP/IP管理信息结构和标识》的RFC中。
这一RFC要求所有的管理信息库数据和信息必须根据ISO 8824标准《抽象句法表示法1规范》(ASN.1)编码。
按照ASN.1表示所有信息和对象的目的在于方便向OSI的网络管理协议迁移而无需重新定义现已存在的所有对象和MIB。
SMI为每一对象类型定义以下成分:①名字;②句法;②编码说明。
注意:一个对象类型的名字明确地代表一个对象,称为对象标识符。
不得分配标识符0给对象类型作为其名字的一部分。
为便于阅读,在标准文档中对象标识符旁边包含对这一对象的描述。
对象标识符是按照在OSI MIB树中建立的严格分层空间构造的,对象标识符总是一个唯一的从树根开始描述MIB树的整数序列。
对象标识符和它的文字描述的组合称为标号。
2.1.1 管理树SMI明确要求所有被管理的信息和数据都要由管理树来标识。
这棵管理树来源于OSI的定义,它具有从很开始的严格分层化结构。
管理拷的分支和叶子是用数字和字母两种方式显示的。
数字化编码是机器可读的,字母显示则更适合于人的眼睛并帮助用户寻找穿过错综复杂分支的路径。
在树中通向一个节点或叶子的路径是用对象标识符表示的。
树的各个分支是用数值表示的,因此对象标识符就构成了一个整数序列。
管理树纳根下有3个直接后继者IB际电报电话咨询委员会ccnT分支、国际标准化组织Iso分支和J。
int—Iso—CCITT(上述的联合)分文。
下图为因特网子数(1.3.6.1)中所包含的是与因特网有关的所有管理对象。
2.2 名字和语法句法定义了对象的数据类型。
AsN.1的部分结构用来形式化地描述这种数据类型。
ASN.1编码只使用基本编码规则(BER)。
SMI定义了3种数据类型:原语类型、结构类型和自定义的类型。
1)原语类型(Primitive types)原语ASN.1类型有Integer(整数)、Octet(字节)、String(字符串)、object Identifier(对象标识符)和NuLL(空)几种类型。
再没有其他原语类型。
2)结构类型(Constructor types)结构类型是一种用于汇集列表和表格的复合类型。
出于这种目的,SNMP使用sequence和sequence of。
结构类型Sequence允许使用简单类型的列表,在sequence定义中,SNMP协议不提供缺省或可选值。
Sequence的句法构造如下:SEQUENCE{<typel>,..,<typeN>}表格是对一些元家组成的舶数据结构的显示。
用entry表示列表名,sequcence of的句法结构如下:SEQUENCE<entry>3)自定义的类型(Defined types)借助于列表和结构类型,其他类型可以从基本类型(已经定义过的类型)(1nteger、NULL、object Identifier和Octet String)派生。
为此,SMI定义了6种复合类型:(1)NetworkAddress(网络地址)NetworkAddress允许使用各种格式化的网络地址。
当前,SMI只支持因持网协议(2)IPAddress(因特网地址)定义32位IP地址的格式。
(3)Counter(计数器)32位非负值计数器。
这个计数器从o计到2的32次幂减l(十进制的4294967295),—超出最大值,计数器从零重新计数。
(4)Gauge(量规)32位非负整数计算器,可做增1计数和减1计数。
Gauge不能超出最大值(2的32次幂减l,十进制4294967295),如超出,将从零重新启动。
(5)TimeTicks(时间标记)非负的32位的整数。
该整数按1/100s计算时间(6)Opaque(模糊)引入这一伪数据类型,以绕过在有限的SMI定义中所固有的任何限制。
它允许任意的ASN.1结构。
在网管站和代理进程间就Opaque数据的解释达成一致是非常必要的。
4)被管对象管理信息的结构和标识没有定义各自的被管对象,而定义了它们的形式化结构和内容。
每个对象类型由5个字段构成:对象名、句法、定义、访问方式和状态。
(1)对象名在“object”下,数值化的对象标识符是与对象的正文描述成对出现的例子:atIndex {at Entryl}(2)句法使用A5N.1句法类型描述上述内容(3)定义描述被管对象的正文存储于这个字段中(4)访问方式定义对象的访问字段为只读、只写、读写或不可访问(5)状态对象状态字段包含着有关它的至要性的信息。
状态字段可以有以下值①必备(Mandatory),在每一个实现中必须存在;②可选(Ophtional),这一对象的集成是每个实现可选的;③作废(0bsolete),这个对象不再使用。
2.3抽象句法表示法(ASN.1)1)ASN.1规则ASN.1定义了一些规则,这些规则对于理解SNMP是极其重要的:①标准描述了许多已定义的ASN.1类型;②ASN.1类型名总是用大写字母打头;③一律用大写字母显示某些保留字。
这些保留字在标准中是有专门含义的;④某些名字用小写保留字开头。
这些名字仅为增强ASN.1表示法的易读而引入。
2)模版SMI把被管对象的所有属性定义为一组数据(模板)。
这些模板由5个部分构成:对象描述、句法、定义、访问方式和对象的状态。
对象棋板句法定义对象的ASN.L编码(Integer、Object String、NULI、NetworkAddress、IP Address、Counter、Gauge、TimeTicks、opaque)。
2.4 编码SNMP协议的所有对象类型是根据Iso 8824标准,即《抽象句法表示法1的基本编码规则规范》编码的。
正如在基本编码规则BEE中定义的,AsN.1数据总是用传入数据网的最有效位即最高位,作为第一个值。
如下左图中所示,位8—1总是按从左到右的顺序传送到下一最低协议层。
位8是最高位,位l是最低位。
相应地,这一协议消息的接收者将按顺序的数据流传输位8—1。
所有其他位序,例如,以字节右边为最高位(位1)是非法的。
不同于TcP/四协议,sNMP消息没有固定格式的头。
根据ASN.1的基本编码规则(BER),SNMP把每一数据类型划分成3个字段:标识字段、长度字段和数据字段(见下右图)。
1)标识字段标识字段定义朋N.1类型。
对于所有的sNMP协议类型,标识字段都划分为元素类字段、格式化位和标识号字段几部分。
(1)类标识字段中前两个最高佐(位8和7)描述了标识值的类型。
(2)格式化位标识字段中的位6称为格式位(F_bit)。
F_bit用以区分下面的标识数值的原语和复合编码。
对于前者,F_bit被置成0;对于后者,F_bit置成l。
(3)标识号字段标识号字段(位5—1)按二进制数显示标识数值Tag Numbers。
该字段总是从左到右编码,从最有效位5开始往下到最低有效位1(位1)。
由于用这5个位只能表示0一3l的数值而且保留二进制值11111为较大的标识值所用,故实际上只能表示0一30的值。
所有更大标识号值用接下来的数据字节代替(如图)。
在这种情况下,最有效的位(位8)总是置为0值。
2)长度字段在ASN.1中,信息按两种不同类型的长度字段传输,分别称为“确定的形式”和“不确定的形式”。
简单网络管理协议只提供确定形式,即用一个或多个字节定义在随后的信息字段中数据字节数。
长度字段的第一个字节的高位作用在于区别长度字段中有一个字节还是多个字节。
(1)单字节长度字段如果在倍息字段(位1—7)中的信息长度为0一127个字节之间,则数据字节的个数可以用1个字节的长度字段定义。
长度字段首字节中高位置为0以指明是一个短格式。
(2)多字节长度宁段如果在信息字段中的数据字节数超过127,需要用若干字节表示长度。
多字节数据字段也称为长格式。
此时,长度字段的第一个字节的高位总是置成1以表明长格式。
在第一个字节中所有其他位(位l一7)按二进制形式定义为后随字节长度的个数。
因为IP协议最多只能处理6E535个字节的数据报,所以SNMP协议多字节长度字段限制为最大3个字节。
3)数据字段ASN.1的独立功能在数据字段中进行编码。
SNMP协议只提供以下原语类型:Integer、Null、Object Identifier、Octet string、Sequence和Sequence of。
2.5管理信息库被管对象的总和称为管理信息库(MIB)。
当若干年前定义sNMP时,sNMP协议作者的意图是最大程度地实现简单性和可移植性。
这一概念促使sNMP协议成为网络管理的市场标准。
在SNMP协议早期,管理信息库(MIB)就已经是一个基本部件,在RFCl066中,公布了第一组被管对象,为《基于TCP/IP的因特网的网络管理的管理信息库》的文档。
这个管理信息库被认为是MIBI。
MIBI包含了8个对象组,约100个对象。
在1990年5月,MIB H(RFCll58)取代了MIBI。
MIB II引入了3个新的对象组并引入很多新的对象从而扩展了MIBI已有的对象组。
MIBII划分为以下子组:系统(Sys)、接口(if)、地址转换(AT)、因待网协议(IP)、因持网控制报文协议〔ICMP〕、传输控制协议(TCP)、用户数据报协议(uDP)、外部网关协议(EGP)、在TcP/IP上实现的公共管理信息协议(CMOT)、传输(Trans)和简单网络管理协议(SNMP)。
下图为MIB的分层结构2.6 SNMP报文SNMP PD结构如下:(编码之前)V1 中有5中报文;V2 增加了GetBulkRequest和InformRequest PDU。
下图为SNMP V1的GetRequst PDU形式:2.7. SNMP的运行过程驻留在被管设备上的AGENT从UDP端口161接受来自网管站的串行化报文,经解码、团体名验证、分析得到管理变量在MIB树中对应的节点,从相应的模块中得到管理变量的值,再形成响应报文,编码发送回网管站。