唐 軍, 楊安祺, 張俊明
(陜西科技大學(xué)電氣與信息工程學(xué)院,陜西西安710021)
隨著社會信息化的發(fā)展,如何在減少網(wǎng)絡(luò)監(jiān)測數(shù)據(jù)流量和為用戶節(jié)省帶寬的情況下及時的監(jiān)測故障數(shù)據(jù)成為一個越來越重要的問題。另一方面,隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,規(guī)模的不斷擴大,復(fù)雜性的不斷增加,網(wǎng)絡(luò)的異構(gòu)問題也越顯突出,使得對網(wǎng)絡(luò)故障監(jiān)測提出了更高的要求。傳統(tǒng)的C/S(client/server)模型和單純的分布式故障監(jiān)測模型已經(jīng)無法再適應(yīng)現(xiàn)有的網(wǎng)絡(luò)需求[1]。為了更好的適應(yīng)網(wǎng)絡(luò)發(fā)展,需要一種能快速響應(yīng)網(wǎng)絡(luò)故障,解決現(xiàn)有網(wǎng)絡(luò)監(jiān)測瓶頸問題,具有更好的擴展性和伸縮性的新型網(wǎng)絡(luò)故障監(jiān)測模型?;赑2P的分布式網(wǎng)絡(luò)故障監(jiān)測系統(tǒng)就是在這種情況下產(chǎn)生的。目前國外在網(wǎng)絡(luò)故障監(jiān)測方面的研究比較成熟,已有一些公司研制開發(fā)出綜合的網(wǎng)絡(luò)故障方面的系統(tǒng),如NAI公司的Sniffer、HP公司的NetMetrix等,這些產(chǎn)品在具有優(yōu)越性能的同時也具有相當(dāng)昂貴的價格,國內(nèi)開發(fā)的GNMA綜合故障分析系統(tǒng)具備了監(jiān)測、分析等功能,但是該產(chǎn)品只能對局域網(wǎng)進行故障方面的分析。本文采用P2P技術(shù)作為解決傳統(tǒng)網(wǎng)絡(luò)故障監(jiān)測模型中服務(wù)器瓶頸問題的方法,并以開源的Drools作為系統(tǒng)原型中的告警規(guī)則分析引擎。
分布式計算發(fā)展非常迅速,新技術(shù)不斷出現(xiàn),現(xiàn)在出現(xiàn)的P2P技術(shù),讓用戶可以直接連接到其它用戶的計算機,進行文件共享與交換,另外P2P在深度搜索、分布計算、協(xié)同工作等方面也大有用途。但現(xiàn)有的P2P系統(tǒng)有一些缺陷,大多數(shù)P2P系統(tǒng)用來實現(xiàn)一個單一類型的網(wǎng)絡(luò)服務(wù)(Napster用來音樂文件交換、Gnutella用來普通文件交換),由于不同的網(wǎng)絡(luò)服務(wù)的特性和缺少一個共同的底層基礎(chǔ),每一個供應(yīng)商都使用不兼容的技術(shù)使它的用戶同別的P2P通信相隔離。SUN公司推出的JXTA技術(shù)通過提供一個簡單的普遍的P2P平臺來解決這個問題[2],JXTA具體來說是一種標準組件平臺,它提供了用于開發(fā)分布式服務(wù)和應(yīng)用程序的基本組件。整套技術(shù)由一組開放源碼的P2P協(xié)議組成,這組協(xié)議使網(wǎng)絡(luò)上任何連接著的計算設(shè)備的協(xié)作變?yōu)榭赡?。JXTA支持P2P應(yīng)用的基本功能來建立一個P2P系統(tǒng),還將努力證實這些可以成為建立更高層功能的基礎(chǔ)構(gòu)造模塊。JXTA架構(gòu)可以分為3個層面:JXTA核心層、JXTA業(yè)務(wù)層和JXTA應(yīng)用層[3]。JXTA使可共同使用的P2P應(yīng)用程序擁有了許多能力,該技術(shù)具有易實施性、標準化和跨平臺等傳統(tǒng)方式不可比擬的優(yōu)勢。故使用基于P2P的分布式網(wǎng)絡(luò)監(jiān)測方式將大大減輕網(wǎng)絡(luò)通信的負載,當(dāng)網(wǎng)絡(luò)拓撲、組織形式或網(wǎng)絡(luò)管理服務(wù)發(fā)生變化是,監(jiān)測網(wǎng)絡(luò)能隨之動態(tài)變化,充分滿足了分布式網(wǎng)絡(luò)監(jiān)測新的需求。
網(wǎng)絡(luò)故障監(jiān)測系統(tǒng)建立在JXTA標準P2P平臺上,通過對被監(jiān)測設(shè)備底層抽樣獲取的數(shù)據(jù)進行告警分析后,上報域監(jiān)測工作站或服務(wù)器,從而實現(xiàn)整個分布式網(wǎng)絡(luò)故障進行監(jiān)測。系統(tǒng)主要分為3個獨立的功能模塊:數(shù)據(jù)抽樣模塊、告警相關(guān)性分析模塊以及拓撲發(fā)現(xiàn)和故障檢測管理模塊。各模塊獨立封裝,根據(jù)模塊特點采用不同編程技術(shù),以實現(xiàn)各個模塊之間的高內(nèi)聚、低耦合。整個系統(tǒng)的核心部分是對底層驅(qū)動程序數(shù)據(jù)包的采樣讀取,對數(shù)據(jù)的實時性要求高,數(shù)據(jù)抽樣模塊利用NDIS(network driver interface specification)協(xié)議[4]提供的接口和Win32的重疊I/O操作以及多線程特性極大的提高了采樣數(shù)據(jù)的實時性,對于采樣到的數(shù)據(jù)的存儲采用了直接文件方式,提高了此模塊的實時處理能力。告警相關(guān)性模塊、拓撲發(fā)現(xiàn)以及故障檢測管理模塊采用Eclipse+Java開發(fā),實現(xiàn)與JXTA與開源規(guī)則引擎[5]Drools以及JXTA提供的接口之間的無縫連接。單域故障監(jiān)測業(yè)務(wù)示意圖如圖1所示。
圖1 單域故障監(jiān)測業(yè)務(wù)流程
網(wǎng)絡(luò)故障[6]通常有以下幾種可能:物理層中物理設(shè)備相互連接失敗或者硬件及線路本身的問題;數(shù)據(jù)鏈路層的網(wǎng)絡(luò)設(shè)備的接口配置問題;網(wǎng)絡(luò)層網(wǎng)絡(luò)協(xié)議配置或操作錯誤;傳輸層的設(shè)備性能或通信擁塞問題。
現(xiàn)有的網(wǎng)絡(luò)故障監(jiān)視算法有前攝性算法,交互式監(jiān)視算法。前攝性監(jiān)視要求用原始數(shù)據(jù)來預(yù)測未來趨勢如可能發(fā)生的情況等工作,所以前攝性監(jiān)視系統(tǒng)需要結(jié)合自適應(yīng)學(xué)習(xí)系統(tǒng),此系統(tǒng)學(xué)習(xí)掌握每個測量變量的正常行為,并檢測出測量變量對正常值的偏離,可以推演未知網(wǎng)絡(luò)故障,同時關(guān)聯(lián)時間和空間的信息,對于可能由于網(wǎng)絡(luò)故障引起的網(wǎng)絡(luò)擁塞問題進行預(yù)測,并考慮可以施加一定的調(diào)度算法,使得管理人員采取一定的措施在網(wǎng)絡(luò)故障發(fā)生前阻止故障的發(fā)生。交互式監(jiān)視算法針對的是硬網(wǎng)絡(luò)故障,管理者與代理之間采用輪詢和事件通知的交互方式獲得網(wǎng)絡(luò)中被管對象變量的狀態(tài)信息,提供了這些變量結(jié)構(gòu)的定義以及通信機制。但這些變量自身不能檢測網(wǎng)絡(luò)故障,需要進一步處理,以獲得對網(wǎng)絡(luò)故障根源狀態(tài)的分析。這種算法主要考慮如何合理的選擇輪詢頻率以及輪詢步長,從而減少通信資源的消耗。
監(jiān)測網(wǎng)絡(luò)故障的過程應(yīng)該沿著OSI七層模型從物理層開始向上進行,首先檢查物理層,然后依次檢查數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和傳輸層,設(shè)法從采集到的故障信息中確定通信失敗的故障點和故障原因,并結(jié)合歷史數(shù)據(jù)和專家知識庫給出相應(yīng)的排除故障的方法。
系統(tǒng)將整個網(wǎng)絡(luò)劃分成若干個故障監(jiān)測域,每個域中存在1到2個故障信息監(jiān)測節(jié)點,負責(zé)本域的故障監(jiān)測,所有分布在各處的故障監(jiān)測節(jié)點動態(tài)的組成P2P故障監(jiān)測網(wǎng)絡(luò),節(jié)點間采用P2P消息機制傳輸監(jiān)測到的故障信息,協(xié)同完成對整個網(wǎng)絡(luò)的故障監(jiān)測,并在網(wǎng)絡(luò)中配置多個特殊的節(jié)點,這些節(jié)點在P2P監(jiān)測網(wǎng)絡(luò)中通過監(jiān)測節(jié)點對整個網(wǎng)絡(luò)進行監(jiān)測。故障域的通信模式示意圖如圖2所示。
圖2 P2P故障域通信模式
數(shù)據(jù)采集模塊是用來對被監(jiān)測設(shè)備上的故障信息進行采集和基本的過濾,并負責(zé)將過濾后的數(shù)據(jù)發(fā)往所在的域服務(wù)器上,由它進行更高一級的告警相關(guān)性分析。NDIS協(xié)議為傳輸層提供標準的網(wǎng)絡(luò)接口,所有的傳輸層驅(qū)動程序都需要調(diào)用NDIS接口訪問網(wǎng)絡(luò),NDIS把網(wǎng)絡(luò)驅(qū)動程序從網(wǎng)絡(luò)硬件中抽象出來,制定了網(wǎng)絡(luò)驅(qū)動層與層之間的規(guī)范。采用NDIS可以方便高效的獲得被監(jiān)測設(shè)備的數(shù)據(jù)。獲取被檢測設(shè)備的故障信息通常的可靠方法是不斷的對被檢測對象周期性的輪詢,這樣將導(dǎo)致網(wǎng)絡(luò)流量特別是監(jiān)測工作站和監(jiān)測服務(wù)器端的流量增大,有可能造成以監(jiān)測端為節(jié)點的鏈路擁塞,因此,數(shù)據(jù)的采樣算法十分重要,目前比較常用抽樣方法是周期抽樣、隨機附加抽樣和泊松抽樣。泊松抽樣的時間間隔符合泊松分布,能夠?qū)崿F(xiàn)對測量結(jié)果的無偏估計、測量結(jié)果不可預(yù)測、不會產(chǎn)生同步現(xiàn)象,限定一個最大間隔值的泊松抽樣,可以避免產(chǎn)生較長的抽樣間隔,加速抽樣過程的收斂,并結(jié)合C語言實現(xiàn)關(guān)鍵算法以實時的獲取被測設(shè)備的數(shù)據(jù)。由于泊松抽樣具有很多好處,所以被系統(tǒng)數(shù)據(jù)抽樣算法采用泊松分布[7]。Poisson分布的概率函數(shù)如公式(1)所示
公式(1)中表示單位時間(單位人群、單位空間內(nèi),單位容積)內(nèi),某罕見事件發(fā)生次數(shù)的概率分布式中 =n為Poisson分布的總體均數(shù),總體中沒單位中的平均陽性數(shù),X為單位時間或單位空間內(nèi)某事件的發(fā)生數(shù)(陽性數(shù)),e為自然對數(shù)的底,約等于2.71828。
通過簡單的設(shè)置4種基本過濾條件:幀屬性條件、網(wǎng)絡(luò)地址條件、數(shù)據(jù)模式條件和協(xié)議類型條件,實時地分析采樣的協(xié)議包,將滿足條件的幀傳輸?shù)剿谟虻墓收戏?wù)器上。被監(jiān)測設(shè)備與域監(jiān)測節(jié)點之間采用簡單網(wǎng)絡(luò)管理協(xié)議SNMP進行通信[8],SNMP建立在無連接方式的UDP和IP協(xié)議之上,省去了應(yīng)答信息,執(zhí)行起來非常高效。SNMP規(guī)定了5種協(xié)議數(shù)據(jù)單元PDU,用來在管理進程和代理之間的交換,只有兩種基本的管理功能:“讀”操作,用get報文來檢測各被管對象的狀況;“寫”操作:用set報文來控制各被管對象的狀況。每個被檢測設(shè)備都作為一個MIB庫中的對象,針對故障信息的嚴重程度分別采用實時傳輸和定時輪詢兩種傳輸方式。
網(wǎng)絡(luò)告警信息包含大量的不確定性信息,同時告警信息的不完備以及數(shù)據(jù)傳播的動力特性都加大了故障監(jiān)測的難度,需要對告警信息進行相關(guān)性分析,優(yōu)化網(wǎng)絡(luò)故障監(jiān)測。告警相關(guān)性分析模塊位于故障監(jiān)測節(jié)點上,目的是將有關(guān)聯(lián)性的多個告警信息通過過濾識別等技術(shù)整合成為一條具有更多告警信息量的告警記錄,以準確快速地識別故障的根源并減少通信所占的帶寬。由于網(wǎng)絡(luò)設(shè)備的多樣化,需要對采集來的信息進行統(tǒng)一的格式化處理,用來屏蔽網(wǎng)絡(luò)設(shè)備告警信息的差異。以下為統(tǒng)一后的告警信息類代碼:
告警事件的相關(guān)性及處理方法通常分為3類:
(1)相同事件:來自同一告警源的相同故障描述的持續(xù)的告警信息。對于這種情況,只顯示一條故障信息和
改變告警頻度;
(2)相反事件:兩個來自同一告警源的信息,故障告警和故障恢復(fù)告警。對于這種情況,自動將告警事件清
除,并存入已清除的歷史告警日志中;
(3)同源事件:來自同一告警源但類型不同的多個告警信息。對于這種情況,通過分析告警信息對其進行根
源性的識別,挑選出一條根源性的告警記錄,其它同源信息標記為抑制信息;
對于以上3種情況,根據(jù)網(wǎng)絡(luò)拓撲關(guān)系庫,從中按照相關(guān)規(guī)則的規(guī)定,選出最具根源性的告警記錄(如果不存在的話,依照規(guī)則生成一條告警),其它的事件標記為抑制告警信息。
告警相關(guān)性分析模塊由以下3個子模塊組成:
(1)規(guī)則提取模塊:通過對歷史告警信息的分析和故障知識庫的學(xué)習(xí)來獲取和創(chuàng)建規(guī)則,并將新的規(guī)則添加到規(guī)則集中。
(2)規(guī)則管理模塊:通過ADD、DEL、MODIFY等操作維護告警相關(guān)性模塊。
(3)告警相關(guān)性分析引擎:通過規(guī)則引擎算法對大量告警信息進行相關(guān)性分析,給出根源告警信息,能大量的減少冗余告警事件,降低告警信息的網(wǎng)絡(luò)帶寬占有率并提高故障定位準確率。
每個故障監(jiān)測系統(tǒng)都不能保證它能提供完備的故障處理策略,因此需要引入高效的利于對多變的業(yè)務(wù)規(guī)則進行修改和管理的規(guī)則引擎技術(shù)。
Drools[9]是基于Java的優(yōu)秀開源規(guī)則引擎,封裝了Rete算法,Drools的規(guī)則提取方法有兩種:基于網(wǎng)絡(luò)專家系統(tǒng)知識和通過數(shù)據(jù)挖掘技術(shù)發(fā)現(xiàn)告警序列中的關(guān)聯(lián)規(guī)則。其中專家系統(tǒng)通過模擬人的推理方式,使用試探性的方法進行那個推理,而規(guī)則引擎則采用目前效率最高的一個 Forward-Chaining推理算法——Rete。本系統(tǒng)采用關(guān)聯(lián)規(guī)則挖掘方法獲取告警相關(guān)性規(guī)則,將挖掘結(jié)果輔以專家知識加以分析,最終確定相關(guān)性規(guī)則集。
拓撲發(fā)現(xiàn)模塊利用SNMP、ARP、ICMP實現(xiàn)對本域的IP網(wǎng)絡(luò)的三層拓撲發(fā)現(xiàn),這3種協(xié)議具有負載低、速度快和準確性高的優(yōu)點,適合中型網(wǎng)絡(luò)的拓撲發(fā)現(xiàn)。實現(xiàn)方法是從默認的路由器開始,進行指定拓撲搜索深度的廣度優(yōu)先搜索,利用SNMP路由表發(fā)現(xiàn)路由器之間的連接關(guān)系,根據(jù)接口表找到相連路由器的互聯(lián)接口,用互聯(lián)接口所在的子網(wǎng)描述路由器間的連接關(guān)系,同時利用MIB的地址表得到與路由器直接相連的子網(wǎng)地址及子網(wǎng)掩碼。用路由器接口IP地址中的最小值標識路由器,同時利用MIB中的ipAddrTable表進行多IP的同一路由器的判定。拓撲發(fā)現(xiàn)由主拓撲發(fā)現(xiàn)和子拓撲發(fā)現(xiàn)兩部分組成:
(1)主拓撲發(fā)現(xiàn):通過計算取出冗余的路由器相關(guān)拓撲信息,形成已訪問的路由器鏈表,并通過分析已訪問路由器鏈表,按照拓撲數(shù)據(jù)庫定義的格式形成子網(wǎng)鏈表和節(jié)點鏈表。
(2)子拓撲發(fā)現(xiàn):遍歷已訪問路由器鏈表,從獲得的ARP表中取得與路由器直連的網(wǎng)絡(luò)設(shè)備的IP地址;遍歷子網(wǎng)鏈表,通過將獲得的IP地址與已經(jīng)取得的子網(wǎng)地址進行模式匹配來確定該IP對應(yīng)的主機是否為相應(yīng)子網(wǎng)的成員,如果是,則將得到的主機節(jié)點信息寫入拓撲數(shù)據(jù)庫。
網(wǎng)絡(luò)故障檢測管理模塊將告警相關(guān)性分析模塊傳輸上來的數(shù)據(jù)進行解碼,并與庫中的數(shù)據(jù)進行匹配,快速的進行故障的定位,并提出相關(guān)的修復(fù)建議,采用關(guān)聯(lián)數(shù)據(jù)挖掘的方式已進行實時的響應(yīng)。
在模型的性能發(fā)面,將基于傳統(tǒng)的故障監(jiān)測模型與本文所提出的基于P2P的分布式網(wǎng)絡(luò)故障監(jiān)測模型進行了簡單的對比試驗,試驗結(jié)果如圖3和圖4所示。
圖3 帶寬占有率/時間結(jié)果
圖4 故障數(shù)/時間結(jié)果
通過試驗發(fā)現(xiàn),傳統(tǒng)的故障監(jiān)測系統(tǒng)容易造成監(jiān)測端數(shù)據(jù)鏈路阻塞,降低了有效帶寬,在網(wǎng)絡(luò)規(guī)模不大的情況下,基于P2P的分布式網(wǎng)絡(luò)故障監(jiān)測模型和傳統(tǒng)的故障監(jiān)測模型相比,在規(guī)模越小的情況下,P2P模型的分布式故障監(jiān)測模型有需要消耗在對等點發(fā)現(xiàn)的額外帶寬比傳統(tǒng)監(jiān)測模型的不需要在方面消耗帶寬來比較,在性能上優(yōu)勢不明顯。從故障的監(jiān)測響應(yīng)時間上看,由于P2P故障監(jiān)測模型消耗對等點發(fā)現(xiàn)的時間,所以此模型的優(yōu)勢不明顯,當(dāng)故障數(shù)目增加時,基于P2P分布式網(wǎng)絡(luò)故障監(jiān)測模型的優(yōu)勢也就明顯了。
在故障監(jiān)測方面,由于采用了Drools相關(guān)性分析引擎和柏松采樣收斂算法,在監(jiān)測故障方面同傳統(tǒng)式故障監(jiān)測模型在正確監(jiān)測、誤判和漏檢的性能對比如表1所示。
表1 傳統(tǒng)模型與P2P模型性能對比表
試驗表明,本文提出的基于P2P的分布式故障監(jiān)測模型的可行性,基于此模型設(shè)計實現(xiàn)的系統(tǒng)能提高網(wǎng)絡(luò)故障監(jiān)測方面性能,有助于增加故障監(jiān)測系統(tǒng)故障診斷的有效性,在大型網(wǎng)絡(luò)環(huán)境中,能提高故障監(jiān)測系統(tǒng)的實時性。
本文提出了新型的基于P2P的分布式網(wǎng)絡(luò)故障監(jiān)測方法,將P2P體制引入故障監(jiān)測當(dāng)中,給出了系統(tǒng)的模塊劃分和實現(xiàn)手段。通過系統(tǒng)簡單原型的實現(xiàn),證明了該方法的可實施性,通過實驗數(shù)據(jù)與傳統(tǒng)的故障監(jiān)測系統(tǒng)進行比較,證實了新系統(tǒng)較傳統(tǒng)集中式監(jiān)測系統(tǒng)具有更好的實時性,傳統(tǒng)系統(tǒng)中的帶寬瓶頸問題得到了較好的解決。當(dāng)然,P2P網(wǎng)絡(luò)故障監(jiān)測系統(tǒng)是非常復(fù)雜的,還有許多問題需要進一步的研究,比如移動環(huán)境下P2P覆蓋網(wǎng)絡(luò)與物理網(wǎng)絡(luò)匹配問題以及抽樣算法以及規(guī)則引擎算法等問題。
[1] 郭健,吳偉明,張愛霞.面向業(yè)務(wù)的NGN綜合網(wǎng)管系統(tǒng)的研究[J].數(shù)據(jù)通信,2005(3):9-12.
[2] 姜兆華,楊斌.基于JXTA和P2P的資源發(fā)布系統(tǒng)研究[J].計算機與信息技術(shù),2008(z1):60-62.
[3] 務(wù)實.JXTA技術(shù)應(yīng)用與發(fā)展[EB/OL].http://www.builder.com.cn/2003/1009/98421.shtml/,2003-10-09.
[4] 楊智君,田地,周斌.基于NDIS中間層驅(qū)動程序的網(wǎng)絡(luò)監(jiān)測器[J].吉林大學(xué)學(xué)報(工學(xué)版),2006,36(2):224-226.
[5] 繳明洋,譚慶平.Java規(guī)則引擎技術(shù)研究[J].計算機與信息技術(shù),2006(3):41-43.
[6] 張新,常義林,沈中,等.分層多管理者網(wǎng)絡(luò)故障監(jiān)控策略[J].西安電子科技大學(xué)學(xué)報,2005,32(6):873-876.
[7] 王恒,劉振宇.一種基于訪問約束的數(shù)據(jù)同步技術(shù)[J].微計算機應(yīng)用,2007,28(12):2-3.
[8] 魯建邦.網(wǎng)絡(luò)服務(wù)性能監(jiān)測方案的探討[J].計算機應(yīng)用,2004,24(9):1-2.
[9] 馬秀麗,王紅霞,張凌云.Drools在網(wǎng)絡(luò)故障管理系統(tǒng)中的應(yīng)用[J].計算機工程與設(shè)計,2009,30(8):1-3.