基于SNMP/MIB的网络数据获取系统设计与实现.doc
基于SNMP/MIB的网络数据获取系统设计与实现摘 要: 简单网络管理协议(SNMP:Simple Network Management Protocol)是由互联网工程任务组(IETF:Internet Engineering Task Force )定义的一套网络协议。简单网络管理协议(SNMP)是一种应用层协议, 便于在网络设备间交换管理信息。它是TCP/IP协议簇的一部分,也是一个标准的用于管理IP网络上结点的协议。网络管理员使用SNMP监视网络性能、检测分析差错、配置网络设备,发现和解决网络故障, 并计划网络增长。本文主要介绍了SNMP/MIB有关理论基础知识和数据的采集原理,并针对MIB信息库的单个对象和表进行分析,用java编程实现了数据采集功能。关键词: SNMP MIB AdventNet 数据采集Abstract:Simple Network Management Protocol(SNMP)is a set of network protocol defined by Internet Engineering Task Force(IETF). The Simple Network Management Protocol (SNMP) is an application layer protocol that facilitates the exchange of management information between network devices. It is part of the Transmission Control Protocol/Internet Protocol (TCP/IP) protocol suite. SNMP enables network administrators to manage network performance, find and solve network problems, and plan for network growth. This passage mainly introduce the theory about the SNMP/MIB and basic principle of the information collection .Moreover ,we realize the function of information collection using java programming for single object and table of MIB.Key words : SNMP MIB AdventNet Information Collection 一,简单网络管理协议SNMP及相关理论介绍1,简单网络管理协议SNMP(1), 什么是网络管理 网络管理分为两类。第一类是网络应用程序、用户帐号(例如文件的使用)和存取权限(许可)的管理。它们都是与软件有关的网络管理问题。这里不作讨论。网络管理的第二类是由构成网络的硬件所组成。这一类包括工作站、服务器、网卡、路由器、网桥和集线器等等。通常情况下这些设备都离你所在的地方很远。正是由于这个原因,如果当设备有问题发生时网络管理员可以自动地被通知的话,那么一切事情都好办。但是你的路由器不会象你的用户那样,当有一个应用程序问题发生时就可以打电话通知你,而当路由器拥挤时它并不能够通知你。为了解决这个问题,厂商们已经在一些设备中设立了网络管理的功能,这样你就可以远程地询问它们的状态,同样能够让它们在有一种特定类型的事件发生时能够向你发出警告。这些设备通常被称为"智能"设备。网络管理通常被分为四类:被管理节点(或设备):即你想要监视的设备代理:用来跟踪被管理设备状态的特殊软件或固件(firware)网络管理工作站:与在不同的被管理节点中的代理通信,并且显示这些代理状态的中心设备网络管理协议:被网络管理工作站和大理用来交换信息的协议当设计和构造网络管理的基础结构时,你需要记住下列两条网络管理的原则:1.由于管理信息而带来的通信量不应明显的增加网络的通信量。 2.被管理设备上的协议代理不应明显得增加系统处理的额外开销,以致于该设备的主要功能都被削弱了。(2),SNMP的背景美国国防部设计了世界上头几个包交换网之一的ARPANET,在70年代,TCP/IP协议族正式被定为军方通信标准,随着此协议的广泛使用,网络管理成了一件大事。在80年代未和90年代初,网络迅速发展,许多子网数目的增多使监视网络活动成为一种必须。在网络管理的初期,对网络的管理停留在使用ICMP和PING的基础上,但是随着网络内主机数据的不断增多,这种简单的工具已经不可能完成网络管理的工作了。随着网络数目与网络内主机数目的日益增多,单纯依靠一些网络专业进行网络管理已经不可能了,必须有一种通行的网络管理标准以及相应的管理工具使普通人也能够管理网络。第一个相关的协议是SGMP,它提供了一种直接监视网关的方法,也因此成了一种通用的网络管理工具。下来,有三可供选择的管理工具:HEMS,SNMP和建立在TCP/IP基础上的CMIP(CMOT),因为需要使用ISO/OSI模型进行网络管理,SNMP首选CMOT作为管理工具。基本的SNMP已经被广泛使用了,所有的网络产品都提供对SNMP的支持,新开发的具有远程管理能力的SNMP是RMON,它使管理人员可以将整个子网进行管理,而不是对整个子网内的设备进行管理。简单网络管理协议(SNMP)是目前TCP/IP网络中应用最为广泛的网络管理协议。1990年5月,RFC 1157定义了SNMP(simple network management protocol)的第一个版本SNMPv1。RFC 1157和另一个关于管理信息的文件RFC 1155一起,提供了一种监控和管理计算机网络的系统方法。因此,SNMP得到了广泛应用,并成为网络管理的事实上的标准。SNMP在90年代初得到了迅猛发展,同时也暴露出了明显的不足,如,难以实现大量的数据传输,缺少身份验证(Authentication)和加密(Privacy)机制。因此,1993年发布了SNMPv2,具有以下特点:l 支持分布式网络管理l 扩展了数据类型l 可以实现大量数据的同时传输,提高了效率和性能l 丰富了故障处理能力l 增加了集合处理功能l 加强了数据定义语言但是,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基础上的网络管理协议,但也可扩展到其他类型的网络设备上。(3),SNMP的详细介绍简单网络管理协议最初是为处理网络上路由器而设计的。虽然 SNMP是TCP/IP协议族中的一员,但它并不依赖于IP。目前大部分SNMP都使用IP协议,但SNMP是独立的协议(因此,它也用于Novell公司SPX/IPX的IPX协议之上)。使用SNMP进行网络管理需要下面几个重要部分:管理基站,管理代理,管理信息库和网络管理工具。管理基站通常是一个独立的设备,它用作网络管理者进行网络管理的用户接口。基站上必须装备有管理软件,管理员可以使用的用户接口和从MIB取得信息的数据库,同时为了进行网络管理它应该具备将管理命令发出基站的能力。管理代理是一种网络设备,如主机,网桥,路由器和集线器等,这些设备都必须能够接收管理基站发来的信息,它们的状态也必须可以由管理基站监视。管理代理响应基站的请求进行相应的操作,也可以在没有请求的情况下向基站发送信息。MIB是对象的集合,它代表网络中可以管理的资源和设备。每个对象基本上是一个数据变量,它代表被管理的对象的一方面的信息。最后一个方面是管理协议,也就是SNMP,SNMP的基本功能是:取得,设置和接收代理发送的意外信息。取得指的是基站发送请求,代理根据这个请求回送相应的数据,设置是基站设置管理对象(也就是代理)的值,接收收代理发送的意外信息是指代理可以在基站未请求的状态下向基站报告发生的意外情况。SNMP并不是单个协议,它由三个协议组成,这三个协议用于网络管理。组成 SNMP协议的三个协议及功能如下所示:* 管理信息基(MIB) 包含状态信息的数据库。* 管理信息的结构与标识(SMI) 定义MIB的入口。* 简单网络管理协议(SNMP) 受管理的对象与服务器间的通信方法。拥有SNMP能力的管理代理软件包要么在系统启动时加载,要么嵌入到设备的硬件中。拥有SNMP代理的设备由于不同的厂商而有各种不同的名称,但总的可分为SNMP管理设备和受SNMP管理的设备两种。SNMP相容设备也拥有将SNMP集成到其软件或硬件上的代码。当设备中包含SNMP时,我们称之为可管理的设备。受SNMP管理的设备可与位于网络某处的SNMP服务器通信。设备与服务器有两种通信方式:投票及中断。接受投票的设备由服务器询问当前的状态或统计信息。投票通常在一定时间间隔执行,由网络服务器与受管理的设备进行通信。投票的问题是:信息不总是实时的,同时由于受管理的设备数量增多及投票频率过高的影响容易造成网络拥塞。在基于中断的SNMP系统中,当受管理的设备出现异常时,向服务器发送消息,在这种方式下,服务器可以及时知道问题除非设备崩溃,此时,只有其他设备与已崩溃的设备进行连接时,系统才可能发现问题。基于中断的设备也存在自己的问题,最主要的是设备需要组织发送给服务器的消息,这将消耗掉系统时钟周期,从而降低系统的工作效率。同时也可能导致性能“瓶颈”从而引发其他问题。如果消息数据量较大,包含很多统计数据,组织和传输消息将导致网络性能下降。如果网络上出现较严重的问题,如电源掉电或电压过高,每个受管理的SNMP设备都设法向服务器发送中断消息以报告问题。这将导致网络拥塞从而使服务器接收到错误的消息。通常,将投票与中断结合使用以弥补各自的缺陷,我们称这种组合方式为直接自陷投票(trap-directed polling),服务器定时统计或在管理员指导下统计设备信息。同时,每个受管理的设备在某种条件发生时产生中断消息,中断发生的条件比纯粹的中断驱动系统要严格。例如,如果用户使用中断SNMP,路由器负载每增长10%都向服务器报告。如果使用直接自陷投票SNMP,用户可从投票中获得路由器的负载,并且当路由器负载增加很快时,将向服务器发送中断消息。当服务器接收到此中断消息后,如果需要的话,可进一步查询设备的详细信息。SNMP服务器软件包可与SNMP代理通信、传输或请求一系列不同类型的信息。通常由服务器向代理请求统计信息,包括处理的包数量、设备的状态与设备类型相关的特殊信息等 (如modem失效连接的次数)及处理器的负载。服务器也可向代理发送指令以修改数据库 (MIB)中的项。服务器也可设置代理方的阈值或条件,当代理超过阈值或满足条件时向服务器发送中断消息,如 CPU负载达到90%。虽然服务器与代理间的通信内容趋向于抽象,但通信本身以非常直接简单的方式完成。如:服务器发送“当前负载”,代理返回75%。代理从不向服务器发送数据,除非产生中断消息或收到服务器请求,这意味着在没有进行投票或产生中断消息时,系统可能存在潜伏的问题。SNMPv1SNMPv1是SNMP协议的最初实现。它在请求注释(RFC)1157中有描述,管理信息结构(SMI)规范中有功能描述。SNMPv1运行在协议之上,如UDP,IP,开放式系统互联参考模型无连接网络服务(CLNS),AppleTalk数据报投递协议(DDP),和Novell网络数据报交换(IPX)。SNMPv1被广泛地使用,成为因特网内事实上的网络管理协议。SNMPv1和管理信息结构管理信息结构(SMI)定义描述管理信息的规则,使用抽象语法符号1(ASN.1)。SNMPv1 管理信息结构被定义在RFC1155中。管理信息结构制定三种主要的规范:ASN.1数据类型,SMI-specific数据类型和SNMP MIB表。SNMPv1和ASN.1数据类型SNMPv1管理信息结构指定所有被管理对象有一个抽象语法符号1(ASN.1)数据类型的子集与它们关联。三种ASN.1数据类型是必需的:姓名、语法和编码。服务的名称被看作对象标识符(对象ID)。语法定义对象的数据类型(例如,整型或字符串)。管理信息结构使用ASN.1语法定义的子集。编码数据描述信息怎么被关联到被管理对象,被格式化为一系列数据项,用于网络传输。SNMPv1和管理信息结构-specific数据类型SNMPv1管理信息结构指定一系列管理信息结构-specific数据类型的使用,被划分为两种:简单数据类型和广泛应用数据类型。三种简单数据类型被定义在SNMPv1管理信息结构中,所有取唯一的值:整型、八位位组字符串和对象ID。整型数据类型是一个范围在-2,147,483,648 to 2,147,483,647之间的单独的整型。八位位组字符串是0到65535八位位组的规则序列。对象ID来自所有对象标识符依照ASN.1中的指定规则分配的。七种广泛应用数据类型存在在SNMPv1管理信息结构:网络地址、计数器、规格、时间记号、不透明物和无符号整型。网络地址表示一个来自一个特殊协议族的一个地址。SNMPv1只支持32位IP地址。计数器是非负整型,增加直至达到最大值,然后返回到零。在SNMPv1中,一个32位计数器大小被指定。规格是非负整型,能增加或减少,但它们保留达到的最大值。时间记号表示自一些事件的一秒的每一百。不透明物表示一个任意的编码,被使用在任意的信息字符串中,在管理信息系统中,不需要与严格的数据类型一致。整型表示有符号的整型值信息。这个数据类型重新定义了整型数据类型,在ASN.1中有任意的精确度,但是在管理信息结构中,是有限制的。无符号整型表示无符号整型值信息,整型数据类型在ASN.1中有任意的精确度,但是在管理信息结构中是有限制的。SNMPv2SNMPv2是初始版本SNMPv1的发展,最初,SNMPv2在1993年以被提议为因特网标准发布;当前,它是一个标准草案。在管理信息结构规范中有SNMPv1,SNMPv2功能功能详述。在理论上,SNMP2提供了SNMPv1的实现,包括附加的协议操作。SNMPv2和管理信息结构:管理信息结构(SMI)定义了使用ASN.1描述管理信息的规则。SNMPv2管理信息结构在RFC1902中有描述。它制定了一些对SNMPv1管理信息结构-specific数据类型额外的增强,例如包含位字符串,网络地址和计数器。位字符串中只在SNMPv2中有定义,由零或更多的指定值的位组成。网络地址表示一个来自特殊协议族的地址。SNMPv1只支持32位IP地址,但SNMPv2能支持其他类型的地址。计数器是非负整型,增加直到它们达到最大值,然后返回到零。在SNMPv1中,32位计数器大小是指定的。在SNMPv2中,32位和64位计数器被定义。 管理信息结构信息模块:SNMPv2管理信息结构也指定信息模块,指定一组关联的定义。有三种类型的管理信息结构信息模块:MIB模块,顺从声明和性能声明。MIB模块包含相关的被管理对象的定义。顺从声明提供描述一组被管理对象的一种系统方法,必须实现与标准一致。性能声明显示支持的精确层次,代理要求考虑MIB组。为了代理依照性能声明关联到每个代理,网络管理系统可以调整它的行为。SNMPv2协议操作:Get,GetNext和Set操作用于SNMPv1中,在SNMPv2中可以正确地同样使用。SNMPv2增加和增强一些协议操作。SNMPv2 Trap操作,例如,提供同样的功能在SNMPv2中,但是它使用一种不同的消息格式,被设计用于替代SNMPv1 陷阱。SNMPv2也定义两种新的协议操作:GetBulk和Inform。GetBulk操作被网络管理系统有效地重新取得大块的数据,例如表中的多行。GetBulk填充一个合适的并足够多的被请求的应答消息。Inform操作允许一个网络管理系统发送陷阱信息到另一个网络管理系统,然后重新行到一个应答。在SNMPv2中,如果代理应答GetBulk操作不能提供链表中所有变量的值,它将提供部分结果。SNMPv2对SNMPv1的一个大的改进,就是增强了安全机制。对管理系统安全的威胁主要有下面几种:信息篡改(modification):SNMPv2标准中,允许管理站(manager)修改agent上的一些被管理对象的值。破坏者可能 会将传输中的报文加以改变,改成非法值,进行破坏。因此,协议应该能够验证收到的报文是 否在传输过程中被修改过。冒充(masquerade):SNMPv2标准中虽然有访问控制能力,但这主要是从报文的发送者来判断的。那些没有访 问权的用户可能会冒充别的合法用户进行破坏活动。因此 ,协议应该能够验证报文发送者 的真实性,判断是否有人冒充。报文流的改变(message stream modification):由于SNMPv2标准是基于无连接传输服务的,报文的延迟、重发以及报文流顺序的改变都 是可能发生的。某些破坏者可能会故意将报文延迟、重发,或改变报文流的顺序,以达到破 坏的目的。因此,协议应该能够防止报文的传输时间过长,以给破坏者留下机会。报文内容的窃取(disclosure) :破坏者可能会截获传输中的报文,窃取它的内容。特别在创建新的SNMPv2 Party时,必 须保证它的内容不被窃取,因为以后关于这个Party的所有操作都依赖于它。因此,协议应该 能够对报文的内容进行加密,保证它不被窃听者获取。 针对上述安全性问题,SNMPv2中增加了验证(Authentication)机制、加密(Privacy)机 制,以及时间同步机制来保证通信的安全。 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 作为输入。公共管理信息CMIPCMIP协议是在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的网络管理系统 。SNMP安全SNMP缺乏任何的证明能力,导致多种安全攻击威胁。包括伪装事件,修改信息,消息序列,定时修改和揭发。伪装事件包括一个未授权的实体企图通过伪装成一个经授权的管理实体来执行管理操作。修改信息包括未授权的实体企图更改一个经授权的实体产生的消息,从而消息导致未授权管理或配置管理操作。当一个未授权的实体重新排序,延迟或拷贝和更新重放一个经授权实体产生的消息,消息序列和定时修改发生。当一个未经授权的实体析取存储在被管理对象中的值或学习须申报的监视管理器与代理间的交换事件时,揭发结果。因为SNMP没有实现鉴定,许多卖主没有实现Set操作,因此削减了SNMP的监控能力。(4),SNMP的基本原理一个SNMP管理的网络包含三个主要部分: 被管理设备、代理和网络管理系统(NMSs).图1-1 描述了这三个组成的关系。图 1-1:SNMP被管理网络包含被管理设备、代理和网络管理系统一个被管理设备是一个包含一个SNMP代理并处于被管理的网络中的一个网络结点。被管理设备收集和存储管理信息,并使用SNMP使这些信息对网络管理系统有用。被管理设备有时被称为网络元素,可能是路由器和访问服务器,交换机和网桥,集线器,计算机主机或打印机。网络管理系统执行应用程序监控被管理设备。网络管理系统为网络管理提供大量的处理和内存资源。在任何被管理的网络中至少存在一个网络管理系统。代理(agent)是一种特殊的软件(或固件),它包含了关于一个特殊设备和/或该设备所处环境的信息。当一个代理被安装到一个设备上时,上述的设备就被列为“被管理的”。换句话说,代理就是一个数据库。数据库中所包含的数据随被安装设备的不同而不同。举例来说,在一个路由器上,代理将包含关于路由选择表、接收和发送包的总数等信息。而对于一个网桥来说,数据库可能包含关于转发包数目和过滤表等信息。代理是与网络管理控制台通信的软件或固件。在这个控制台的“链路”上可以执行以下任务:网络管理工作站可以从代理中获得关于设备的信息。 网络管理工作站可以修改、增加或者删除代理中的表项,例如在由代理所维护的数据库中的路由选择表表项。网络管理工作站可以为一个特定的自陷设置阈值。 可以向网络管理工作站发送自陷。请记住,在被管理设备中的代理并不是自愿提供信息的,除非当有一个阈值被超过的事件发生时。在一些偶然的情况下,在一个特定的设备上可能因为系统资源的缺乏,或者因为该设备不支持SNMP代理所需要的传输协议,而不能实现一个SNMP代理。这是否就意味着你不能监视这个设备呢?答案并不是这样的,在这种情况下并不是完全没有办法的。你可以使用受托代理(proxy agent),它相当于外部设备(foreign device)。受托代理并非在被管理的外部设备上运行,而是在另一个设备上运行。网络管理工作站首先与受托代理联系,并且指出(通过某种方法)受托代理与外部设备的一致性。然后受托代理把它接收到的协议命令翻译成任何一种外部设备所支持的管理协议。在这种情况下,受托代理就被称为应用程序网关(application gateway)。如果外部设备不支持任何管理协议,那么受托代理必须使用一些被动的方法来监视这个设备。举例来说,一个令牌环网桥的受托代理可以监视它的性能,并且如果它检测到任何由网桥所报告的拥挤错误时,它就会产生自陷。幸运的是,目前大多数网际互联设备类型都是支持SNMP可管理设备的,所以你可以很容易地使用一个SNMP可管理设备,例如集线器、网桥和路由器。有一些厂商甚至还在他们的网卡上提供SNMP代理。2,管理信息库MIB每个受管理的SNMP设备均维护包含统计信息及其他数据的数据库。我们称之为管理信息基或MIB。 MIB的每一项包含一种信息:对象类型、语法、访问字段及状态字段等。 MIB的项通常由协议规定,并且严格遵守抽象语法规则1(ASN.1)的格式。对象类型为项的名称,通常为简单的名字。语法是一个值字段,通常为字符串或整型,并不是所有的MIB的项均包含值字段。访问字段用于定义项的访问权限,通常有以下四类:只读、可读/写、只可写或不可访问。状态字段包含指示值,标明MIB项是否为命令、可选或作废。命令表示受管理的设备必须执行该项。可选表示受管理的设备可以选择执行该项,作废表示不执行。目前执行的MIB有两种,MIB-1和MIB-2。两者结构不同,MIB-1创建于1988年,其表中包含114项,分为两组,支持MIB-1的受管理的设备必须支持所有的适用于该设备的组。例如:受管理的打印机不能执行处理外部网关协议的项,与外部网关协议 (EGP)相关的项用于路由器或类似的设备。打印机需要指明它可处理的项。MIB-2是MIB-1的扩展,于1990年提出。它包含171项共分为10组。除了扩展了原有的组外,又新增加了组。与MIB-1类似,支持MIB-2的设备必须执行所有适用于该类型的组。用户将会发现许多设备仅支持MIB-1而不支持MIB-2。除了MIB-1和MIB-2外,还有许多正在测试的MIB,它们包含许多不同的组和项。但它们并未被广泛使用。某些公司开发 MIB以供自己使用,某些厂商也提供对这些 MIB的支持。图3画的是管理信息库的一部分,它又称为对象命名(object naming tree)。图1-2 管理信息库的对象命名举例对象命名树的顶级对象有三个,即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-I中定义了114种管理对象,并分为8个组,分别为system组,interface组,at组,ip组,icmp组,tcp组,udp组,egp组。MIB-II与MIB-I兼容,电脑但增加了三个新的管理对象。分别时cmot组,transmission组和snmp组,其中:1) system:有关系统的整体信息。2) interface: 关于每一个从系统到子网接口的信息。3) at: (地址转换,被替换):Internet到子网地址映射地址转化表的描述。4) icmp: 与系统种ICMP实现与执行经历有关的信息。5) tcp:与系统TCP实现和执行经历有关的信息。6) udp:与系统UDP实现和执行经历有关的信息。7) egp:与系统EGP实现和执行经历有关的信息。8) dot3(传输):有关每个系统接口的传输方案和访问协议的信息。9) snmp:与系统SNMP实现和执行经历有关的信息。 下面介绍几个重要的几个组:表1-1:system表对象语法访问说明sysDescrDisplayStringRO对硬件,操作系统等实体的说明SysObjectIDOBJECTIDENTIFIERRO实体包含的网络管理子系统的供应商授权身份sysUpTimeTimeTicksRO自系统的网络管理部分最近一次重启的时间sysContactDisplayString(SIZE(0255))RW被管理节点联系人的身份和联系信息SystemDisplayString(SIZE(0255))RW在管理商赋予被管理节点的名称SysServicesINTEGER(0127)RO该节点的物理位置SysLocationDisplayString(SIZE(0255))RW该节点的物理位置表1-2:Interfaces表对象语法访问说明ifNumberINTEGERRO网络接口的数量ifTableSEQUENCE OF ifEntryNA接口条目的列表ifIndexINTEGERNA每一个接口的唯一取值ifDescrDisplayString(SIZE(0255)RO关于接口的信息,包括制造商的名称,产品名称和硬件接口版本ifTypeINTEGERRO接口的类型,按照物理,链路协议进行区分ifMtuINTEGERRO最大协议数据单元的大小。按字节算ifSpeedGaugeRO接口的当前数据速率容量的估计ifPhysAddressPhysAdressRO接口的网络层之下的协议的地址ifAdminStatusINTEGERRW理想的接口状态ifOperStatusINTEGERRO当前操作接口状态ifLastChangeTimeTicksRO接口进入到当前操作转台时的时systemUptime的取值ifInOctetsCounterRO接口接收的总的字节数ifInUcastPktsCounterRO递交给较高层协议的子网单播数据包的数量ifInNUcastPktsCounterRO递交给较高层协议的子网非单播数据包的数量ifInDiscardsCounterRO丢弃的入站数据包总数ifInErrorsCounterRO因包含错误而被阻止递交给较高协议进站的数据包的数目ifInUnknowprotosCounterRO由于未知或不支持的协议而被丢弃的进站数据包ifOutOctetsCounterRO接口传输的字节总数,包括帧字符ifOutQlenGaugeRO输出数据包队列的长度ifOutErrorsCounterRO由于错误而不能传输的出站数据包的总数ifOutNUcastpktsCounterRO较高层协议请求传输到一个非单播地址的数据包总数,包括那些被丢弃或因其他原因没有发送的ifOutDiscardsCounterRO出站被丢弃的数据包总数,即使没有探测到错误,也要防止它们被传输ifSpecificOBJECTIDENTIFERRO引用和用于实现接口的特定接口媒体具体相关的MIB定义表1-3:at 表对象语法访问说明atTableSEQUENCE OF AtEntryNA包含和物理地址等价NetworkAddressatEntry