基于SNMP的网络监控系统研究与设计
3 总体描述及框架设计
3.1 系统核心
系统实现所涉及的核心问题分别如下:
(1)如何获取和绘制拓扑结构图,并合理地调整拓扑样式;
(2)同步引擎的合理调度,以及信息存储结构;
(3)功能的合理分类,以及对相关OID的分析、组织、建模;
(4)基础构建块的选择。
由于系统采用了分层开发,以及可扩展性等多方面的考虑,软件在逻辑上分为4层--持久层、基础层、业务层、表示层,基本的工作模式如图1所示。
3.2 存储模型
存储模型为"设备管理"以及相关的扩展应用提供持久化的机制,并为统计、分析等要求查询对比历史数据的需求提供基础。
对于数据库的选择,从成本上考虑,有Microsoft SQL Server Express、Microsoft SQL CE、MongoDB、NoSQL可供选择,而从部署上考虑有MongoDB、部分NoSQL、Microsoft SQL CE可选择,最后从性能上考虑,采用Microsoft SQL CE来支持存储模型。
经过持久后的数据可以在相对固定的时间内有效,在此基础上,进行统计、跟踪、分析等功能就会迅速许多,同时,网络的负荷也会明显降低。
3.3 领域逻辑设计
系统与SNMP网络交互的主要逻辑依赖于SNMP协议所传输的SNMP对象数据,SNMP对象又依赖于相关的MIB来描述其特性与结构。软件所需要的领域逻辑主要集中在对SNMP实体的操作上,但是SNMP的操作是对程序不友好的。也就是说,无法通过流畅的API来操作SNMP使之为软件所用。所以需要设计一种领域逻辑,将SNMP的特定领域转化为程序友好的领域。考虑图2所示的领域转化。
SNMP的操作原语被转化为对应的编程概念,使SNMP的领域完整地转化为程序设计的领域。这为AOP编程以及存储模型的扩展奠定了基础。
4 系统实现
4.1 环状权值分布
拓扑图的排序算法被叫"环状权值分布",主要是因为引入了设备在网络中 "权重"的概念。由于布局的主要目的是让主要设备能够分布且合理定位在屏幕上,所以拓扑布局的算法首先是找出那些"权重"最高的设备,并依此排序进行设备定位。算法主要的步骤有:
(1)设备按"权重"排序。系统主要面向的是路由及交换设备,所以对拓扑图最为敏感的信息就是"路由"信息。如果一个设备核心的路由数量高于其他的设备,则该设备就是所谓的"核心设备"。
(2)最高权重优先定位。步骤(1)已经确定了最为核心的设备以及按"权值"排序后的设备分组。最为核心的设备是第一组,它们将以屏幕正中央为圆心,均匀分布在某个半径的圆圈上。半径的确定取决于要定位的设备数量,数量越多半径值越大。当这些设备定位结束时,也就确定了此设备在屏幕中心点的角度(∠θ),此角度将作为下个步骤定位的依据。
(3)"卫星"设备布局。与核心设备相联接的设备都归类为该核心设备的卫星设备, "卫星"设备的具体分布算法如下:
假定有n个核心设备,那么每个核心设备的卫星设备只可以分布在360/n的扇形范围内,如图3所示。
图3中有3个核心设备,被分为A、B、C三个扇形区域,以R2为例,它的3个卫星设备就分布在B区域,且在B扇形内根据∠θ均匀分布,半径会以卫星设备的数量作相应的修正。
(4)绘制链路连线。核心设备区域的连线允许交错,因为这部分的连线几乎不太可能做到不交叉。由于分布是基于环的,所以连线即便有交错,问题也不会很严重。卫星设备的连线主要是对上一个设备的,这种情况下可以直连,如果卫星设备之间有连线,则可对卫星设备的布局会做一些小调整,尽量不出现连线的过度交叉。
此时如果发现x设备与z设备间有连线,就会根据屏幕上的空间对x或z的位置做一些小的调整,以让x与z的连线分布得更为合理。
4.2 MIB模块的实现
为命名方便,基于简单网络管理协议的网络监控系统简称为SNMS。根据MIB的命名方式,在1.3.6.1.4.1节点下自定义了一个名为Tute(888)的节点,在该节点下定义SNMS(1)节点。
定义了MIB中的对象标识符以后,就需要对软件只能够涉及到的、需要管理的对象进行划分,在此,将SNMS这个系统分为system、user和file三部分,分别定义为system(1)、user(2)和file(3),如图4所示。
4.3 Trap模块的实现
为了使软件在设备出现事件时能得到通知,在SNMP这个背景下就意味着需要一种能够接收Trap的机制。设备在自己所能够支持的事件范围内,通过定义不同含义的Trap报文,按照设备自身所配置的接收对象将Trap发送出去。
4.3.1 统一侦听Trap版本
SNMP协议不同的版本对应着不同的Trap格式。然而对SNMS自身来说,这些Trap的版本并没有什么意义,软件所需要的仅仅是必要的标识和对应标识的意义。所以需要一种机制将这些版本的Trap进行统一。
软件采用的方式是使用中间层来代理。使用TrapMonitor来侦听所有版本的Trap,通过不同的处理最终触
发TrapComing事件,并将处理之后生成的TrapInfoEventArgs传入,供订阅者使用。
4.3.2 Trap信息翻译
Trap包含的信息成百上千,若都由软件来解析其信息将是一件非常耗时且庞大的工程。况且由于SNMP自身的可扩展性,软件无法预测其后出现的新Trap定义,所以考虑这样一种机制:对Trap进行建模,将其核心抽象为一种可扩展可配置的模式。
这种机制使得软件可以轻松适应不同的场景,而且部署起来也很方便。软件自身也集成了Trap信息的配置功能,可以避免手动接触XML文件。
4.3.3 Trap过滤
如何过滤出有用的Trap信息非常关键,这是由系统的"管理"性质决定的。系统决定采用一种类似于网络ACL的做法,提出了白名单和黑名单的过滤模式。类似于Trap信息翻译,系统也采用了基于XML的做法,将过滤规则保存在更加灵活部署的XML文件中。这里白名单是指所有Trap到达后只显示名单中规则匹配的Trap;黑名单是指所有Trap到达后不显示规则匹配的Trap。
- 基于微控制器的web服务器设计(07-04)