摘 要: 研究了多主體智能故障管理模型的結構及系統構成并給出了模型功能的實現。
關鍵詞: 主體 智能 故障管理 模型
隨著網絡規模的不斷擴大,網絡的維護和操作變得相當復雜。如何保證網絡安全、穩定和可靠地運行,一直是網絡管理領域的熱門研究課題。
故障管理是網絡管理體系結構的一個重要組成部分,主要包括檢測、隔離、確定故障因素、糾正故障等功能。設立故障管理的目標是提高網絡可用性,降低網絡停機次數并迅速修復故障。作為高速骨干網絡上運行的T比特路由器,對它進行故障管理,以便在路由器發生故障時及時進行修復,避免影響網絡的使用。
大規模匯聚接入路由器(ACR)系統中包括多個設備,而各個設備又是相互關聯的,一個設備的故障同時可能會引起另外一個或多個設備故障的發生,從而可能會導致整個網絡癱瘓。傳統的故障管理方法只能對單設備故障進行有效的管理,對多設備的關聯故障不能及時地進行診斷及恢復,不能保證網絡的正常運行。
1 與現有故障管理技術" title="故障管理技術">故障管理技術的比較
目前,研究故障診斷" title="故障診斷">故障診斷的方法主要有兩種類型:專家系統方法和人工神經網絡" title="人工神經網絡">人工神經網絡方法。專家系統是在宏觀功能上模擬人的知識推理能力,是以邏輯推理為基礎模擬人類思維的符號主義人工智能方法,它是基于邏輯演繹的,對知識的處理所模擬的是人的邏輯思維機制。人工神經網絡則是在微觀上模擬人的認識能力,是以連接結構為基礎,通過模擬人類大腦結構來模擬人類形象思維,它是基于集體計算的,對知識的處理所模擬的是人的邏輯思維機制。智能故障管理的研究一般集中在專家系統上,然而它不能適應新的或不完備的數據,不能處理概率問題,這使它很難應用于大型動態網絡。
現有的智能故障管理技術主要有以下三個缺點:
(1)目前智能故障管理的研究主要集中在專家系統上,不能適應新的或不完備的數據,很難應用于大型動態網絡。
(2)故障診斷的專家系統主要采用一種技術,實際應用范圍較窄。
(3)主要進行故障診斷,不支持故障自動恢復。
主體(Agent)是指能在動態的多" title="的多">的多Agent領域采取靈活、自治活動的計算機實體,智能Agent是具有實時處理多維信息、相互作用和能有效傳遞信念、意圖等智能的自治的軟件實體。它具有智能性、自治性、靈活性、開放性、適應性、協作性和推理機制等特性。
智能Agent的內部行為表現為:通信管理器接收外部環境的信息,由推理機根據這些信息和Agent狀態,進行分析和理解,形成與其他Agent相一致的協同工作方式,并按該方式及自身能力(知識水平等),執行相關的動作,形成Agent新的狀態,由此而進一步引起新的Agent推理活動。智能Agent的活動行為是主動進行的,Agent的推理機每隔一時間片都要檢測通信狀態和自身狀態,以確定其推理活動的趨勢。
同傳統的故障管理技術相比,智能Agent故障管理模型具有下面三個優點:
(1)將多Agent技術應用于復雜故障診斷領域,對診斷任務辨識、分解,綜合利用各Agent的內部診斷機制,通過各Agent間的交互、協作,對故障進行診斷,使故障診斷技術能應用于大型動態網絡及各種復雜設備。
(2)各診斷Agent間綜合利用多種智能故障技術,以便能對多數故障進行診斷。
(3)通過故障診斷結果,增加故障恢復模塊,對故障進行自動恢復。
2 智能故障管理的模型
2.1 故障管理流程
故障管理主要包括故障發現、故障診斷和故障恢復三個部分。故障管理的流程如圖1所示。
2.2 智能故障管理的自動機模型
智能故障管理的狀態機模型如圖2所示。
模型用BNF形式化表示如下:
<領域經驗知識>∷=<領域經驗知識頭><領域經驗知識體>
<領域經驗知識頭>∷=<領域經驗知識名>[<經驗知識代碼>][<知識庫名>][<說明表>]
<領域經驗知識體>∷=IF{<前提條件><運算符>}+THEN<結論>
<前提條件>∷=項、變量或用戶定義的表達式名
<運算符>∷=AND|OR
<結論>∷=表達式
這一描述完全揭示了模型的三級信息形式,即模型的用戶視圖、概念結構和可運行實體。
3 智能Agent框架結構
依據智能Agent的內部行為表現,為完成故障的實時監控、診斷及恢復功能,采用圖3所示的結構來構成智能Agent,內部結構采用統一模式來描述。
通過上述定義可知,Agent是具有特定領域知識和問題求解能力,能自主工作和具有協作交互能力的智能實體,具有知識、模型和數據處理能力,基于Agen的語言L而進行多Agent間復合問題求解規劃過程。Agent可由各Web節點組合而成,具有很好的可擴展性和通用性。
4 智能Agent系統構成
模型結構構成如圖4所示。
下面對結構中的相關部分進行簡要的介紹:
(1)通信接口" title="通信接口">通信接口
通信接口有兩個功能:輸入信息處理、系統輸出表示。主要功能是把輸入信息轉變為相應的知識查詢與操縱語言KQML(Knowledge Query and Manipulation Language)消息格式進行發送,同時還負責顯示系統的處理結果或信息。通信接口的設計要注意應用重用性。
(2)信息獲取Agent
故障信息管理不只是一個簡單的集中式數據庫和知識庫,而且信息的格式也可能不同,因此信息的獲取就顯得非常重要。信息獲取Agent封裝了信息的存取過程,通過KQML與外界交互信息,內部采用JDBC、ODBC等方式存取信息。
(3)任務管理Agent
任務管理Agent主要包括信息預處理、任務分解及任務控制等。
信息預處理主要是信息的過濾、分類和關聯。
信息過濾,是指將采集到的故障信息根據定義的規則進行過濾,去除無關的告警信息的動作。廣義地,可以指從多個告警中過濾出少數告警的任何動作。
信息分類,是指將告警信息按照告警等級進行分類,根據告警信息的等級及策略優先級決定處理的順序。
信息關聯,是指從大量的告警信息中發現頻繁出現的項集模式知識,通過剔除不必要和不相關的信息,提高信息的語義表達,幫助找出產生事件的真正問題或條件。
任務分解的原則是診斷子任務目標明確,并且使子任務間的耦合盡量少,以簡化完成子任務的診斷Agent之間的協作和通信。一般來說,在高層(粗粒度上)多采用結構分解,而底層(細粒度上)多采用故障分解,這與人們一般的診斷思路相一致。這種綜合分解可以一直進行到設備某個基本結構的一個明確的故障問題。這種目標明確的診斷子任務稱為診斷活動。診斷活動與一般的診斷子任務的區別是診斷活動包含明確的故障診斷操作。對診斷領域問題進行分布式任務分解,將得到一個層次結構清晰的診斷任務樹。
當某故障問題的診斷可能或必須通過多個診斷Agent協作完成時,必須考慮多個診斷Agent間的協調與合作問題。對于某診斷任務,各個診斷Agent具有不同的性能。因此須選擇耗費系統資源最少、診斷效果最好的診斷Agent來完成診斷任務。這就是診斷Agent的協調問題。量化診斷Agent診斷性能是解決Agent間協調問題的關鍵。另外,對于復雜的故障論斷問題須基于多Agent的思想,將其分解并運用多種故障診斷方法協同完成,這就是多診斷Agent間的使用問題。為了完成共同診斷任務而合作的診斷Agent的集體形成一個診斷Agent聯盟。這要求每個Agent對其他Agent的功能、效率有較詳細的了解。因此,在設計時要把其他Agent的資料放在Agent的數據庫內,并且Agent自身能夠根據實際情況對數據庫進行修改,根據這些資料選擇合作對象。
(4)診斷Agent
診斷Agent實現各種具體的分析和診斷算法。包含FFTr Agent、小波分析Agent、時序模型Agent等分析方法以及神經網絡Agent、遺傳算法Agent、專家系統Agent等智能診斷模型。診斷Agent同時對知識庫進行管理。
(5)用戶界面Agent
用戶界面Agent的主要功能是代替傳統智能決策系統中的問題與人機交互系統來與用戶進行交互。它采用一種間接管理風格。在基于該模型的系統中,用戶只需給出大概的指導即可以控制系統的運行,而無須顯式地告訴計算機具體的行為。由于Agent本身具有面向目標(即能夠展現出一種導向目標的行為)和協作性(可協商)的特點,因此它可以針對不同用戶進行不同的處理。用戶界面Agent可以針對不同的用戶進行個性化處理,從而能夠適應于特定用戶的特定行為。當它能夠確定用戶在某個特定的情況下將如何作出反應時,它就開始替代或者幫助用戶完成相應的任務。
(6)故障恢復Agent
根據診斷Agent給出的診斷結果及方法對故障進行恢復,可通過自動恢復腳本或POST方法實現。
(7)系統功能的實現
面向Agent的軟件機制是設計各應用領域的多Agent的軟件技術基礎,包括面向Agent的分布式軟件協議(CORBA、COM/DCOM)、Agent間的通信語言KQML、面向Agent的開發環境平臺以及面向Agent的程序設計(AOP)等。
系統可采用CORBA來實現診斷Agent間的通信,CORBA的平臺無關性和語言無關性對多Agent智能故障診斷及恢復的實現至關重要,不考慮操作系統和編程語言的差異將大大減輕系統開發的工作量。
KQML是用來實現各Agent交互的消息格式和消息處理協議。它使得Agent能夠和其他的Agent以及Agent所運行的環境進行知識和信息的交換。它提供了一套標準的Agent通信原語,從而使得使用這種語言的Agent之間都可以進行交流和共享信息。KQML定義了一種Agent之間傳遞信息的標準語法和動作。這些動作主要是從Speech Act理論中演化出來的,例如tell、perform、reply等。雖然還有其他Agent通信語言,但為了保證系統將來的兼容性,故選擇KQML作為通信語言。另外,KQML與Agent間的具體通信方式(如采用的協議和網絡的具體形式)無關,所以KQML可以有很多種實現方法(如通過TCP/IP或電子郵件實現)。
故障診斷Agent的知識庫建立和維護采用Visual Prolog開發平臺,系統的知識庫主要是通過人工方式建立的,故障診斷Agent可對知識庫進行修改和添加。
在傳統智能故障管理的基礎上,結合Agent技術,提出了多Agent智能故障管理模型,并給出了其實現方法。該方法克服了傳統故障管理方法的許多不足,大大提高了大規模匯聚接入路由器的設備及網絡的性能,保證了網絡的正常運行。
參考文獻
1 聶勤務.分布式智能故障診斷模型的MAS實現研究[J].計算機工程與應用,2004;(30)