网络故障管理专家系统的研究与实现本科毕业设计论文.doc
本科毕业设计论文题 目网络故障管理专家系统的研究与实现毕业 任务书设计论文一、题目网络故障管理专家系统的研究与实现二、指导思想和目的要求1. 指导学生综合运用所学的基础理论知识和专业技术知识,研究学习JAVA平台下SNMP网络程序的设计与开发技术以及Jess规则引擎;2. 学习和掌握利用各种资料,尤其是网络资源,分析和解决网络故障管理专家系统设计与开发中遇到的各种实际问题;3. 通过网络故障管理专家系统项目的设计开发,学习和掌握JAVA平台下设计与开发理论以及SNMP相关知识。三、主要技术指标1. 程序开发工具为Eclipse,页面开发工具为Dreamweaver,数据库为Oracle数据库,规则引擎采用基于Java的Jess规则引擎。2. 实现网络故障专家系统的规则制定以及故障分析。3. 实现的功能包括:网络故障规则的制定;网络故障规则的添加,修改,删除;网络故障告警信息的分析等。四、进度和要求1、 2007年12月26日到2008年1月31日:完成毕业设计开题报告做完。这期间,在分析了大量的文献资料后,决定采用以部分改良式的专家系统来部署整个系统。2、 2008年2月1日到2008年3月1日:主要完成了部分知识储备和部分技术的初步实施。上面系统中的四大模块:数据库;规则管理模块;告警服务模块;Web服务模块。1) 对于告警服务器模块:研究AdventNet公司的SNMP Java开发包,研究怎样通过使用开发包里的API来使管理站能与被管理站进行通信。这期间所有的trap信息接收及MIB信息的查询都是通过使用模拟器来实现的。2) 规则管理模块:研究Sandia National Laboratories出品的基于Java平台的规则引擎Jess系统。重点学习了怎样去写规则以及怎样使规则能够正常推理。3) 数据库部分:学习Oracle数据库的使用和管理。这阶段使用Oracle的数据库进行规则信息的输入,并通过规则管理模块使用JDBC与其进行通信。3、 2008年3月1日到2008年4月1日:对思科设备的告警信息进行归类及分析研究。4、 2008年4月1日到2008年4月17日:研究思科设备的规则信息结构。因为规则信息是需要不断的输入的,所以这个工作一直不断的进行下去。5、 2008年4月18日到2008年4月27日:完成关于思科设备在以太网网络中发送的告警信息的规则的制定。同时,正式使规则管理模块与数据库模块联动起来。这样,规则库管理模块就能够非常方便的调用数据库中的规则信息。6、 2008年4月28日到2008年5月4日:将告警服务模块的告警信息接收部分与规则库管理模块进行整合,同时可以使得三大模块可以同时运行,同步实施,相互作用。7、 2008年5月5日到2008年5月31日:完成设计的大部分模块,将本系统与实习单位的系统进行整合,并在实际网络中进行试运行。期间不断调试系统的bug及改善系统部分缺陷。接受部门的验收并为毕业论文的写作准备相关材料。之后开始用一周的时间进行毕业论文的写作。8、 2008年6月1日到2008年6月13日:科技论文翻译,毕业论文答辩准备。五、主要参考书及参考资料【1】AdventNet.AdventNet SNMP API 4文档 E. 【2】Sandia National Laboratories.Jess In Action E.Ernest Friedman-Hill.2008年2月。【3】MetaStuff. dom4j 1.6.1 API E. 【4】XML Networks.TRAP Objects for ciscoE 2008年3月。【5】Cisco Systems.SNMP Object NavigatorE .【6】W.Richard Stevents.TCP/IP详解 卷一:协议 M.机械工业出版社. 2007年11月。【7】李千目.一种基于自愈策略的网络故障诊断系统 J.仪器仪表学报. 2005年8月。【8】刘培奇.扩展产生式规则的网络故障诊断专家系统 J.西安交通大学学报.2004年8月。【9】薛军.基于专家系统的网络故障智能管理系统的设计和实现 C.中国计算机学会第1 2届网络与数据通信学术会议.2002年12月。【10】陈敏.网络故障诊断专家系统中知识库的设计 J.电子科技大学学报. 2005年12月。【11】杨广明.网络拓扑发现技术的研究与实现 C.中国计算机学会第12届网络与数据通信学术会议.2002年12月。学生 _ 指导教师 _ 系主任 _目 录摘 要IABSTRACTII第1章 绪论11.1 设计的目的和意义11.2 专家系统发展情况简介11.3 设计原理及规模介绍2第2章 理论分析32.1 SNMP技术及原理32.1.1 SNMP原理32.1.2 AdventNet SNMP API52.2 规则引擎及规则62.2.1 规则引擎的简介和原理62.2.2 Jess规则引擎72.3 页面开发92.3.1 MVC模式92.3.2 Java Servlet技术简介92.3.3 XML的应用11第3章 网络故障管理专家系统的分析与设计123.1 专家系统设计目标123.2 专家系统系统结构及功能需求123.3 专家系统需求分析133.3.1 专家系统需求描述133.4 专家系统功能模块143.4.1 Web服务器模块143.4.2 数据库模块153.4.3 规则管理模块163.4.4 告警服务器模块173.5 本章小结20第4章 网络故障管理专家系统的详细设计224.1 网络故障管理专家系统的环境224.1.1 开发和运行环境224.2 网络故障管理专家系统的具体实现224.2.1 Web服务器模块224.2.2 数据库模块的实现244.2.3 规则管理模块244.2.4 告警服务模块264.3 项目中的难点274.3.1 规则信息的收集274.3.2 规则知识294.4 本章小结30第5章 结论315.1 开发中遇到问题315.2 设计中的不足之处35致 谢36参考文献37毕业设计小结38摘 要专家系统是一个具有智能特点的计算机程序,它的智能化主要表现为能够在特定的领域内模仿人类专家思维来求解复杂问题。因此,专家系统必须包含领域专家的大量知识,拥有类似人类专家思维的推理能力,并能用这些知识来解决实际问题。它能解决特定领域的具体问题,但是需要大量与研究领域问题密切相关的知识;能对自身的工作过程进行推理,基于知识的问题求解方法,知识库与推理机分离等特点。本文关注的是网络故障管理专家系统,就是应用专家知识来判断和推理故障发生的原因等信息。着重进行了知识的采集,知识的存储,推理规则的制定等方面的研究。规则引擎(即知识引擎)采用的是基于Java的Jess规则引擎。整个设计的思路是:从系统的告警服务模块得到网络中的故障报警信息,通过在规则引擎中匹配规则,分析出故障的具体原因和处理方法。规则信息可以通过浏览器进行添加,修改和删除等操作。为了便于操作,规则使用标准的XML格式来定义。这样系统的规则管理模块和规则推理模块都可以对规则进行灵活的操作。关键词:专家系统,SNMP,Jess,告警信息AbstractExpert System is a smart part of the computer program, and it's intelligent to be able to mimic human experts in specific areas thought to solve complex problems. Therefore, the expert system must have a large number of experts knowledge in this field, and have similar reasoning ability with human thinking, and can use this knowledge to solve practical problems. It can solve the specific problems in specific areas, but needs a substantial amount of research areas closely related to the issue of knowledge, and it can work on their own process of reasoning, knowledge-based problem solving methods, knowledge base and the inference of mutual separation, etc. This paper is concerned on network fault management expert system, which uses the expert knowledge and reasoning mechanism to determine the reasons for the failure occurred, and other information. We focus on the acquisition of knowledge, storage of knowledge, reasoning and so on. Rules engine (that is, knowledge engine) uses a Java-based Jess rules engine. The whole design is in the idea: the trap information received from the network failure alarm module, match rules through the rules engine, and conclude the failure of the specific causes and treatment. Through the browser, user can add, edit and delete rules.In order to facilitate the operation, we use the standard rules of the XML format. This system of rules management module and rules reasoning module can be flexible in operating rules.KEY WORDS :Expert System,SNMP, Jess, Trap第1章 绪论1.1 设计的目的和意义网络管理包括故障管理、配置管理、安全管理、性能管理、计费管理等五大部分。其中故障管理是网络管理中最基本的也是最重要的功能之一。一个好的故障管理系统可以大大提高网络管理的工作效率。近年来,随着计算机网络规模的不断扩大,使得对整个网络的维护和操作变得相当复杂,一方面随着网络业务和网络规模的增加,对网管人员专业素质的要求也愈来愈高。另一方面,在网络的运营管理和维护中,当网络出现故障时,常常要求必须在最短的时间内,正确地判断出网络故障所在的位置、故障的类型和引起故障的原因等,以便及时对故障进行修复。然而,在实际的网络中,一个故障的产生,往往会引发起多个告警事件。而且,随着网络的复杂性和应用水平的不断提高,告警的种类和数量会越来越多,这些告警中有许多是相互之间关联的。这样,就要求对众多的告警信息进行相关性分析,快速进行网络的故障诊断和定位。本课题的目的是构建一个应用于实际网络系统中的,可以进行实时网络故障检测及定位的管理系统。它通过不断添加新的规则来丰富故障管理专家知识库。1.2 专家系统发展情况简介随着计算机、人工智能技术的发展和应用,对智能化网络管理的要求愈来愈高。目前实现智能化故障管理系统的技术有专家系统、神经网络、模糊理论等等。专家系统是人工智能应用研究最活跃和最广泛的课题之一,它是一个智能计算机程序系统,其内部具有大量专家水平的某个领域知识与经验,应用人工智能技术,根据某个领域一个或多个人类专家提供的知识和经验进行推理和判断,模拟人类专家的决策过程,以解决那些需要专家决定的复杂问题。虽然专家系统能够有效的模拟故障诊断专家完成故障诊断的过程,但是在实际应用中仍存在一定缺陷,其主要问题是知识获取的瓶颈问题、知识难以维护,以及不能有效的解决故障诊断中许多不确定因素,这些问题大大影响了故障诊断的准确性。神经网络是一种模拟人脑组织结构和人类认知过程的信息处理系统。它以其诸多优点,如并行分布处理、自适应、联想记忆等,在智能故障诊断中受到越来越广泛的重视,而且已显示出巨大的潜力。神经网络方法虽然有利于克服专家系统的知识获取瓶颈、知识库维护困难等问题,但它不适于处理启发性知识。而且,由于神经网络技术本身不够完备,它的学习速度慢,训练时间长以及解释功能弱,从而影响了神经网络的实用性。在故障诊断中,故障与征兆之间的关系往往是模糊的,因而诊断结果也必然是模糊的随着模糊理论的发展及完善,模糊理论的一些优点逐步被重视,如模糊理论可适应不确定性问题;其模糊知识库使用语言变量来表述专家知识。但是它也具有维护困难,不具备学习能力的缺点。本课题采用的专家系统技术,主要是通过专家在分析,归纳总结故障症状之后添加新的规则来获取新的知识。1.3 设计原理及规模介绍本设计是要构建一个具备推理功能的网络故障专家系统。它通过接收网络中发来的告警信息并匹配事先添加好的规则来判断故障的原因并得出故障处理的方案。本设计采用了基于Java的Jess规则引擎,采用分析特定网络设备的告警信息(本设计主要参考的是思科的设备)的方法来制定规则。主要的研究手段是通过官方网站及相关技术资料查找关于思科设备的告警信息,并总结出规律,制定规则。整个研究的实验期的网络设备包括一台管理站及一台作为被管理站的服务器,但该程序会应用于第四军医大学网络中心的部分网络中。第2章 理论分析2.1 SNMP技术及原理2.1.1 SNMP原理1、 SNMP协议简单网络管理协议(SNMP)是Internet组织用来管理Internet的网络协议,随着Internet所使用的TCP/IP协议族成为事实上的互连协议标准,SNMP也成为计算机网络管理方面大家实际遵循的标准。在SNMP管理模型中有三个基本组成部分:管理者(Manager),被管理代理(Agent)和管理信息库(MIB)。管理站一般是一个单机设备或一个共享网络中的一员,它是网络管理员和网络管理系统的接口,能将网络管理员的命令转换成对远程网络元素的监视和控制,同时从网上所有被管理实体的MIB (管理信息库) 中提取出信息数据。作为管理站,它还必须拥有能进行数据分析、故障发现等管理应用软件。整个管理站的管理工作是通过轮询代理来完成的。管理者可以通过SNMP操作直接与被管理代理进行通信,获得实时的设备信息,对网络设备进行远程配置管理或者操作;也可以通过对数据库的访问获得网络设备的历史信息,以决定网络配置变化进行操作。SNMP被管理代理指的是用于跟踪监测被管理设备状态的特殊软件或硬件,每个代理都拥有自己本地的MIB。实际上,SNMP的管理任务是移交给被管理代理来执行的。代理翻译来自管理站的请求,验证操作的可执行性,通过直接与相应的功能实体通信来执行信息处理任务,同时向管理站返回响应信息。MIB信息为网管中被管理的资源,而网络管理中的资源是以对象表示的,每个对象表示被管理资源的某方面属性,这些对象形成了MIB库。每个MIB变量记录了每个相连网络的状态、通信量统计数据、发生差错的次数以及内部数据结构的当前内容等。网络管理者通过对MIB库的存取访问,来实现五大管理功能:性能管理、配置管理、安全管理、故障管理和计费管理。2、 SNMP的五种消息类型SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request和Trap。(1) Get-Request 、Get-Next-Request与Get-ResponseSNMP管理站用Get-Request消息从拥有SNMP代理的网络设备中检索信息,而SNMP代理则用Get-Response进行消息响应。Get-Next-Request用于和Get-Request组合起来查询特定的表对象中的列元素。如:首先通过下面的原语获得所要查询的设备的接口数:iso org(3) dod(6) internet(1) mgmt(2) mib(1) interfaces(2) ifNumber(2)然后再通过下面的原语,进行查询(其中第一次用Get-Request,其后用Get-Next-Request):iso org(3) dod(6) internet(1) mgmt(2) mib(1) interfaces(2) ifTable(2)(2) Set-RequestSNMP管理站用Set-Request 可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。(3) TrapSNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述某一事件的发生。本论文中的接收的Trap信息主要是指一些网络故障信息。SNMP管理信息库MIB。管理信息库MIB指明了网络元素所维持的变量(即能够被管理进程进行查询和设置的信息)。MIB给出了一个网络中所有可能的被管理对象的集合的数据结构。SNMP的管理信息库采用和域名系统DNS相似的树型结构,它的根在最上面,根没有名字。3、 管理信息库的对象命名举例对象命名树的顶级对象有三个,即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。这种标识为对象标识符。图 2.1管理信息库对象名举例最初的结点mib将其所管理的信息分为8个类别。现在的mib-2所包含的信息类别已超过40个。应当指出,MIB的定义与具体的网络管理协议无关,这对于厂商和用户都有利。厂商可以在产品(如路由器)中包含SNMP代理软件,并保证在定义新的MIB项目后该软件仍遵守标准。用户可以使用同一网络管理客户软件来管理具有不同版本的MIB的多个路由器。当然,一个没有新的MIB项目的路由器不能提供这些项目的信息。这里要提一下MIB中的对象1.3.6.1.4.1,即enterprises(企业),其所属结点数已超过3000。例如IBM为11.3.6.1.4.1.2,Cisco为1.3.6.1.4.1.9,Novell为1.3.6.1.4.1.23等。世界上任何一个公司、学校只要用电子邮件发往iana-mibisi.edu进行申请即可获得一个结点名。这样各厂家就可以定义自己的产品的被管理对象名,使它能用SNMP进行管理。2.1.2 AdventNet SNMP APIAdventNet snmp API开发包是由美国AdventNet, inc公司开发的一个专门用于处理管理站与被管理站之间传递的SNMP信息的一个开发包。它是可以用来创建跨平台的Java的SNMP网络管理程序和基于Web的SNMP网络管理Applet程序的一组组件。它的主要特点是:1) 完全支持snmpv1,snmpv2c和SNMPv3的。2) MIB信息的装入。3) SNMP广播:广播SNMP数据包在整个网络中自动发现在网络中支持SNMP协议的设备。4) 提供高层次的bean组件,例如,snmptarget,snmptable,snmppoller,trapreceiver便于应用的开发。5) 数据库支持:提供可扩展存储的MIB定义和SNMPv3的配置数据在任何关联式资料库,例如,MySQL和Oracle(本程序所使用的数据库为Oracle)。6) MIB的浏览器:工具管理网络和系统组件。可以作为一个独立的应用程序来运行,也可以作为益而高基于Web浏览器的程序来运行。还有其它的一些别的特点。2.2 规则引擎及规则2.2.1 规则引擎的简介和原理专家系统是人工智能的一个分支,它模仿人类的推理方式,使用试探性的方法进行推理,并使用人类能理解的术语解释和证明它的推理结论。专家系统有很多分类:神经网络、基于案例推理和基于规则系统等。规则引擎是基于规则的专家系统的一部分,基于规则的专家系统(Rule Based Expert System-RBES)是专家系统中很重要的一个分支。RBES包括三部分规则库,事实库(也叫做工作内存),推理引擎,结构如图2.2所示:图2.2 基于规则的专家系统的结构图和人类的思维相对应,规则引擎存在两者推理方式:演绎法(Forward-Chaining)和归纳法(Backward-Chaining)。演绎法从一个初始的事实出发,不断地应用规则得出结论(或执行指定的动作)。而归纳法则是从假设出发,不断地寻找符合假设的事实。Rete算法是目前效率最高的一个Forward-Chaining推理算法,Drools项目是Rete算法的一个面向对象的Java实现。规则引擎的推理步骤如下:1、 将初始数据(fact)输入工作引擎。2、 使用类型匹配比较规则(rule)和事实(fact)。3、 如果执行规则存在冲突,即同时激活了多个规则,将冲突的规则放入冲突集合。4、 解决冲突,将激活的规则按顺序放入“议程”序列。5、 使用规则引擎执行“议程”序列中的规则。重复步骤2至5,直到执行完毕所有“议程”中的规则。2.2.2 Jess规则引擎同大多数专家系统工具一样,Jess的核心也是由事实库、规则库、推理机三大部分组成,并采用产生式规则作为基本的知识表达模式。在Jess中,事实包括简单事实和对象事实。简单事实就是一个描述事物的断言,而对象事实除此之外还封装了方法,可以接受外界信息改变自身的特征。这一概念本身并不是Jess首次提出的,ART-IM、CLIPS都支持这一概念。但Jess表达对象事实的方法确实别具一格:它用Java而非系统本身的语言来定义对象。在CLIPS 6.0中,对象事实通过系统本身的语句defclass和make-instance来定义,但在Jess中,类的定义由Java语言书写,编译通过后即可动态地加入系统中。用Java虚拟机编译通过后,通过defclass命令将该类加入系统,它就可以执行类似于CLIPS中对类的各种操作,如生成它的一个实例、调用它的方法等。由此可见,Jess可以方便地调用Java中的类库,使用Java中的各种数据结构和方法,从而具备其他系统不可比拟的优良的嵌入能力。Jess通过模式匹配语言对事实进行操作。在Jess中,模式匹配操作符的类型有很多,从可以同任意事实进行匹配的单一操作符到只能同满足特定约束值的事实进行匹配的复杂操作符。特别要指出的是,Jess中有“unique”条件元素,它告诉系统同该模式匹配的事实是惟一的。这样,当模式发现一条事实同它匹配后,就会停止对事实库的检索,在实际应用中,这可以将系统的性能提高2030,而CLIPS系统不支持这一条件元素。在Jess中,规则的表达形式沿用了CLIPS的语法结构,通过对规则前件和后件的限定,它可以支持内容丰富的模式匹配语言。另外,Jess支持面向过程的编程方式,它提供了一些语句来控制规则后件的操作流程,如使用ifthenelse和whiledo语句,这样它就能很有效地利用面向过程编程的优势。总之,Jess的这些特性使系统拥有很强的知识表示能力。Jess支持前向和逆向推理两种方式,前向推理同CLIPS的原理相同,逆向推理则是Jess不同于CLIPS的一个显著特征。在Jess的逆向推理中,规则仍采用ifthen结构,但是在逆向推理时,推理引擎执行的是前件没有得到满足的规则,这种行为常常被称为目标寻找。显然,Jess同时支持前向和逆向推理的特点使其推理能力得到了加强。推理的效率很大程度上依赖于匹配算法的效率。Jess通过实现Rete匹配算法来提供非常高效的前向和逆向推理。Rete算法利用了专家系统中时间冗余性和结构相似性这两个特点,有效地减少了用于匹配操作的次数。因此,当系统的性能是由匹配算法的质量决定时,Jess的优点将更为明显。应当指出的是,Rete算法是一个以空间换取时间的算法,所以,应用Jess时应当考虑内存的消耗。2.3 页面开发2.3.1 MVC模式MVC模式最早来源于Smalltalk程序设计语言中对界面的构造方法,包括三种类型:Model(模型)是应用对象,view(视图)是界面对象,Controller(控制器)是用户界面对用户输入的响应。MVC的目的是增加代码的重用率,减少数据表达,数据描述和应用操作的耦合度。 同时也使得软件可维护性,可修复性,可扩展性,灵活性以及封装性大大提高。Model表示应用的数据及操作这些数据的逻辑方法。任何和整个应用相关的持久性数据都放在模型中。View将模型的当前状态呈现给用户,具体的显示方法由视图负责,因此一个模型可以适用于多个不同的视图。在模型状态改变后,通过模型和视图之间的协议,视图得知这种改变并修改自己的显示。对于用户的输入,视图将它们交给控制器处理。Control负责交互,将用户输入的数据导入模型;它还利用用户的输入将应用转向其他视图。MVC模式在项目的页面实现部分使用。其中在项目文件夹“Management”下的jsp文件就是其中的视图,包“com.JessOraclePage”下的servlet文件就是其中的控制器,而包“com.JessOracle.model”下的文件就是模型。MVC模式的应用使得整个系统操作和应用层次分明,易于维护。2.3.2 Java Servlet技术简介1、 技术简介Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于Java编程语言的WEB服务器端编程技术,主要用于在WEB服务器端获得客户端的访问请求信息和动态生成对客户端的响应消息。Servlet技术也是JSP技术(另外一种动态网页开发技术)的基础。一个Servlet程序就是一个实现了特殊接口的 Java类,用于被支持Servlet的WEB服务器调用和运行,即只能运行于具有Servlet引擎的WEB服务器端。一个Servlet程序负责处理它所对应的一个或一组URL地址的访问请求,接收访问请求信息和产生响应内容。Applet是用于浏览器端的Java小程序,在浏览器端被解释执行,用于在HTML网页中实现一些桌面应用程序的功能,被称为“小应用程序”。Servlet是用于WEB服务器端的Java小程序,它在WEB服务器端被解释执行,用于处理客户端的请求和产生动态网页内容。源于Applet的命名,这种WEB服务器端的Java小程序就被命名为了Servlet,与Applet相对应,Servlet可以被称之为“小服务程序”。Servlet与普通java程序相比,只是输入信息的来源和输出结果的目标不一样,所以,普通Java程序所能完成的大多数任务,Servlet程序都可以完成。Servlet程序具有如下的一些基本功能:1) 获取客户端通过HTML的FORM表单递交的数据和URL后面的参数信息;2) 创建对客户端的响应消息内容;3) 访问服务器端的文件系统;4) 连接数据库并开发基于数据库的应用;5) 调用其它的Java类。2、 编写与编译Servlet程序一个Servlet程序就是一个在WEB服务器端运行的特殊Java类,这个特殊的Java类必须实现javax.servlet.Servlet接口,Servlet接口定义了Servlet容器与Servlet程序之间通信的协议约定。为了简化Servlet程序的编写,Servlet API中也提供了一个实现了Servlet接口的最简单的Servlet类,其完整名称为javax.servlet.GenericServlet,这个类实现了Servlet程序的基本特征和功能。Servlet API中还提供了一个专用于HTTP协议的Servlet类,其名称是javax.servlet.http.HttpServlet,它是GenericServlet的子类,在GenericServlet类的基础上进行了一些针对HTTP特点的扩充。显然,一个Java类只要继承了GenericServlet或HttpServlet,它就是一个Servlet。反过来说,要编写一个Servet类,这个类必须继承GenericServlet类或HttpServlet类。为了充分利用HTTP协议的功能,在一般情况下,都应让自己编写的Servlet类继承HttpServlet类,而不是继承GenericServlet类。查看HttpServlet类的帮助文档,可以看到其中有一个名为service的方法,当客户端每次访问一个Servlet程序时,Servlet引擎都将调用这个方法来进行处理。service方法接受两个参数,一个是用于封装HTTP请求消息的对象,其类型为HttpServletRequest,另一个是代表HTTP响应消息的对象,其类型为HttpServletResponse。调用HttpServletResponse对象的getWriter方法可以获得一个文本输出流对象,向这个流对象中写入的数据将作为HTTP响应消息的实体内容部分发送给客户端。2.3.3 XML的应用XML(ExtensibleMarkupLanguage,可扩展标记语言)是SGML(Standard Generalized Markup Language,标准通用标记语言)的子集。其主要优势在于它能够表达数据的语义信息,因为XML基于开放的文本格式,所以它不需要改变现有的网络,而同HTML一样使用HTT'P协议进行文本文档的传送。而且,因为XML将数据显示与数据内容分离,所以XML数据发送到客户端后,可以使用多种方式显示。第3章 网络故障管理专家系统的分析与设计3.1 专家系统设计目标本系统的目标是要设计一个可以应用到实际网络拓扑结构中的能够实时检测网络故障并分析网络故障原因的故障管理系统。该系统能够通过由管理员不断的添加网络故障规则来丰富故障知识库。该知识库的规则用于匹配系统接收到的故障告警信息,并通过推理得出故障原因。其中需要注意以下两点:1、 系统能够实时接收来自网络拓扑中的故障告警信息,并将其处理发送到专家库的规则引擎部分进行规则匹配。2、 管理员可以通过登录来对知识库中的规则进行添加、删除、修改等操作,以此来完善、丰富知识库。3.2 专家系统系统结构及功能需求整个系统包含Web服务器模块、数据库模块、规则库管理模块、告警服务模块等四部分。图3.1是本毕业设计系统结构图:图3.1 网络故障管理专家系统的结构图1、 web服务器模块:管理员通过web服务器模块查看告警服务模块传来的故障诊断信息,以及时对故障进行排查。管理员或专家能通过web服务器模块录入设计好的规则,也可以对系统自动学习到的规则进行确认并自动录入到规则库中。该模块主要使用Servlet + JSP + Java Bean技术实现。2、 数据库模块:数据库里面存储了规则信息、网络拓扑信息、告警记录及网络故障日志等信息。规则信息是判断网络故障的依据。网络拓扑信息的获得由管理服务器的告警服务模块通过对网络设备进行轮询获得。告警记录来于网络设备发送的SNMP告警信息。网络故障处理日志包括每次发生的故障、处理方法及结果,主要是为了便于以后网络维护和故障分析。3、 规则库管理:规则库管理模块通过JDBC访问数据库中的规则信息。当专家在分析故障症状之后添加一条新的规则时,由规则库管理系统将该信息添加到数据库中。另外,规则库管理模块自动学习到的规则在由管理员或者专家确认后自动录入到数据库中,成为新的规则。本课题的规则引擎及规则的表达形式是基于Jess(java expert system shell)来开发的。4、 告警服务模块:该模块实现与外部设备的交互,主要包括两部分:一部分负责向网络中的设备发送轮询信息及接收相应的反馈信息,并对该信息进行处理,从而获得网络中设备的运行状态,网络拓扑等信息;另一部分,当网络中的设备或拓扑出现异常时,该模块自动接收来自网络的告警信息,结合上一部分轮询获得的信息,调用规则库管理模块获得相应的规则对告警信息进行过滤、分析,得出该故障的发生原因及定位。管理员可以通过浏览器及时准确的发现并解决故障。3.3 专家系统需求分析3.3.1 专家系统需求描述作为一个应用于实际网络中的故障管理系统,它的主要需求就来自于网络管理员对于网络故障检测和处理的需求。管理员需要能够实时接收到故障信息并得出分析解决方案。作为一个能够不断丰富的专家知识库,管理员可以通过登录规则管理模块对规则信息进行添加,修改和删除等操作。3.4 专家系统功能模块3.4.1 Web服务器模块此模块的架构采用B/S(Browser/Server)模式。该模块包括浏览器从Web服务器上获得故障信息,得到处理意见,然后再去处理故障。网络管理专家或者管理员可以通过浏览器调用规则库管理模块对规则进行添加、删除和更新等操作。我们采用Push方式使故障信息从Web服务器上push到管理员或者专家的浏览器上,并通过报警提示音来提醒管理员或者专家及时处理故障问题。图3.2是对于Push机制实现的示意图。Push机制的实现:1、 Push机制客户端实现客户端是一个Applet类文件,当浏