宋 毅,焦賢龍
(1.95661部隊 重慶 400000;2.國防科技大學(xué) 信息系統(tǒng)與管理學(xué)院,湖南 長沙 410073)
基于Jess和SNMP的智能網(wǎng)絡(luò)故障管理系統(tǒng)設(shè)計與開發(fā)
宋 毅1,焦賢龍2
(1.95661部隊 重慶400000;2.國防科技大學(xué) 信息系統(tǒng)與管理學(xué)院,湖南 長沙410073)
當前網(wǎng)絡(luò)故障管理系統(tǒng)正朝著自動化智能化的方向發(fā)展。為了提高傳統(tǒng)網(wǎng)絡(luò)故障管理系統(tǒng)的智能化水平,基于專家系統(tǒng)規(guī)則引擎Jess和SNMP協(xié)議,設(shè)計了一個智能網(wǎng)絡(luò)故障管理系統(tǒng)。該系統(tǒng)可實時監(jiān)控被管網(wǎng)絡(luò)設(shè)備,采用獨立模式或者與網(wǎng)管人員交互模式進行故障推理診斷;若故障診斷結(jié)果表明某故障可由系統(tǒng)自動排除,則詢問網(wǎng)管人員是否利用故障恢復(fù)模塊自動排除。文章最后探討了系統(tǒng)開發(fā)使用的開發(fā)環(huán)境與關(guān)鍵技術(shù)。由于采用了專家系統(tǒng)技術(shù),該系統(tǒng)能夠顯著提高網(wǎng)絡(luò)故障管理能力和效率。
網(wǎng)絡(luò)故障管理;專家系統(tǒng);Jess;SNMP
隨著信息技術(shù)和網(wǎng)絡(luò)技術(shù)的快速發(fā)展,計算機網(wǎng)絡(luò)正朝著大規(guī)?;徒Y(jié)構(gòu)高度復(fù)雜化方向發(fā)展,網(wǎng)絡(luò)資源呈現(xiàn)出異構(gòu)性和動態(tài)性,多設(shè)備、多介質(zhì)、多協(xié)議已成為網(wǎng)絡(luò)的一大特征。計算機網(wǎng)絡(luò)發(fā)生故障是常見的,意外故障在某些重要的時候可能會對生產(chǎn)和生活帶來巨大的損失和負面影響。然而由于當前網(wǎng)絡(luò)的復(fù)雜性、異構(gòu)性,導(dǎo)致當故障發(fā)生時,往往不能輕易、快速地利用傳統(tǒng)網(wǎng)絡(luò)故障管理系統(tǒng)確定故障所在的位置和原因,需要網(wǎng)絡(luò)管理人員較高的網(wǎng)絡(luò)技術(shù)水平和豐富的排故經(jīng)驗,因而如何提高網(wǎng)絡(luò)故障管理系統(tǒng)的智能性已成為人們關(guān)注的焦點。專家系統(tǒng),也被稱為基于知識的系統(tǒng),能夠有效運用領(lǐng)域?qū)<叶嗄昀鄯e的有效經(jīng)驗和專業(yè)知識,從而解決需要領(lǐng)域?qū)<也拍芙鉀Q的問題。將專家系統(tǒng)技術(shù)引入網(wǎng)絡(luò)故障管理系統(tǒng),將極大地提高網(wǎng)絡(luò)故障管理能力和效率。
基于以上考慮,文中基于專家系統(tǒng)技術(shù)、專家系統(tǒng)規(guī)則引擎Jess和SNMP協(xié)議設(shè)計了一個網(wǎng)絡(luò)故障管理系統(tǒng)。該系統(tǒng)可以及時發(fā)現(xiàn)網(wǎng)絡(luò)中發(fā)生的故障并嘗試找出原因。系統(tǒng)可以自動排除的故障可由故障恢復(fù)模塊進行排除;若故障類型是系統(tǒng)不能自動排除的,則通知網(wǎng)管人員由網(wǎng)管人員手動排除。
1.1SNMP協(xié)議
SNMP協(xié)議(Simple Network Management Protocol,SNMP)是一種負責(zé)管理和監(jiān)控網(wǎng)絡(luò)設(shè)備及其功能的協(xié)議,使用UDP協(xié)議傳送報文。SNMP協(xié)議是基于管理工作站/代理模式的,管理工作站是運行網(wǎng)絡(luò)管理程序的計算機,代理是運行在被管網(wǎng)絡(luò)設(shè)備上的進程,被管網(wǎng)絡(luò)設(shè)備可以是交換機、路由器、服務(wù)器和網(wǎng)絡(luò)打印機等[1]。SNMP協(xié)議的主要內(nèi)容可以分為管理信息結(jié)構(gòu)(SMI)、管理信息庫(MIB)和通信協(xié)議三大部分。其中MIB遵循SMI規(guī)范,定義具體的管理信息,通信協(xié)議主要內(nèi)容分別在SNMPv1、SNMPv2和SNMPv3等標準中定義,不同版本中的通信協(xié)議操作和通信協(xié)議安全機制不同[2]。
1.2專家系統(tǒng)
專家系統(tǒng)是一個存儲有大量專業(yè)知識與經(jīng)驗的、用于模擬人類專家解決領(lǐng)域問題的計算機程序系統(tǒng)[3]。專家系統(tǒng)主要由知識庫、知識獲取機構(gòu)、推理機、綜合數(shù)據(jù)庫、解釋機構(gòu)和人機界面等六個部分組成。其中知識庫用于存儲問題求解需要的領(lǐng)域?qū)<业闹R和經(jīng)驗。知識獲取機構(gòu)實現(xiàn)把知識從人類專家或其他知識源那里轉(zhuǎn)換到知識庫中的功能。推理機是專家系統(tǒng)中進行知識推理的部件,它通過反復(fù)匹配知識庫中存儲的規(guī)則,從而得到問題求解結(jié)果。綜合數(shù)據(jù)庫用于存儲推理所需的原始數(shù)據(jù)、中間結(jié)果和最終結(jié)論,一般用于數(shù)據(jù)的暫時存儲。解釋機構(gòu)用于向用戶解釋專家系統(tǒng)的行為,并回答用戶提出的問題。人機界面是系統(tǒng)與用戶進行交流的接口,使系統(tǒng)能夠向用戶輸出詢問、推理結(jié)果及相關(guān)解釋,使用戶能夠輸入信息、回答系統(tǒng)提出的問題。
1.3Jess專家系統(tǒng)規(guī)則引擎
Jess是一個使用Java編寫的專家系統(tǒng)規(guī)則引擎,它以CLIPS專家系統(tǒng)外殼為基礎(chǔ),采用產(chǎn)生式規(guī)則作為基本的知識表達模式,是可用的最快的規(guī)則引擎之一。Jess將專家系統(tǒng)的開發(fā)過程與功能強大的Java語言結(jié)合了起來,它強大的腳本語言能夠訪問所有的Java API。Jess包括一個基于優(yōu)秀的Eclipse開發(fā)平臺的全功能開發(fā)環(huán)境,這個開發(fā)環(huán)境通過一組Eclipse插件提供。
Jess使用一個增強版本的Rete算法來處理規(guī)則[4]。Rete算法是由美國卡耐基·梅隆大學(xué)的Charles L.Forgy于1979年發(fā)表的博士論文中提出的,此后經(jīng)過幾次改進[5]。Rete算法解決了規(guī)則的推理機制和匹配效率問題,是規(guī)則引擎模式匹配算法中效率最高的算法之一。該算法的基本思想是將之前模式匹配過程中的信息保存在一部分內(nèi)存空間中,即通過犧牲這部分內(nèi)存空間來保存并充分利用之前模式匹配過程中的信息,從而提高算法整體的匹配效率,達到大幅降低計算量的效果[6]。
2.1系統(tǒng)結(jié)構(gòu)
網(wǎng)絡(luò)故障管理是網(wǎng)絡(luò)管理的五大功能之一,提供對網(wǎng)絡(luò)的異常運行情況進行檢測、隔離和糾正的一組功能。網(wǎng)絡(luò)故障管理的功能直接關(guān)系到被管理網(wǎng)絡(luò)的可用性和可靠性,一般分為三個步驟:故障檢測、故障診斷和故障恢復(fù)。前兩個步驟通常又被稱為故障定位過程。一個實用的網(wǎng)絡(luò)故障管理系統(tǒng)至少需要具有以下幾個功能:1)隨時監(jiān)控網(wǎng)絡(luò)狀態(tài)及其變化情況,捕獲網(wǎng)絡(luò)中發(fā)生的故障;2)分析判斷故障類型、故障原因以及故障源;3)需要時向用戶告警或者提交故障報告,以輔助用戶排除故障。
根據(jù)網(wǎng)絡(luò)故障管理的特點,設(shè)計了一種基于專家系統(tǒng)技術(shù)、專家系統(tǒng)規(guī)則引擎Jess和SNMP協(xié)議的智能網(wǎng)絡(luò)故障管理系統(tǒng)。系統(tǒng)基于B/S結(jié)構(gòu),用戶界面由瀏覽器來呈現(xiàn),將系統(tǒng)功能實現(xiàn)的核心部分集中到服務(wù)器上,系統(tǒng)結(jié)構(gòu)如圖1。
圖1 系統(tǒng)結(jié)構(gòu)
2.2系統(tǒng)主要模塊
該系統(tǒng)主要由SNMP與Telnet操縱模塊、故障檢測模塊、基于Jess引擎的故障診斷模塊、故障恢復(fù)模塊和知識庫維護模塊等五大模塊組成。
1)SNMP與Telnet操縱模塊。SNMP與Telnet操縱模塊包含供故障檢測模塊和故障恢復(fù)模塊使用的一些公共類,該模塊主要功能包括:①向被管網(wǎng)絡(luò)設(shè)備發(fā)出SNMP查詢、設(shè)置請求;接收被管網(wǎng)絡(luò)設(shè)備發(fā)來的SNMP應(yīng)答和Trap消息。②Telnet連接被管網(wǎng)絡(luò)設(shè)備,通過Telnet連接發(fā)送命令給被管網(wǎng)絡(luò)設(shè)備,讀取命令執(zhí)行結(jié)果,結(jié)束Telnet連接。即實現(xiàn)了Telnet操作的自動化。
2)故障檢測模塊。故障檢測模塊的功能:①每M秒(變量M可由網(wǎng)管人員設(shè)置)向各被管網(wǎng)絡(luò)設(shè)備發(fā)出一組SNMP查詢和Telnet查詢(優(yōu)先選擇SNMP查詢,因為速度更快),并接收查詢結(jié)果。②實時接收各被管網(wǎng)絡(luò)設(shè)備通過SNMP與Telnet操作模塊發(fā)來的Trap消息。③故障檢測模塊判斷上述查詢結(jié)果或Trap消息所來自的被管網(wǎng)絡(luò)設(shè)備是否發(fā)生故障。若發(fā)生故障,則將相關(guān)信息發(fā)送到基于Jess引擎的故障診斷模塊。
3)基于Jess引擎的故障診斷模塊。故障診斷模塊收到故障檢測模塊發(fā)來的故障信息后,首先判斷該故障是否屬于可推理類型,若是則利用Jess引擎進行推理(推理過程中可能需要與用戶進行交互以獲取需要的事實),并得出故障診斷結(jié)果。然后根據(jù)故障診斷結(jié)果在數(shù)據(jù)庫中查找這種類型故障的恢復(fù)策略。若未找到,則通知用戶故障診斷結(jié)果,從而輔助用戶診斷和排除故障;若找到了,則判斷找到的故障恢復(fù)策略是否可以由系統(tǒng)自動恢復(fù)(即通過運行一組故障網(wǎng)絡(luò)設(shè)備命令是否可排除該故障)。若該故障可由系統(tǒng)自動恢復(fù),則詢問用戶是否執(zhí)行故障自動恢復(fù),如果用戶同意系統(tǒng)自動恢復(fù)故障,則將故障診斷結(jié)果和恢復(fù)策略發(fā)送到故障恢復(fù)模塊進行故障自動恢復(fù)[7][8]。整個推理過程全部在用戶界面中顯示出來并記錄到數(shù)據(jù)庫中,便于用戶實時監(jiān)控故障診斷過程或者查詢分析歷史故障診斷過程。
該模塊具體功能如圖2所示。
圖2 故障診斷模塊
4)故障恢復(fù)模塊。收到故障診斷模塊發(fā)來的故障診斷結(jié)果和恢復(fù)策略后,故障恢復(fù)模塊將收到的故障恢復(fù)策略格式化成一組具體的網(wǎng)絡(luò)設(shè)備命令,并利用SNMP與Telnet操縱模塊建立與故障網(wǎng)絡(luò)設(shè)備的Telnet連接,遠程執(zhí)行這些網(wǎng)絡(luò)設(shè)備命令,從而恢復(fù)這種通過運行一組被管網(wǎng)絡(luò)設(shè)備命令即可排除的故障[7]。
5)知識庫維護模塊。該模塊負責(zé)管理維護知識庫中的知識,包括知識查詢、知識增加、知識修改和知識刪除等功能,并負責(zé)維護知識的完整性和一致性。可通過兩種方式來維護知識庫:利用Jess開發(fā)環(huán)境和通過本系統(tǒng)用戶界面。
3.1系統(tǒng)開發(fā)環(huán)境
系統(tǒng)基于JavaEE技術(shù)開發(fā),JavaEE用于開發(fā)、部署和管理面向Web的、以服務(wù)器為中心的N層結(jié)構(gòu)企業(yè)級應(yīng)用,它是一個基于標準的企業(yè)級平臺。選用Eclipse作為系統(tǒng)開發(fā)工具,Eclipse是一種可擴展開源開發(fā)平臺,其自身只是一個框架和一組服務(wù),通過插件組件來構(gòu)建開發(fā)環(huán)境。為人熟知的 Java開發(fā)工具 (Java Development Tools,JDT)便是一組Eclipse插件,為Eclipse平臺增加了全特性Java集成開發(fā)環(huán)境的能力。選取Tomcat作為Web服務(wù)器。數(shù)據(jù)庫選用SQL Server 2008數(shù)據(jù)庫。使用JDBC連接數(shù)據(jù)庫,JDBC是一組標準的Java語言中的接口和類,使用這些接口和類,Java可以訪問各種不同類型的數(shù)據(jù)庫。使用的Jess引擎為7.1版本。
3.2系統(tǒng)開發(fā)框架
系統(tǒng)開發(fā)框架使用 Struts2框架,Struts2框架是基于MVC(Model View Controller)模式的Web應(yīng)用框架。MVC模式體現(xiàn)了分層設(shè)計的思想,把一個應(yīng)用程序的輸入層、業(yè)務(wù)處理層和控制流程層按照View、Model和Controller的方式實現(xiàn)了分離,并分別承擔(dān)不同的任務(wù)。Struts2能夠在MVC的各個部分為開發(fā)過程提供相應(yīng)幫助,基于Struts2開發(fā)的Web應(yīng)用自然就能實現(xiàn)MVC[9]。
3.3基于Jess引擎的故障診斷模塊的開發(fā)
要使用Eclipse開發(fā)基于Jess引擎的故障診斷模塊,還需要搭建JessDE(The Jess Developer's Environment)開發(fā)環(huán)境。JessDE是作為一組Eclipse集成開發(fā)環(huán)境的插件來提供的。搭建JessDE開發(fā)環(huán)境過程為:退出Eclipse,將從官網(wǎng)上下載的Jess文件夾中的Eclipse文件夾下所有壓縮文件解壓縮到Eclipse SDK版本的安裝根目錄即可。注意JessDE僅可工作于Eclipse SDK版本中。
基于Jess引擎的故障診斷模塊由Java語言開發(fā),通過將Jess引擎嵌入到Java程序中來實現(xiàn)故障推理診斷功能。jess. jar類庫中的jess.Rete類就是規(guī)則引擎本身。將Jess引擎嵌入到Java應(yīng)用模塊中,只需創(chuàng)建一個或多個jess.Rete對象并適當?shù)夭倏v它們。每一個jess.Rete對象代表一個獨立的推理引擎,一個程序可以包括任意數(shù)量的引擎,每個引擎可以工作于不同的線程中[4]。
3.4SNMP與Telnet操縱模塊的開發(fā)
采用開源面向?qū)ο蟮挠糜?Java開發(fā)的 SNMP API SNMP4J來實現(xiàn)SNMP協(xié)議。SNMP4J中最核心的類是Snmp類,Snmp類提供了發(fā)送和接收SNMP PDU的方法,所有的PDU類型都可被發(fā)送,支持采用同步或者異步發(fā)送模式。類PDU、PDUv1、ScopedPDU代表不同版本SNMP協(xié)議的協(xié)議數(shù)據(jù)單元。接口Target定義了一個遠程SNMP實體的抽象代表,它含有一個地址和一些協(xié)議參數(shù)比如重傳和超時策略。CommunityTarget類實現(xiàn)了 Target接口,用于 SNMPv1和SNMPv2c這兩個版本,UserTarget類也實現(xiàn)了Target接口,適用于SNMPv3。TransportMapping接口封裝了傳輸層協(xié)議,一個TransportMapping僅支持一種傳輸層協(xié)議[10]。
使用用于Java開發(fā)的Apache Commons Net庫中的org. apache.commons.net.telnet包來實現(xiàn)Telnet協(xié)議。核心類是org.apache.commons.net.telnet.TelnetClient類,TelnetClient類為Telnet協(xié)議實現(xiàn)了簡單網(wǎng)絡(luò)虛擬終端(NVT)。利用該類,即可實現(xiàn)在Java程序中連接并登錄到目標網(wǎng)絡(luò)設(shè)備、發(fā)送命令并返回執(zhí)行結(jié)果 、關(guān)閉連接等功能[11]。
本文提出一種基于專家系統(tǒng)的智能網(wǎng)絡(luò)故障管理系統(tǒng),系統(tǒng)知識庫中可存儲大量網(wǎng)絡(luò)故障診斷知識,為網(wǎng)管人員提高網(wǎng)絡(luò)故障排除能力和效率提供有力支持。系統(tǒng)結(jié)構(gòu)設(shè)計不僅適用于本網(wǎng)絡(luò)故障管理系統(tǒng),對其他行業(yè)基于專家系統(tǒng)技術(shù)的故障管理系統(tǒng)結(jié)構(gòu)設(shè)計也有一定的借鑒意義。下一步將為系統(tǒng)增加數(shù)據(jù)挖掘功能,通過數(shù)據(jù)挖掘算法為知識庫自動補充排故知識,從而進一步提高系統(tǒng)智能化水平和排故能力。
[2]武孟軍.精通SNMP[M].北京:人民郵電出版社,2010.
[3]蔡自興,徐光裕.人工智能及其應(yīng)用[M].北京:清華大學(xué)出版社,2010.
[4]Jess 7.1 manual[EB/OL].[2009-02-10].http://www.jessrules. com/jess/docs/index.shtml.
[5]鄭浩然,肖偉.基于規(guī)則引擎的JAVA聲明式編程[J].計算機應(yīng)用與軟件,2009,26(12):132-134.
[6]武丹鳳,曾廣平,閆京穎.支持演化規(guī)則引擎的Rete算法研究[J].計算機應(yīng)用研究,2013,30(6):1747-1750.
[7]高俊,周維貴,李朝陽,汪成亮.基于產(chǎn)生式規(guī)則的網(wǎng)絡(luò)故障智能診斷修復(fù)系統(tǒng)[J].計算機系統(tǒng)用,2014,23(3):44-50.
[8]趙永剛.基于Jess的衛(wèi)星狀態(tài)診斷系統(tǒng)設(shè)計與實現(xiàn) [J].航天控制,2010,28(1):78-81.
[9]曾姚,王飛,熊波.采用Jess引擎的機械設(shè)備故障診斷專家系統(tǒng)設(shè)計[J].計算機與現(xiàn)代化,2012(11):6-9.
[10]JavaDoc SNMP4J[EB/OL].[2014-03-19].http://www.snmp4j. org/doc/index.html.
[11]JavaDoc Commons Net 3.3 API[EB/OL].[2013-06-19].http: //commons.apache.org/proper/commons-net/javadocs/api-3.3/ index.html.
Design and development of intelligent network fault management system based on Jess and SNMP
SONG Yi1,JIAO Xian-long2
(1.Troop 95661,Chongqing 400000,China;2.College of Information System and Management,National University of Defense Technology,Changsha 410073,China)
Nowadays network fault management systems are developing in the direction of automation and intellectualization. In order to improve the intelligent level of the traditional network fault management system,an intelligent network fault management system is designed based on the expert system rule engine Jess and SNMP protocol.The system can monitor network devices in real-time,and diagnose network faults in the independent mode or the network administrators interactive mode.If the result of the fault diagnosis indicates that the fault can be recovered by the system automatically,the system will ask the network administrators whether the fault should be automatically recovered by the fault recovery module or not.The paper finally discusses the system development environment and key development technologies.Based on the expert system technology,the system can significantly improve the ability and efficiency of network fault management.
network fault management;expert system;Jess;SNMP
TP311.1
B
1674-6236(2016)14-0049-03
2015-08-15稿件編號:201508077
宋 毅(1985—),男,甘肅天水人,碩士,工程師。研究方向:信息系統(tǒng)與決策支持系統(tǒng)。