SNMP协议管理机制及其代理进程的实现

来源 :硅谷 | 被引量 : 0次 | 上传用户:dashunyy
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]首先论述简单网络管理协议SNMP的产生、发展及其管理机制,然后提出在SNMPv3的框架结构上实现代理进程的一种方案。
  [关键词]SNMP协议 管理模型 代理
  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0310046-02
  
  一、SNMP的产生
  
  随着现代网络规模扩大化,结构的复杂化,早期网络时代的人力管理已经无法胜任这一工作了,自动网络管理工具由此而产生。
  要有效地管理由不同厂家的产品构成的网络系统,就要求各个网络产品提供统一的管理接口,即遵循标准的网络管理协议。目前国际上标准的网络管理协议有两个,一个是ISO于70年代末提出的CMIP,一个是IAB 80年代末提出SNMP。CMIP(公共管理信息协议)建立在OSI基础上,它的协议大而全,需兼顾各个方面的要求,十分复杂,实现起来很困难,所以目前对其仅停留在研究阶段。SNMP(简单网络管理协议)是IAB为管理基于TCP/IP的网络而制定的网络管理协议,于1990年4月被确定为Internet标准。它可以管理和监控任何形式的网络设备,它的主要特点是简单、实用、易扩展。目前绝大多数厂家都支持和应用SNMP,SNMP已成为事实上的网络管理工业标准。
  
  二、SNMP的发展
  
  SNMP一共发展了3个主版本,分别为SNMPv1,SNMPv2和SNMPv3。SNMPv2又分为若干个子版本,其中SNMPv2c应用最为广泛。
  1990年5月,RFC1157出版,定义了SNMPv1。SNMPv1在90年代初得到了迅猛发展,但同时也暴露了明显的不足,如在功能上难以实现大量的数据传输,在安全方面缺少身份鉴别和加密机制。
  1993年发布的SNMPv2比SNMPv1有较大的进步,表现在支持分布式网络管理、扩展了数据类型、可以实现大量数据的同时传输、增加了表的处理能力、加强了数据定义语言。
  但是,SNMPv2并没有完全实现预期的目标,尤其是安全性能没有得到提高。1996年发布的SNMPv2c是SNMPv2的修改版本,功能有很大增强,但是安全性能仍没有得到改善,继续使用SNMPv1的基于共同体名的身份鉴别方式。
  IETF SNMPv3工作组于1998年1月提出RFC2271-2275,正式形成SNMPv3。这一系列文件定义了包含SNMPv1、SNMPv2所有功能在内的体系框架和包含鉴别服务和加密服务在内的全新的安全特性,同时还规定了网络安全和访问控制规则。
  
  三、SNMP的通讯机制
  
  SNMP代理和管理站通过标准的SNMP协议报文进行异步通信,这些报文都是单个包。由此,SNMP使用UDP作为底层传输协议。UDP使用无连接服务,所以SNMP不需要在代理和管理站之间保持连接来传输消息。
  (一)SNMP的通讯原语
  SNMPv1中定义了五种通讯原语:GetRequest、GetResponse、GetNextRequest、SetRequest和Trap。SNMP管理站使用GetRequst请求被管设备的代理从设备中取特定OID的管理信息比如系统的名字,系统中网络接口数,端口的流量等等。SNMP代理用GetResponse来响应管理站的请求。管理站用GetNextResponse指示读取指定的OID所表示的被管理对象在MIB树中按照字典顺序的下一个被管理对象的管理信息的值,与GetResponse结合起来可以检索表中的数据,浏览MIB树。管理站用SetRequest通过代理来改变设备中的配置,用于配置管理的实现。Trap是SNMP代理发送给管理站的非请求消息,通知管理站发生了一个特殊事件[6]。例如:代理重启、线路连接失败或消息认证失败等等。
  SNMPv2中增加了GetBulkRequest的通讯原语,GetBulkRequest与GetNextResponse有相同的操作原则,也就是说,所选择的总是按字典序的下一个对象实例。不同之处在于,使用GetBulkRequest可以指定选择多个字典顺序后继。这样,可使检索大批管理信息所需的协议交换次数最少化。SNMPv2还增加了InformRequest通讯原语,此通讯原语用来负责管理者与管理者之间的通讯。
  (二)SNMP报文格式
  SNMP报文格式主要有两部分构成,协议头和SNMP协议数据单元。在不同的版本中协议头不同。
  1.SNMPv1的报文格式。
  SNMPv1报文的协议头由版本域和共同体域组成。其中版本域为version-1(0),共同体域是为增加系统的安全性而引入的,它的作用相当于口令(password)。agent可以要求manager在其发来的报文中填写这一项,以验证manager是否有权访问它上面的MIB信息。community的缺点是没有加密功能,由于是明码传送的,所以很容易被监听者窃取。SNMPv2中改进了这一点。
  SNMP协议数据单元是实际要传送的数据,SNMPv1中有5种PDU,即对应5种协议操作,如图2所示。其中GetRequest、GetNextRequest和SetRequest
  的PDU的格式是一样的,包括PDU类型,请求标识,错误状态,差错索引,变量绑定列表域(由多个变量绑定组成,每个变量绑定由对象标识符和对象得值组成),而Trap的PDU格式比较特殊,它由于包含的信息不同,结构上有所差别。
  


  2.SNMPv2c的报文格式。
  SNMPv2c在协议报文和PDU格式方面和SNMPv1大体一样。不同的是SNMPv2的Trap报文和其他报文格式统一了,而且比v1版本增加了Inform、GetBulkRequest报文。这两种报文除了GetBulkRequest报文中错误状态和差错索引处分别由Non-Repeaters(不重复个数)和Max-Repetitions(最大重复次数)所代替,其余部分和SNMPV1的报文一样。SNMPV2的报文格式更加一致,这样简化了接收者的处理任务。
  3.SNMPv3的报文格式。
  SNMPv3在SNMPv2基础之上增加了安全和管理机制,SNMPv3定义了一种全新的报文格式,协议头增加了很多SNMPv3的安全参数,如图3所示。
  
  (三)SNMP报文的发送
  一个SNMP实体按照以下步骤来传送SNMP的5种报文的一种到另一个SNMP实体:
  1.根据RFC1157中定义的ASN.1结构,构造SNMP的PDU;
  2.将PDU连同源地址,目标地址,共同体名传至鉴别服务,等待它进行加密,签名等操作后的返回结果*;
  3.在*前面加上协议头,形成SNMP报文;
  4.按照BER规范对3所形成的SNMP报文进行编码,并传递给传输服务。
  其中,step2只在SNMPV3版本中存在。
  (四)SNMP报文的接收
  一般,一个SNMP实体经过以下步骤接收一个SNMP报文:[3]
  1.从传输层接收到报文编码的字节流,按照BER规范进行解码;
  2.对该消息的基本句法进行检查,如果报文没有通过分析,就丢弃该报文;
  3.检查版本号,如果版本不兼容就丢弃该报文;
  4.协议实体将安全参数,报文的PDU部分、以及源与目的传输地址传递给鉴别服务:如果认证成功,鉴别服务将按照ASN.1标准构造PDU返回给SNMP协议实体;如果鉴别失败,鉴别服务触发鉴别失败的事件,SNMP协议实体产生鉴别失败的Trap,并丢弃该报文;
  5.协议实体将对鉴别成功的PDU进行ASN.1的句法检查,如果失败则丢弃此PDU。否则,按照版本号进行SNMP访问控制检查,若通过则对PDU进行相应处理,否则丢弃报文。
  
  四、SNMP协议中代理进程的实现
  
  为兼容SNMP的3个版本,按照SNMPv3的框架来实现代理进程,如图4所示。
  (一)代理进程的框架结构
  


  SNMPv3中代理和管理者都称作SNMP实体,每一个实体主要有两个组件:SNMP引擎和一个或多个应用程序。
  引擎与实体是一一对应关系,它包含四个组件:发送器、消息处理子系统、安全子系统和访问控制子系统。其中发送器支持多个版本的SNMP消息同时存在,它的功能包括:发送和接受网络中的SNMP消息;决定SNMP消息的版本并和符合相应版本的消息处理模型交互;和命令发生器应用程序进行PDU的交互。消息处理子系统是为传输和从接受到的消息中提取相关信息参数的准备模块,它其中按照处理的消息的版本格式的不同分成了不同的子模块。安全子系统提供了安全服务,其中包括加密和验证。访问控制子系统提供授权服务,它也可以有多个访问控制模型。
  代理实体中的应用程序有命令产生器应用程序,通知产生器应用程序等。
  (二)代理进程的流程
  代理进程的主要工作是响应管理者的请求,对设备的管理数据进行读写操作,然后把取得的信息以SNMP报文的形式反馈给管理者。代理进程的另一个工作就是当出现特殊事件的时候,向特定的管理端发送Trap。代理进程主要可由3个独立的线程来实现:
  1.代理主线程SnmpAgent,此线程用于启动,运行,关闭代理进程。该线程启动后,首先初始化系统配置,导入mib文件和xml文件(对象实例数据文件),并启动以下其他两个线程,让其独立运行。然后启动发送器,从端口等待接收管理者发送过来的报文编码字节流,然后解码成Snmp的报文,并进行版本兼容的检验(不兼容直接丢弃),调用安全子系统,进行PDU的验证加密(不成功丢弃报文,并发认证失败的Trap),将获得的可继续处理的请求报文返回给主线程。主线程调用请求响应模块,并将获得的请求报文传给它,请求响应模块将对请求做出正确的响应过程,取得必要的管理信息,返回给主线程。主线程把取得的管理信息交给消息处理模块,该模块根据将信息封装PDU并把响应PDU传给命令产生器,最终封装成响应报文,返回主线程。[7]主线程最后将响应报文传给发送器发送给管理者。
  2.Trap服务线程SnmpTrapService,此线程负责接收触发Trap的事件,获取封装Trap报文的参数信息,然后将信息交给消息处理模块。
  3.数据收集线程SnmpDataCollect,此线程一方面要定时从设备接口程序中收集管理数据,并从内存更新到xml文件(xml文件在SnmpAgent线程启动时已被导入到内存中的一棵树),这样,请求响应模块在响应get或getNext操作时,直接从内存的xml树中读取所要求的对象实例的值。当处理set操作时,如果xml文件更新成功,则要发出通知给设备接口程序,以改变设备中的配置。
  
  五、结束语
  
  SNMP具有很多的优点,因此得到较广泛的应用。但它安全性、多协议支持等,需要在今后版本中加以解决。随着SNMP的新发展,在协议实现过程中,软件的结构必须要利于各个版本的共存。
  
  参考文献:
  [1]Mani Subramanian.Network Management:Principles and Practice,1st edition Copyright 2000.
  [2]Mark A.Miller,用SNMP管理互联网络(第二版),中国水利水电出版社,2001.7.
  [3]岑贤道、安常青,网络管理协议及应用开发,清华大学出版社,1998.7.
  [4]William Stallings,SNMP网络管理(第一版),中国电力出版,2001.9.
  [5]杜荔等,一种基于SNMP实现MIB库多变量访问的方法,东北大学学报(自然科学版),1998.8.
  [6]高宏等,Internet网络管理协议简单网络管理协议(SNMP),数据通信,1999.1.
  [7]蔡皖东,SNMP网络管理机制及其实现,微电子学与计算机,1999.1.
  
  作者简介:
  孙为,男,助教,主要研究方向:网络管理、协议工程学。
其他文献
[摘要]详细介绍IPv6的基本工作机制以及关键的路由技术,并提出在支持IPv6的路由器中引入快表机制,保存漫游到该路由器所在子网中的移动节点的相关信息。针对当前移动IPv6技术的的不足提出改进方案。  [关键词]家乡地址 家乡代理 三角路由 移动节点  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0310054-01    由于现行的IPv4协议存在的问题越来越显著,严
期刊
[摘要]研究FAMA协议在双层分布式无线网络中的应用,阐述FAMA协议的算法机制和实现过程。结果表明采用发送包序列方式可以大大提高网络性能,可以在双层分布式无线网络中推广使用。  [关键词]FAMA协议 分层分布式无线网络 算法  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0310051-01    一、FAMA协议概述    FAMA协议于1995年由美国科学家提出
期刊
[摘要]IS-IS是一种等级式的、链路状态式的路由通讯规程。它是通过向整个网络广播连路状态信息,以此建立一个完整的网络结构信息。要设计、操作一个IS系统,IS-IS分为第一级和第二级系统。第一级系统将只与同一区域内的其它第一级系统通讯。而第二级系统将把属于不同区域的路由器连接起来。IS-IS与OSPF非常类似,例如,它们都属于链路状态,使用不同的区域,分级式路由通讯规程。OSPF已经被使用的非常广
期刊
[摘要]介绍802.1x协议的体系结构及认证机理。并针对多种设备,给出不同的测试方法,文后总结和介绍802.1x的安全问题。  [关键词]802.1x 认证 分析  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0310038-01    一、目前广泛采用的认证模式及其简单介绍    随着计算机网络技术的不断发展,INTERNET主干网的不断扩容,加之信息化的建设,网络已
期刊
[摘要]阐述WebService的基本概念。对WebService的发展历程进行论述,介绍其体系架构。对WebService的基本协议和标准进行解释。结合电信系统的增值业务的实现,介绍WebService技术的实际的应用,并列出WebService的优点和缺点。最后对WebService技术的发展前景进行展望。  [关键词]WebService 电信系统 增值业务  中图分类号:TP3文献标识码:
期刊
[摘要]针对入侵检测系统中安全规则提取的困难,提出利用粗集方法从系统日志信息中挖掘安全规则,并给出规则挖掘算法。通过KDDCup99入侵数据测试集中的数据验证该方法的有效性和可行性,为入侵检测中安全规则的提取提供一种新方法。  [关键词]网络安全 入侵检测 粗集方法 数据挖掘  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0310044-02    一、引言    将数
期刊
[摘要]建立计算机考试系统是传统考试方式改革的需要。在概述计算机考试系统国内外研究现状的基础上,设计基于C/S结构的Internet环境下的计算机考试系统,并讨论若干关键性问题。大量的实验说明,该系统具有实用性、稳定性、安全性和易用性,基本达到预期效果。  [关键词]考试 计算机考试系统 C/S  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0310064-01    
期刊
[摘要]从无线局域网安全防范的角度分析并阐述企业部署无线局域网所涉及的各种安全技术,提出根据不同企业用户对于无线局域网安全的需求,可以选择相适应的安全认证及加密机制来满足安全组网要求。  [关键词]WLAN 802.1i 认证机制 加密机制  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0310065-01    随着企业信息化的不断发展,越来越多的企业开始使用无线局域
期刊
[摘要]数据库连接池是一种非常高效实用的技术。对数据库连接池的基本实现原理进行分析,并给出初步的算法实现。  [关键词]数据源 连接池 连接 JAVA JDBC  中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0310052-02    一、引言    在任何的项目开发过程中,都离不开对数据的操作,这一系列的动作最终都体现在底层和数据库的交互,在常规的jdbc数据库操作到
期刊
[摘要]针对教师与学生普遍认为C语言难教也难学,从教学内容、教学手段、教学方法等方面介绍C语言教学中的几点感想。实践证明,这些方法效果良好,不仅有利于培养学生学习兴趣,而且有利于培养学生分析问题与解决问题的能力。  [关键词]C语言 教学内容 教学手段 教学方法  中图分类号:G42文献标识码:A文章编号:1671-7597(2009)0310156-01    在C语言教学中,许多教师和学生都认
期刊