网络故障监控系统设计探讨
2011-07-03程敏
程 敏
(常州市广播电视大学 信息工程系,常州 213001)
0 引言
针对网络建设中和维护中面临的种种挑战和问题,电信运营商急需找到一个合理的方案,通过这个方案在复杂的网络结构中找出当前网络可能存在的问题,辅助网络结构和网络设备的优化。本论文提出的网络监控系统能够帮助运营商实时监控网络的性能,辅助诊断网络故障发生的原因,帮助提高IP网络的QoS能力[1,2]。这在当前越来越多的企业与网络运营商之间签订服务等级协议(SLA)的大背景下,本论文的网络监控系统的现实意义无疑是重要的。
1 监控系统系统设计
1.1 软、硬件环境
本系统开发、测试过程中所需要的软硬件环境是不太一样的,开发阶段主要涉及到软件本身的功能开发和系统测试;测试阶段以模拟测试场景,构造测试例为主。软件开发阶段,其代码与测试工作主要集中在单一或者若干台PC之间;测试阶段所需的部分测试环境实验室环境是无法模拟出来的,因此需要依赖现网的检验。
测试阶段所需的软、硬件环境如表1所示。
1.2 系统体系结构
本系统是一个融合了软件、数据库和测试仪的综合监控系统。
从系统结构可以看出,从功能上分类,监控系统的分为三块[3]。第一,监控控制模块;第二,数据采集和数据库模块;第三,数据结果分析模块。监控控制模块是本系统的核心部分,也是最复杂的部分。按照功能的细分,该模块又分为中央控制模块和局端控制模块两个字模块。其中中央控制模块控制各个节点发送指定的测试流量,收集测试结果反馈给数据操作模块,此模块同时提供网管功能,负责各个局端控制程序的管理工作。局端控制模块根据监控中的作用不同,可能是一个软件控制器,也可能是一台网络测试仪;该模块的作用是主动发送监控流量到网络中或者被动监控测试流量进行环回处理。
表1 测试阶段需要的软硬件环境
数据采集和数据库模块是本系统的数据操作模块,该模块通过数据收集服务提取中央控制模块传送的测量结果和监听状态数据,将这些数据写入到数据库的指定库表中。
结果分析模块是本系统监控结果展现和MIB信息上传部分,该模块实时提取数据库中的结果,使用图表或者文字的形式,显示当前各个节点的监控结果,同时定义告警类别,上传告警结果。
1.3 系统网络架构
通常一个典型的IP网的网络拓扑是由大量的设备如路器、交换机、HUB、防火墙以及主机等构成的。其中,外围的部分为接入层部分,各种网络设备通过不同的接入技术访问网络;中间层为汇聚层,该层的网络设备负责将来自于接入层的各种服务请求;内部为核心层,核心层主要是网络的骨干部分,核心网是整个网络的总枢纽,通过它将各个子网连接起来。监控系统所需要监控的网络节点.可能来自于核心网、汇聚网、接入网中的任何一个节点。无论这些节点所使用的接入方式和拓扑结构如何,只要其支持IP技术,监控节点就可以部署在其中。
监控系统的中央监控子系统部署于核心网的中心,其他的监控采集子系统部署在汇聚网或者接入网节点上;各个监控节点与节点之间,可以互发监控数据进行监控;中央监控子系统与各个监控节点之间也可进行监控数据的传输。这种分布式的系统结构,与网络的分布式特点相切合。这种架构中,客户端与服务器端的概念不再明显。
1.4 数据库设计
本系统设计之初,比较了Oracle,SqlServer和MySql三种关系型数据库。本系统中的数据存储主要以测量数据和告警信息为主,同时数据库的交互只需要通过一个数据收集服务程序即可完成,因此最终决定采用MySql数据库。该数据库可跨Windows和Unix两大平台,并且是免费的,在百万条数据的处理上速度仍然较快。虽然监控系统每一秒钟都会产生多条新的测量、告警数据,但是通过数据表项的分类,程序内部定期处理无效的数据,同时对数据进行汇总整理,该数据库系统仍然能够满足成千上万的监控节点的实时测量数据的存储上的性能要求。
本系统的数据库表主要有监控节点实时数据表,实时告警信息表,故障知识库表,监控数据日表,监控数据月表,监控数据年表,告警信息日表,告警信息月表,告警信息年表等。这里简要列出最核心的两张表的数据字典,其他的相关数据库表和存储过程、索引、视图等信息不在论文中表述。
2 监控系统详细设计分析
2.1 局端监控子系统
局端监控子系统是部署于网络节点上用来监听和生成测试数据并能生成测量结果的程序软件。该子系统提供两种工作模式:主动模式和受控模式。主动模式下,操作人员可直接操作该软件,配置测试流量参数和监听参数;受控模式下,该软件只接受中央监控子系统的操作和管理。这种将监听和流量发送、测量功能放在局端监控子系统中实现的做法,可以大大减少中央监控子系统的资源开销,同时测试流量的构建上实现了任意性;这个设计与一直提的“瘦客户机,瘦服务器"理念是吻合的。
首先,该子系统的开发上采用多层结构进行实现。这样做的好处是将业务与展现进行了分离,各子模块的独立性增强,对开发人员的分工上更加明确,易于软件项目的管理和系统的集成。
对于流量的发送和结果提取功能的流程图来看,将流量的发送和处理定义为两个类,通过各自的类方法实现对流量的发送、接收和处理。
通过对windows的进程和线程的调度机制和执行效率研究发现,进程可以完整的获得资源,而线程只能获得进程下的少量资源(例如寄存器或者栈等)。进程相对易于管理和控制,线程的系统开销相对进程小很多,两者均具备并发性。利用这一特点,为突破发包速率上的限制,提升监控系统发包效率,测试流的发送采用进程方式进行发包,这样对系统资源的占用可尽量较多;而测试流的统计和分析上,使用线程来实现即可达到效率上的匹配。这样做的好处是最大限度利用当前系统的资源,同时保证系统的运行稳定、可靠。同时,通过代码调整、空间效率和编译的优化,对瓶颈有很大的缓解。
另外,在线程的管理上,启动一个监测线程的线程,定期查看各个流统计、分析线程的状态,若发现当前线程状态已经停止或者异常,重启动该线程,这样保证每一测试流对应的测量线程均能持续运行。这一机制类似于Unix系统下的进程管理机制。
对环回时延的处理机制上,当监控系统接收到监控数据时,立即打上接收时间戳,这样做的好处是避免时延的处理上引入了上层协议响应的时延。
2.2 中央监控子系统
中央监控子系统是部署于整个监控网络中央的监控管理系统,中央监控系统最主要的功能是能够管理所有局端监控子系统。这些管理功能包括控制各个监控节点程序的启动、停止,控制监控节点程序的测试流量和监听流量的配置、启动、停止、测量等。
在局端监控子系统的设计描述中提出的为“瘦服务器”模式,因此中央监控子系统并不直接参与测试流量的调度、监听和测量分析操作,这一模式也是部署中央监控子系统本身的要求。在本文的设计中,中央监控子系统既能部署于一台服务器上,也能部署于一台高性能PC上,使得整个监控方案的实现成本大大降低。从技术实现角度考虑,无论是高性能PC还是服务器,其硬件架构都是冯.诺依曼体系结构,这种结构不利于网络流量的调度,因此流量的发送和测量功能不能在中央监控子系统中实现。
在中央监控子系统与局端监控子系统在测试控制上的交互过程中,本子系统中通过SNMP协议进行管理各个局端监控子系统的功能,一个操作为get-request操作,另外一个为trap操作,通过这两个动作可实时掌握每个节点程序的状态。
2.3 结果采集与分析子系统
结果采集与分析子系统是整个监控系统的数据处理和展现部分。该子系统周期性的提取数据库中的测量数据,根据设定的告警阀值,返回告警结果,同时可将告警结果上发到网管系统或者指定的业务平台中。最后,该子系统提供统计报表的自动生成功能和对数据库的自动清理和备份功能。
综合来说,结果采集与分析子系统的功能定义如下:提供实时和按照指定周期进行结果数据的提取和展示功能;提供告警提示和告警结果分析功能;提供定期监控结果统计报表自动生成功能;提供SNMP接口,实现与网管系统或业务平台的整合功能;提供数据库的监测和自动维护功能。
在上述功能中,数据库的维护主要通过存储过程的定期运行来实现;与其他系统的对接上,通过SNMP协议的查询功能即可实现数据的上传。本部分实现相对复杂的部分就是故障分析功能,这一功能要求系统能够根据测量结果准确的给出故障的原因。在实际的故障分析中,通常很难通过一个现象或者结果精确的给出故障原因,这就要求故障原因与故障现象的对应关系上能够模糊匹配,同时故障库又具备学习功能,能够不断的完善故障分析逻辑。
3 结束语
在网络性能监控过程中,可以将本系统的局端监控子系统任意放置在接入网或者汇聚网的各个节点上,安装过程简单无需做任何配置。另外,通过结果采集与分析子系统中开放的接口和数据库表,通过SNMP协议将告警结果信息库直接传递到网管系统。一方面可充分利用网管系统在短信通知和故障定义上的完备性,另一方面实现了与已有系统的整合。对于网络故障监控工作发展具有一定帮助。
[1] 张强, 陈琳, 龚正虎, 等. 分布式网络故障管理系统实现技术研究[J]. 计算机工程与科学, 2006, 28(5).
[2] 李宏建, 徐明, 李洋. 无线Mesh网络入侵检测关键技术研究[J]. 计算机工程与科学, 2009, 31(7).
[3] 杨岿, 杜泽鳌, 李兵. 结合网络测试仪器分析判断网络故障[J]. 微电子学与计算机, 2006, 23(z1)
[4] 李学峰, 李彩清, 王文杰. 网络故障监测中多智能Agent模型的研究与实现[J]. 微电子学与计算机, 2007, 24(1).