1 / 218

计算机网络管理

计算机网络管理. -- 第 4 章 简单网络管理协议. 电子信息工程学院计算机科学与技术系. 第 4 章 简单网络管理协议. 4.1 SNMP的演变 4.2 SNMPv1协议数据单元 4.3 SNMPv1的操作 4.4 实现问题 4.5 SNMPv2管理信息结构 4. 6 SNMPv2协议数据单元 4.6 SNMPv3 习题 作业. 这一章主要学习:. 了解SNMP协议的演变过程:(1990--1999)共三个版本 SNMP协议三个版本的主要内容: SNMP的协议数据单元 SNMP协议支持的操作 SNMP的安全机制.

feng
Download Presentation

计算机网络管理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 计算机网络管理 --第4章 简单网络管理协议 电子信息工程学院计算机科学与技术系

  2. 第4章 简单网络管理协议 4.1 SNMP的演变 4.2 SNMPv1协议数据单元 4.3 SNMPv1的操作 4.4 实现问题 4.5 SNMPv2管理信息结构 4.6 SNMPv2协议数据单元 4.6 SNMPv3 习题 作业

  3. 这一章主要学习: • 了解SNMP协议的演变过程:(1990--1999)共三个版本 • SNMP协议三个版本的主要内容: • SNMP的协议数据单元 • SNMP协议支持的操作 • SNMP的安全机制

  4. 4.1 SNMP的演变 • 4.1.1 SNMPv1 • TCP/IP网络管理最初使用的是1987年11月提出的简单网关 监控协议(Simple Gateway Monitoring Protocol,SGMP), • 简单网络管理协议第一版(Simple Network Management Protocol,SNMPv1)是在SGMP基础上改进成的。陆续公布在1990年和1991年的几个RFC(Request For Comments)文档中,即: ⑴ RFC 1155(SMI); ⑵ RFC 1157(SNMP); ⑶ RFC 1212(MIB定义); ⑷ RFC 1213 (MIB-2规范)。

  5. SNMPV1的优点: ⑴ 最主要的的优点是:简单,容易实现; ⑵ 基于人们熟悉的SGMP(Simple Gateway Monitoring Protocol)协议,而对SGMP的使用已相当熟悉,已具有相 当多的操作经验。 • 网络管理的两个标准 ⑴ IETF网络管理标准:SNMP (IETF:Internet Engineering Task Force,是全球互联网最具权威的技术标准化组织,主要任务是负责互联网相关技术规范的研发和制定) ⑵ OSI网络管理标准:CMIP/CMIS CMIP: Common Management Information Protocol;CMIS: Common Management Information Service

  6. 4.1.2 SNMPv2 • SNMPv1的不足: • 没有实质性的安全设施,无数据源认证功能,不能防止偷听。 • 面对这样不可靠的管理环境,许多制造商不得不废除了set命令,以避免网络配置被入侵者恶意窜改。 •  安全SNMP(S-SNMP)协议: • 为了修补SNMPv1的安全缺陷,1992年7月出现了一个新标准:安全SNMP(S-SNMP)(S即safety); • S-SNMP增强了安全方面的功能: • 用报文摘要算法MD5保证数据完整性和进行数据源认证; • 用时间戳对报文排序; • 用DES算法提供数据加密功能

  7. 但是S-SNMP没有改进SNMP在功能和效率方面的其他缺点。但是S-SNMP没有改进SNMP在功能和效率方面的其他缺点。 • SMP(Simple Management Protocol)协议: •   SMP协议由8个文件组成,它对SNMP主要在以下4个方面进行了扩充与扩展: • 适用范围: ⑴SMP可以管理任意资源,不仅包括网络资源,还可用于应用管理、系统管理;⑵ 可实现管理站之间的通信;⑶ 可以描述一致性要求和实现能力;⑷ 管理信息的扩展性得到了增强。 • 复杂程度、速度和效率: ⑴ 保持了SNMP的简单性,更容易实现;⑵ 提供了数据块传送能力,因此速度和效率更高。

  8. 安全设施: 结合了S-SNMP提供的安全功能。 • 兼容性: 既可以运行在TCP/IP网络上,也适合OSI系统和运行其他通信协议的网络。 •  Internet研究人员之间达成了共识: 在对S-SNMP和SMP讨论的过程中,Internet研究人员之间达成了如下共识: • 必须扩展SNMPv1的功能并增强其安全设施,使用户和制 造商尽快地从原来的SNMPv1过渡到第二代SNMP。 • 放弃S-SNMP,以SMP为基础开发SNMP第2版,即SNMPv2。

  9. IETF(internet工程任务组)组织了两个工作组: • 一个组负责协议功能和管理信息库的扩展; • 一组负责SNMP的安全方面; • 于1992年10月正式开始工作,功能组的工作在1992年12月完成,安全组在1993年1月完成。 • 1993年5月它们发布了12个RFC(1441~1452)文件作为 SNMPv2草案标准。

  10. 一种意见认为SNMPv2安全机制实现起来太复杂,对代理的配置很困难,限制了网络发现能力,失去了SNMP的简单性。一种意见认为SNMPv2安全机制实现起来太复杂,对代理的配置很困难,限制了网络发现能力,失去了SNMP的简单性。 • 又经过几年的实验和论证,后来人们决定丢掉安全功能,把增加的其他功能作为新标准颁布,并保留SNMPv1的报文封装格式,称其为基于团体的SNMP(Community-based SNMP),简称SNMPv2C。 • 新的RFC(1901~1908)文档于1996年1月发布。表4.1列出了有关SNMPv2和SNMPv2C的RFC文件。

  11. 表4.1 有关SNMPv2和SNMPv2C的RFC文件

  12. 4.1.3 SNMPv3 • SNMPv2没有达到“商业级别”的安全要求: • 提供数据源标识、报文完整性认证、防止重放、报文机密性、授权和访问控制、远程配置和高层管理能力等; • SNMPv3工作组一直在从事新标准的研制工作。 • SNMPv3工作组的目标是:尽量使用已有的文档,使新标准: • 能够适应不同管理需求的各种操作环境; • 便于已有的系统向SNMPv3过渡; • 可以方便地建立和维护管理系统。

  13. SNMPv3的建议标准(Proposed Standard): SNMPv3工作组于1998年1月发表了5个文件,作为建议标准(Proposed Standard): • RFC 2271——描述SNMP管理框架的体系结构; • RFC 2272——简单网络管理协议的报文处理和调度; • RFC 2273——SNMPv3应用程序; • RFC 2274——SNMPv3基于用户的安全模块; • RFC 2275——SNMPv3基于视图的访问控制模块。 • SNMPv3的建议标准在功能上主要增强了: • SNMP的安全性 • 高层管理的功能。

  14. SNMPv3的新标准: • 在上述5个文件的基础上进行了修订,在1999年4月公布了7个文件,作为SNMPv3的新标准(DRAFT STANDARD): • RFC 2570—Internet标准网络管理框架第3版引论; •  RFC 2571—SNMP管理框架的体系结构描述; •  RFC 2572—简单网络管理协议的报文处理和调度系统; •  RFC 2573—SNMPv3应用程序; • RFC 2574—SNMPv3基于用户的安全模块(USM) ; • RFC 2575—SNMPv3基于视图的访问控制模块(VACM); • RFC 2576—SNMP第1、2、3版的共存问题。

  15. SNMPV3对SNMPv2的管理信息结构(SMI)的有关文件进行了修订,作为正式标准公布: SNMPV3对SNMPv2的管理信息结构(SMI)的有关文件进行了修订,作为正式标准公布: •  RFC 2578——管理信息结构第2版(SMIv2) ; •  RFC 2579——对于SMIv2的文本约定; •  RFC 2580——对于SMIv2的一致性说明。 • SNMPv3的特点: • 在SNMPv2C的基础上增加了安全功能和高层管理功能; • 和以前的标准(SNMPv1和SNMPv2)完全兼容; • 结构上便于以后新功能模块的扩充。

  16. 4.2 SNMPv1协议数据单元 • 主要讨论SNMP的工作原理: • SNMP对管理对象的操作 • SNMP协议数据单元的格式 • SNMP报文的发送、接收和应答

  17. 4.2 SNMPv1协议数据单元 • 4.2.1 SNMPv1支持的操作 • SNMPv1是一种简单的“请求/响应”协议, • 使用“管理者-代理”模式,仅支持对被管对象值的检索和修改等简单操作。 • 网络管理系统发出一个请求,管理代理则返回一个响应。该过程通过SNMP操作实现。 • SNMPv1实体可以对MIB-2中的对象执行下列操作: • Get:管理站检索管理信息库中标量对象的值; • Set:管理站设置管理信息库中标量对象的值; • Trap:代理向管理站报告管理对象的状态变化。

  18. SNMPv1的不足: • SNMPv1不支持管理站改变管理信息库MIB的结构,即不能增加和删除管理信息库中的管理对象实例,例如不能增加或删除表中的一行。 • 管理站不能向管理对象发出执行一个动作的命令。 • 管理站只能逐个访问管理信息库中的叶结点,不能一次性访问一个子树,例如不能访问整个表的内容。MIB-2中的子树结点都是不可访问的。 • 这些限制确实简化了SNMP的实现,但是也限制了网络管理的功能。

  19. 4.2.2 SNMP PDU格式 • SNMP报文的组成: 在SNMP管理中,管理站和代理之间交换的管理信息构成了SNMP报文。报文由3部分组成:见下图 • 版本号:是指SNMP的版本 • 团体名:用于身份认证 • 协议数据单元(PDU):管理站与管理代理之间交换的数据 • SNMP共有5种管理操作: • GetRequest • GetNextRequest • SetRequest • GetResponse • Trap

  20. 图4.1 SNMP 报文格式

  21. 管理站发出的3种请求报文:其格式是一样的 • GetRequestPDU • GetNextRequestPDU • SetRequestPDU • 代理的应答报文格式只有一种: • GetResponsePDU • 代理用于事件报告的报文: • TrapPDU

  22. GetRequest, GetNextRequest, SetRequest, GetResponse PDU格式是相同的,共有5个字段: • PDU类型 • 请求标识(request-id) • 错误状态(error-status) • 错误索引(error-index) • 变量绑定表(variable-binding)

  23. PDU类型: 每种类型用一个整数表示 • GetRequestPDU: 0 • GetNextRequestPDU:1 • GetResponsePDU: 2 • SetRequestPDU: 3 • TrapPDU五种类型: 4 • 请求标识(request-id):赋予每个请求报文惟一的整数。 • 用于区分不同的请求。返回的应答报文,要根据其中的请求标识与请求报文配对; • 检测由不可靠的传输服务产生的重复报文。

  24. 错误状态(error-status): • 代理在处理管理站的请求时,可能出现的各种错误,共有6种错误状态

  25. 错误索引(error-index): • 指向出错的变量或出错变量的序号。 • 变量绑定表(variable-binding): • 变量名和对应值的表,说明要检索或设置的所有变量及其值。在检索请求报文中,变量的值应为0。 • 变量绑定表就是把多个变量的值装入一个PDU ,并通过一个应答得到所有的值,使得一次可以检索多个被管对象,这样可以大大减少网络管理的通信负担。

  26. Trap报文的格式: • 制造商ID(enterprise):表示设备制造商的标识,与MIB-2的系统组对象sysObjectID的值相同。 • 代理地址(agent-addr):产生陷入的代理的IP地址; • 一般陷入(generic-trap):SNMP定义的陷入类型; • 特殊陷入(specific-trap):与设备有关的特殊陷入代码。 • 时间戳(time-stamp): 代理发出陷入的时间,与MIB-2中的系统组对象sysUpTime的值相同

  27. 一般陷入的类型

  28. 管理站发出的3种请求报文:GetRequest、GetNextRequest管理站发出的3种请求报文:GetRequest、GetNextRequest 和SetRequest • 代理的应答报文格式只有一种:GetResponsePDU

  29. 4.2.3 报文应答序列 • 1、报文按管理站、管理代理划分 • 管理站报文 • GetRequest、GetNextRequest和SetRequest的报文由管理站发出,代理以GetResponse响应。 • 管理站可连续发出多个请求报文,然后等待代理返回应答报文。如果在规定的时间内收到应答,则按照请求标识进行配对,亦即应答报文必须与请求报文有相同的请求标识。 • 管理代理报文 • GetResponse响应报文 • Trap报文由代理发给管理站,不需要应答。

  30. 2、 SNMP报文发送和应答序列

  31. GetNext Request Get Request Set Request Trap Request Manager Manager Manager Manager Agent Agent Agent Agent Get Response Get Response Get Response SNMP Services Get GetNext Set Trap

  32. 4.2.4 报文的发送和接收 • 生成和发送SNMP报文 一个SNMP协议实体(PE)发送报文时执行下面的过程 • 首先按照ASN.1的格式构造PDU; • 将PDU、源地址、端口和目的地址、端口以及共同体名 称一起交给认证进程; • 认证进程检查源和目标之间是否可以通信; • 通过检查则把有关信息(版本号、团体名、PDU)组装 成报文; 3. 最后经过BER编码,将报文交传输实体发送出去。 见下图

  33. 生成和发送SNMP报文

  34. 接收和处理SNMP报文当一个SNMP协议实体(PE)接收到报文时执行下面的过程:接收和处理SNMP报文当一个SNMP协议实体(PE)接收到报文时执行下面的过程: • 首先按照BER编码恢复ASN.1报文; • 对解码后的报文进行基本的语法检查,丢弃非法报文; • 检查版本号,丢弃版本号不匹配的报文; • 将PDU、发送方地址和端口、接收方地址和端口发送到认证服务: • 如果认证失败,生成一个陷入报文,向发送站报告通信 异常情况 • 如果认证成功,认证服务返回PDU • 对PDU进行基本语法检查,丢弃非法的PDU,并对PDU进行相应处理 。

  35. 接收和处理SNMP报文

  36. 4.3 SNMPv1的操作 • 4.3.1 检索简单对象 • 检索简单的标量对象值可以用Get操作。 • 如果变量绑定表中包含多个变量,则一次还可以检索多个标量对象的值。接收GetRequest的SNMP实体以请求标识相同的GetResponse响应。

  37. GetResponse操作具有原子性: • 事务:A想要从自己的帐户中转1000块钱到B的帐户里。从A开始转帐,到转帐结束的这一个过程,称之为一个事务。在这个事务里,要做如下操作: • . 从A的帐户中减去1000块钱。 • . 在B的帐户里加上1000块钱。 • 原子性操作:要么一起成功(A帐户成功减少1000,同时B帐户成功增加1000),要么一起失败(A帐户回到原来状态,B帐户也回到原来状态)的操作叫原子性操作。 • GetResponse操作具有原子性:如果所有请求的对象值可以得到,则给予应答;反之,只要有一个对象的值得不到,则不予应答,而可能返回3种错误状态之一:

  38. GetResponse操作失败时,响应实体返回PDU中的错误状态GetResponse操作失败时,响应实体返回PDU中的错误状态 • PDU中错误状态字段置为:noSuchName • 变量中若: ⑴ 变量表中若一个对象无法与MIB中任何对象标识符匹配⑵ 要检索的对象是一个数据块(子树或表),没有对象实例生成。 • 响应实体返回的应答PDU中:⑴ 错误状态字段置为:noSuchName;⑵ 错误索引字段设置为一个数,指明有问题的变量。 • PDU中错误状态字段置为:tooBig • 响应实体可以提供所有要检索的值,但是变量太多,一个响应PDU装不下。 • 响应实体返回一个应答PDU,错误状态字段置为:tooBig。

  39. PDU中错误状态字段置为:genError • 由于其他原因(例如代理不支持)响应实体至少不能提供一个对象的值; • 则返回的PDU中: ⑴ 错误状态字段置为:genError, ⑵ 错误索引字段置一个数,指明有问题的变量。 • 变量绑定表中不返回任何值。 

  40. 使用GetRequest检索各对象实例的值  例4.1 图4.5所示的例子,是UDP组的一部分。 用检索命令:GetRequest检索各对象实例的值: 解答: GetRequest( udpInDatagrams.0,udpNoPorts.0, • udpInErrors.0,udpOutDatagrams.0) • 应该得到下面的响应: • GetResponse(udpInDatagrams.0=100,udpNoPorts.0=1, • udpInErrors.0=2,udpOutDatagrams.0=200)

  41. 100 1 2 200 图4.5 检索简单对象例

  42. 使用GetNextRequest检索各对象实例的值 • GetNextRequest的作用与GetRequest基本相同,PDU格式也相同,惟一的差别是: • GetRequest的检索变量名所指的是对象实例; • GetNextRequest的检索变量名所指的是“下一个”对 象实例。 比如: • GetRequest( udpInDatagrams.0):检索udpInDatagrams的值 • GetResponse(udpInDatagrams.0=100) • GetNextRequest( udpInDatagrams.0):检索udpNoPorts的值 • GetResponse(udpNoPorts.0=1)

  43. 例4.2 用GetNext命令检索图4.5中的4个值,直接指明对象标识符: • 解答: • GetNextRequest( udpInDatagrams,udpNoPorts, udpInErrors,udpOutDatagrams) • 得到的响应与上例是相同的: GetResponse( udpInDatagrams.0=100,udpNoPorts.0=1, • udpInErrors.0=2,udpOutDatagrams.0=200) • 可见标量对象实例标识符(例如udpInDatagrams.0)总是紧跟在对象标识符(例如udpInDatagrams)后面的。

  44. 例4.3 如果代理不支持管理站对udpNoPorts的访问, 则响应会不同。发出同样的命令: • GetNextRequest(udpInDatagrams,udpNoPorts, • udpInErrors,udpOutDatagrams) • 得到的响应是: • GetResponse( udpInDatagrams.0=100, udpInErrors.0=2, • udpInErrors.0=2,udpOutDatagrams.0=200) • 因为变量名udpNoPorts和udpInErrors的下一个对象实例都是udpInErrors.0=2。 • 当代理收到一个Get请求时: • 如果能检索到所有的对象实例,则返回请求的每个值; • 如果有一个值不能提供,则返回该实例的下一个值。

  45. 4.3.2 检索未知对象 • 例4.4对于一个未知对象,如何得到它的MIB结构? • 用GetNext的检索未知对象的特性可以发现其MIB结构。 • 以MIB-2的udp功能组为例进行说明。 ⑴ GetNextRequest(udp) • 得到的响应是: • GetResponse(udpInDatagrams.0=100) • 这样管理站知道了udp组的第一个对象。 • 思考:如何找到其他管理对象? ⑵ GetNextRequest(udpInDatagrams.0) • 得到的响应是: GetResponse(udpNoPorts.0=1) • 思考:用 GetNextRequest(udpInDatagrams)可以不可以?

  46. 4.3.3 检索表对象 • 例4.5已知一个设备,如何知道其的接口数与每个接口的速率?以图4.6为例进行说明 • GetNext可用于有效地检索表对象。 • ⑴ 用下面的命令,检索ifNumber的值: • GetRequest( 1.3.6.1.2.1.2.1.0) • GetResponse(2) • 我们可知道:设备有两个接口。 • 1.3.6.1.2.1.2.1.0 internet mgmt mib-2 interfaces

  47. 图4.6 检索表对象例

  48. ⑵ 检索每个接口的数据速率: • 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(560000) • 说明第二个接口的数据速率是56 kb/s。 • 思考:有否其它的命令也可得到第二接口的速率?

  49. 例4.5 如何检索一个表?假定管理站不知道该表的行数而想检索整个表,以图4.7所示的表为例说明。 • 检索一个表可以连续使用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)

More Related