logo资料库

基于SNMP网络管理系统的设计与实现.doc

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
基于 SNMP 网络管理系统的设计与实现 摘要:随着计算机网络的发展,企业的计算机网络变得更加复杂。网络管理系统 是十分必要的管理企业网络。本文介绍了 SNMP 简要介绍。然后设计并实现了一 个网络管理系统基于 SNMP 用 VC++和 SNMP++ API。该系统由设备性能管理模块, 网络故障管理模块,和网络拓扑检测模块。它直观地显示网络设备的运行状态, 并通知网络管理系统管理员的故障,使网络管理员可以处理故障的时间。 关键词:网络管理; SNMP;Trap;管理信息库;网络拓扑;SNMP + + 1 介绍 现代企业已经部署了复杂和强大的计算机网络。在公司这是一个基本工具用 来处理大量的信息和通信。网络上检测设备使其发挥最佳性能,及时地维修错误, 使网络结构更加合理,这是企业的基本要求的。因此,监控和保护网络实时地, 使通过网络管理系统稳定,高效的是非常重要的。目前流行的网络管理软件,如 HP 的 OpenView,IBM 的 NetView,思科的思科等。 2 SNMP 的概述 SNMP 是广泛使用的基于 TCP/ IP 协议的互联网络应用层管理协议。到目前 为止,它已经开发 SNMPv3 的,和它一直是事实上的行业标准。 基于 SNMP 的网络管理系统通常由 SNMP 代理,网络管理系统,SMI(管理信 息结构),MIB(管理信息库)[1]组成。代理接收请求,网络管理系统发送,响 应和发送 Trap 消息。网络管理系统通过 SNMP 管理​​代理的控制实体。MIB 是一 个数据库中的事实。这是一个通过 SNMP 管理​​的对象的集合,它提供了相应的 代理信息。代理(管理对象)是由树状结构。每个对象都有一个特定的对象类型 的对象标志,该对象标志唯一标志了一个对象值,由一串整数构成。SNMP 管理 程序(网络站)和代理进程(设备)之间的通信协议,使用 UDP 端口 161/162。 SNMP 支持轮询和事件驱动。它的 PDU 的支持至少 5 种类型,在表 1 中示出。 SNMP++是由 HP 公司基于 SNMP 的网络管理软件编程接口。它为开发人员提供 了一系列关于 SNMP 服务的 C ++类。SNMP++显示在图 Fig1 的参考模型。 SNMP++开发工具包具有以下优点。 (1) 底层的 SNMP 内部结构封装起来,如 ASN.1 语法和 BER 编码,降低开发 的难度。
(2) (3) 具有良好的程序的安全性,并管理 SNMP++和会话的资源,以避免内存 泄漏。此外,开发人员并不需要关注传输层的可靠性,因为 SNMP++提 供错误检查和自动重传超时机制。 它是跨平台的,便于携带。通过隐藏内部工作机制,在不同的平台上 SNMP++提供了一个统一的应用程序编程接口(API)。 3 系统设计与完成 系统的目的是,以通过网络管理确保网络的稳定性和高的效率。SNMP 的网络 管理系统的设计与实现是基于 VC++开发平台和 SNMP++ API,整体分为三个模块: 设备的性能管理模块,网络故障管理模块,网络拓扑结构检测模块。 然后它通过网络管理程序安装网络管理工作站来收集设备数据以及 SNMP 代 理程序安装在代理。数据收集过程如下: (1)设置 SNMP 包的数据项,比如包标签,SNMP 版本、社区的名字,PDU 标 签,RequestID(用于匹配请求和响应,SNMP 给每个请求分配全局唯一的 ID),OID (对象标示符)列表,并初始化 SNMP 库。 (2)根据误码率,SNMP 包编码成 ASN.1 格式。然后创建和打开 SNMP 会话和创 建 PDU,定义一个变量,接收响应包管理设备进行沟通代理。 (3)发送请求数据包,然后接收响应包,系统接收数据,由返回代理。 最后,它处理收集到的数据和显示通过图形。
图 2 显示了系统级的监控模块。 Fig2 System-level of monitor module(系统级的监控模块)
图 3 显示了结果的监控目标主机在局域网。 Fig3 the result of monitoring a host(监视主机的结果) 图 3(a)显示了 CPU 的利用率。这个水平轴代表时间,垂直轴代表利用率。图 3(b)显示了内存利用率。水平轴代表时间,纵轴代表了内存利用的大小。图 3 显 示了流程利用率(c)。 3.2 网络故障管理模块 该模块监控网络故障,和及时发现故障。然后它及时通知网络管理员故障信 息。
故障收集使用 Trap 结合 ping。Trap 是由代理进程启动。它向管理进程报告 代理流程的网络设备的故障信息。它采用异步模式,并监听 162 端口。但 ping 采用轮询。它设置一个计时器,可以探测网络设备在同一时间间隔。如果管理过 程在延迟时间之后没有收到响应它可能是一个网络故障。如果检测几次之后总是 不成功 (探测号由网络管理器给定),会报告错误给管理进程。 然后,分析和处理故障数据。提取Trap故障包从故障池,和解码Trap包基于误码 率。解码过程可以简单描述如下。虽然(解码完成) { 提取的下一个字节的内容; 通过字节的内容确定数据类型; 提取的下一个字节的内容; 通过字节的内容,计算字节的数据; 提取的字节的内容,其量是从上述计算数量得来的; 解释这些内容对应的数据类型; } 这些内容在误码率解码后将通过一系列的类进行分析。这些类继承父类命名 陷阱规则。陷阱规则定义了一个公共方法以解析。所有的孩子类继承陷阱规则覆 盖方法的解析。 3.3 网络拓扑探测模块 该模块主要获得相关信息关于网络拓扑通过 SNMP。MIB-II (RFC1213)是标 准的 SNMP MIB。它由许多不同的组组成。本文采用组包括系统组、接口组和 IP 组。 事实上,网络拓扑算法从 MIB 对象提取在 IpRouteTable,采用宽度优先遍历 算法来自动实现网络拓扑。 首先,选择一个路由器作为起始点拓扑探测,并将它添加到路由器队列。接下 来, 从路由器队列选择一个路由器作为当前路由器。通过 SNMP 阅读当前数据库 的 MIB,并从 MIB 数据库获取路由器的地址表。记录路由器的每个端口和 IP 地址, 并将它添加到路由器端口队列。然后, 从 MIB 数据库遍历路由器表的每个记录。 遍历一个记录的过程一样如下。 // direct connect if (ipRouteType == 3) { if (ipRouteMask is 255.255.255.255){ add connection information into connection queue; } else{ // connect with subnet(连接子网) // “and” operation, obtain subnet IP address (“与”操作得到子网的 IP 地址) ipSubnet=ipRouteDest & ipRouteMask; (IP 子网地址=IP 路由目的地地址&IP 路由网络掩码) add subnet information and connection information into subnet queue and connection queue; (添加子网信息和连接信息到子网队列和连接信息;) } if (ipRouterNextHop isn’t found) (如果没有找到 IP 路由器的下一跳){
add router into router queue; add router’s port into port queue; 添加路由器到路由器队列; 添加路由器的端口到端口队列; } } // indirect connect, connect with a router if (ipRouteType==4) { if (ipRouterNextHop isn’t found){ add router into router queue; add router’s port into port queue; } } 然后, 从路由器队列选择一个路由器作为当前的路由器,检测了网络的结构 拓扑直到路由器队列是空的。 由于路由器是多个端口,即多个 IP 地址,遍历必须避免多个 IP 地址的问题。 本文使用一个队列来解决它。当遍历路由器时,如果 IP 当前路由器的端口是在端 口队列,该端口已经遍历。否则,添加 IP 到端口队列,并遍历它。图 4 显示了网络 拓扑探测的结果。初始的 IP 地址是 202.118.19.254。 4 结论 图 4 网络拓扑检测的结果 SNMP 是被广泛使用,已经成为了行业标准。随着互联网的发展企业网络越 来越复杂。所以网络管理系统监测网络设备是非常重要的。 本文简要介绍了 SNMP 协议,设计并实现了一个基于 SNMP 监视 CPU,内存,网 络设备的进程(如服务器、路由器等) 和检测网络拓扑结构的网络管理系统。它 可以帮助网络管理员知道网络设备的运行状态和网络拓扑结构。当一个设备故 障,网络管理系统可以及时找到故障,警报和通知网络管理员。
分享到:
收藏