SNMP协议

介绍SNMP知识:SNMP协议、SNMP-trap、SNMP服务、SNMP端口、snmp.exe

« 简单SNMP管理程序的VC++代码实例实现Solaris9下安装net-snmp&MRTG »

SNMP详细资料



1. 网络管理基本概念
  随着计算机和通信技术的飞速发展,网络管理技术已成为重要的前言技术。 目前还没有对网络管理的精确定义。例如,对公用交换网,网络管理通常指实时网络监控,以便在不利的条件下(如过载、故障)使网络的性能仍能达到最佳。又如,狭义的网络管理仅仅指网络的通信量管理,而广义的网络管理指网络的系统管理。网络管理功能可概括为OAM﹠P,即网络的运行(Operation)、处理(Administration)、维护(Maintenance)、服务提供(Provisioning)等所需要的各种活动。有时也考虑前三种,即把网络管理功能归结为OAM。

☆ SNMP术语和概念
ASN.1: 一个SNMP消息通过抽象语法记法1(Abstract Syntax Notation, version 1)
构造。ASN.1是一种形式语言。

BER : 将ASN.1描述表示成octet strings的基本编码规则

MIB : 管理信息库。下面是一个例子

sysUpTime OBJECT-TYPE
SYNTAX TimeTicks
ACCESS read-only
STATUS mandatory
DESCRIPTION
"距最后一次系统重启动的时间"

OID : 对象标识符是唯一的点分数字串,比如".1.3.6.1.2.1.4.3.0"

PDU : 协议数据单元是SNMP消息中的数据区。

SMI : 管理信息结构是一套描述SNMP如何访问信息的标准,它用ASN.1定义了MIB。
SMI要求每个数据项有name、syntax和encoding三部分。名字就是OID。语法
给出了数据类型,比如"integer"、"string of octets"等等。编码则指明为
了进行平台无关网络转输如何进行数据的序列化(RPC/XDR中存在类似概念)。


网络管理通常用到以下术语:

  网络元素(network element)
  网络中具体的通信设备或逻辑实体,又称网元。

  对象(object)
  通信和信息处理范畴里可标识的切拥有一定信息特性的资源。但应注意,这里所用的“对象”与面向对象系统中所定义的对象并不完全一样。

  被管理对象(managed object)
  被管理对象指可使用管理协议进行管理和控制的网络资源的抽象表示。例如,一个层的实体或一个连接。

  管理信息库MIB
  MIB是网络管理系统中的重要构件,它有一个系统内的许多被管对象及其属性组成。MIB这个概念实际上就是一个虚拟数据库。这个数据库提供有关被管理网络元素的信息,而这些信息由管理进程和各个代理进程共享。MIB由管理进程和各个代理进程共同使用。

  综合网络管理INM
  用统一的方法在一个异构网络中管理多厂商生产的计算机硬件和软件资源。这也称为一体化网络管理。

  OSI很早就在OSI的总体标准中提出了网络管理标准的框架,即ISO 7498-4。ITU-T在网络管理方面紧密地和ISO合作,制订了与ISO 7498-4相对应的X.700系列建议书。

  ISO 和ITU-T制订的两个重要标准是:
  (1)ISO 9595 ITU-T X.710 公共管理信息服务定义CMIS
  (2)ISO 9596 ITU-T X.711 公共管理信息协议规格说明CMIP

2. 简单网络管理协议SNMP概述  
2.1 SNMP的发展
  简单网络管理协议(SNMP)是目前TCP/IP网络中应用最为广泛的网络管理协议。1990年5月,RFC 1157定义了SNMP(simple network management protocol)的第一个版本SNMPv1。RFC 1157和另一个关于管理信息的文件RFC 1155一起,提供了一种监控和管理计算机网络的系统方法。因此,SNMP得到了广泛应用,并成为网络管理的事实上的标准。

  snmp在90年代初得到了迅猛发展,同时也暴露出了明显的不足,如,难以实现大量的数据传输,缺少身份验证(Authentication)和加密(Privacy)机制。因此,1993年发布了SNMPv2,具有以下特点:

  支持分布式网络管理
  扩展了数据类型
  可以实现大量数据的同时传输,提高了效率和性能
  丰富了故障处理能力
  增加了集合处理功能
  加强了数据定义语言

  但是,SNMPv2并没有完全实现预期的目标,尤其是安全性能没有得到提高,如:身份验证(如用户初始接入时的身份验证、信息完整性的分析、重复操作的预防)、加密、授权和访问控制、适当的远程安全配置和管理能力等都没有实现。1996年发布的SNMPv2c是 SNMPv2的修改版本,功能增强了,但是安全性能仍没有得到改善,继续使用SNMPv1的基于明文密钥的身份验证方式。IETF SNMPv3工作组于1998年元月提出了互联网建议RFC 2271-2275,正式形成SNMPv3。这一系列文件定义了包含SNMPv1、SNMPv2所有功能在内的体系框架和包含验证服务和加密服务在内的全新的安全机制,同时还规定了一套专门的网络安全和访问控制规则。可以说,SNMPv3是在SNMPv2基础之上增加了安全和管理机制。

  Internet还有一个远期的网络管理标准CMOT(Common Management information service and protocol Over TCP/IP),意思是 “在TCP/IP上的公共管理信息服务与协议”。虽然CMOT使用了OSI的网络管理标准CMIS/CMIP,但现在还未达到实用阶段。

  SNMP最重要的饿知道思想就是要尽可能简单,以便缩短研制周期。SNMP的基本功能包括监视网络性能、检测分析网络差错和配置网络设备等。在网络正常工作时,SNMP可实现统计、配置和测试等功能。当网络出故障时,可实现各种差错检测和恢复功能。虽然SNMP是在TCP/IP基础上的网络管理协议,但也可扩展到其他类型的网络设备上。

2.2 SNMP的配置
  整个系统必须有一个管理站(management station),它实际上是网控中心。在管理站沙锅内运行管理进程。在每个被管对象中一定要有代理进程。管理进程和代理继承利用SNMP报文进行通信,而SNMP报文又使用UDP来传送。图中有两个主机和一个路由器。这些协议栈中带有阴影的部分是原俩这些主机和路由器所具有的,而没有阴影的部分是为实现网络管理而增加的。

  有时网络管理协议无法控制某些网络元素,例如该网络元素使用的是另一种网络管理协议。这是可使用委托代理(proxy agent)。委托代理能提供如协议转换和过滤操作的汇集功能。然后委托代理来对管理对象进行管理。
  SNMP的网络管理由三部分组成,即管理信息库MIB、管理信息结构SMI以及SNMP本身。下面简要介绍。

3. 管理信息库MIB
  管理信息库MIB指明了网络元素所维持的变量(即能够被管理进程查询和设置的信息)。MIB给出了一个网络中所有可能的被管理对象的集合的数据结构。SNMP的管理信息库采用和域名系统DNS相似的树型结构,它的根在最上面,根没有名字。图3画的是管理信息库的一部分,它又称为对象命名(object naming tree)。

  对象命名树的顶级对象有三个,即ISO、ITU-T和这两个组织的联合体。在ISO的下面有4个结点,其中的饿一个(标号3)是被标识的组织。在其下面有一个美国国防部(Department of Defense)的子树(标号是6),再下面就是Internet(标号是1)。在只讨论Internet中的对象时,可只画出Internet以下的子树(图中带阴影的虚线方框),并在Internet结点旁边标注上{1.3.6.1}即可。

  在Internet结点下面的第二个结点是mgmt(管理),标号是2。再下面是管理信息库,原先的结点名是mib。1991年定义了新的版本MIB-II,故结点名现改为mib-2,其标识为{1.3.6.1.2.1},或{Internet(1) .2.1}。这种标识为对象标识符。

  最初的结点mib将其所管理的信息分为8个类别,见表1。现在de mib-2所包含的信息类别已超过40个。

      表1 最初的结点mib管理的信息类别
  
    类别           标号     所包含的信息
    system         (1)     主机或路由器的操作系统
    interfaces        (2)     各种网络接口及它们的测定通信量
    address translation  (3)   地址转换(例如ARP映射)
    ip            (4)     Internet软件(IP分组统计)
    icmp          (5)     ICMP软件(已收到ICMP消息的统计)
    tcp           (6)     TCP软件(算法、参数和统计)
    udp           (7)     UDP软件(UDP通信量统计)
    egp           (8)     EGP软件(外部网关协议通信量统计)

  应当指出,MIB的定义与具体的网络管理协议无关,这对于厂商和用户都有利。厂商可以在产品(如路由器)中包含SNMP代理软件,并保证在定义新的MIB项目后该软件仍遵守标准。用户可以使用同一网络管理客户软件来管理具有不同版本的MIB的多个路由器。当然,一个没有新的MIB项目的路由器不能提供这些项目的信息。

  这里要提一下MIB中的对象{1.3.6.1.4.1},即enterprises(企业),其所属结点数已超过3000。例如IBM为{1.3.6.1.4.1.2},Cisco为{1.3.6.1.4.1.9},Novell为{1.3.6.1.4.1.23}等。世界上任何一个公司、学校只要用电子邮件发往iana-mib@isi.edu进行申请即可获得一个结点名。这样各厂家就可以定义自己的产品的被管理对象名,使它能用SNMP进行管理。

4. SNMP的5种协议数据单元
  SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。

  get-request操作:从代理进程处提取一个或多个参数值
  get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值
  set-request操作:设置代理进程的一个或多个参数值
  get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。
  trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。

  前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作今后叫做get、get-next和set操作。图4描述了SNMP的这5种报文操作。请注意,在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。

  可见一个SNMP报文共有三个部分组成,即公共SNMP首部、get/set首部trap首部、变量绑定。

  (1)公共SNMP首部

  共三个字段:
  a、版本
  写入版本字段的是版本号减1,对于SNMP(即SNMPV1)则应写入0。

  b、共同体(community)
  共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是6个字符“public”。

  c、PDU类型
  根据PDU的类型,填入0~4中的一个数字,其对应关系如表2所示意图。

        表2 PDU类型

     PDU类型       名称

     0       get-request
      1       get-next-request
      2       get-response
      3       set-request
      4       trap


  (2)get/set首部
  a、请求标识符(request ID)
  这是由管理进程设置的一个整数值。代理进程在发送get-response报文时也要返回此请求标识符。管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文。

  b、差错状态(error status)
  由代理进程回答时填入0~5中的一个数字,见表3的描述。

              表3 差错状态描述

      差错状态    名字         说明

      0       noError      一切正常
      1       tooBig      代理无法将回答装入到一个SNMP报文之中
      2       noSuchName   操作指明了一个不存在的变量
      3       badValue    一个set操作指明了一个无效值或无效语法
      4       readOnly    管理进程试图修改一个只读变量
      5       genErr      某些其他的差错

  c、差错索引(error index)
  当出现noSuchName、badValue或readOnly的差错时,由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。

  (3)trap首部
  a、企业(enterprise)
  填入trap报文的网络设备的对象标识符。此对象标识符肯定是在图3的对象命名树上的enterprise结点{1.3.6.1.4.1}下面的一棵子树上。

  b、trap类型
  此字段正式的名称是generic-trap,共分为表4中的7种。

          表4 trap类型描述

   trap类型   名字           说明

    0     coldStart         代理进行了初始化
    1     warmStart        代理进行了重新初始化
    2     linkDown         一个接口从工作状态变为故障状态
    3     linkUp          一个接口从故障状态变为工作状态
    4    authenticationFailure   从SNMP管理进程接收到具有一个无效共同体的报文
    5    egpNeighborLoss     一个EGP相邻路由器变为故障状态
    6    enterpriseSpecific     代理自定义的事件,需要用后面的“特定代码”来指明

  当使用上述类型2、3、5时,在报文后面变量部分的第一个变量应标识响应的接口。

   特定代码(specific-code)
  指明代理自定义的时间(若trap类型为6),否则为0。

  时间戳(timestamp)
  指明自代理进程初始化到trap报告的事件发生所经历的时间,单位为10ms。例如时间戳为1908表明在代理初始化后1908ms发生了该时间。

  (4)变量绑定(variable-bindings)
  指明一个或多个变量的名和对应的值。在get或get-next报文中,变量的值应忽略。

5.管理信息结构SMI
  SNMP中,数据类型并不多。这里我们就讨论这些数据类型,而不关心这些数据类型在实际中是如何编码的。

  a、INTEGER
  一个变量虽然定义为整型,但也有多种形式。有些整型变量没有范围限制,有些整型变量定义为特定的数值(例如,IP的转发标志就只有允许转发时的或者不允许转发时的这两种),有些整型变量定义一个特定的范围(例如,UDP和TCP的端口号就从0到65535)。

  b、OCTER STRING
  0或多个8 bit字节,每个字节值在0~255之间。对于这种数据类型和下一种数据类型的BER编码,字符串的字节个数要超过字符串本身的长度。这些字符串不是以NULL结尾的字符串。

  c、DisplayString
  0或多个8bit字节,但是每个字节必须是ASCII码。在MIB-II中,所有该类型的变量不能超过255个字符(0个字符是可以的)。

  d、OBJECT IDENTIFIER

  e、NULL
  代表相关的变量没有值。例如,在get或get-next操作中,变量的值就是NULL,因为这些值还有待到代理进程处去取。

  f、IpAddress
  4字节长度的OCTER STRING,以网络序表示的IP地址。每个字节代表IP地址的一个字段。

  g、PhysAddress
  OCTER STRING类型,代表物理地址(例如以太网物理地址为6个字节长度)。

  h、Counter
  非负的整数,可从0递增到232—1(4294976295)。达到最大值后归0。

  i、Gauge
  非负的整数,取值范围为从0到4294976295(或增或减)。达到最大值后锁定直到复位。例如,MIB中的tcpCurrEstab就是这种类型的变量的一个例子,它代表目前在ESTABLISHED或CLOSE_WAIT状态的TCP连接数。

  j、TimeTicks
  时间计数器,以0.01秒为单位递增,但是不同的变量可以有不同的递增幅度。所以在定义这种类型的变量的时候,必须指定递增幅度。例如,MIB中的sysUpTime变量就是这种类型的变量,代表代理进程从启动开始的时间长度,以多少个百分之一秒的数目来表示。

  k、SEQUENCE
  这一数据类型与C程序设计语言中的“structure”类似。一个SEQUENCE包括0个或多个元素,每一个元素又是另一个ASN.1数据类型。例如,MIB中的UdpEntry就是这种类型的变量。它代表在代理进程侧目前“激活”的UDP数量(“激活”表示目前被应用程序所用)。在这个变量中 包含两个元素:

  IpAddress类型中的udpLocalAddress,表示IP地址。
  INTEGER类型中的udpLocalPort,从0到65535,表示端口号。
  SEQUENDEOF,这是一个向量的定义,其所有元素具有相同的类型。如果每一个元素都具有简单的数据类型,例如是整数类型,那么我们就得到一个简单的向量(一个一维向量)。但是我们将 看到,SNMP在使用这个数据类型时,其向量中的每一个元素是一个SEQUENCE(结构)。因而可以将它看成为一个二维数组或表。

6. SNMPv2协议
  简单性是SNMP标准取得成功的主要原因。因为在大型的、多厂商产品构成的复杂网络 中,管理协议的明晰是至关重要的,但同时这又是SNMP的缺陷所在——为了使协议简单易行,SNMP简化了不少功能,如:

   没有提供成批存取机制,对大块数据进行存取效率很低;
  没有提供足够的安全机制,安全性很差;
  只在TCP/IP协议上运行,不支持别的网络协议;
  没有提供manager与manager之间通信的机制,只适合集中式管理,而不利于进行分布式管理;
  只适于监测网络设备,不适于监测网络本身。

  针对这些问题,对它的改进工作一直在进行。如1991年11月,推出了RMON(Remote Netw ork Monitoring)MIB,加强SNMP对网络本身的管理能力。它使得SNMP不仅可管理网络设备, 还能收集局域网和互联网上的数据流量等信息。1992年7月,针对SNMP缺乏安全性的弱点,又 公布了S-SNMP(Secure SNMP)草案。

  到1993年初,又推出了SNMP Version 2即SNMPv2(推出了SNMPv2以后,SNMP就被称为SNM Pv1)。SNM-Pv2包容了以前对SNMP所做的各项改进工作,并在保持了SNMP清晰性和易于实现 的特点以外,功能更强,安全性更好,具体表现为:

  提供了验证机制、加密机制、时间同步机制等,安全性大大提高,
  提供了一次取回大量数据的能力,效率大大提高;
  增加了manager和manager之间的信息交换机制,从而支持分布式管理结构。由中间( intermediate)manager来分担主manager的任务,增加了远地站点的局部自主性。
  可在多种网络协议上运行,如OSI、Appletalk和IPX等,适用多协议网络环境(但它的缺省网络协议仍是UDP)。

  根据Carnegie-Mellin大学(SNMPv2标准的制定者之一)的Steven Waldbusser测试结果 ,SNMPv2的处理能力明显强于SNMPv1,大约是SNMPv1的15倍。

  SNMPv2一共由12份协议文本组成(RFC1441-RFC1452),已被作为Internet的推荐标准予 以公布。
  可看出它支持分布式管理。一些站点可以既充当 manager又充当agent,同时扮演两个角色。作为agent,它们接受更高一级管理站的请求命令 ,这些请求命令中一部分与agent本地的数据有关,这时直接应答即可;另一部分则与远地ag ent上的数据有关。这时agent就以manager的身份向远地agent请求数据,再将应答传给更高 一级的管理站。在后一种情况下,它们起的是proxy(代理)的作用。

  下面将SNMPv2标准加以详细介绍,包括SNMPv2标准的中的安全机制,SNMPv2标准中的Pa rty实体,以及如何从通信协议操作、SMI、MIB三方面来看SNMPv2标准。

6.1 SNMPv2标准中的安全机制
  SNMPv2对SNMPv1的一个大的改进,就是增强了安全机制。对管理系统安全的威胁主要有下面几种:
  (1)信息篡改(modification)
  SNMPv2标准中,允许管理站(manager)修改agent上的一些被管理对象的值。破坏者可能会将传输中的报文加以改变,改成非法值,进行破坏。因此,协议应该能够验证收到的报文是 否在传输过程中被修改过。

  (2)冒充(masquerade)
  SNMPv2标准中虽然有访问控制能力,但这主要是从报文的发送者来判断的。那些没有访 问权的用户可能会冒充别的合法用户进行破坏活动。因此 ,协议应该能够验证报文发送者 的真实性,判断是否有人冒充。

  (3)报文流的改变(message stream modification)
  由于SNMPv2标准是基于无连接传输服务的,报文的延迟、重发以及报文流顺序的改变都是可能发生的。某些破坏者可能会故意将报文延迟、重发,或改变报文流的顺序,以达到破坏的目的。因此,协议应该能够防止报文的传输时间过长,以给破坏者留下机会。

  (4)报文内容的窃取(disclosure)
  破坏者可能会截获传输中的报文,窃取它的内容。特别在创建新的SNMPv2 Party时,必 须保证它的内容不被窃取,因为以后关于这个Party的所有操作都依赖于它。因此,协议应该 能够对报文的内容进行加密,保证它不被窃听者获取。

  针对上述安全性问题,SNMPv2中增加了验证(Authentication)机制、加密(Privacy)机 制,以及时间同步机制来保证通信的安全。

6.2 SNMPv2 Party
  SNMPv2标准中增加了一种叫做Party的实体。Party是具有网络管理功能的最小实体,它 的功能是一个SNMPv2 entity(管理实体)所能完成的全部功能的一个子集。每个manager和 agent上都分别有多个Par-ty,每个站点上的各个Party彼此是平等的关系,各自完成自己的 功能。实际的信息交换都发生在Party与Party之间(在每个发送的报文里,都要指定发送方 和接收方的Par-ty)。每个Party都有一个唯一的标识符(party identity)、一个验证算法和参数以及一个加密算法和参数。Party的引入增加了系统的灵活性和安全性,可以赋予不同的人员以不同的管理权限。SNMPv2中有三种安全性机制:验证(authentication)机制、加 密(privacy)机制和访问控制(access control)机制。这些机制都工作在Party一级,而不是 manager/agent一级。

6.3 SNMPv2协议操作
  SNMPv2标准的核心就是通信协议———它是一个请求/应答式的协议。
  这个协议提供了在manager与agent、manager与manager之间交换管理信息的直观、基本的方法。
  每条SNMPv2的报文都由一些域构成:
  如果发送方、接收方的两个Party都采用了验证(authentication)机制,它就包含与验 证有关的信息;否则它为空(取NULL)。验证的过程如下:发送方和接收方的Party都分别有一 个验证用的密钥(secret key)和一个验证用的算法。报文发送前,发送方先将密钥值填入图 中digest域,作为报文的前缀。然后根据验证算法,对报文中digest域以后(包括digest域) 的报文数据进行计算,计算出一个摘要值(digest),再用摘要值取代密钥,填入报文中的dig est域。接收方收到报文后,先将报文中的摘要值取出来,暂存在一个位置,然后用发送方的 密钥放入报文中的digest。将这两个摘要值进行比较,如果一样,就证明发送方确实是srcP arty域中所指明的那个Party,报文是合法的;如果不一样,接收方断定发送方非法。验证机 制可以防止非法用户冒充某个合法Party来进行破坏。
  authInfo域中还包含两个时间戳(time stamp),用于发送方与接收方之间的同步,以防 止报文被截获和重发。
  SNMPv2的另一大改进是可以对通信报文进行加密,以防止监听者窃取报文内容。除了privDst域外,报文的其余部分可以被加密。发送方与接收方采用同样的加密算法(如DES)。
  通信报文可以不加任何安全保护,或只进行验证,也可以二者都进行。

7. SNMPv3的体系结构RFC 2271定义的SNMPv3体系结构,体现了模块化的设计思想,可以简单地实现功能的增加和修改。其特点:
   适应性强:适用于多种操作环境,既可以管理最简单的网络,实现基本的管理功能,又能够提供强大的网络管理功能,满足复杂网络的管理需求。
  扩充性好:可以根据需要增加模块。
  安全性好:具有多种安全处理模块。

  SNMPv3主要有三个模块:信息处理和控制模块、本地处理模块和用户安全模块。  
  (1)信息处理和控制模块
  信息处理和控制模块(Message Processing And Control Model)在RFC 2272中定义,它负责信息的产生和分析,并判断信息在传输过程中是否要经过代理服务器等。在信息产生过程中,该模块接收来自调度器(Dispatcher)的PDU,然后由用户安全模块在信息头中加入安全参数。在分析接收的信息时,先由用户安全模块处理信息头中的安全参数,然后将解包后的PDU送给调度器处理。

  (2)本地处理模块
  本地处理模块(Local Processing Model)的功能主要是进行访问控制,处理打包的数据和中断。访问控制是指通过设置代理的有关信息使不同的管理站的管理进程在访问代理时具有不同的权限,它在PDU这一级完成。常用的控制策略有两种:限定管理站可以向代理发出的命令或确定管理站可以访问代理的MIB的具体部分。访问控制的策略必须预先设定。SNMPv3通过使用带有不同参数的原语使用来灵活地确定访问控制方式。

  (3)用户安全模块
  与SNMPv1和SNMPv2相比,SNMPv3增加了三个新的安全机制:身份验证,加密和访问控制。其中,本地处理模块完成访问控制功能,而用户安全模块(User Security Model)则提供身份验证和数据保密服务。身份验证是指代理(管理站)接到信息时首先必须确认信息是否来自有权的管理站(代理)并且信息在传输过程中未被改变的过程。实现这个功能要求管理站和代理必须共享同一密钥。管理站使用密钥计算验证码(它是信息的函数),然后将其加入信息中,而代理则使用同一密钥从接收的信息中提取出验证码,从而得到信息。加密的过程与身份验证类似,也需要管理站和代理共享同一密钥来实现信息的加密和解密。

  下面简要介绍身份验证和加密的数学工具。SNMPv3使用私钥(privKey)和验证密钥(authKey)来实现这两种功能。

  身份验证:RFC2104中定义了HMAC,这是一种使用安全哈希函数和密钥来产生信息验证码的有效工具,在互联网中得到了广泛的应用。SNMP使用的HMAC可以分为两种:HMAC-MD5-96和HMAC-SHA-96。前者的哈希函数是MD5,使用128位authKey作为输入。后者的哈希函数是SHA-1,使用160位authKey作为输入。

  加密:采用数据加密标准(DES)的密码组链接(CBC)码,使用128位的privKey 作为输入。

8. 公共管理信息CMIP
  CMIP协议是在OSI制订的网络管理框架中提出的网络管理协议。与其说它是一个网络管 理协议,不如说它是一个网络管理体系。这个体系包含以下组成部分:一套用于描述协议的 模型,一组用于描述被管对象的注册、标识和定义的管理信息结构,被管对象的详细说明以 及用于远程管理的原语和服务。CMIP与SNMP一样,也是由被管代理和管理者、管理协议与管 理信息库组成。在CMIP中,被管代理和管理者没有明确的指定,任何一个网络设备既可以是 被管代理,也可以是管理者。

  CMIP管理模型可以用三种模型进行描述:组织模型用于描述管理任务如何分配;功能模 型描述了各种网络管理功能和它们之间的关系;信息模型提供了描述被管对象和相关管理信 息的准则。从组织模型来说,所有CMIP的管理者和被管代理者存在于一个或多个域中,域是 网络管理的基本单元。从功能模型来说,CMIP主要实现失效管理、配置管理、性能管理、记 帐管理和安全性管理。每种管理均由一个特殊管理功能领域(SMFA,Special Management F unctional Area)负责完成。从信息模型来说,CMIP的MIB库是面向对象的数据存储结构,每 一个功能领域以对象为MIB库的存储单元。

  CMIP是一个完全独立于下层平台的应用层协议,它的五个特殊管理功能领域由多个系统 管理功能(SMF)加以支持。相对来说,CMIP是一个相当复杂和详细的网络管理协议。它的设 计宗旨与SNMP相同,但用于监视网络的协议数据报文要相对多一些。CMIP共定义了11类PDU 。在CMIP中,变量以非常复杂和高级的对象形式出现,每一个变量包含变量属性、变量行为 和通知。CMIP中的变量体现了CMIP MIB库的特征,并且这种特征表现了CMIP的管理思想,即基于事件而不是基于轮询。每个代理独立完成一定的管理工作。

CMIP的优点在于:
  它的每个变量不仅传递信息,而且还完成一定的网络管理任务。这是CMIP协议的最大 特点,在SNMP中是不可能的。这样可减少管理者的负担并减少网络负载。
  完全安全性。它拥有验证、访问控制和安全日志等一整套安全管理方法。

  但是,CMIP的缺点也同样明显:
  它是一个大而全的协议,所以使用时,其资源占用量是SNMP的数十倍。它对硬件设备的要求比人们所能提供的要高得多。

  由于它在网络代理上要运行相当数量的进程,所以大大增加了网络代理的负担。
  它的MIB库过分复杂,难于实现。迄今为止,还没有任何一个符合CMIP的网络管理系统。

9. SNMP与CMIP的比较
  
  SNMP与CMIP是网络界最主要的两种网络管理协议。在未来的网络管理中,究竟哪一种将占据优势,一直是业界争论的话题。

  总的来说,SNMP和CMIP两种协议是同大于异。两者的管理目标、基本组成部分都基本相同。在MIB库的结构方面,很多厂商将SNMP的MIB扩展成与CMIP的MIB结构相类似,而且两种协 议的定义都采用相同的抽象语法符号(ASN.1)。

  不同之处,首先,SNMP面向单项信息检索,而CMIP则面向组合项信息检索。其次,在信息获得方面,SNMP主要基于轮询方式,而CMIP主要采用报告方式。再次,在传送层支持方面,SN MP基于无连接的UDP,而CMIP倾向于有连接的数据传送。此外,两者在功能、协议规模、性能 、标准化、产品化方面还有相当多的不同点。

10.网络管理协议的前景

  在网络界,除SNMP、SNMP v2、CMIP以外,现在正兴起一些新的网络管理协议和环境。其中,以分布式计算环境(DME,Distributed Management Environment)最为著名。DME是由OS F(开放软件基金会)提出的。OSF是一个非盈利的研究和开发组织,其目标是提供一个软件解 决方案,使来自不同厂家的计算机可以协同工作于一个真正的开放系统计算环境下。其文档以RFT(Request for Technology)的形式提供。

  DME代表了一种结构。在此结构下,管理系统和网络可以很好地结合。它可以构成分布 式系统管理的基础,并保持与现有网络管理方案的结合。它独立于操作系统,并支持事实上 的和正式的网络与系统管理标准。DME的结构有许多新颖之处。以前,无论是网络管理还是 系统管理,管理员通过修改与一个资源或服务相关的数据、通过对一些服务和数据进行操作来进行管理。而在DME环境下,信息和操作都被划分为对象。DME以对象为单位对系统进行管 理。所有DME管理操作有一个一致的界面和风格:通过与对象通信。这种设计的很大好处是 模块性很强,完全是一种面向对象的管理方式,系统易于管理和开发。ISV们可以建立自己的 某些特定管理功能的对象库或被管对象库,然后将其加入到已有的管理应用程序中。这一切 由于DME面向对象的管理方式而变得简单。

  DME有两个关键概念:应用程序服务和框架(Framework)。应用程序服务提供一些最重要 的系统管理功能,而框架则提供开发系统管理应用程序所用的构造模块(building block)。这种设计提供了与现有解决方案的一致性,并可在多厂商分布式网络环境中进行互操作。D ME应用程序服务包括软件管理(Software Management)、许可权管理(License Management )、打印服务(Printing Services)和事件管理(Event Management)。它们以一组模块和A PI的形式提供,有一个一致的用户界面。DME还提供机制,使开发商可以很容易地加入新的服 务。DME框架由一组功能全面的构造模块组成,使新网管应用程序的开发变得简单。这些组成是:

  管理请求代理(MRB,Management Request Brokers) MRB是DME框架的核心组成。在 DME下,所有对对象的请求都被MRB接收。MRB负责找到这个对象在网络中的位置,然后转发请求。MRB支持现有的网络管理协议SNMP、CMIP,用它们收集网络中的设备信息。MRB还支持基 于RPC(Remote Procedure Call)的管理协议。

  对象服务器对象服务器用来管理和维护网络中的对象。DME提供两种类型的对象服 务器,一个用于短期任务(如更换口令等),另一个用于长期任务(如监视一个网络)。

  事件管理服务当网络中出现问题或发生变化时,需要通知管理应用程序。DME的事件 管理服务提供了转发、登录和过滤这类通知的功能,可以对过滤器进行编程来分析一个事件 通告的属性,并将此事件与某个特定的动作联系起来。另外,为了使此服务易于使用,DME还 提供了用于定义事件的高级模板语言。

  数据管理服务DME提供了一个管理数据库,用来存放网络被管对象的有关数据信息。此管理数据库存放在磁盘上。

  目前,DME的主要问题是缺乏支持,尚未得到进一步的实践检验。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新评论及回复

最近发表

Powered By SNMP  Windows soft Download MSN中文博客

Copyright http://net-snmp.cn All Rights Reserved.