1、第4章 简单网络管理协议第4章 简单网络管理协议4.1 SNMP的演变的演变 4.2 SNMPv1协议数据单元协议数据单元 4.3 SNMPv1的操作的操作 4.4 实现问题实现问题 4.5 SNMPv2管理信息结构管理信息结构 4.6 SNMPv2协议数据单元协议数据单元 4.7 SNMPv3 习题习题 第4章 简单网络管理协议4.1 SNMP的演变的演变 4.1.1 SNMPv14.1.1 SNMPv1TCP/IP网络管理最初使用的是1987年11月提出的简单网关监控协议(Simple Gateway Monitoring Protocol,SGMP),在此基础上改进成简单网络管理协议第一
2、版(Simple Network Management Protocol,SNMPv1),陆续公布在1990年和1991年的几个RFC(Request For Comments)文档中,即RFC 1155(SMI)、RFC 1157(SNMP)、RFC 1212(MIB定义)和RFC 1213(MIB-2规范)。由于其简单性和易于实现,SNMPv1得到了许多制造商的支持和广泛的应用。第4章 简单网络管理协议当初提出SNMP的目的是将其作为弥补网络管理协议发展阶段之间空缺的一种临时性措施。SNMP出现后显示了许多优点,最主要的的优点是简单,容易实现,而且基于人们熟悉的SGMP(Simple Ga
3、teway Monitoring Protocol)协议,已有相当多的操作经验。因此在1988年,为了适应当时紧迫的网络管理需要,确定了网络管理标准开发的双轨制策略:第4章 简单网络管理协议(1)SNMP可以满足当前的网络管理需要,用于管理配置简单的网络,并且在将来可以平稳地过渡到新的网络管理标准。(2)OSI网络管理(CMIP Over TCP/IP,CMOT)作为长期的解决办法,可以应付未来的更复杂的网络配置,提供更全面的管理功能,但是需要较长的开发过程以及开发商和用户接受的过程。第4章 简单网络管理协议然而这个双轨制策略很快就停止了实施,其原因主要是:(1)原来的想法是SNMP的MIB应
4、该是OSI MIB的子集,以便顺利地过渡到CMOT。但是OSI定义的管理信息库是相当复杂的面向对象模型,在此基础上实现SNMP几乎是不可能的。所以人们很快放弃了这个想法,让SNMP使用简单的标量MIB。这样,SNMP向OSI管理过渡就很困难了。(2)OSI系统管理标准和符合OSI标准的网络管理产品的开发进展缓慢,而在此期间SNMP却得到了制造商的广泛支持,出现了许多SNMP产品,并得到广大用户的接受。第4章 简单网络管理协议4.1.2 SNMPv2 为了修补SNMP的安全缺陷,1992年7月出现了一个新标准-安全SNMP(S-SNMP),这个协议增强了以下安全方面的功能:用报文摘要算法MD5保
5、证数据完整性和进行数据源认证;用时间戳对报文排序;用DES算法提供数据加密功能。第4章 简单网络管理协议但是S-SNMP没有改进SNMP在功能和效率方面的其他缺点。几乎与此同时有人又提出了另外一个协议SMP(Simple Management Protocol),这个协议由8个文件组成,它对SNMP的扩充表现在以下4个方面:适用范围:SMP可以管理任意资源,不仅包括网络资源,还可用于应用管理、系统管理;可实现管理站之间的通信,也提供了更明确、更灵活的描述框架;可以描述一致性要求和实现能力;在SMP中管理信息的扩展性得到了增强。复杂程度、速度和效率:保持了SNMP的简单性,更容易实现,并提供了数
6、据块传送能力,因此速度和效率更高。第4章 简单网络管理协议 安全设施:结合了S-SNMP提供的安全功能。兼容性:可以运行在TCP/IP网络上,也适合OSI系统和运行其他通信协议的网络。在对S-SNMP和SMP讨论的过程中,Internet研究人员之间达成了如下共识:必须扩展SNMP的功能并增强其安全设施,使用户和制造商尽快地从原来的SNMP过渡到第二代SNMP。于是S-SNMP被放弃,决定以SMP为基础开发SNMP第2版,即SNMPv2。第4章 简单网络管理协议IETF组织了两个工作组,一个组负责协议功能和管理信息库的扩展,另一组负责SNMP的安全方面,1992年10月正式开始工作。这两个组的
7、工作进展非常之快,功能组的工作在1992年12月完成,安全组在1993年1月完成。1993年5月它们发布了12个RFC(14411452)文件作为草案标准。后来有一种意见认为SNMPv2基于参加者的高层管理框架和安全机制实现起来太复杂,对代理的配置很困难,限制了网络发现能力,失去了SNMP的简单性。又经过几年的实验和论证,后来人们决定丢掉安全功能,把增加的其他功能作为新标准颁布,并保留了SNMPv1的报文封装格式,称其为基于团体的SNMP(Community-based SNMP),简称SNMPv2C。新的RFC(19011908)文档于1996年1月发布。表4.1列出了有关SNMPv2和SN
8、MPv2C的RFC文件。第4章 简单网络管理协议表表4.1 有关有关SNMPv2和和SNMPv2C的的RFC文件文件 SNMPv2(1993.5)名 称 SNMPv2C(1996.1)1441 SNMPv2 简介 1901 1442 SNMPv2 管理信息结构 1902 1443 SNMPv2 文本结构约定 1903 1444 SNMPv2 一致性声明 1904 1445 SNMPv2 高层安全模型 1446 SNMPv2 安全协议 1447 SNMPv2 参加者 MIB 1448 SNMPv2 协议操作 1905 1449 SNMPv2 传输层映射 1906 1450 SNMPv2 管理信息
9、库 1907 1451 管理进程间的管理信息库 1452 SNMP 第 1 版和第 2 版网络管理框架共存 1908 第4章 简单网络管理协议4.1.3 SNMPv34.1.3 SNMPv3由于SNMPv2没有达到“商业级别”的安全要求(提供数据源标识、报文完整性认证、防止重放、报文机密性、授权和访问控制、远程配置和高层管理能力等),因而SNMPv3工作组一直在从事新标准的研制工作,终于在1999年4月发布了SNMPv3新标准。SNMPv3工作组的目标是:产生一组必要的文档,作为下一代SNMP核心功能的单一标准。要求尽量使用已有的文档,使新标准:第4章 简单网络管理协议 能够适应不同管理需求的
10、各种操作环境;便于已有的系统向SNMPv3过渡;可以方便地建立和维护管理系统。第4章 简单网络管理协议根据以上要求,工作组于1998年1月发表了5个文件,作为安全和高层管理的建议标准(Proposed Standard),这5个文件是:RFC 2271描述SNMP管理框架的体系结构;RFC 2272简单网络管理协议的报文处理和调度;RFC 2273SNMPv3应用程序;RFC 2274SNMPv3基于用户的安全模型;RFC 2275SNMPv3基于视图的访问控制模型。第4章 简单网络管理协议后来在此基础上又进行了修订,终于在1999年4月公布了一组文件,作为SNMPv3的新标准草案(DRAFT
11、 STANDARD):RFC 2570Internet标准网络管理框架第3版引论;RFC 2571SNMP管理框架的体系结构描述(标准草案,代替RFC 2271);RFC 2572简单网络管理协议的报文处理和调度系统(标准草案,代替RFC 2272);RFC 2573SNMPv3应用程序(标准草案,代替RFC 2273);第4章 简单网络管理协议 RFC 2574SNMPv3基于用户的安全模型(USM)(标准草案,代替RFC 2274);RFC 2575SNMPv3基于视图的访问控制模型(VACM)(标准草案,代替RFC 2275);RFC 2576SNMP第1、2、3版的共存问题(标准建议,
12、代替RFC 2089,2000年3月发布)。第4章 简单网络管理协议另外,对SNMPv2的管理信息结构(SMIv2)的有关文件也进行了修订,作为正式标准公布:RFC 2578管理信息结构第2版(SMIv2)(正式标准STD 0058,代替RFC 1902);RFC 2579对于SMIv2的文本约定(正式标准STD 0058,代替RFC 1903);RFC 2580对于SMIv2的一致性说明(正式标准STD 0058,代替RFC 1904)。SNMPv3不仅在SNMPv2C的基础上增加了安全和高层管理功能,而且能和以前的标准(SNMPv1和SNMPv2)兼容,也便于以后扩充新的模块,从而形成了统
13、一的SNMP新标准。第4章 简单网络管理协议4.2 SNMPv1协议数据单元协议数据单元 4.2.1 SNMPv14.2.1 SNMPv1支持的操作支持的操作SNMP仅支持对管理对象值的检索和修改等简单操作。具体地说,SNMP实体可以对MIB-2中的对象执行下列操作:Get:管理站检索管理信息库中标量对象的值;Set:管理站设置管理信息库中标量对象的值;Trap:代理向管理站报告管理对象的状态变化。第4章 简单网络管理协议SNMP不支持管理站改变管理信息库的结构,即不能增加和删除管理信息库中的管理对象实例,例如不能增加或删除表中的一行。一般来说,管理站也不能向管理对象发出执行一个动作的命令。管
14、理站只能逐个访问管理信息库中的叶结点,不能一次性访问一个子树,例如不能访问整个表的内容。从上一章我们知道,MIB-2中的子树结点都是不可访问的。这些限制确实简化了SNMP的实现,但是也限制了网络管理的功能。第4章 简单网络管理协议4.2.2 SNMP PDU4.2.2 SNMP PDU格式格式RFC 1157给出了SNMPv1协议的定义,这个定义是用ASN.1表示的。根据这个定义我们可以画出如图4.1所示的SNMP报文格式。在SNMP管理中,管理站和代理之间交换的管理信息构成了SNMP报文。报文由3部分组成,即版本号、团体名和协议数据单元(PDU)。报文头中的版本号是指SNMP的版本,RFC
15、1157为第1版。团体名用于身份认证,我们将在下一节介绍SNMP的安全机制时谈到团体名的作用。SNMP共有5种管理操作,但只有4种PDU格式。管理站发出的3种请求报文GetRequest、GetNextRequest和SetRequest采用的格式是一样的,代理的应答报文格式只有一种GetResponsePDU,从而简少了PDU的种类。第4章 简单网络管理协议图4.1 SNMP 报文格式 版本号团体名SNMP PDUSNMP报文 GetRequestPDU,GetNextRequestPDU和SetRequestPDUPDU类型请求标识变量绑定表 GetResponsePDUPDU类型请求标识
16、变量绑定表 TrapPDUPDU类型制造商ID变量绑定表变量绑定表特殊陷入 时间戳0错误状态代理地址0错误索引一般陷入名字1值1名字2名字n值n值2第4章 简单网络管理协议从图4.1看出,除过Trap 之外的4种PDU格式是相同的,共有5个字段:(1)PDU类型:共5种类型的PDU。(2)请求标识(request-id):赋予每个请求报文惟一的整数,用于区分不同的请求。由于在具体实现中请求多是在后台执行的,因而当应答报文返回时要根据其中的请求标识与请求报文配对。请求标识的另一个作用是检测由不可靠的传输服务产生的重复报文。第4章 简单网络管理协议(3)错误状态(error-status):表示代
17、理在处理管理站的请求时可能出现的各种错误,共有6种错误状态:noError(0)、tooBig(1)、noSuchName(2)、badValue(3)、readOnly(4)、genError(5)。对不同的操作,这些错误状态的含义不同。(4)错误索引(error-index):当错误状态非0时指向出错的变量。(5)变量绑定表(variable-binding):变量名和对应值的表,说明要检索或设置的所有变量及其值。在检索请求报文中,变量的值应为0。第4章 简单网络管理协议Trap报文的格式与其他报文不同,它有下列字段:(1)制造商ID(enterprise):表示设备制造商的标识,与MIB
18、-2对象sysObjectID的值相同。(2)代理地址(agent-addr):产生陷入的代理的IP地址。(3)一般陷入(generic-trap):SNMP定义的陷入类型,共分coldStart(0)、warmStart(1)、linkDown(2)、linkUp(3)、authenticationFailure(4)、egpNeighborLoss(5)、enterpriseSpecific(6)7类。(4)特殊陷入(specific-trap):与设备有关的特殊陷入代码。(5)时间戳(time-stamp):代理发出陷入的时间,与MIB-2中的对象sysUpTime的值相同 第4章 简单
19、网络管理协议4.2.3 4.2.3 报文应答序列报文应答序列SNMP报文在管理站和代理之间传送,包含GetRequest、GetNextRequest和SetRequest的报文由管理站发出,代理以 GetResponse响应。Trap报文由代理发给管理站,不需要应答。所有报文的发送和应答序列如图4.2所示。一般来说,管理站可连续发出多个请求报文,然后等待代理返回应答报文。如果在规定的时间内收到应答,则按照请求标识进行配对,亦即应答报文必须与请求报文有相同的请求标识。第4章 简单网络管理协议图4.2 SNMP报文发送和应答序列 管理站代理管理站代理GetRequestPDU GetRespon
20、sePDU管理站代理SetRequestPDUSetResponsePDU管理站代理GetNextRequestPDUGetResponsePDUTrapPDU第4章 简单网络管理协议4.2.4 4.2.4 报文的发送和接收报文的发送和接收一个SNMP协议实体(PE)发送报文时执行下面的过程:首先按照ASN.1的格式构造PDU,交给认证进程;认证进程检查源和目标之间是否可以通信,如果通过这个检查则把有关信息(版本号、团体名、PDU)组装成报文;最后经过BER编码,将报文交传输实体发送出去,如图4.3所示。第4章 简单网络管理协议图4.3 生成和发送SNMP报文 构造PDU(ASN.1对象)加入
21、团体名以及源和目标传输地址构造SNMP报文(ASN.1)检验并通过认证把ASN.1报文按BER编码发送给对等实体第4章 简单网络管理协议当一个SNMP协议实体(PE)接收到报文时执行下面的过程:首先按照BER编码恢复ASN.1报文,然后对报文进行语法分析,验证版本号和认证信息等。如果通过分析和验证,则分离出协议数据单元并进行语法分析,必要时经过适当处理后返回应答报文。在认证检验失败时可以生成一个陷入报文,向发送站报告通信异常情况。无论何种检验失败,都丢弃报文。接收处理过程如图4.4所示。第4章 简单网络管理协议图4.4 接收和处理SNMP报文 第4章 简单网络管理协议4.3 SNMPv1的操作
22、的操作 4.3.1 4.3.1 检索简单对象检索简单对象检索简单的标量对象值可以用Get操作。如果变量绑定表中包含多个变量,则一次还可以检索多个标量对象的值。接收GetRequest的SNMP实体以请求标识相同的GetResponse响应。特别要注意的是GetResponse操作的原子性:如果所有请求的对象值可以得到,则给予应答;反之,只要有一个对象的值得不到,则可能返回下列错误条件之一:第4章 简单网络管理协议 变量绑定表中的一个对象无法与MIB中的任何对象标识符匹配,或者要检索的对象是一个数据块(子树或表),没有对象实例生成。在这些情况下,响应实体返回的GetResponse PDU中错误
23、状态字段置为noSuchName,错误索引设置为一个数,指明有问题的变量。变量绑定表中不返回任何值。响应实体可以提供所有要检索的值,但是变量太多,一个响应PDU装不下,这往往是由下层协议数据单元大小限制的。这时响应实体返回一个应答PDU,错误状态字段置为tooBig。第4章 简单网络管理协议 由于其他原因(例如代理不支持)响应实体至少不能提供一个对象的值,则返回的PDU中错误状态字段置为genError,错误索引置一个数,指明有问题的变量。变量绑定表中不返回任何值。响应实体的处理逻辑表示在图4.5中。第4章 简单网络管理协议图4.5 SNMP PDU响应处理逻辑 else if value n
24、ot retrievable for some other reason thenprocedure receive-getrequest;beginif object not available for get thenelse if generated PDU too big thenissue getresponse(tooBig)else if value not retrievable for some other reason thenissue getresponse(genError,index)else issue getresponse(variablebindings)e
25、nd;procedure receive-getnextrequest;beginif object not available for get thenissue getresponse(noSuchName,index)else if generated PDU too big thenissue getresponse(tooBig)issue getresponse(genError,index)else issue getresponse(variablebindings)end;procedure receive-setrequest;begin if object not ava
26、ilable for set thenissue getresponse(noSuchName,index)else if incinsistant object value thenissue getresponse(badValue,index)else if generated PDU too big thenissue getresponse(tooBig)else if value not settable for some other reason thenissue getresponse(genError,index)else issue getresponse(variabl
27、ebindings)end;issue getresponse(noSuchName,index)第4章 简单网络管理协议例例4.14.1 为了说明简单对象的检索过程,考虑图4.6所示的例子,这是UDP组的一部分。我们可以在检索命令中直接指明对象实例的标识符:GetRequest(udpInDatagrams.0,udpNoPorts.0,udpInErrors.0,udpOutDatagrams.0)可以预期得到下面的响应:GetResponse(udpInDatagrams.0=100,udpNoPorts.0=1,udpInErrors.0=2,udpOutDatagrams.0=200
28、)第4章 简单网络管理协议图4.6 检索简单对象例 第4章 简单网络管理协议GetNextRequest的作用与GetRequest基本相同,PDU格式也相同,其处理逻辑和返回错误状态表示在图4.5中,惟一的差别是GetRequest检索变量名所指的是对象实例,而GetNextRequest检索变量名所指的是“下一个”对象实例。根据对象标识树的词典顺序,对于标量对象,对象标识符所指的下一实例就是对象的值。第4章 简单网络管理协议例例4.24.2 我们用GetNext命令检索图4.6中的4个值,直接指明对象标识符:GetNextRequest(udpInDatagrams,udpNoPorts,
29、udpInErrors,udpOutDatagrams)得到的响应与上例是相同的:GetResponse(udpInDatagrams.0=100,udpNoPorts.0=1,udpInErrors.0=2,udpOutDatagrams.0=200)可见标量对象实例标识符(例如udpInDatagrams.0)总是紧跟在对象标识符(例如udpInDatagrams)后面的。第4章 简单网络管理协议例例4.34.3 如果代理不支持管理站对udpNoPorts的访问,则响应会不同。发出同样的命令:GetNextRequest(udpInDatagrams,udpNoPorts,udpInErr
30、ors,udpOutDatagrams)而得到的响应是:GetResponse(udpInDatagrams.0=100,udpInErrors.0=2,udpInErrors.0=2,udpOutDatagrams.0=200)这是因为变量名udpNoPorts和udpInErrors的下一个对象实例都是udpInErrors.0=2。可见当代理收到一个Get请求时,如果能检索到所有的对象实例,则返回请求的每个值;另一方面,如果有一个值不可或不能提供,则返回该实例的下一个值。第4章 简单网络管理协议4.3.2 4.3.2 检索未知对象检索未知对象GetNext命令检索变量名指示的下一个对象实
31、例,但是并不要 求 变 量 名 是 对象标识符或者是实例 标识符。例如u d p I n D a t a g r a m s 是 简 单 对 象,它 的 实 例 标 识 符 是udpInDatagrams.0,而标识符udpInDatagrams.2并不表示任何对象。如果我们发出一个命令:GetNextRequest(udpInDatagrams.2)则得到的响应是:GetResponse(udpNoPorts.0=1)这说明代理没有检查标识符udpInDatagrams.2的有效性,而是直接查找下一个有效的标识符,得到udpInDatagrams.0后返回了它的下一个对象实例。第4章 简单网
32、络管理协议例例4.44.4 利用GetNext的检索未知对象的特性可以发现MIB的结构。例如管理站不知道udp组有哪些变量,先试着发出命令:GetNextRequest(udp)得到的响应是:GetResponse(udpInDatagrams.0=100)这样管理站知道了udp组的第一个对象,还可以继续这样找到其他管理对象。第4章 简单网络管理协议4.3.3 4.3.3 检索表对象检索表对象 GetNext可用于有效地搜索表对象。例例4.54.5 考虑图4.7所示的例子,如果我们发出下面的命令,检索ifNumber的值:GetRequest(1.3.6.1.2.1.2.1.0)GetResp
33、onse(2)第4章 简单网络管理协议图4.7 检索表对象例 第4章 简单网络管理协议我们知道有两个接口。如果想知道每个接口的数据速率,则可以用下面的命令检索if表的5个元素:GetRequest(1.3.6.1.2.1.2.2.1.5.1)最后的1是索引项ifIndex的值。得到的响应是:GetResponse(100000000)说明第一个接口的数据速率是10 Mb/s。如果我们发出的命令是:GetNextRequest(1.3.6.1.2.1.2.2.1.5.1)则得到的是第二个接口的数据速率:GetResponse(56000)说明第二个接口的数据速率是56 kb/s。第4章 简单网络
34、管理协议例例4.64.6 考虑图4.8所示的表。假定管理站不知道该表的行数而想检索整个表,则可以连续使用GetNext命令:GetNextRequest(ipRouteDest,ipRouteMetric1,ipRouteNextHop)GetResponse(ipRouteDest.9.1.2.3=9.1.2.3,ipRouteMetric1.9.1.2.3=3,ipRouteNextHop.9.1.2.3=99.0.0.3)第4章 简单网络管理协议图4.8 检索表对象例 ipRouteDestIpRouteMetric1ipRouteNextHop 9.1.2.3 10.0.0.51 10
35、.0.0.99355 99.0.0.3 89.1.1.42 89.1.1.42第4章 简单网络管理协议以上是第1行的值,据此可以检索下一行:GetNextRequest(ipRouteDest.9.1.2.3,ipRouteMetric1.9.1.2.3,ipRouteNextHop.9.1.2.3)GetResponse(ipRouteDest.10.0.0.51=10.0.0.51,ipRouteMetric1.10.0.0.51=5,ipRouteNextHop.10.0.0.51=89.1.1.42)第4章 简单网络管理协议继续检索第3行和第4行:GetNextRequest(ipRo
36、uteDest.10.0.0.51,ipRouteMetric1.10.0.0.51,ipRouteNextHop.10.0.0.51)GetResponse(ipRouteDest.10.0.0.99=10.0.0.99,ipRouteMetric1.10.0.0.99=5,ipRouteNextHop.10.0.0.99=89.1.1.42)GetNextRequest(ipRouteDest.10.0.0.99,ipRouteMetric1.10.0.0.99,ipRouteNextHop.10.0.0.99)GetResponse(ipRouteDest.9.1.2.3=3,ipRou
37、teMetric1.9.1.2.3=99.0.0.3,ipNetToMediaIfIndex.1.3=1)第4章 简单网络管理协议4.3.4 4.3.4 表的更新和删除表的更新和删除Set命令用于设置或更新变量的值。它的PDU格式与Get是相同的,但是在变量绑定表中必须包含要设置的变量名和变量值。对于Set 命令的应答也是GetResponse,同样是原子性的。如果所有的变量都可以设置,则更新所有变量的值,并在应答的GetResponse中确认变量的新值;如果至少有一个变量的值不能设置,则所有变量的值都保持不变,并在错误状态中指明出错的原因。Set出错的原因与Get是类似的(tooBig、no
38、SuchName和genError),然而若有一个变量的名字和要设置的值在类型、长度或实际值方面不匹配,则返回错误条件badValue。Set应答的逻辑也表示在图4.5中。第4章 简单网络管理协议例例4.74.7 再一次考虑图4.8所示的表。如果我们想改变列对象ipRouteMetric1的第一个值,则可以发出命令:SetRequest(ipRouteMetric1.9.1.2.3=9)得到的应答是:GetResponse(ipRouteMetric1.9.1.2.3=9)其效果是该对象的值由3变成了9。第4章 简单网络管理协议例例4.84.8 假定我们想增加一行,则可以发出下面的命令:Set
39、Request(ipRouteDest.11.3.3.12=11.3.3.12,ipRouteMetric11.3.3.12=9,ipRouteNextHop.11.3.3.12=91.0.0.5)第4章 简单网络管理协议对这个命令如何执行,RFC 1212有3种解释:(1)代 理 可 以 拒 绝 这 个 命 令,因 为 对 象 标 识 符ipRouteDest.11.3.3.12不存在,所以返回错误状态noSuchName。(2)代理可以接受这个命令,并企图生成一个新的对象实例,但是发现被赋予的值不适当,因而返回错误状态badValue。(3)代理可以接受这个命令,生成一个新的行,使表增加到
40、4行,并返回下面的应答:GetResponse(ipRouteDest.11.3.3.12=11.3.3.12,ipRouteMetric11.3.3.12=9,ipRouteNextHop.11.3.3.12=91.0.0.5)在具体实现中,以上3种情况都是可能的。第4章 简单网络管理协议例例4.94.9 假定原来是3行的表,现在发出下面的命令:SetRequest(ipRouteDest.11.3.3.12=11.3.3.12)对于这个命令也有两种处理方法:(1)由于变量ipRouteDest是索引项,因而代理可以增加一个表行,对于没有指定值的变量赋予默认值。(2)代理拒绝这个操作。如果要
41、生成新行,必须提供一行中所有变量的值。采用哪种方法也是由具体实现决定的。第4章 简单网络管理协议例例4.104.10 如果要删除表中的行,则可以把一个对象的值置为invalid:SetRequest(ipRouteType.7.3.5.3=invalid)得到的响应说明表行确已删除:GetResponse(ipRouteType.7.3.5.3=invalid)这种删除是物理的还是逻辑的,又是由具体实现决定的。在MIB-2中,只有两种表是可删除的:ipRouteTable包含ipRouteType,可取值invalid;ipNetToMediaTable包含ipNetToMediaType,可
42、取值invalid。第4章 简单网络管理协议SNMP没有提供向管理对象发出动作命令的机制,但是可以利用Set命令对一个专用对象设置值,让这个专用对象的不同值代表不同的命令。例如建立一个reBoot对象,可取值0或1,分别使代理系统启动和复位。错误状态readOnly没有在任何应答报文中出现。实际上,这个错误条件在SNMPv1中是没有用的,在以后的SNMP版本中用另外一个错误条件notWritable代替了它。第4章 简单网络管理协议4.3.5 4.3.5 陷入操作陷入操作陷入是由代理向管理站发出的异步事件报告,不需要应答报文。SNMPv1规定了6种陷入条件,另外还有由设备制造商定义的陷入。co
43、ldStart:发送实体重新初始化,代理的配置已改变,通常是由系统失效引起的。warmStart:发送实体重新初始化,但代理的配置没有改变,这是正常的重启动过程。linkDown:链路失效通知,变量绑定表的第一项指明对应接口表的索引变量及其值。第4章 简单网络管理协议 linkUp:链路启动通知,变量绑定表的第一项指明对应接口表的索引变量及其值。authenticationFailure:发送实体收到一个没有通过认证的报文。egpNeighborLoss:相邻的外部路由器失效或关机。enterpriseSpecific:由设备制造商定义的陷入条件,在特殊陷入(specific-trap)字段指
44、明具体的陷入类型。第4章 简单网络管理协议4.3.6 SNMP功能组功能组 SNMP组包含的信息关系到SNMP协议的实现和操作。这一组中共有30个对象,参见图4.9。在只支持SNMP站管理功能或只支持SNMP代理功能的实现中,有些对象是没有值的。除过最后一个对象,这一组的其他对象都是只读的计数器。对象snmpEnableAuthenTrap可以由管理站设置,它指示是否允许代理产生“认证失效”陷入,这种设置优先于代理自己的配置,这样就提供了一种可以排除所有认证失效陷入的手段。第4章 简单网络管理协议图4.9 MIB-2 SNMP功能组 snmp(mib-2 11)snmpInPkts(1)传输层
45、实体提交给SNMP实体的报文数snmpOutPkts(2)SNMP实体交给传输服务的报文数snmpInBadVersions(3)接收的含有版本错误的报文数snmpInBadCommunityNames(4)接收的含有团体名错误的报文数snmpInBadCommunityUses(5)接收的含有团体操作错误的报文数snmpInASNParseErrs(6)接收的含有ASN译码错误的报文数snmp(7)未使用snmpInTooBigs(8)接收的含有TooBig错误的报文数snmpInNoSuchNames(9)接收的含有NoSuchName错误的报文数snmpEnableAuthenTraps
46、(30)认证失效陷入工作(1),认证失效陷入不工作(2)snmpInBadValues(10)接收的含有BadValue错误的报文数snmpInReadOnlys(11)接收的含有ReadOnly错误的报文数snmpInGenErrs(12)接收的含有GenErr错误的报文数snmpInTotalReqVars(13)成功检索的MIB对象数snmpInTotalSetVars(14)成功设置的MIB对象数snmpInGetRequests(15)接收和处理的Get请求数snmpInGetNexts(16)接收和处理的GetNext请求数snmpInSetRequests(17)接收和处理的Se
47、t请求数snmpInGetResponses(18)接收和处理的GetResponse报文数snmpInTraps(19)接收和处理的Trap报文数snmpOutTooBigs(20)产生的含有TooBig错误的报文数snmpOutNoSuchNames(21)产生的含有NoSuchName错误的报文数snmpOutBadValues(22)产生的含有BadValue错误的报文数snmpOutGenErrs(24)产生的含有GenERR错误的报文数snmpOutGetRequests(25)产生的Get请求数snmpOutGetNexts(26)产生的GetNext请求数snmpOutSetR
48、equests(27)产生的Set请求数snmpOutGetResponses(28)产生的GetResponse报文数snmpOutTraps(29)产生的Trap报文数snmp(23)未使用第4章 简单网络管理协议4.4 实实 现现 问问 题题 4.4.1 网络管理站的功能网络管理站的功能在选择站管理产品时首先要关心它与标准的一致程度,与代理的互操作性,当然更要关心其用户界面,既要功能齐全,又要使用方便。更具体地说,我们对管理站应提出以下选择的标准:支持扩展的MIB。强有力的SNMP对管理信息库的支持必须是开放的。特别对于管理站来说,应该能够装入其他制造商定义的扩展MIB。第4章 简单网络
49、管理协议 图形用户接口。好的用户接口可以使网络管理工作更容易、更有效。通常要求管理站具有图形用户接口,而且对网络管理的不同部分有不同的窗口。例如能够显示网络拓扑结构,显示设备的地理位置和状态信息,可以计算并显示通信统计数据图表,具有各种辅助计算工具等。自动发现机制。要求管理站能够自动发现代理系统,能够自动建立图标并绘制出连接图形。可编程的事件。管理站应支持用户定义事件以及出现这些事件时执行的动作。例如路由器失效时应闪动图标或改变图标的颜色,显示错误状态信息,向管理员发送电子邮件并启动故障检测程序等。第4章 简单网络管理协议 高级网络控制功能。例如配置管理站使其可以自动关闭有问题的集线器,自动地
50、分离出活动过度频繁的网段等。这样的功能要使用Set操作。由于SNMP欠缺安全性,很多产品不支持Set操作,因而这种要求很难满足。面向对象的管理模型。SNMP其实不是面向对象的系统,但很多产品是面向对象的系统,也能支持SNMP。用户定义的图标。此标准可以方便用户为自己的网络设备定义有表现力的图标。第4章 简单网络管理协议4.4.2 轮询频率轮询频率SNMP定义的陷入类型是很少的,虽然可以补充设备专用的陷入类型,但专用的陷入往往不能被其他制造商的管理站所理解,因此管理站主要靠轮询收集信息。轮询的频率对管理的性能影响很大。如果管理站在启动时轮询所有代理,以后只是等待代理发来的陷入,则就很难掌握网络的