宋 毅,焦賢龍
(1.95661部隊(duì) 重慶 400000;2.國防科技大學(xué) 信息系統(tǒng)與管理學(xué)院,湖南 長(zhǎng)沙 410073)
基于Jess和SNMP的智能網(wǎng)絡(luò)故障管理系統(tǒng)設(shè)計(jì)與開發(fā)
宋 毅1,焦賢龍2
(1.95661部隊(duì) 重慶400000;2.國防科技大學(xué) 信息系統(tǒng)與管理學(xué)院,湖南 長(zhǎng)沙410073)
當(dāng)前網(wǎng)絡(luò)故障管理系統(tǒng)正朝著自動(dòng)化智能化的方向發(fā)展。為了提高傳統(tǒng)網(wǎng)絡(luò)故障管理系統(tǒng)的智能化水平,基于專家系統(tǒng)規(guī)則引擎Jess和SNMP協(xié)議,設(shè)計(jì)了一個(gè)智能網(wǎng)絡(luò)故障管理系統(tǒng)。該系統(tǒng)可實(shí)時(shí)監(jiān)控被管網(wǎng)絡(luò)設(shè)備,采用獨(dú)立模式或者與網(wǎng)管人員交互模式進(jìn)行故障推理診斷;若故障診斷結(jié)果表明某故障可由系統(tǒng)自動(dòng)排除,則詢問網(wǎng)管人員是否利用故障恢復(fù)模塊自動(dòng)排除。文章最后探討了系統(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ā)展,計(jì)算機(jī)網(wǎng)絡(luò)正朝著大規(guī)?;徒Y(jié)構(gòu)高度復(fù)雜化方向發(fā)展,網(wǎng)絡(luò)資源呈現(xiàn)出異構(gòu)性和動(dòng)態(tài)性,多設(shè)備、多介質(zhì)、多協(xié)議已成為網(wǎng)絡(luò)的一大特征。計(jì)算機(jī)網(wǎng)絡(luò)發(fā)生故障是常見的,意外故障在某些重要的時(shí)候可能會(huì)對(duì)生產(chǎn)和生活帶來巨大的損失和負(fù)面影響。然而由于當(dāng)前網(wǎng)絡(luò)的復(fù)雜性、異構(gòu)性,導(dǎo)致當(dāng)故障發(fā)生時(shí),往往不能輕易、快速地利用傳統(tǒng)網(wǎng)絡(luò)故障管理系統(tǒng)確定故障所在的位置和原因,需要網(wǎng)絡(luò)管理人員較高的網(wǎng)絡(luò)技術(shù)水平和豐富的排故經(jīng)驗(yàn),因而如何提高網(wǎng)絡(luò)故障管理系統(tǒng)的智能性已成為人們關(guān)注的焦點(diǎn)。專家系統(tǒng),也被稱為基于知識(shí)的系統(tǒng),能夠有效運(yùn)用領(lǐng)域?qū)<叶嗄昀鄯e的有效經(jīng)驗(yàn)和專業(yè)知識(shí),從而解決需要領(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è)計(jì)了一個(gè)網(wǎng)絡(luò)故障管理系統(tǒng)。該系統(tǒng)可以及時(shí)發(fā)現(xiàn)網(wǎng)絡(luò)中發(fā)生的故障并嘗試找出原因。系統(tǒng)可以自動(dòng)排除的故障可由故障恢復(fù)模塊進(jìn)行排除;若故障類型是系統(tǒng)不能自動(dòng)排除的,則通知網(wǎng)管人員由網(wǎng)管人員手動(dòng)排除。
1.1SNMP協(xié)議
SNMP協(xié)議(Simple Network Management Protocol,SNMP)是一種負(fù)責(zé)管理和監(jiān)控網(wǎng)絡(luò)設(shè)備及其功能的協(xié)議,使用UDP協(xié)議傳送報(bào)文。SNMP協(xié)議是基于管理工作站/代理模式的,管理工作站是運(yùn)行網(wǎng)絡(luò)管理程序的計(jì)算機(jī),代理是運(yùn)行在被管網(wǎng)絡(luò)設(shè)備上的進(jìn)程,被管網(wǎng)絡(luò)設(shè)備可以是交換機(jī)、路由器、服務(wù)器和網(wǎng)絡(luò)打印機(jī)等[1]。SNMP協(xié)議的主要內(nèi)容可以分為管理信息結(jié)構(gòu)(SMI)、管理信息庫(MIB)和通信協(xié)議三大部分。其中MIB遵循SMI規(guī)范,定義具體的管理信息,通信協(xié)議主要內(nèi)容分別在SNMPv1、SNMPv2和SNMPv3等標(biāo)準(zhǔn)中定義,不同版本中的通信協(xié)議操作和通信協(xié)議安全機(jī)制不同[2]。
1.2專家系統(tǒng)
專家系統(tǒng)是一個(gè)存儲(chǔ)有大量專業(yè)知識(shí)與經(jīng)驗(yàn)的、用于模擬人類專家解決領(lǐng)域問題的計(jì)算機(jī)程序系統(tǒng)[3]。專家系統(tǒng)主要由知識(shí)庫、知識(shí)獲取機(jī)構(gòu)、推理機(jī)、綜合數(shù)據(jù)庫、解釋機(jī)構(gòu)和人機(jī)界面等六個(gè)部分組成。其中知識(shí)庫用于存儲(chǔ)問題求解需要的領(lǐng)域?qū)<业闹R(shí)和經(jīng)驗(yàn)。知識(shí)獲取機(jī)構(gòu)實(shí)現(xiàn)把知識(shí)從人類專家或其他知識(shí)源那里轉(zhuǎn)換到知識(shí)庫中的功能。推理機(jī)是專家系統(tǒng)中進(jìn)行知識(shí)推理的部件,它通過反復(fù)匹配知識(shí)庫中存儲(chǔ)的規(guī)則,從而得到問題求解結(jié)果。綜合數(shù)據(jù)庫用于存儲(chǔ)推理所需的原始數(shù)據(jù)、中間結(jié)果和最終結(jié)論,一般用于數(shù)據(jù)的暫時(shí)存儲(chǔ)。解釋機(jī)構(gòu)用于向用戶解釋專家系統(tǒng)的行為,并回答用戶提出的問題。人機(jī)界面是系統(tǒng)與用戶進(jìn)行交流的接口,使系統(tǒng)能夠向用戶輸出詢問、推理結(jié)果及相關(guān)解釋,使用戶能夠輸入信息、回答系統(tǒng)提出的問題。
1.3Jess專家系統(tǒng)規(guī)則引擎
Jess是一個(gè)使用Java編寫的專家系統(tǒng)規(guī)則引擎,它以CLIPS專家系統(tǒng)外殼為基礎(chǔ),采用產(chǎn)生式規(guī)則作為基本的知識(shí)表達(dá)模式,是可用的最快的規(guī)則引擎之一。Jess將專家系統(tǒng)的開發(fā)過程與功能強(qiáng)大的Java語言結(jié)合了起來,它強(qiáng)大的腳本語言能夠訪問所有的Java API。Jess包括一個(gè)基于優(yōu)秀的Eclipse開發(fā)平臺(tái)的全功能開發(fā)環(huán)境,這個(gè)開發(fā)環(huán)境通過一組Eclipse插件提供。
Jess使用一個(gè)增強(qiáng)版本的Rete算法來處理規(guī)則[4]。Rete算法是由美國卡耐基·梅隆大學(xué)的Charles L.Forgy于1979年發(fā)表的博士論文中提出的,此后經(jīng)過幾次改進(jìn)[5]。Rete算法解決了規(guī)則的推理機(jī)制和匹配效率問題,是規(guī)則引擎模式匹配算法中效率最高的算法之一。該算法的基本思想是將之前模式匹配過程中的信息保存在一部分內(nèi)存空間中,即通過犧牲這部分內(nèi)存空間來保存并充分利用之前模式匹配過程中的信息,從而提高算法整體的匹配效率,達(dá)到大幅降低計(jì)算量的效果[6]。
2.1系統(tǒng)結(jié)構(gòu)
網(wǎng)絡(luò)故障管理是網(wǎng)絡(luò)管理的五大功能之一,提供對(duì)網(wǎng)絡(luò)的異常運(yùn)行情況進(jìn)行檢測(cè)、隔離和糾正的一組功能。網(wǎng)絡(luò)故障管理的功能直接關(guān)系到被管理網(wǎng)絡(luò)的可用性和可靠性,一般分為三個(gè)步驟:故障檢測(cè)、故障診斷和故障恢復(fù)。前兩個(gè)步驟通常又被稱為故障定位過程。一個(gè)實(shí)用的網(wǎng)絡(luò)故障管理系統(tǒng)至少需要具有以下幾個(gè)功能:1)隨時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài)及其變化情況,捕獲網(wǎng)絡(luò)中發(fā)生的故障;2)分析判斷故障類型、故障原因以及故障源;3)需要時(shí)向用戶告警或者提交故障報(bào)告,以輔助用戶排除故障。
根據(jù)網(wǎng)絡(luò)故障管理的特點(diǎn),設(shè)計(jì)了一種基于專家系統(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)功能實(shí)現(xiàn)的核心部分集中到服務(wù)器上,系統(tǒng)結(jié)構(gòu)如圖1。

圖1 系統(tǒng)結(jié)構(gòu)
2.2系統(tǒng)主要模塊
該系統(tǒng)主要由SNMP與Telnet操縱模塊、故障檢測(cè)模塊、基于Jess引擎的故障診斷模塊、故障恢復(fù)模塊和知識(shí)庫維護(hù)模塊等五大模塊組成。
1)SNMP與Telnet操縱模塊。SNMP與Telnet操縱模塊包含供故障檢測(cè)模塊和故障恢復(fù)模塊使用的一些公共類,該模塊主要功能包括:①向被管網(wǎng)絡(luò)設(shè)備發(fā)出SNMP查詢、設(shè)置請(qǐng)求;接收被管網(wǎng)絡(luò)設(shè)備發(fā)來的SNMP應(yīng)答和Trap消息。②Telnet連接被管網(wǎng)絡(luò)設(shè)備,通過Telnet連接發(fā)送命令給被管網(wǎng)絡(luò)設(shè)備,讀取命令執(zhí)行結(jié)果,結(jié)束Telnet連接。即實(shí)現(xiàn)了Telnet操作的自動(dòng)化。
2)故障檢測(cè)模塊。故障檢測(cè)模塊的功能:①每M秒(變量M可由網(wǎng)管人員設(shè)置)向各被管網(wǎng)絡(luò)設(shè)備發(fā)出一組SNMP查詢和Telnet查詢(優(yōu)先選擇SNMP查詢,因?yàn)樗俣雀欤?,并接收查詢結(jié)果。②實(shí)時(shí)接收各被管網(wǎng)絡(luò)設(shè)備通過SNMP與Telnet操作模塊發(fā)來的Trap消息。③故障檢測(cè)模塊判斷上述查詢結(jié)果或Trap消息所來自的被管網(wǎng)絡(luò)設(shè)備是否發(fā)生故障。若發(fā)生故障,則將相關(guān)信息發(fā)送到基于Jess引擎的故障診斷模塊。
3)基于Jess引擎的故障診斷模塊。故障診斷模塊收到故障檢測(cè)模塊發(fā)來的故障信息后,首先判斷該故障是否屬于可推理類型,若是則利用Jess引擎進(jìn)行推理(推理過程中可能需要與用戶進(jìn)行交互以獲取需要的事實(shí)),并得出故障診斷結(jié)果。然后根據(jù)故障診斷結(jié)果在數(shù)據(jù)庫中查找這種類型故障的恢復(fù)策略。若未找到,則通知用戶故障診斷結(jié)果,從而輔助用戶診斷和排除故障;若找到了,則判斷找到的故障恢復(fù)策略是否可以由系統(tǒng)自動(dòng)恢復(fù)(即通過運(yùn)行一組故障網(wǎng)絡(luò)設(shè)備命令是否可排除該故障)。若該故障可由系統(tǒng)自動(dòng)恢復(fù),則詢問用戶是否執(zhí)行故障自動(dòng)恢復(fù),如果用戶同意系統(tǒng)自動(dòng)恢復(fù)故障,則將故障診斷結(jié)果和恢復(fù)策略發(fā)送到故障恢復(fù)模塊進(jìn)行故障自動(dòng)恢復(fù)[7][8]。整個(gè)推理過程全部在用戶界面中顯示出來并記錄到數(shù)據(jù)庫中,便于用戶實(shí)時(shí)監(jiān)控故障診斷過程或者查詢分析歷史故障診斷過程。
該模塊具體功能如圖2所示。

圖2 故障診斷模塊
4)故障恢復(fù)模塊。收到故障診斷模塊發(fā)來的故障診斷結(jié)果和恢復(fù)策略后,故障恢復(fù)模塊將收到的故障恢復(fù)策略格式化成一組具體的網(wǎng)絡(luò)設(shè)備命令,并利用SNMP與Telnet操縱模塊建立與故障網(wǎng)絡(luò)設(shè)備的Telnet連接,遠(yuǎn)程執(zhí)行這些網(wǎng)絡(luò)設(shè)備命令,從而恢復(fù)這種通過運(yùn)行一組被管網(wǎng)絡(luò)設(shè)備命令即可排除的故障[7]。
5)知識(shí)庫維護(hù)模塊。該模塊負(fù)責(zé)管理維護(hù)知識(shí)庫中的知識(shí),包括知識(shí)查詢、知識(shí)增加、知識(shí)修改和知識(shí)刪除等功能,并負(fù)責(zé)維護(hù)知識(shí)的完整性和一致性??赏ㄟ^兩種方式來維護(hù)知識(shí)庫:利用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è)級(jí)應(yīng)用,它是一個(gè)基于標(biāo)準(zhǔn)的企業(yè)級(jí)平臺(tái)。選用Eclipse作為系統(tǒng)開發(fā)工具,Eclipse是一種可擴(kuò)展開源開發(fā)平臺(tái),其自身只是一個(gè)框架和一組服務(wù),通過插件組件來構(gòu)建開發(fā)環(huán)境。為人熟知的 Java開發(fā)工具 (Java Development Tools,JDT)便是一組Eclipse插件,為Eclipse平臺(tái)增加了全特性Java集成開發(fā)環(huán)境的能力。選取Tomcat作為Web服務(wù)器。數(shù)據(jù)庫選用SQL Server 2008數(shù)據(jù)庫。使用JDBC連接數(shù)據(jù)庫,JDBC是一組標(biāo)準(zhǔn)的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è)計(jì)的思想,把一個(gè)應(yīng)用程序的輸入層、業(yè)務(wù)處理層和控制流程層按照View、Model和Controller的方式實(shí)現(xiàn)了分離,并分別承擔(dān)不同的任務(wù)。Struts2能夠在MVC的各個(gè)部分為開發(fā)過程提供相應(yīng)幫助,基于Struts2開發(fā)的Web應(yīng)用自然就能實(shí)現(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程序中來實(shí)現(xiàn)故障推理診斷功能。jess. jar類庫中的jess.Rete類就是規(guī)則引擎本身。將Jess引擎嵌入到Java應(yīng)用模塊中,只需創(chuàng)建一個(gè)或多個(gè)jess.Rete對(duì)象并適當(dāng)?shù)夭倏v它們。每一個(gè)jess.Rete對(duì)象代表一個(gè)獨(dú)立的推理引擎,一個(gè)程序可以包括任意數(shù)量的引擎,每個(gè)引擎可以工作于不同的線程中[4]。
3.4SNMP與Telnet操縱模塊的開發(fā)
采用開源面向?qū)ο蟮挠糜?Java開發(fā)的 SNMP API SNMP4J來實(shí)現(xiàn)SNMP協(xié)議。SNMP4J中最核心的類是Snmp類,Snmp類提供了發(fā)送和接收SNMP PDU的方法,所有的PDU類型都可被發(fā)送,支持采用同步或者異步發(fā)送模式。類PDU、PDUv1、ScopedPDU代表不同版本SNMP協(xié)議的協(xié)議數(shù)據(jù)單元。接口Target定義了一個(gè)遠(yuǎn)程SNMP實(shí)體的抽象代表,它含有一個(gè)地址和一些協(xié)議參數(shù)比如重傳和超時(shí)策略。CommunityTarget類實(shí)現(xiàn)了 Target接口,用于 SNMPv1和SNMPv2c這兩個(gè)版本,UserTarget類也實(shí)現(xiàn)了Target接口,適用于SNMPv3。TransportMapping接口封裝了傳輸層協(xié)議,一個(gè)TransportMapping僅支持一種傳輸層協(xié)議[10]。
使用用于Java開發(fā)的Apache Commons Net庫中的org. apache.commons.net.telnet包來實(shí)現(xiàn)Telnet協(xié)議。核心類是org.apache.commons.net.telnet.TelnetClient類,TelnetClient類為Telnet協(xié)議實(shí)現(xiàn)了簡(jiǎn)單網(wǎng)絡(luò)虛擬終端(NVT)。利用該類,即可實(shí)現(xiàn)在Java程序中連接并登錄到目標(biāo)網(wǎng)絡(luò)設(shè)備、發(fā)送命令并返回執(zhí)行結(jié)果 、關(guān)閉連接等功能[11]。
本文提出一種基于專家系統(tǒng)的智能網(wǎng)絡(luò)故障管理系統(tǒng),系統(tǒng)知識(shí)庫中可存儲(chǔ)大量網(wǎng)絡(luò)故障診斷知識(shí),為網(wǎng)管人員提高網(wǎng)絡(luò)故障排除能力和效率提供有力支持。系統(tǒng)結(jié)構(gòu)設(shè)計(jì)不僅適用于本網(wǎng)絡(luò)故障管理系統(tǒng),對(duì)其他行業(yè)基于專家系統(tǒng)技術(shù)的故障管理系統(tǒng)結(jié)構(gòu)設(shè)計(jì)也有一定的借鑒意義。下一步將為系統(tǒng)增加數(shù)據(jù)挖掘功能,通過數(shù)據(jù)挖掘算法為知識(shí)庫自動(dòng)補(bǔ)充排故知識(shí),從而進(jìn)一步提高系統(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].計(jì)算機(jī)應(yīng)用與軟件,2009,26(12):132-134.
[6]武丹鳳,曾廣平,閆京穎.支持演化規(guī)則引擎的Rete算法研究[J].計(jì)算機(jī)應(yīng)用研究,2013,30(6):1747-1750.
[7]高俊,周維貴,李朝陽,汪成亮.基于產(chǎn)生式規(guī)則的網(wǎng)絡(luò)故障智能診斷修復(fù)系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)用,2014,23(3):44-50.
[8]趙永剛.基于Jess的衛(wèi)星狀態(tài)診斷系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) [J].航天控制,2010,28(1):78-81.
[9]曾姚,王飛,熊波.采用Jess引擎的機(jī)械設(shè)備故障診斷專家系統(tǒng)設(shè)計(jì)[J].計(jì)算機(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稿件編號(hào):201508077
宋 毅(1985—),男,甘肅天水人,碩士,工程師。研究方向:信息系統(tǒng)與決策支持系統(tǒng)。