SNMP下的网络管理研究与规划

SNMP下的网络管理研究与规划

 

网络管理的目的是对网络、网络单元或设备进行监视,采集相关的数据,评价网络和网络单元的有效性,报告网络设备的状态,支持网络规划和网络分析。这些参数能帮助网络管理人员了解和掌握网络的状态并及时给予维护或优化。简单网络管理协议(SNMP)经过几十年的完善和发展,已经成为目前使用最广泛的网络管理标准协议。基于SNMP协议以及Java技术与数据库技术开发的网络管理系统,实现了对区域网络的有效管理。   1SNMP网络管理协议   SNMP框架由三个主要部分构成,分别是SMI(StructureofManagementInformation,管理信息结构)、MIB(ManagementInformationBase)、和SNMP协议。SMI是SNMP网络管理框架三要素之首,它定义了SNMP框架所用信息的组织、组成和标识,SMI是用ASN.1来形式化定义管理对象。其中的每片信息是一个有标号的节点。每个节点包含两个内容:一个对象标识符和一个简短的文本描述。其中对象标识符OID(ObjectIdentifiers,对象标识符)是由句点隔开的一组整数,它命名节点并指示它在ASN.1树中的准确位置。管理信息库(MIB)是网络管理中的重要组成部分。每个MIB包含:系统与设备的状态信息,运行的数据统计,配置参数等。利用SNMP协议,可以查询管理实现的MIB中相应对象的值,来监视网络设备的状态。管理也会通过SNMP协议发出一些trap(陷阱报文)。   2SNMP网络管理系统模型   2.1管理者—模式   SNMP采用“管理进程—进程”模型来监视和控制Internet上各种可管理网络设备。网管活动是通过网管请求的给予者(网管中心的管理者进程)和网管请求的接收者(系统中的进程)之间的交互式会话实现的。SNMP管理模型如图1所示。网络操作员首先通过特定的请求窗口向管理者提交网管请求,然后通过本地的网管通信模块把该请求发送给指定的远程,并等待执行结果的返回。远程在接收到这一请求后,向被监控的网络资源发出执行该网管请求的命令。此时,远程将等待执行结果,或在被监控的资源出现异常情况时产生事件报告。然后,远程通过其网管通信模块向网管中心发回网管结果。网管中心的管理者在接收到设备返回的结果或事件报告后,经过分析处理再通过指定窗口把结果显示出来。   2.2SNMP网络管理系统构成   SNMP管理的网络由三个关键组件组成:被管理设备(ManagedDevice)、(Agent)和网络管理系统(NMS,NetworkManagementSystems)。被管理设备用于收集并储存管理信息,通过SNMP,NMS能得到这些信息。被管理设备可以是路由器、访问服务器,交换机和网桥、HUBS、主机或打印机等。SNMP是被管理设备上的一个网络管理软件模块。SNMP拥有本地的相关管理信息,并将它们转换成与SNMP兼容的格式。网络管理系统NMS运行应用程序以实现监控被管理设备。此外,NMS还为网络管理提供了大量的处理程序及必须的储存资源。任何受管理的网络至少需要一个或多个NMS。   3网络管理系统总体设计   基于SNMP网络性能参数设置及获取被管理设备信息的程序流程图如图2所示。IP地址标识了程序要访问的网络设备,如主机、路由器等等,要采集这些设备的性能参数就必须向它们发送SNMP报文,而IP地址则是组成这些SNMPPDU的变量之一。基于SNMP的网络管理系统采用JAVA语言编写,JAVA语言具有良好的跨平台性和稳健性。数据库使用MYSQL,MYSQL具有功能强,使用简单、管理方便、运行速度快等特点。   4系统功能实现   4.1系统功能主界面   本系统基于单文档框架窗口作为系统的总控台,所有的功能模块都可在此总控台中来调用,SN-MP管理功能部件采用对话框模式。主界面如图3所示。进入系统,启动界面之后,在系统托盘建立应用程序图标,并打开总控窗口。当总控窗口最小化时,将由在托盘区图标上的相应菜单操作来执行指令。如图4所示。   4.2SNMP数据采集   SNMP数据的采集是重点研究的对象,如何通过编程来实现发送SNMP报文,取得SNMP报文,从中读取数据就是这次设计所要解决的。当一个SNMP协议实体(比如管理者)发送报文时要执行下面的过程:首先是按照ASN.1格式构造PDU,交给认证进程。认证进程检查源和目标之间是否可以通信,如果通过这个检查,则把有关信息(版本号、团体名、PDU)组装成报文。最后经过BER编码,交给传输实体发送出去。如图5所示。当一个SNMP协议实体(比如管理者)接受到报文时要执行下面的过程:首先是按照BER编码恢复ASN.1报文,然后对报文进行语法分析,验证版本号和认证信息等。如果通过分析和验证,则分离出协议数据单元,并进行语法分析,必要时经过适当处理后返回应答报文。在认证检验失败时可以生成一个陷阱报文,向发送端报告异常情况。无论何种检验失败,都丢弃报文。   SNMP规定了5种协议数据单元PDU(SNMP报文),用来在管理进程和之间的交换。Get-request操作:从进程处提取一个或多个参数值Get-next-request操作:从进程处提取紧跟当前参数值的下一个参数值Set-request操作:设置进程的一个或多个参数值Get-response操作:返回的一个或多个参数值。这个操作是由进程发出的,它是前面三种操作的响应操作。Trap操作:进程主动发出的报文,通知管理进程有某些事情发出。   本系统采用Java语言开发,报文构建和解码工作的部分代码如下:(1)创建SNMP报文VarBindListretrievedVars=newVarBindList();//请求标识interrorStatus=0;//错误状态interrorIndex=0;//错误索引ObjectIdentifierrequestedObjectIdentifier=newObjectIdentifier(itemID);VariablePairnextPair=newVariablePair(re-questedObjectIdentifier,newNullSNMP());SequencevarList=newSequence();varList.addSNMPObject(nextPair);PDUpdu=newPDU(BERCodec.SNMPGE-TREQUEST,requestID,errorStatus,errorIndex,varList);MessageSNMPmessage=newMessageSNMP(version,community,pdu);//其中version、community、pdu三个参数分别为版本号、团体名、PDUbyte[]messageEncoding=message.get-BEREncoding();DatagramPacketoutPacket=newDatagram-Packet(messageEncoding,messageEncoding.length,hostAddress,remotePort);dSocket.send(outPacket);(2)对SNMP报文解码DatagramPacketinPacket=newDatagram-Packet(newbyte[receiveBufferSize],receiveBuffer-Size);dSocket.receive(inPacket);byte[]encodedMessage=inPacket.getData();MessageSNMPreceivedMessage=newMes-sageSNMP(BERCodec.extractNextTLV(encod-edMessage,0).value);PDUreceivedPDU=receivedMessage.getPDU();if(receivedPDU.getRequestID()==re-questID){if(receivedPDU.getErrorStatus()!=0)thrownewGetExceptionSNMP(”OID”+itemID+”notavailableforretrieval”,receivedP-DU.getErrorIndex(),receivedPDU.getErrorStatus());varList=receivedPDU.getVarBindList();SequencenewPair=(Sequence)(varList.get-SNMPObjectAt(0));ObjectIdentifiernewObjectIdentifier=(Objec-tIdentifier)(newPair.getSNMPObjectAt(0));ObjectSNMPnewValue=newPair.getSNM-PObjectAt(1);if(newObjectIdentifier.toString().equals(itemID)){retrievedVars.addSNMPObject(newPair);break;}}returnretrievedVars;#p#分页标题#e#   5结语   本文在分析SNMP协议的基础上,实现了一个结合JAVA技术和MYSQL技术的基于SNMP的网络管理系统的设计。通过使用该系统,网络管理员具备了实时监控网络资源的能力,在一定程度上减轻了网络管理人员的劳动强度,同时也使网络的可靠性与可用性得到了提高,使网络监测变得更为主动。  

精选范文