本發(fā)明涉及一種基于sdn(softwaredefinenetwork,軟件定義網(wǎng)絡(luò))架構(gòu)的網(wǎng)絡(luò)故障檢測(cè)與修復(fù)方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)高速的飛速發(fā)展,互聯(lián)網(wǎng)已經(jīng)深入生活的方方面面,越來(lái)越多的業(yè)務(wù)采用“互聯(lián)網(wǎng)+”模式,如常見(jiàn)的點(diǎn)餐服務(wù)美團(tuán),出行打車(chē)服務(wù)滴滴出行,以及支付服務(wù)微信、支付寶等。因此,網(wǎng)絡(luò)系統(tǒng)的安全和穩(wěn)定是現(xiàn)代生活的一個(gè)基本的保證,如果出現(xiàn)崩潰,將會(huì)造成日常生活的崩潰或者巨大損失。據(jù)統(tǒng)計(jì),一個(gè)局域網(wǎng)在一年之內(nèi)出現(xiàn)的故障次數(shù)高達(dá)二十多次,由此產(chǎn)生的網(wǎng)絡(luò)中斷服務(wù)時(shí)間在十幾個(gè)小時(shí),而那些大的運(yùn)營(yíng)商如電信、移動(dòng)等公司,幾個(gè)小時(shí)的中斷可能造上億美元的經(jīng)濟(jì)損失,因此,如何保證網(wǎng)絡(luò)的安全運(yùn)行,并在出現(xiàn)故障時(shí)候能夠及時(shí)發(fā)現(xiàn),并進(jìn)行適當(dāng)?shù)男迯?fù)是當(dāng)前最為重要的問(wèn)題之一。
目前,存在大量的網(wǎng)絡(luò)故障診斷方法,這些方法大都基于貝葉斯網(wǎng)絡(luò)、人工智能、神經(jīng)網(wǎng)絡(luò)等技術(shù),通常具有自主學(xué)習(xí)的功能,但卻是基于歷史信息的一種推斷,僅供網(wǎng)絡(luò)管理人員進(jìn)行網(wǎng)絡(luò)管理的一種參考,并且不能對(duì)故障進(jìn)行準(zhǔn)確定位,因此,不適合網(wǎng)絡(luò)故障檢測(cè)和自動(dòng)修復(fù)系統(tǒng)。
進(jìn)行故障檢測(cè)的前提是獲取當(dāng)前網(wǎng)絡(luò)的狀態(tài)信息,目前圍繞如何降低狀態(tài)獲取時(shí)的系統(tǒng)開(kāi)銷(xiāo),而又能保證故障檢測(cè)的實(shí)時(shí)性進(jìn)行了很多研究。分為三類(lèi):輪詢(xún),該種方式規(guī)定t時(shí)間周期進(jìn)行定時(shí)獲取網(wǎng)絡(luò)狀態(tài)信息,但存在時(shí)間大小如何設(shè)置問(wèn)題;事件通知,該種方式采用異步通知機(jī)制,但是存在代理端崩潰無(wú)法發(fā)送事件通知;輪詢(xún)和事件通知結(jié)合,該方式在一定程度上可以解決輪詢(xún)開(kāi)銷(xiāo)和故障響應(yīng)時(shí)間問(wèn)題,但是卻要求在代理端維持網(wǎng)絡(luò)的狀態(tài)信息,造成代理端的系統(tǒng)開(kāi)銷(xiāo)和維護(hù)開(kāi)銷(xiāo)。
目前進(jìn)行網(wǎng)絡(luò)故障檢測(cè)系統(tǒng),主要存在以下弊端與不足:
1.自動(dòng)化程度較低。網(wǎng)絡(luò)出現(xiàn)故障時(shí)候,系統(tǒng)不能及時(shí)對(duì)網(wǎng)絡(luò)故障進(jìn)行修復(fù),達(dá)到網(wǎng)絡(luò)快速恢復(fù)健康運(yùn)行的目的。
2.故障檢測(cè)準(zhǔn)確性較低。即無(wú)法對(duì)已知故障進(jìn)行準(zhǔn)確定位。
3.在進(jìn)行網(wǎng)絡(luò)狀態(tài)獲取時(shí)候,無(wú)法在系統(tǒng)開(kāi)銷(xiāo)和故障響應(yīng)時(shí)間之間取得均衡。
在日益復(fù)雜的網(wǎng)絡(luò)環(huán)境下,這些故障檢測(cè)方法既不能做到故障的自動(dòng)化修復(fù),也不能降低進(jìn)行故障檢測(cè)的開(kāi)銷(xiāo)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題是提供基于sdn架構(gòu)的網(wǎng)絡(luò)故障檢測(cè)與修復(fù)方法,既能確保故障的自動(dòng)化修復(fù),也能降低進(jìn)行故障檢測(cè)的開(kāi)銷(xiāo),且提高故障檢測(cè)準(zhǔn)確性,對(duì)已知故障進(jìn)行準(zhǔn)確定位。
本發(fā)明的技術(shù)方案是:
第一步,構(gòu)建一個(gè)集中與分布相結(jié)合的網(wǎng)絡(luò)系統(tǒng),它由n個(gè)網(wǎng)絡(luò)設(shè)備、一臺(tái)集中管理服務(wù)器以及一臺(tái)監(jiān)控計(jì)算機(jī)構(gòu)成,它們通過(guò)互聯(lián)網(wǎng)相連。
網(wǎng)絡(luò)設(shè)備主要是路由器,其上部署有agent代理模塊,n個(gè)網(wǎng)絡(luò)設(shè)備均與集中管理服務(wù)器相連。agent代理模塊負(fù)責(zé)獲取網(wǎng)絡(luò)狀態(tài)信息(主要指網(wǎng)絡(luò)設(shè)備的狀態(tài)信息,包括路由協(xié)議的網(wǎng)絡(luò)狀態(tài)信息。網(wǎng)絡(luò)狀態(tài)信息包括網(wǎng)絡(luò)狀態(tài)關(guān)鍵字和網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值,網(wǎng)絡(luò)狀態(tài)關(guān)鍵字指網(wǎng)絡(luò)設(shè)備運(yùn)行的各種網(wǎng)絡(luò)協(xié)議中描述網(wǎng)絡(luò)狀態(tài)的屬性;網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值指網(wǎng)絡(luò)協(xié)議運(yùn)行時(shí)網(wǎng)絡(luò)狀態(tài)關(guān)鍵字對(duì)應(yīng)的數(shù)值),并對(duì)網(wǎng)絡(luò)協(xié)議進(jìn)行配置。agent代理模塊通過(guò)南向接口將網(wǎng)路狀態(tài)信息送給集中管理服務(wù)器,常見(jiàn)南向接口有cli(clientlineinterface,命令行)、snmp(simplenetworkmanagerprotocol,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)、netconf(networkconfigurationprotocol,網(wǎng)絡(luò)配置協(xié)議)等。
集中管理服務(wù)器除安裝業(yè)務(wù)層模塊,還安裝有對(duì)網(wǎng)絡(luò)故障進(jìn)行檢測(cè)和修復(fù)的控制層模塊。
控制層模塊由網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊、故障檢測(cè)推理模塊、網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)和專(zhuān)家知識(shí)庫(kù)組成。網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊設(shè)置一個(gè)故障標(biāo)志位,初始化為0,當(dāng)故障標(biāo)志位為1,說(shuō)明網(wǎng)絡(luò)當(dāng)前存在故障,否則不存在故障。網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊接收業(yè)務(wù)層模塊發(fā)來(lái)的故障檢測(cè)指令,根據(jù)故障檢測(cè)指令對(duì)相應(yīng)的網(wǎng)絡(luò)協(xié)議進(jìn)行檢測(cè)和修復(fù);網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊與n個(gè)網(wǎng)絡(luò)設(shè)備的agent代理模塊相連、業(yè)務(wù)層模塊、故障檢測(cè)推理模塊相連;網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊從agent代理模塊獲取網(wǎng)絡(luò)狀態(tài)信息,將網(wǎng)絡(luò)狀態(tài)信息存儲(chǔ)到網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)中;網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊從故障檢測(cè)推理模塊接收故障修復(fù)策略,執(zhí)行故障修復(fù)策略進(jìn)行修復(fù),執(zhí)行完故障修復(fù)策略后,將網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)中與該故障相對(duì)應(yīng)的網(wǎng)絡(luò)狀態(tài)信息刪除;網(wǎng)絡(luò)故障檢測(cè)推理模塊與網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊、網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)、專(zhuān)家知識(shí)庫(kù)以及監(jiān)控計(jì)算機(jī)相連,根據(jù)專(zhuān)家知識(shí)庫(kù)對(duì)當(dāng)前的網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)中網(wǎng)絡(luò)狀態(tài)信息進(jìn)行檢測(cè),如果某條網(wǎng)絡(luò)狀態(tài)信息滿(mǎn)足專(zhuān)家知識(shí)庫(kù)中故障條件,說(shuō)明當(dāng)前網(wǎng)絡(luò)存在故障,則故障檢測(cè)推理模塊將專(zhuān)家知識(shí)庫(kù)給出的故障修復(fù)策略發(fā)送給網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊,否則,說(shuō)明存在未知故障需要監(jiān)控計(jì)算機(jī)進(jìn)一步確認(rèn),則故障檢測(cè)推理模塊將故障信息發(fā)送給監(jiān)控計(jì)算機(jī)。
業(yè)務(wù)層模塊向網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊發(fā)送故障檢測(cè)指令,故障檢測(cè)指令包括ospf故障檢測(cè)指令、bgp故障檢測(cè)指令等各種路由協(xié)議檢測(cè)指令,網(wǎng)絡(luò)設(shè)備運(yùn)行m種網(wǎng)絡(luò)協(xié)議,則有m中故障檢測(cè)指令,m為正整數(shù)。
網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)存儲(chǔ)網(wǎng)絡(luò)狀態(tài)信息,在實(shí)際應(yīng)用中采用mysql數(shù)據(jù)庫(kù),有k個(gè)表項(xiàng),表項(xiàng)內(nèi)容為<網(wǎng)絡(luò)狀態(tài)關(guān)鍵字,網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值>。k為n個(gè)網(wǎng)絡(luò)設(shè)備上運(yùn)行的所有網(wǎng)絡(luò)協(xié)議的網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的總數(shù),網(wǎng)絡(luò)狀態(tài)關(guān)鍵字由網(wǎng)絡(luò)管理員通過(guò)cli向網(wǎng)絡(luò)設(shè)備獲取,網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值則由網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊收集,若網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值異常,表示網(wǎng)絡(luò)出現(xiàn)故障。
專(zhuān)家知識(shí)庫(kù)是存貯故障條件和故障修復(fù)策略的數(shù)據(jù)庫(kù),故障條件和故障修復(fù)策略以產(chǎn)生式規(guī)則的形式存貯,這些產(chǎn)生式以樹(shù)型數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ),專(zhuān)家知識(shí)庫(kù)由監(jiān)控計(jì)算機(jī)負(fù)責(zé)初始化以及更新和維護(hù)操作。產(chǎn)生式規(guī)則的前半部分是故障條件,多個(gè)故障條件之間采用邏輯運(yùn)算符(包括and即“且”、or即“或”兩種)進(jìn)行連接,后半部分是對(duì)應(yīng)該故障修復(fù)策略(即網(wǎng)絡(luò)協(xié)議配置命令)。故障條件內(nèi)容為<網(wǎng)絡(luò)狀態(tài)關(guān)鍵字,邏輯符號(hào),臨界數(shù)值>,其中故障條件中的網(wǎng)絡(luò)狀態(tài)關(guān)鍵字和網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)中的網(wǎng)絡(luò)狀態(tài)關(guān)鍵字相同,邏輯符號(hào)包括“>”(大于)、”==”(等于)、“<”(小于)三種,臨界數(shù)值是判定網(wǎng)絡(luò)是否故障的依據(jù),當(dāng)網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值高于或者低于或者等于臨界數(shù)值時(shí),網(wǎng)絡(luò)就可能出現(xiàn)故障。如故障條件為<spf,>,1000>的含義是ospf路由協(xié)議運(yùn)行spf算法次數(shù)大于1000,網(wǎng)絡(luò)存在路由震蕩故障。
監(jiān)控計(jì)算機(jī)上安裝有用戶(hù)接口模塊,用戶(hù)接口模塊與故障檢測(cè)推理模塊、專(zhuān)家知識(shí)庫(kù)相連,負(fù)責(zé)將從故障檢測(cè)推理模塊接收的判定為未知的故障進(jìn)行顯示,供網(wǎng)絡(luò)管理員在排除故障過(guò)程中進(jìn)行參考;同時(shí)用戶(hù)接口模塊還提供專(zhuān)家知識(shí)錄入接口供網(wǎng)絡(luò)管理員錄入故障條件和故障修復(fù)策略到專(zhuān)家知識(shí)庫(kù)中。
第二步,網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊初始化網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù),將網(wǎng)絡(luò)狀態(tài)關(guān)鍵字置為網(wǎng)絡(luò)設(shè)備中運(yùn)行的各種網(wǎng)絡(luò)協(xié)議描述網(wǎng)絡(luò)狀態(tài)的屬性,所有網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值置空,并將故障標(biāo)志位置0。
第三步,監(jiān)控計(jì)算機(jī)對(duì)專(zhuān)家知識(shí)庫(kù)進(jìn)行初始化,將故障條件和故障修復(fù)策略以產(chǎn)生式集合的形式進(jìn)行組織,并將產(chǎn)生式集合(包括多條產(chǎn)生式,一條產(chǎn)生式包含一條故障條件以及對(duì)應(yīng)的修復(fù)策略)轉(zhuǎn)化為一個(gè)包含故障條件和故障修復(fù)策略的樹(shù)型結(jié)構(gòu),方法是:
采用樹(shù)的形式對(duì)產(chǎn)生式進(jìn)行存儲(chǔ),當(dāng)樹(shù)節(jié)點(diǎn)是根節(jié)點(diǎn)時(shí),樹(shù)節(jié)點(diǎn)存儲(chǔ)指向子節(jié)點(diǎn)的指針;當(dāng)樹(shù)節(jié)點(diǎn)是非葉子節(jié)點(diǎn)也非根節(jié)點(diǎn)時(shí)(所謂葉子節(jié)點(diǎn)是指該節(jié)點(diǎn)沒(méi)有子節(jié)點(diǎn))時(shí),樹(shù)節(jié)點(diǎn)由指針和故障條件組成;當(dāng)樹(shù)節(jié)點(diǎn)是葉子節(jié)點(diǎn)時(shí),樹(shù)節(jié)點(diǎn)由故障修復(fù)策略組成;父子(其中子節(jié)點(diǎn)不是葉子節(jié)點(diǎn))節(jié)點(diǎn)間是“and”關(guān)系,父節(jié)點(diǎn)和子節(jié)點(diǎn)中的故障條件在產(chǎn)生式規(guī)則中是“and”關(guān)系;兄弟節(jié)點(diǎn)間是“or”關(guān)系(兄弟節(jié)點(diǎn)中的故障條件在產(chǎn)生式規(guī)則中是”or”關(guān)系)或者無(wú)邏輯關(guān)系(兄弟節(jié)點(diǎn)中的故障條件不屬于同一條產(chǎn)生式規(guī)則);產(chǎn)生式集合有l(wèi)條產(chǎn)生式規(guī)則,根節(jié)點(diǎn)就有l(wèi)個(gè)子節(jié)點(diǎn),從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)的路徑存儲(chǔ)一條產(chǎn)生式規(guī)則。l為正整數(shù),采用以上存儲(chǔ)方法即可將產(chǎn)生式集合轉(zhuǎn)化為一個(gè)包含故障條件和故障修復(fù)策略的樹(shù)型結(jié)構(gòu)。
第四步,業(yè)務(wù)層模塊給網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊發(fā)送故障檢測(cè)指令。
第五步,網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊接收到業(yè)務(wù)層發(fā)來(lái)的故障檢測(cè)指令后,網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊并行地和n個(gè)路由器上的agent代理模塊建立通信,根據(jù)故障檢測(cè)指令的不同,采用自適應(yīng)輪詢(xún)算法通過(guò)南向接口從n個(gè)網(wǎng)絡(luò)設(shè)備的agent代理模塊獲取不同網(wǎng)絡(luò)協(xié)議的網(wǎng)絡(luò)狀態(tài)信息,故障檢測(cè)推理模塊基于網(wǎng)絡(luò)狀態(tài)信息進(jìn)行故障的檢測(cè)與修復(fù),方法如下:
5.1設(shè)置dt=t1,dt是網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊實(shí)際采用輪詢(xún)周期,t1和t2為監(jiān)控計(jì)算機(jī)根據(jù)經(jīng)驗(yàn)預(yù)先設(shè)置的輪詢(xún)周期下限和上限數(shù)值,t1一般設(shè)為5分鐘,t2一般設(shè)為30分鐘。
5.2每隔dt時(shí)間,網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊將故障檢測(cè)指令發(fā)送給agent代理模塊。
5.3agent代理模塊接收到故障檢測(cè)命令后,判斷是要檢測(cè)何種協(xié)議的故障,通過(guò)cli獲取該協(xié)議所對(duì)應(yīng)的網(wǎng)絡(luò)狀態(tài)信息中的網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值,并將該協(xié)議所對(duì)應(yīng)的網(wǎng)絡(luò)狀態(tài)信息中的網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值發(fā)送給網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊。
5.4網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊接收到網(wǎng)絡(luò)狀態(tài)信息后,一方面將網(wǎng)絡(luò)狀態(tài)信息存儲(chǔ)到網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)中,一方面將網(wǎng)絡(luò)狀態(tài)信息交給故障檢測(cè)推理模塊。
5.5故障檢測(cè)推理模塊運(yùn)行故障匹配算法進(jìn)行故障檢測(cè)與修復(fù),故障匹配算法采用樹(shù)的深度優(yōu)先遍歷算法,從根節(jié)點(diǎn)開(kāi)始遍歷,方法如下:
5.5.1判斷當(dāng)前樹(shù)節(jié)點(diǎn)是否為葉子節(jié)點(diǎn),如果是,轉(zhuǎn)5.5.3;否則,根據(jù)當(dāng)前樹(shù)節(jié)點(diǎn)中存儲(chǔ)的故障條件中的網(wǎng)絡(luò)狀態(tài)關(guān)鍵字查找網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù),獲得該網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值,轉(zhuǎn)5.5.2。
5.5.2將獲取的網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值與當(dāng)前樹(shù)節(jié)點(diǎn)的故障條件中的臨界數(shù)值進(jìn)行比較,判斷獲取的網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值是否滿(mǎn)足當(dāng)前樹(shù)節(jié)點(diǎn)的故障條件中的邏輯關(guān)系。如果滿(mǎn)足,說(shuō)明當(dāng)前樹(shù)節(jié)點(diǎn)的故障條件滿(mǎn)足,則令當(dāng)前樹(shù)節(jié)點(diǎn)為當(dāng)前樹(shù)節(jié)點(diǎn)的子節(jié)點(diǎn),轉(zhuǎn)5.5.1,繼續(xù)深度遍歷;否則,說(shuō)明該條產(chǎn)生式故障條件不滿(mǎn)足,需進(jìn)行其他產(chǎn)生式的故障條件判斷,轉(zhuǎn)5.5.6。
5.5.3此時(shí)當(dāng)前樹(shù)節(jié)點(diǎn)為葉子節(jié)點(diǎn),說(shuō)明網(wǎng)絡(luò)存在故障,將故障標(biāo)志位置1,同時(shí)故障檢測(cè)推理模塊從該葉子節(jié)點(diǎn)中獲取修復(fù)策略,轉(zhuǎn)5.5.4。
5.5.4故障檢測(cè)推理模塊判斷修復(fù)策略是否為空,如果不為空,說(shuō)明該故障是已知故障,故障檢測(cè)推理模塊將修復(fù)策略發(fā)送給網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊,網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊通過(guò)南向接口將故障修復(fù)策略發(fā)送給agent代理模塊,轉(zhuǎn)5.5.5;否則說(shuō)明故障為未知故障,則故障檢測(cè)推理模塊將該故障發(fā)送給監(jiān)控計(jì)算機(jī),將故障顯示出來(lái),以便監(jiān)控計(jì)算機(jī)進(jìn)行分析和錄入該故障對(duì)應(yīng)的故障條件和修復(fù)策略,轉(zhuǎn)5.5.6。
5.5.5agent代理模塊接收到故障修復(fù)策略后,agent代理模塊執(zhí)行故障修復(fù)策略(一系列的網(wǎng)絡(luò)協(xié)議配置命令),完成對(duì)網(wǎng)絡(luò)協(xié)議的配置,便可以消除故障,轉(zhuǎn)5.5.6。
5.5.6判斷當(dāng)前樹(shù)節(jié)點(diǎn)的父節(jié)點(diǎn)是否還存在未被遍歷的子節(jié)點(diǎn),如果存在,令當(dāng)前樹(shù)節(jié)點(diǎn)為該未被遍歷的子節(jié)點(diǎn),轉(zhuǎn)5.5.1,對(duì)未被遍歷的子節(jié)點(diǎn)進(jìn)行遍歷;如果不存在,判定當(dāng)前樹(shù)節(jié)點(diǎn)的父節(jié)點(diǎn)是否為根節(jié)點(diǎn),如果不是,則令當(dāng)前樹(shù)節(jié)點(diǎn)的父節(jié)點(diǎn)為當(dāng)前樹(shù)節(jié)點(diǎn)的父節(jié)點(diǎn)的父節(jié)點(diǎn)轉(zhuǎn)5.5.6;如果當(dāng)前樹(shù)節(jié)點(diǎn)的父節(jié)點(diǎn)為根節(jié)點(diǎn),說(shuō)明整個(gè)樹(shù)遍歷結(jié)束,轉(zhuǎn)5.6。
5.6網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊判斷故障標(biāo)志位是否為1,如果為1,說(shuō)明當(dāng)前網(wǎng)絡(luò)狀態(tài)較差,需要經(jīng)常獲取網(wǎng)絡(luò)狀態(tài)信息進(jìn)行檢查,因此令dt=t1,同時(shí)將故障標(biāo)志位置0,轉(zhuǎn)5.2;否則,說(shuō)明網(wǎng)絡(luò)不存在故障(即當(dāng)前網(wǎng)絡(luò)狀態(tài)良好),將dt加1分鐘(下次獲取網(wǎng)絡(luò)狀態(tài)信息時(shí)間間隔延長(zhǎng),因?yàn)榫W(wǎng)絡(luò)狀態(tài)良好,不需要經(jīng)常進(jìn)行獲取網(wǎng)絡(luò)狀態(tài)信息進(jìn)行檢測(cè),將dt變大,降低系統(tǒng)開(kāi)銷(xiāo))轉(zhuǎn)5.7。
5.7如果dt>t2(不能將下次獲取網(wǎng)絡(luò)狀態(tài)信息的時(shí)間間隔無(wú)限,)則將dt=t1,轉(zhuǎn)5.2。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下技術(shù)優(yōu)點(diǎn):
1、本發(fā)明第五步基于自適應(yīng)輪詢(xún)算法獲取網(wǎng)絡(luò)狀態(tài)信息,減少了網(wǎng)絡(luò)獲取狀態(tài)信息造成的系統(tǒng)開(kāi)銷(xiāo),最大可減少50%。
2、本發(fā)明第五步基于產(chǎn)生式規(guī)則的故障匹配算法,可以實(shí)現(xiàn)故障的快速準(zhǔn)確檢測(cè)和自動(dòng)修復(fù)。對(duì)已知故障檢測(cè)的準(zhǔn)確率為100%,實(shí)驗(yàn)中,對(duì)50個(gè)路由器組成的的網(wǎng)絡(luò)規(guī)模進(jìn)行故障恢復(fù)的最大時(shí)間為5分鐘,且最大故障恢復(fù)時(shí)間隨路由器的個(gè)數(shù)增加而有所增加。
附圖說(shuō)明
圖1是本發(fā)明總體流程圖。
圖2是本發(fā)明第一步構(gòu)建的集中與分布相結(jié)合的網(wǎng)絡(luò)系統(tǒng)邏輯結(jié)構(gòu)示意圖。
圖3是本發(fā)明集中與分布式相結(jié)合的網(wǎng)絡(luò)系統(tǒng)上軟件框架部署邏輯結(jié)構(gòu)圖。
圖4是本發(fā)明第五步網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊獲取網(wǎng)絡(luò)狀態(tài)信息及故障檢測(cè)推理模塊進(jìn)行故障的檢測(cè)與修復(fù)的流程圖。
具體實(shí)施方法
圖1為本發(fā)明的總體流程圖;本發(fā)明包括以下幾個(gè)步驟:
第一步,構(gòu)建一個(gè)如圖2所示的集中與分布相結(jié)合的網(wǎng)絡(luò)系統(tǒng),它由n個(gè)網(wǎng)絡(luò)設(shè)備、一臺(tái)集中管理服務(wù)器以及一臺(tái)監(jiān)控計(jì)算機(jī)構(gòu)成,它們通過(guò)互聯(lián)網(wǎng)相連。
如圖3所示,網(wǎng)絡(luò)設(shè)備主要是路由器,其上部署有agent代理模塊,n個(gè)網(wǎng)絡(luò)設(shè)備均與集中管理服務(wù)器相連。agent代理模塊負(fù)責(zé)獲取網(wǎng)絡(luò)狀態(tài)信息,并對(duì)網(wǎng)絡(luò)協(xié)議進(jìn)行配置。agent代理模塊通過(guò)南向接口將網(wǎng)路狀態(tài)信息送給集中管理服務(wù)器。
集中管理服務(wù)器除安裝業(yè)務(wù)層模塊,還安裝有對(duì)網(wǎng)絡(luò)故障進(jìn)行檢測(cè)和修復(fù)的控制層模塊。
控制層模塊由網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊、故障檢測(cè)推理模塊、網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)和專(zhuān)家知識(shí)庫(kù)組成。網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊設(shè)置一個(gè)故障標(biāo)志位,初始化為0,當(dāng)故障標(biāo)志位為1,說(shuō)明網(wǎng)絡(luò)當(dāng)前存在故障,否則不存在故障。網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊接收業(yè)務(wù)層模塊發(fā)來(lái)的故障檢測(cè)指令,根據(jù)故障檢測(cè)指令對(duì)相應(yīng)的網(wǎng)絡(luò)協(xié)議進(jìn)行檢測(cè)和修復(fù);網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊與n個(gè)網(wǎng)絡(luò)設(shè)備的agent代理模塊相連、業(yè)務(wù)層模塊、故障檢測(cè)推理模塊相連;網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊從agent代理模塊獲取網(wǎng)絡(luò)狀態(tài)信息,將網(wǎng)絡(luò)狀態(tài)信息存儲(chǔ)到網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)中;網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊從故障檢測(cè)推理模塊接收故障修復(fù)策略,執(zhí)行故障修復(fù)策略進(jìn)行修復(fù),執(zhí)行完故障修復(fù)策略后,將網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)中與該故障相對(duì)應(yīng)的網(wǎng)絡(luò)狀態(tài)信息刪除;網(wǎng)絡(luò)故障檢測(cè)推理模塊與網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊、網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)、專(zhuān)家知識(shí)庫(kù)以及監(jiān)控計(jì)算機(jī)相連,根據(jù)專(zhuān)家知識(shí)庫(kù)對(duì)當(dāng)前的網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)中網(wǎng)絡(luò)狀態(tài)信息進(jìn)行檢測(cè),如果某條網(wǎng)絡(luò)狀態(tài)信息滿(mǎn)足專(zhuān)家知識(shí)庫(kù)中故障條件,說(shuō)明當(dāng)前網(wǎng)絡(luò)存在故障,則故障檢測(cè)推理模塊將專(zhuān)家知識(shí)庫(kù)給出的故障修復(fù)策略發(fā)送給網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊,否則,說(shuō)明存在未知故障需要監(jiān)控計(jì)算機(jī)進(jìn)一步確認(rèn),則故障檢測(cè)推理模塊將故障信息發(fā)送給監(jiān)控計(jì)算機(jī)。
業(yè)務(wù)層模塊向網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊發(fā)送故障檢測(cè)指令,故障檢測(cè)指令包括ospf故障檢測(cè)指令、bgp故障檢測(cè)指令等各種路由協(xié)議檢測(cè)指令,網(wǎng)絡(luò)設(shè)備運(yùn)行m種網(wǎng)絡(luò)協(xié)議,則有m中故障檢測(cè)指令,m為正整數(shù)。
網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)存儲(chǔ)網(wǎng)絡(luò)狀態(tài)信息,在實(shí)際應(yīng)用中采用mysql數(shù)據(jù)庫(kù)有k個(gè)表項(xiàng),表項(xiàng)內(nèi)容為<網(wǎng)絡(luò)狀態(tài)關(guān)鍵字,網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值>。k為n個(gè)網(wǎng)絡(luò)設(shè)備上運(yùn)行的所有網(wǎng)絡(luò)協(xié)議的網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的總數(shù),網(wǎng)絡(luò)狀態(tài)關(guān)鍵字由網(wǎng)絡(luò)管理員通過(guò)cli向網(wǎng)絡(luò)設(shè)備獲取,網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值則由網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊收集,若網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值異常,表示網(wǎng)絡(luò)出現(xiàn)故障。。
專(zhuān)家知識(shí)庫(kù)是存貯故障條件和故障修復(fù)策略的數(shù)據(jù)庫(kù),故障條件和故障修復(fù)策略以產(chǎn)生式規(guī)則的形式存貯,這些產(chǎn)生式以樹(shù)型數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ),專(zhuān)家知識(shí)庫(kù)由監(jiān)控計(jì)算機(jī)負(fù)責(zé)初始化以及更新和維護(hù)操作。產(chǎn)生式規(guī)則的前半部分是故障條件,多個(gè)故障條件之間采用邏輯運(yùn)算符(包括and即“且”、or即“或”兩種)進(jìn)行連接,后半部分是對(duì)應(yīng)該故障修復(fù)策略(即網(wǎng)絡(luò)協(xié)議配置命令)。故障條件內(nèi)容為<網(wǎng)絡(luò)狀態(tài)關(guān)鍵字,邏輯符號(hào),臨界數(shù)值>,其中故障條件中的網(wǎng)絡(luò)關(guān)鍵字和網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)中的網(wǎng)絡(luò)關(guān)鍵字相同,邏輯符號(hào)包括“>”(大于)、”==”(等于)、“<”(小于)三種,臨界數(shù)值是判定網(wǎng)絡(luò)是否故障的依據(jù),當(dāng)網(wǎng)絡(luò)關(guān)鍵字的數(shù)值高于或者低于或者等于臨界數(shù)值時(shí),網(wǎng)絡(luò)就可能出現(xiàn)故障。
監(jiān)控計(jì)算機(jī)上安裝有用戶(hù)接口模塊,用戶(hù)接口模塊與故障檢測(cè)推理模塊、專(zhuān)家知識(shí)庫(kù)相連,負(fù)責(zé)將從故障檢測(cè)推理模塊接收的判定為未知的故障進(jìn)行顯示,供網(wǎng)絡(luò)管理員在排除故障過(guò)程中進(jìn)行參考;同時(shí)用戶(hù)接口模塊還提供專(zhuān)家知識(shí)錄入接口供網(wǎng)絡(luò)管理員錄入故障條件和故障修復(fù)策略到專(zhuān)家知識(shí)庫(kù)中。
第二步,網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊初始化網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù),將網(wǎng)絡(luò)狀態(tài)關(guān)鍵字置為網(wǎng)絡(luò)設(shè)備中運(yùn)行的各種網(wǎng)絡(luò)協(xié)議描述網(wǎng)絡(luò)狀態(tài)的屬性,所有網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值置空,并將故障標(biāo)志位置0。
第三步,監(jiān)控計(jì)算機(jī)對(duì)專(zhuān)家知識(shí)庫(kù)進(jìn)行初始化,將故障條件和故障修復(fù)策略以產(chǎn)生式集合的形式進(jìn)行組織,并將產(chǎn)生式集合以樹(shù)型數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ)。
第四步,業(yè)務(wù)層模塊給網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊發(fā)送故障檢測(cè)指令。
第五步,網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊接收到業(yè)務(wù)層發(fā)來(lái)的故障檢測(cè)指令后,網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊并行地和n個(gè)路由器上的agent代理模塊建立通信,根據(jù)故障檢測(cè)指令的不同,采用自適應(yīng)輪詢(xún)算法通過(guò)南向接口從n個(gè)網(wǎng)絡(luò)設(shè)備的agent代理模塊獲取不同網(wǎng)絡(luò)協(xié)議的網(wǎng)絡(luò)狀態(tài)信息,故障檢測(cè)推理模塊基于網(wǎng)絡(luò)狀態(tài)信息進(jìn)行故障的檢測(cè)與修復(fù),方法如圖4所示:
5.1設(shè)置dt=t1,dt是網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊實(shí)際采用輪詢(xún)周期,t1和t2為監(jiān)控計(jì)算機(jī)根據(jù)經(jīng)驗(yàn)預(yù)先設(shè)置的輪詢(xún)周期下限和上限數(shù)值,t1一般設(shè)為5分鐘,t2一般設(shè)為30分鐘。
5.2每隔dt時(shí)間,網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊將故障檢測(cè)指令發(fā)送給agent代理模塊。
5.3agent代理模塊接收到故障檢測(cè)命令后,判斷是要檢測(cè)何種協(xié)議的故障,通過(guò)cli獲取該協(xié)議所對(duì)應(yīng)的網(wǎng)絡(luò)狀態(tài)信息中的網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值,并將該協(xié)議所對(duì)應(yīng)的網(wǎng)絡(luò)狀態(tài)信息中的網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值發(fā)送給網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊。
5.4網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊接收到網(wǎng)絡(luò)狀態(tài)信息后,一方面將網(wǎng)絡(luò)狀態(tài)信息存儲(chǔ)到網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù)中,一方面將網(wǎng)絡(luò)狀態(tài)信息交給故障檢測(cè)推理模塊。
5.5故障檢測(cè)推理模塊運(yùn)行故障匹配算法進(jìn)行故障檢測(cè)與修復(fù),故障匹配算法采用樹(shù)的深度優(yōu)先遍歷算法,從根節(jié)點(diǎn)開(kāi)始遍歷,方法如下:
5.5.1判斷當(dāng)前樹(shù)節(jié)點(diǎn)是否為葉子節(jié)點(diǎn),如果是,轉(zhuǎn)5.5.3;否則,根據(jù)當(dāng)前樹(shù)節(jié)點(diǎn)中存儲(chǔ)的故障條件中的網(wǎng)絡(luò)狀態(tài)關(guān)鍵字查找網(wǎng)絡(luò)狀態(tài)參數(shù)數(shù)據(jù)庫(kù),獲得該網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值,轉(zhuǎn)5.5.2。
5.5.2將獲取的網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值與當(dāng)前樹(shù)節(jié)點(diǎn)的故障條件中的臨界數(shù)值進(jìn)行比較,判斷獲取的網(wǎng)絡(luò)狀態(tài)關(guān)鍵字的數(shù)值是否滿(mǎn)足當(dāng)前樹(shù)節(jié)點(diǎn)的故障條件中的邏輯關(guān)系。如果滿(mǎn)足,說(shuō)明當(dāng)前樹(shù)節(jié)點(diǎn)的故障條件滿(mǎn)足,則令當(dāng)前樹(shù)節(jié)點(diǎn)為當(dāng)前樹(shù)節(jié)點(diǎn)的子節(jié)點(diǎn),轉(zhuǎn)5.5.1,繼續(xù)深度遍歷;否則,說(shuō)明該條產(chǎn)生式故障條件不滿(mǎn)足,需進(jìn)行其他產(chǎn)生式的故障條件判斷,轉(zhuǎn)5.5.6。
5.5.3此時(shí)當(dāng)前樹(shù)節(jié)點(diǎn)為葉子節(jié)點(diǎn),說(shuō)明網(wǎng)絡(luò)存在故障,將故障標(biāo)志位置1,同時(shí)故障檢測(cè)推理模塊從該葉子節(jié)點(diǎn)中獲取修復(fù)策略,轉(zhuǎn)5.5.4。
5.5.4故障檢測(cè)推理模塊判斷修復(fù)策略是否為空,如果不為空,說(shuō)明該故障是已知故障,故障檢測(cè)推理模塊將修復(fù)策略發(fā)送給網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊,網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊通過(guò)南向接口將故障修復(fù)策略發(fā)送給agent代理模塊,轉(zhuǎn)5.5.5;否則說(shuō)明故障為未知故障,則故障檢測(cè)推理模塊將該故障發(fā)送給監(jiān)控計(jì)算機(jī),將故障顯示出來(lái),以便監(jiān)控計(jì)算機(jī)進(jìn)行分析和錄入該故障對(duì)應(yīng)的故障條件和修復(fù)策略,轉(zhuǎn)5.5.6。
5.5.5agent代理模塊接收到故障修復(fù)策略后,agent代理模塊執(zhí)行故障修復(fù)策略(一系列的網(wǎng)絡(luò)協(xié)議配置命令),完成對(duì)網(wǎng)絡(luò)協(xié)議的配置,便可以消除故障,轉(zhuǎn)5.5.6。
5.5.6判斷當(dāng)前樹(shù)節(jié)點(diǎn)的父節(jié)點(diǎn)是否還存在未被遍歷的子節(jié)點(diǎn),如果存在,令當(dāng)前樹(shù)節(jié)點(diǎn)為該未被遍歷的子節(jié)點(diǎn),轉(zhuǎn)5.5.1,對(duì)未被遍歷的子節(jié)點(diǎn)進(jìn)行遍歷;如果不存在,判定當(dāng)前樹(shù)節(jié)點(diǎn)的父節(jié)點(diǎn)是否為根節(jié)點(diǎn),如果不是,則令當(dāng)前樹(shù)節(jié)點(diǎn)的父節(jié)點(diǎn)為當(dāng)前樹(shù)節(jié)點(diǎn)的父節(jié)點(diǎn)的父節(jié)點(diǎn)轉(zhuǎn)5.5.6;如果當(dāng)前樹(shù)節(jié)點(diǎn)的父節(jié)點(diǎn)為根節(jié)點(diǎn),說(shuō)明整個(gè)樹(shù)遍歷結(jié)束,轉(zhuǎn)5.6。
5.6網(wǎng)絡(luò)狀態(tài)參數(shù)獲取和策略執(zhí)行模塊判斷故障標(biāo)志位是否為1,如果為1,說(shuō)明當(dāng)前網(wǎng)絡(luò)狀態(tài)較差,需要經(jīng)常獲取網(wǎng)絡(luò)狀態(tài)信息進(jìn)行檢查,因此令dt=t1,同時(shí)將故障標(biāo)志位置0,轉(zhuǎn)5.2;否則,說(shuō)明網(wǎng)絡(luò)不存在故障(即當(dāng)前網(wǎng)絡(luò)狀態(tài)良好),將dt加1分鐘(下次獲取網(wǎng)絡(luò)狀態(tài)信息時(shí)間間隔延長(zhǎng),因?yàn)榫W(wǎng)絡(luò)狀態(tài)良好,不需要經(jīng)常進(jìn)行獲取網(wǎng)絡(luò)狀態(tài)信息進(jìn)行檢測(cè),將dt變大,降低系統(tǒng)開(kāi)銷(xiāo))轉(zhuǎn)5.7。
5.7如果dt>t2(不能將下次獲取網(wǎng)絡(luò)狀態(tài)信息的時(shí)間間隔無(wú)限,)則將dt=t1,轉(zhuǎn)5.2。