It计算机课件 第3章 简单网络管理协议_第1页
It计算机课件 第3章 简单网络管理协议_第2页
It计算机课件 第3章 简单网络管理协议_第3页
It计算机课件 第3章 简单网络管理协议_第4页
It计算机课件 第3章 简单网络管理协议_第5页
已阅读5页,还剩177页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3幸简单网络管理体衩

SNMP是专门用来管理网络设备的一种

标准应用层协议,有SNMPvLSNMPv2>

SNMPv3三个不同的版本和一系列RFC文件o

SNMP使网络管理员能够维护网络运行,发

现并解决网络问题以及规划网络发展。

3.1SNMP的演变

3.1.1SNMPvl

11987年11月提出简单网关监控协议(SGMP)

2简单网络管理协议第一版(SNMPvl)公布在1990年和

1991年的几个RFC文件中,即

RFC1155(SMI)RFC1157(SNMP)RFC1212(MIB)

RFC1213(MIB-2)

3双轨制策略:

SNMP满足当前的网络管理需要,并可平稳过渡到新的

网络管理标准。

OSI网络管理(CMOT)作为长期解决办法,可提供更全面

的管理功能,但需较长开发及接受过程。但OSIMIB采

用面向对象模型,开发缓慢,SNMP无法顺利过渡。

3.1.2SNMPv2

1为弥补SNMP的安全缺陷(无数据源认证功能,不能防

止被偷听),1992年发布S-SNMP,该协议增强了以下

安全方面的功能:用报文摘要算法MD5保证数据完整

性和进行数据源认证;用时间戳对报文排序;用DES算

法提供数据加密功能。

2S-SNMP没有改进SNMP功能和效率方面的缺点。于是

又提出SMP协议,该协议在使用范围、复杂程度、速

度和效率、安全措施、兼容性等方面对SNMP进行了扩

充。

31996年1月发布SNMPv2C,它以SMP为基础,放弃了S.

SNMPoSNMPv2和SNMPv2c的RFC如表5-1。

表3/有关SNMPv2和SNMPv2c的RFC文件

SNMPv2(1993.5)名称SNMPv2(1996.1)

1441SNMPv2简介1901

1442SNMPv2管理信息结构1902

1443SNMPv2文本结构约定1903

1444SNMPv2一致性声明1904

1445SNMPv2高层安全模型

1446SNMPv2安全协议

1447SNMPv2参加者MIB

1448SNMPv2协议操作1905

1449SNMPv2传输层映射1906

1450SNMPv2管理信息库1907

1451管理进程间的管理信息库

SNMPv2第1版和第2版网

14521908

络管理框架共存

3.1.3SNMPv3

SNMPv2不能提供数据源标识、报文完整性认证、防止

重放、报文机密性、授权和访问控制、远程配置和高层管理

能力等。

因此后来在此基础上又进行了修订,1999年4月公布了

SNMPv3的新标准草案。增加了安全和高层管理功能,且能

和以前的标准(SNMPvl和SNMPv2)兼容,以便于以后扩

充新的模块,从而形成了统一的SNMP新标准。

3.2SNMPvl

SNMPvl:

是一种简单的请求/响应协议,

使用管理者■代理模型,

仅支持对管理对象值的检索和修改等简单操作。

网络管理系统发出一个请求,管理器则返回一个响应。

该过程通过SNMP操作实现。

不足:

不支持管理站改变管理信息库的结构,即不能增加和

删除管理信息库中的管理对象实例;

管理站不能向管理对象发出执行一个动作的命令。

管理站只能逐个访问管理信息库中的叶节点,不能一

次性访问一个子树,这些限制简化了SNMP的实现。

3.2.1SNMPvl协议数据单元

RFC1157使用ASN.1定义SNMPvl。

在SNMPvl管理中,管理站和代理之间交换的管理信息

构成了SNMPvl报文。

SNMP报文

版本号团体名SNMPPDU

GetRequestPDU、GetNextRequestPDU和SetRequestPDU

PDU类型请求标志00变量绑定表

GetResponsePDU

PDU类型请求标志错误状态错误索引变量绑定表

TrapPDU

PDU类型制造商ID代理地址一般陷入特殊陷入时间戳变量绑定表

变量绑定表

名字1值1名字2值2•••名字〃值〃

报文由版本号、团体名和协议数据单元三部分组成。

版本号是SNMP版本,RFC1157为第1版。

团体名用于身份认证。

SNMPvl共有5种管理操作,只有3种PDU格式。

(1)管理站发出的3种请求报文,其采用的格式是一样

的,GetRequestGetNextRequestSetRequest

(2)代理的应答报文格式只有GetResponsePDU

(3)TrapPDU

♦除TrapPDU之外的四种PDU格式是相同的,共有五个字臂

段:

PDU类型:有5种

GetRequestPDU

GetNextRequestPDU

SetRequestPDU

GetResponsePDU

TrapPDU

请求标识(request-id):赋予每个请求报文唯一的整数,

用于区分不同的请求。由于在具体实现中请求多是在后

台执行的,因而当应答报文返回时要根据其中的请求标

识与请求报文配对。请求标识的另一个作用是检测由不

可靠的传输服务产生的重复报文。

错误状态(error-status):表示代理在处理管理站的请求

时可能出现的各种错误,共有6种错误状态,包括

noError(0)tooBig(1)noSuchName(2)badValue(3)

readOuly(4)genError(5)。

错误索引(error-index):当错误状态非0时指向出错的变

量。

变量绑定表(variable-binding):变量名和对应值的表,

说明要检索或设置的所有变量及其值。在检索请求报文中,

变量的值应为0。

♦TrapPDU报文,有下列字段:

»PDU类型:TrapPDU

»制造商ID(enterprise):表示设备制造商标识,与

MIB-2对象sysObjectID的值相同。

»代理地址(agent-addr):产生陷入的代理的IP地址。

»一般陷入(genenric-trap):SNMP定义的陷入类型,

共分7类:coldStart(0)wannStart(1)linkDown(2)

linkUp(3)authenticationFailure(4)

egpNeighborLoss(5)enterpriseSpecific(6)。

»特殊陷入(specific-trap):与设备有关的特

殊陷入代码。

»时间戳(time-stamp):代理发出陷入的时间,

与MIB-2中的对象sysUpTime的值相同。

3.2.2报文发送与接收

>SNMP报文在管理站和代理之间传送,包含GetRequest

GetNextRequestSetRequest的报文由管理站发出,代理以

GetResponse响应。

>Trap报文由代理发给管理站,不需应答。

>管理站可连续发出多个请求报文,然后等待代理返回应

答报文。如果在规定的时间内收到应答,则按照请求标识

进行配对,亦即应答报文必须与请求报文有相同的请求标

识。

管理站代理管理站代理

GSResponsePOU^

管理站代理管理站代理

E!^9WPD[£^

^^^jTrapPp^^--

<S^tResponsePSu"

图3・2SNMP报文发送与应答序列

发送报文的过程:

»首先按照ASN.1的格式构

造PDU,交给认证进程;

A认证进程检查源和目标之

间是否可以通信,如果通过

这个检查则把有关信息(版

本号、团体名和PDU)组装

成报文;

A最后经过BER编码,将报

文交传输实体发送出去,如

图3・3所小。

图3-3生成和发送SNMP报文

接收报文时执行下面的过程:

A首先按照BER编码恢复ASN.1报文o

»然后对报文进行语法分析,验证版

本号和认证信息等。

»如果通过分析和验证,则分离出协

议数据单元并进行语法分析,必要

时经过适当处理后返回应答报文。

在认证检验失败时可以生成一个陷

入报文,向发送站报告通信异常情

况。无论何种检验失败,都丢弃报

文。

接收处理过程如图3-4。

图3-4接收和处理SNMP报文

变量绑定表

SNMP操作访问对象实例,只能访问对象标

识树的叶节点。为了减少通信负载,用户希望一

次检索多个管理对象,则可以把多个变量的值装

入一个PDU,这时要用到变量绑定表。

RFCU57建议:在Get和GetNext协议数据单

元中发送实体把变量置为ASN.1的NULL值,接

收实体处理时忽略它,在返回的应答协议数据单

元中设置为变量的实际值。

3.2.3SNMPvl操作

SNMP实体可以对MIB-2中的对象执行以下操作。

Get:管理站检索管理信息库中标量对象的值。

Set:管理站设置管理信息库中标量对象的值。

Trap:代理向管理站报告管理对象的状态变化。

通过综合使用这些操作,可以实现以下管理功能。

3.2.3SNMPvl操作

1.检索简单对象

>检索简单标量对象值可用Get操作。

A如果变量绑定表中包含多个变量,则一次还可以检索

多个标量对象的值。

»接收GetRequest的SNMP实体以请求标识相同的Get・

Response响应。

>GetResponse操作具有原子性,如果所有请求的对象值

可以得到,则给予应答;只要有一个对象的值得不到,则可

能返回下列错误条件:

noSuchName:变量绑定表中的一个对象无法与MIB中的

任何对象标识符匹配,或者要检索的对象是一个数据块(子

树或表),没有对象实例生成。在此情况下,响应实体返回

GetResponsePDU中错误状态为noSuchName,错误索引设置

为一个数,指明有问题的变量。变量绑定表中不返回任何值。

tooBig:响应实体可以提供所有要检索的值,但是变

量太多,一个响应PDU装不下,这往往是由下层协议数据

单元大小限制的。这时响应实体返回一个应答PDU,错误

状态字段置为响应实体可以提供所有要检索的值,但是变

量太多,一个响应PDU装不下,这往往是由下层协议数据

单元大小限制的。这时响应实体返回一个应答PDU,错误

状态字段置为tooBig。

genError:响应实体如不能提供至少一个对象的值,

则返回的PDU中错误状态字段置为genError,错误索引置

一个数,指明有问题的变量。变量绑定表中不返回任何值。

procedurereceive-getrequest;

begin

ifobjectnotavailableforgetthen

issuegetresponse(noSuchName,index)

elseifgeneratedPDUtoobigthen

issuegetresponse(tooBig)

elseifvaluenotretrievableforsomeotherreason11

issuegetresponse(genError,index)

elseissuegetresponse(variablebindings)

procedurereceive-getnextrequest;

begin

ifobjectnotavailableforgetthen

issuegetresponse(noSuchName,index)

elseifgencratedPDUtoobigthcn

issuegctrcsponsc(tooBig)

elseifvaluenotretrievableforsomeotherrcasonti

issuegctresponse(genError,index)

elseissuegetresponse(variablebindings)

end;

procedurereceive-setrequest;

begin

ifobjectnotavailableforsetthen

issuegetresponse(noSuchName,index)

elseifincinsistantobjectvaluethen

issuegetresponse(badValue,index)

elseifgeneratedPDUtoobigthen

issuegetresponse(tooBig)

elseifvaluenotsettableforsomeotherreasonthen

issuegetresponse(genError,index)

elseissuegetresponse(variablebindings)

end;

图3.5SNMPPDU响应处理逻辑

GetNextRequest

作用与GetRequest基本相同,PDU格式也相同,唯一

的差别是GetRequest检索变量名是对象实例,而

GetNextRequest是“下一个”对象实例。

根据对象标识树的词典顺序,对于标量对象,对象标

识符所指的下一实例就是对象的值。

例3.1为了说明简单对象的检索过程,考虑图3.6所示

的例子,这是UDP组的一部分。可以在检索命令中直接指明

对象实例的标识符:

GetRequest(udpInDatagrams.0,udpNoPorts.0,

udpInErrors.0,udpOutDatagrams.0)

可以预期得到下面的响应:

GetResponse(udpInDatagrams.0=100,udpNoPorts.0=1,

udpInErrors.0=2,udpOutDatagrams.0=200)

udp(miB7)

udplnDatagrams(l)接收的数据报总。数

-------udpNoPorts(2)无应用端口的数据报数

-------udplnErrors(3)出错数据报数2

-------udpOutDatagrams(4)输出数据报数00

-------udpTable(5)

图3.6检索简单对象例

例3.2用GetNext命令检索图3.6中的4个值,直接指明对

象标识符:

GetNextRequest(udpInDatagrams,udpNoPorts,

udpInErrors,udpOutDatagrams)

得到的响应与上例是相同的:

GetResponse(udpInDatagrams.0=100,udpNoPorts.0=1,

udpInErrors.0=2,udpOutDatagrams.0=200)

可见标量对象实例标识符(例如udpInDatagrams.0)总是紧跟

在对象标识符(例如udpInDatagrams)后面的。

例3.3如果代理不支持管理站对udpNoPorts的访问,飕

响应会不同。发出同样的命令:

GetNextRequest(udpInDatagrams,udpNoPorts,

udpInErrors,udpOutDatagrams)

而得到的响应是:

GetResponse(udpInDatagrams.0=100,

udpInErrors.0=2,

udpInErrors.0=2,udpOutDatagrams.0=200)

可见:当代理收到一个Get请求时,如果能检索到所有的

对象实例,则返回请求的每个值;另一方面,如果有一个值不

可或不能提供,则返回该实例的下一个值。

2检索未知对象

GetNext命令检索变量名指示的下一个对象实例,但是并

不要求变量名是对象标识符或者是实例标识符。

例如udpInDatagrams是简单对象,它的实例标识符是

udpInDatagrams.0,而标识符udpInDatagrams.2并不表示任何

对象。如果我们发出一个命令:

GetNextRequest(udpInDatagrams.2)

则得到的响应是:

GetResponse(udpNoPorts.0=1)

这说明代理没有检查标识符udpInDatagrams.2的有效性,而是

直接查找下一个有效的标识符,得至UudpInDatagrams.0后返回

了它的下一个对象实例。

例3.4利用GetNext的检索未知对象的特性可以发现MIB的

结构。例如管理站不知道udp组有哪些变量,先试着发出命令:

GetNextRequest(udp)

得到的响应是:

GetResponse(udpInDatagrams.0=100)

这样管理站知道了udp组的第一个对象,还可以继续这样找

到其他管理对象。

interfaces(m2ib2)mitr2=1.3.6.1.2.1

3检索表对象

ifNumber(1)

-------ifTable(2)

GetNext可用于有效地搜索表对象cI-------ifEntry(1)

■3.5考虑图3.7所示的例子,如iflndex(1)

-------ifDescr(2)

果我们发出下面的命令,检索ifNumber-------ifType(3)

-------ifMtu(4)

的值:

-------ifSpeed(5)

GetRequest(1.3.6.1.2.1.2.1.0)

图3.7检索表对象例

GetResponse(2)

结果:有两个接口。

ifEntry

"如果想知道每个接口的,/速率,则可以用

下面的命令检索if表的5个器:interfaces(m2ib2)mitr2=1.3.6.1.2.1

GetReauest(1.3.6.1.幺1.2.2.1.5.1)ifNumber(1)

-------ifTable(2)

I-------ifEntry(1)

最后的1是索引项iflndex的值。得到的响应是:

GetResponse(100000000)iflndex(1)

说明第一个接口的数据速率是10Mb/so-------ifDescr(2)

-------ifType(3)

如果我们发出的命令是:-------ifMtu(4)

GetNextRequest(1.3.6.1.2.1.2.2.1.5.1)-------ifSpeed(5)

则得到的是第二个接口的数据速率:

GetResponse(56000)

图3.7检索表对象例

说明第二个接口的数据速率是56kb/so

例3.6考虑图3.8所示的表。假定管理站不知道该表的行数而想检

索整个表,则可以连续使用GetNext命令:

GetNextRequest(ipRouteDest,ipRouteMetricl,ipRouteNextHop)

GetResponse(ipRouteDest.9.1.2.3=9.1.2.3,

ipRouteMetricl.9.1.2.3=3,

ipRouteNextHop.=)

ipRouteE)estIpRouteMetricipRouteNextHo

9.1.2.3399.0.0.3

10.0.0.51589.1.1.42

10.0.0.99589.1.1.42

图3.8检索表对象例

以上是第1行的值,据此可以检索下一行:

GetNextRequest(ipRouteDest.9.1.2.3,

ipRouteMetricl.9.1.2.3,ipRouteNextHop.9.1.2.3)

GetResponse(ipRouteDest.10.0.0.51=10.0.0.51,

ipRouteMetricl.10.0.0.51=5,

ipRouteNextHop.1=2)

ipRouteE)estIpRouteMetricipRouteNextHo

9.1.2.3399.0.0.3

10.0.0.51589.1.1.42

10.0.0.99589.1.1.42

继续检索第3行和第4行:

GetNextRequest(ipRouteDest.10.0.0.51,

ipRouteMetricl.10.0.0.51,

ipRouteNextHop.10.0.0.51)

GetResponse(ipRouteDest.10.0.0.99=10.0.0.99,

ipRouteMetricl.10.0.0.99=5,

ipRouteNextHop.10.0.0.99=89.1.1.42)

GetNextRequest(ipRouteDest.10.0.0.99,

ipRouteMetricl.10.Q八cc

该对象为表外对象

ipRouteNextHop.10.

GetResponse(ipRouteDest.9.1.2.3=3/-7/

ipRouteMetricl.9.1.2.0.3,

ipNetToMedialflndex.1.3=1)

4表的更新和删除

Set命令用于设置或更新变量的值。它的PDU格式与Get是

相同的,但是在变量绑定表中必须包含要设置的变量名和变

量值。

(1)对于Set命令的应答也是GetResponse,同样是原子性

的。

(2)如果所有的变量都可以设置,则更新所有变量的值,

并在应答的GetResponse中确认变量的新值;

如果至少有一个变量的值不能设置,则所有变量的值都

保持不变,并在错误状态中指明出错的原因。

(3)Set出错的原因与Get是类似的(tooBig、

noSuchName和genError),

然而若有一个变量的名字和要设置的值在类型、长度

或实际值方面不匹配,则返回错误条件badValue。

例3.7再一次考虑图3.8所示的表。如果我们想改变列

象ipRouteMetricl的第一个值,则可以发出命令:

SetRequest(ipRouteMetricl.9.1.2.3=9)

得到的应答是:

GetResponse(ipRouteMetricl.9.1.2.3=9)

其效果是该对象的值由3变成了9。

ipRouteDestIpRouteMetricipRouteNextHo

9.1.2.3399.0.0.3

10.0.0.51589.1.1.42

10.0.0.99589.1.1.42

例3.8假定想增加一行,则可以发出下面的命令:

SetRequest(ipRouteDest.11.3.3.12=11.3.3.12,

ipRouteMetric.11.3.3.12=9,

ipRouteNextHop.2=)

对这个命令如何执行,RFC1212有3种解释:

(1)代理可以拒绝这个命令,因为对象标识符ipRouteDest.H.3.3.12

不存在,所以返回错误状态noSuchName。

(2)代理可以接受这个命令,并企图生成一个新的对象实例,但是发现

被赋予的值不适当,因而返回错误状态badValue。

(3)代理可以接受这个命令,生成一个新的行,使表增加到4行,并返

回下面的应答:

GetResponse(ipRouteDest.11.3.3.12=11.3.3.12,

ipRouteMetric.11.3.3.12=9,

ipRouteNextHop.11.3.3.12=91.0.0.5)

在具体实现中,以上3种情况都是可能的。

例3.9假定原来是3行的表,现在发出下面的命令:

SetRequest(ipRouteDest.11.3.3.12=11.3.3.12)

对于这个命令也有两种处理方法:

(1)由于变量ipRouteDest是索引项,因而代理可以增加

一个表行,对于没有指定值的变量赋予默认值。

(2)代理拒绝这个操作。如果要生成新行,必须提供一行

中所有变量的值。

采用哪种方法也是由具体实现决定的。

例3.10如果要删除表中的行,则可以把一个对象的值置

为invalid:

SetRequest(ipRouteType.7.3.5.3=invalid)

得到的响应说明表行确已删除:

GetResponse(ipRouteType.7.3.5.3二invalid)

这种删除是物理的还是逻辑的,又是由具体实现决定的。

在MIB-2中,只有两种表是可删除的:ipRouteTable包含

ipRouteType,可取值invalid;ipNetToMediaTable包含

ipNetToMediaType,可取值invalid。

SNMP没有提供向管理对象发出:1」I的机制,但是可

以利用Set命令对一个专用对象设置侑,让这个专用对象的不

同值代表不同的命令。例如建立一个reBoot对象,可取值0或

1,分别使代理系统启动和复位。

错误状态readonly没有在任何应答报文中出现。实际上,

这个错误条件在SNMPvl中是没有用的,在以后的SNMP版本

中用另外一个错误条件notWritable代替了它。

5陷入操作

>陷入是由代理向管理站发出的异步事件报告,不需要应

答报文。SNMPvl规定了6种陷入条件,另外还有由设备制造商定

义的陷入。

>coldStart:发送实体重新初始化,代理的配置已改变,

通常是由系统失效引起的。

>warmStart:发送实体重新初始化,但代理的配置没有改

变,这是正常的重启动过程。

>linkDown:链路失效通知,变量绑定表的第一项指明对

应接口表的索引变量及其值。

>linkUp:链路启动通知,变量绑定表的第一项指明对应

接口表的索引变量及其值。

>authenticationFailure:发送实体收到一个没有通过认

证的报文。

>egpNeighborLoss:相邻的外部路由器失效或关机。

>enterpriseSpecific:由设备制造商定义的陷入条件,在特

殊陷入(specific-trap)字段指明具体的陷入类型。

3.2.4SNMP功能组

SNMP组共有30个对象。在只支持SNMP站管理功能或只

支持SNMP代理功能的实现中,有些对象没有值。除最后

一个对象,这一组其他对象都是只读计数器。对象

snmpEnableAuthenTrap可以由管理站设置,它指示是否

允许代理产生“认证失效”陷入,这种设置优先于代理自

己的配置,这样就提供了一种可以排除所有认证失效陷入

的手段。

snmp(m-ib11)

—snmplnPkts(1)传输层实体提交给SNMP实体的报文数

—snmpOutPkts(2)SNMP实体交给传输服务的报文数

—snmplnBadVersions(3)接收的含有版本错误的报文数

—snmpInBadCommunityNames(4)接收的含有团体名错误的报文数

—snmpInBadCommunityLJses(5)接收的含有团体操作错误的报文数

—snmpInASNParseErrs(6)接收的含有ASN译码错误的报文数

—snmp(7)未使用

—snmp!nTooBigs(8)接收的含有TooBig错误的报文数

一snmpInNoSnchNames(9)接收的含有NoSuchName错误的报文数

一snmplnBadValues(l0)接收的含有BadValue错误的报文数

—snmpInReadOnlys(l1)接收的含有ReadOnly错误的报文数

—snmplnGenErrs(12)接收的含有GenErr错误的报文数

—snmp!nTotalReqVars(l3)成功检索的MIB对象数

一snmplnTotalSetVars(l4)成功设置的MIB对象数

一snmplnGetRequests(15)接收和处理的Get请求数

一snmpInGetNexts(l6)接收和处理的GetNext请求数

一snmpInSetRequests(l7)接收和处理的Set请求数

一snmpInGetResponses(l8)接收和处理的GetResponse报文数

一snmpInTraps(l9)接收和处理的Trap报文数

—snmpOutTooBigs(20)产生的含有TooBig错误的报文数

-snmpOutNoSuchNames(21)产生的含有NoSuchName错误的报文数

-snmpOutBadValues(22)产生的含有BadValue错误的报文数

—snmp(23)未使用

—snmpOutGenErrs(24)产生的含有GenERR错误的报文数

一snmpOutGetRequests(25)产生的Get请求数

一snmpOutGetNexts(26)产生的GetNext请求数

—snmpOutSetRequests(27)产生的Set请求数

一snmpOutGetResponses(28)产生的GetResponse报文数

—snmpOutTraps(29)产生的Trap报文数

—snmpEnableAuthenTraps(30)认证失效陷入工作(1),认证失效陷入不工作(2)

图3.9MIB-2SNMP功能组

In

CN

.

m

3.2.5实现问题

3.2.5.1管理站应实现的功能

支持扩展的MIB:强有力的SNMP对管理信息库的支持必须是

开放的。特别对于管理站来说,应该能够装入其他制造商定

义的扩展MIB。

图形用户接口:能够显示网络拓扑结构、显示设备的地理位

置和状态信息,可以计算并显示通信统计数据图表,具有各

种辅助计算工具等。

自动发现机制:要求管理站能够自动发现代理系统,能够自

动建立图标并绘制出连接图形。

可编程的事件:支持用户定义事件,以及出现这些事件

时执行的动作。例如路由器失效时应闪动图标或改变图

标的颜色,显示错误状态信息,向管理员发送电子邮件,

并启动故障检测程序等。

高级网络控制功能:例如配置管理站使其可以自动地关

闭有问题的集线器、自动地分离出活动过度频繁的网段

等。

面向对象的管理模型:SNMP其实不是面向对象的系统。

但很多产品是面向对象的系统,也能支持SNMP。

用户定义的图标:方便用户为自己的网络设备定义有表

现力的图标。

轮询频率

SNMP定义的陷入类型是很少的,所以管理站主要

靠轮询收集信息。

通常轮询频率与网络的规模和代理的多少有关。

而网络管理性能还取决于管理站的处理速度、子网数

据速率、网络拥挤程度等众多的其他因素,所以很难

给出准确的判断规则。

为了使问题简化,我们假定管理站一次只能与一

个代理作用,轮询只是采用get请求/响应这种简单形

式,而且管理站全部时间都用来轮询。

转询频率

我们有下面的不等式:

NWT/A,

其中N=被轮询的代理数

1=轮询间隔

人=单个轮询需要的时间。

A与下列因素有关:

管理站生成一个请求报文的时间

从管理站到代理的网络延迟

代理处理一个请求报文的时间

代理产生一个响应报文的时间

从代理到管理站的网络延迟

管理站处理一个响应报文的时间

为了得到需要的管理信息,交换请求/响应报文的数量

例1假设有一个LAN,每15分钟轮询所有被管

理设备一次(这在当前的TCP/IP网络中是典型

的),管理报文的处理时间是50ms,网络延

迟为1ms(每个分组1000字节),没有产生明显

的网络拥挤,则:

A=50*4+l*2=202ms=0.202s,

N三T/A=15X60/0.202=4500

即管理站最多可支持4500个设备。

例2在由多个子网组成的广域网中,网络延迟

更大,数据速率更小,通信距离更远,而且还有

路由器和网桥引入的延迟,总的网络延迟可能达

到半秒钟,A大约是L2s,于是有

N^T/A=15X60/1.2=750

管理站可支持的设备最多为750个。

3.2.6SNMPvl的局F艮性

(1)由于轮询性能限制,不适合管理大网络。

(2)不适合检索大量数据。

(3)陷入报文是没有应答的,管理站是否收到陷

入报文,代理不得而知。这样可能丢掉重要的管理

信息。

(4)只提供简单团体名认证,安全措施不够。

(5)不能直接向被管理设备发送命令。

(6)管理信息库MIB-2支持的管理对象有限,不

足以完成复杂的管理功能。

(7)不支持管理站之间的通信。

3.3SNMPv2

SNMPv2SMI对SNMPvlSMI进行了扩充,

提供了更严格的规范,规定了新管理对象和MIB

文件,是SNMPvlSMI的超集。

SNMPvlSMI引入了4个关键的概念:

»对象的定义

A概念表

A通知的定义

»信息模块

3.3.1SNMPv2管理信息结构

1.对象的定义

与SNMPvl一样,SNMPv2也是用ASN.1宏定义

OBJECT-TYPE表示管理对象的语法和语义,但

是SNMPv2的OBJECT-TYPE增加了新的内容。

OBJECT-TYPEMACRO::=BEGIN

TYPENOTATION::="SYNTAX"Syntax

UnitsPart

MMAX-ACCESS11Access

“STATUS"Status

“DESCRIPTION"Text

ReferPart

IndexPart

DefValPart

VALUENOTATION::=value(VALUEObjectName)

END

图3/0SNMPv2对象宏定义

图3・10所示列出了SNMPv2宏定义的主要部分,与SNMPvl

的宏定义有以下差别:

(1)数据类型。

♦SNMPv2增加了两种新的数据类型Unsigned32和

Counter64o

♦Unsigned32与Gauge32在ASN.1中是无区别的,都是32

位的整数,但在SNMPv2中语义不一样。

♦Counter64与Counter32一样,都表示计数器,只能增

加,不能减少,当增加至U264-1或232-1时回零,从头再增加。

♦SNMPv2规定,计数器没有定义的初始值,因此计数

器的单个值是没有意义的,只有连续两次读取计数器得

到的增加值才是有意义的。

关于Gauge32,SNMPv2规范澄清了原来标准中一些含糊不清的陷戮^

地方。

♦在SNMPv2中规定Gauge32的最大值可以设置为小于232的任

意正数MAX,而在SNMPvl中Gauge32的最大值总是232/。

♦SNMPv2明确了当计量器达到最大值时可自动减少,而在

RFC1155中只是说计量器的值“锁定”(Latch)在最大值,但是

“锁定”的含义并没有定义。

(a)SNMPv2计量器(b)SNMPvl计量器

图3-11SNMPvl计量器和SNMPv2计量器的比较

(2)UNITS子句。

在SNMPv2^OBJECT-TYPE^定义中增加了UNITS子

句。这个子句用文字说明与对象有关的度量单位。当管理

对象表示一种度量手段(如时间)时这个子句是有用的。

(3)MAX・ACCESS子句。类彳以于SNMPvl的ACCESS

子句,说明最大的访问级别,与授权策略无关。

SNMPv2定义的访问类型中去掉了write-only类,

增加了一个与概念行有关的访问类型read・create,表

示可读、可写和可生成。

还增加Taceessible-for-notify访问类,这种访问方式

与陷入有关。

例如,下面是SNMPv2MIB中关于陷入的定义,其

中用到了accessible-for-notifyo

snmpTrapOIDOBJECT-TYPE

SYNTAXOBJECTIDENTIFIER

MAX-ACCESSaccessible-for-notify

STATUScurrent

DESCRIPTION

“Theauthoritativeidentiflcationofthetrapcurrently

Beingsent.Thisvariableoccursasthesecondvarbindin

EverySNMPv2-Trap-PDUandInformRequest-PDU.H

:={snmpTrap1}

SNMPv2的5种访问级别由小到大排列如下:

not-accessible;accessible-for-notify;

read-only;read-write;read-create。

(4)STATUS子句。这个子句指明对象状态。SNMPv2

标准去掉了SNMPvl中的optional和mandatory,只有3种

可选状态。

Current:表示在当前的标准中是有效的。

Obsolete:表示不必实顼这种对象。

deprecated:表示对象」经过时了,但是为了兼容旧版本

实现互操作,实现时还要支持这种对象。

2.表的定义

与SNMPvl一样,SNMPv2的管理操作只能作用于标

量对象,复杂的信息要用表来表示。

按照SNMPv2规范,表是行的序列,而行是列对象的

序列。

SNMPv2把表分为以下两类。

(1)禁止删除利生成行的表。这种表的最高的访

问级别是read-write。在很多情况下这种表由代理

控制,表中只包含read-only型的对象。

(2)允许删除和卓成行的表。这种表开始时可能

没有行,由管理立狂即删除行。行数可由管理

站或代理改变。

■这种表中,必须有一.

个列对象,其SYNTAX

子句的值为Rowstatus

表的格式:

在SNMPv2表的定义中必含有INDEX或AUGMENTS子

句,但是只能有两者其中之一。INDEX子句定义了一个

基本概念行,而INDEX子句中的索引对象确定了一个概

念行实例。

petTableOBJECT-TYPE

SYNTAXSEQUENCEOFPetEntry

MAX-ACCESSnot-accessible

STATUScurrent

DESCRIPTION

"Theconceptualtablelistingthecharacteristicsofallpets1ivingatthisagent."

::={A}

petEntryOBJECT-TYPE

SYNTAXPetEntry

MAX-ACCESSnot-accessible

STATUScurrent

DESCRIPTION

图3.12不允许生成和删除行的表

"Anentry(conceptualrow)inthepetTable.TheTableisindexedbytypeofanima1.

Withineachanimaltype,individualpetsareindexedbyauniquenumericalsequence

number."

INDEX{petType,petindex)

{petTable1}

PetEntrySEQUENCE{

0CTET

petType

INI%WG'

petindex

INTEGER

petCharacteristic1

5

petCharacteristic2INTEGER)

图3.12不允许生成和删除行的表

petTypeOBJECT-TYPE

SYNTAXOCTET

STRING

MAX-ACCESSnot-accessible

STATUS

current

DESCRIPTION

"AnauxiliaryvariableusedtoidentifyinstancesofthecolumnarobjectinthepetTable."

::={petEntry1}

petindex0BJECT-TYPE

SYNTAXINTEGER

MAX-ACCESSread-only

STATUScurrent

DESCRIPTION

"AnauxiliaryvariableusedtoidentifyinstancesofthecolumnarobjectinthepetTable."

::={petEntry2}

图3.12不允许生成和删除行的表

petCharacteristic1OBJECT-TYPE

SYNTAX

INTEGER

MAX-ACCESSread-only

STATUS

current

::={petEntry3}

petCharacteristic2OBJECT-TYPE

SYNTAX

INTEGER

MAX-ACCESSread-only

STATUS

current

::={petEntry4}

图3.12不允许生成和删除行的表

AUGMENTS子句的作用是代替INDEX子句,表示概念行

的扩展。图3.14是这种表的一个例子,这个表是由petTable

扩充的表。

在扩充表中,AUGMENTS子句中的变量(petEntry)叫做基

本概念行,包含AUGMENTS子句的对象(moreEntry)叫做

概念行扩展。

实质:在已定义的表对象的基础上通过增加列对象定义新

表,而不必从头做起重写所有的定义。

moreTableOBJECT-TYPE

SYNTAXSEQUENCEOFMoreEntry

MAX-ACCESSnot-accessible

STATUScurrent

DESCRIPTION

“Atableofadditionalpet

objects.〃

::={B}

moreEntryOBJECT-TYPE

SYNTAXMoreEntry

MAX-ACCESSnot-accessible

STATUScurrent

DESCRIPTION

“AdditionalobjectsforapetTableentry.

AUGMENTS{petEntry)

::={moreTable1}

MoreEntry::=SEQUENCE{

nameOfPetOCTETSTRING,

dateOfLastVisit

nameOfPetOBJiBWFme}

SYNTAXOCTETSTRING

MAX-ACCESSread-on1y

STAT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论