本發(fā)明涉及通信技術領域,尤其涉及一種BFD檢測方法與裝置。
背景技術:
在當前的虛擬化云環(huán)境中,故障檢測通常采用虛擬機(可以等同于一個通信節(jié)點)間的心跳機制,這種心跳機制的基本原理下:以節(jié)點q監(jiān)測節(jié)點p為例,節(jié)點p以固定的時間間隔Δi發(fā)送心跳報文給節(jié)點q,節(jié)點q則以固定的時間間隔Δt接收心跳報文,如果在規(guī)定的時間內(nèi)(如三個Δi)沒有接收到節(jié)點p發(fā)來的心跳報文,則判定節(jié)點p發(fā)生了故障;例如連續(xù)丟幾個包,即若干個時間間隔節(jié)點q沒有收到節(jié)點p的響應,則認為節(jié)點p故障。
這種心跳檢測的時間通常都在秒級甚至分鐘級,無法滿足對實時性要求較高的電信業(yè)務的可靠性要求。尤其當數(shù)據(jù)速率到吉比特時,故障反饋時間長代表著大量數(shù)據(jù)的丟失。相鄰節(jié)點間快速監(jiān)測通信故障的需求日益增多,而且也顯得越來越重要。于是就產(chǎn)生了一種在雙向路由引擎之間建立一條路徑的快速檢測方法-雙向轉發(fā)檢測機制BFD(Bidirectional Forwarding Detection)。BFD通過與上層路由協(xié)議聯(lián)動,可以實現(xiàn)路由的快速收斂,可以實現(xiàn)鏈路的快速檢測,提供毫秒級的檢測。
BFD檢測重點在于確定BFD的檢測時間,在BFD的檢測時間主要取決于下面三個參數(shù):本端節(jié)點想要采用的最短BFD檢測報文發(fā)送周期DMTI(Desired Min Tx Interval);本端節(jié)點能夠支持的最短BFD檢測報文接收周期RMRI(Required Min Rx Interval);檢測時間的倍數(shù)Detect Mult(Detect time multiplier)。首先,一個節(jié)點B接收到對端節(jié)點A發(fā)來的BFD檢測報文后,將該檢測報文攜帶的A端節(jié)點的RMRI與B端本地的DMTI進行比較,取二者中的較大值作為B端節(jié)點發(fā)送BFD檢測報文的速率。
BFD包含異步模式和查詢模式,兩種檢測方式不同,因此檢測時間也不同,一般通過使用不同的Detect Mult值來實現(xiàn)。
異步模式的檢測時間=接收到的遠端Detect Multi*max(本地的RMRI,接收到的DMTI);
查詢模式的檢測時間=本地的Detect Multi*max(本地的RMRI,接收到的DMTI);
DMTI、RMRI、Detect Multi在各個節(jié)點都是可以獨立配置的,然而,DMTI、RMRI、Detect一旦配置完畢后,一個節(jié)點就會以固定的時間間隔接收另一個節(jié)點的BFD檢測報文,如果在規(guī)定的時間內(nèi)沒有收到對方的檢測報文則判定對方的應用/業(yè)務出現(xiàn)故障。
這在實際應用中存在一個問題,采用統(tǒng)一的固定檢測時間間隔,無法針對不同應用類型的電信業(yè)務要求做出較為準確的故障判定。對所有應用采用單一的判定方式,使得不同應用的故障判定結果有失偏頗。例如,不同的應用對中斷時間和檢測速度的要求不同,如語音數(shù)據(jù)流要求中斷時間不能超過200ms、信令要求不能超過500ms,但數(shù)據(jù)業(yè)務的實時性要求沒有語音那么高,但統(tǒng)一設定一個檢測時間間隔如300ms,將無法適用于不同的應用類型;并且可能引起相應的誤判。如允許中斷時間為200ms的語音應用,可能出現(xiàn)了故障,中斷時間為250ms,卻因為小于BFD的檢測時間間隔300ms而沒有被報錯;再如允許中斷時間為500ms的信令應用,可能還沒有出現(xiàn)故障,中斷時間為400ms,卻因為大于BFD的檢測時間間隔300ms而被誤認為發(fā)生了故障。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明實施例提供了一種BFD檢測方法、裝置和系統(tǒng)。
根據(jù)本發(fā)明實施例的第一方面,提供了一種雙向轉發(fā)檢測機制BFD檢測方法,該方法應用于第一虛擬機接收BFD檢測報文的過程中,BFD檢測報文來自第二 虛擬機,該方法包括:獲取預測時長和預定數(shù)量個樣本時間間隔;其中,上述預測時長為當前時刻距離上述第一虛擬機最近一次接收到BFD檢測報文的時間間隔,上述樣本時間間隔為相鄰兩個BFD檢測報文的到達時間間隔;根據(jù)上述預測時長以及上述預定數(shù)量個樣本時間間隔得到特征值;其中,上述特征值用來表示第二虛擬機中應用出現(xiàn)故障的可能性;針對上述第二虛擬機中正在運行的一個應用,將上述特征值與上述一個應用的預設故障判定標準進行對照,并根據(jù)對照結果判定上述一個應用是否發(fā)生故障。
結合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,上述根據(jù)上述預測時長以及上述預定數(shù)量個樣本時間間隔得到特征值包括:根據(jù)上述預定數(shù)量個樣本時間間隔得到上述樣本時間間隔的均值和方差;根據(jù)上述樣本時間間隔的均值和方差得到分布函數(shù);將上述預測時長代入上述分布函數(shù)計算函數(shù)值;根據(jù)上述函數(shù)值得到上述特征值。
結合第一方面,或者結合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,上述根據(jù)上述函數(shù)值得到特征值包括:對上述函數(shù)值取負對數(shù),得到上述特征值。
結合第一方面,或者結合第一方面的上述任何一種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,上述一個應用的預設故障判定標準包括一個非故障取值區(qū)間和一個故障取值區(qū)間;上述將上述特征值與上述一個應用的預設故障判定標準進行對照,并根據(jù)對照結果判定上述一個應用是否發(fā)生故障包括:判斷上述特征值落在上述非故障取值區(qū)間和上述故障取值區(qū)間中的哪一個;若對照結果為上述特征值落在上述故障取值區(qū)間,判定上述一個應用發(fā)生故障;若對照結果為上述特征值落在上述非故障取值區(qū)間,判定上述一個應用未發(fā)生故障。
結合第一方面,或者結合第一方面的上述任何一種可能的實現(xiàn)方式,在第一 方面的第四種可能的實現(xiàn)方式中,在判定上述一個應用發(fā)生故障之后,上述方法還包括:對上述一個應用執(zhí)行故障處理。
結合第一方面,或者結合第一方面的上述任何一種可能的實現(xiàn)方式,在第一方面的第五種可能的實現(xiàn)方式中,上述一個應用的預設故障判定標準包括一個非故障取值區(qū)間和至少兩個故障取值區(qū)間,每一個故障取值區(qū)間對應著一個不同的故障等級;上述將上述特征值與上述一個應用的預設故障判定標準進行對照,并根據(jù)對照結果判定上述一個應用是否發(fā)生故障包括:判斷上述特征值落在上述非故障取值區(qū)間和上述至少兩個故障取值區(qū)間中的哪一個;若對照結果為上述特征值落在一個故障取值區(qū)間,判定上述一個應用發(fā)生的故障等級為上述一個故障取值區(qū)間對應的故障等級;其中,上述一個故障取值區(qū)間為上述至少兩個故障取值區(qū)間中的一個;若對照結果為上述特征值落在上述非故障取值區(qū)間,判定上述一個應用未發(fā)生故障。
結合第一方面,或者結合第一方面的上述任何一種可能的實現(xiàn)方式,在第一方面的第六種可能的實現(xiàn)方式中,每一個故障取值區(qū)間對應著一個不同的故障處理方式;在判定上述一個應用發(fā)生的故障等級為上述一個故障取值區(qū)間對應的故障等級之后,上述方法還包括:對上述一個應用執(zhí)行上述一個故障取值區(qū)間對應的故障處理。
結合第一方面,或者結合第一方面的上述任何一種可能的實現(xiàn)方式,在第一方面的第七種可能的實現(xiàn)方式中,上述預定數(shù)量為M,上述M個樣本時間間隔為從連續(xù)的M+1個BFD檢測報文中獲取到的,其中M為大于20的整數(shù)。
根據(jù)本發(fā)明實施例的第二方面,提供了一種雙向轉發(fā)檢測機制BFD檢測裝置,該裝置應用于第一虛擬機接收BFD檢測報文的過程中,這些BFD檢測報文來自第二虛擬機;該裝置包括:獲取模塊,用于獲取預測時長和預定數(shù)量個樣本時間間 隔;其中,上述預測時長為當前時刻距離上述第一虛擬機最近一次接收到BFD檢測報文的時間間隔,上述樣本時間間隔為相鄰兩個BFD檢測報文的到達時間間隔;計算模塊,用于根據(jù)上述獲取模塊獲取的預測時長以及上述預定數(shù)量個樣本時間間隔得到特征值;其中,上述特征值用來表示第二虛擬機中正在運行的應用出現(xiàn)故障的可能性;對照模塊,用于針對上述第二虛擬機中正在運行的一個應用,將上述計算模塊得到的特征值與上述一個應用的預設故障判定標準進行對照;判定模塊,用于根據(jù)上述對照模塊的對照結果判定上述一個應用是否發(fā)生故障。
結合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,上述計算模塊包括:第一計算單元,用于根據(jù)上述獲取模塊獲取到的預定數(shù)量個樣本時間間隔得到上述樣本時間間隔的均值和方差;第二計算單元,用于根據(jù)上述第一計算單元得到的樣本時間間隔的均值和方差得到分布函數(shù);第三計算單元,用于將上述獲取模塊獲取到的預測時長代入上述第二計算單元得到的分布函數(shù)計算函數(shù)值;第四計算單元,用于根據(jù)上述第三計算單元得到的函數(shù)值得到上述特征值。
結合第二方面,或者結合第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能的實現(xiàn)方式中,上述第四計算單元具體用于:對上述第三計算單元得到的函數(shù)值取負對數(shù),得到上述特征值。
結合第二面,或者結合第二方面的上述任何一種可能的實現(xiàn)方式,在第二方面的第三種可能的實現(xiàn)方式中,上述一個應用的預設故障判定標準包括一個非故障取值區(qū)間和一個故障取值區(qū)間;上述對照模塊具體用于判斷上述計算模塊得到的特征值落在上述非故障取值區(qū)間和上述故障取值區(qū)間中的哪一個;若上述對照模塊的對照結果為上述特征值落在上述故障取值區(qū)間,上述判定模塊判定上述一個應用發(fā)生故障;若上述對照模塊的對照結果為上述特征值落在上述非故障取值區(qū)間,上述判定模塊判定上述一個應用未發(fā)生故障。
結合第二方面,或者結合第二方面的上述任何一種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式中,上述裝置還包括故障處理模塊,上述故障處理模塊用于在上述判定模塊判定上述一個應用發(fā)生故障之后,對上述一個應用執(zhí)行故障處理。
結合第二方面,或者結合第二方面的上述任何一種可能的實現(xiàn)方式,在第二方面的第五種可能的實現(xiàn)方式中,上述一個應用的預設故障判定標準包括一個非故障取值區(qū)間和至少兩個故障取值區(qū)間,每一個故障取值區(qū)間對應著一個不同的故障等級;上述對照模塊具體用于判斷上述計算模塊得到的特征值落在上述非故障取值區(qū)間和上述至少兩個故障取值區(qū)間中的哪一個;若上述對照模塊的對照結果為上述特征值落在一個故障取值區(qū)間,上述判定模塊判定上述一個應用發(fā)生的故障等級為上述一個故障取值區(qū)間對應的故障等級;其中,上述一個故障取值區(qū)間為上述至少兩個故障取值區(qū)間中的一個;若上述對照模塊的對照結果為上述特征值落在上述非故障取值區(qū)間,上述判定模塊判定上述一個應用未發(fā)生故障。
結合第二方面,或者結合第二方面的上述任何一種可能的實現(xiàn)方式,在第二方面的第六種可能的實現(xiàn)方式中,每一個故障取值區(qū)間對應著一個不同的故障處理方式;上述裝置還包括故障處理模塊,上述故障處理模塊用于在上述判定模塊判定上述一個應用發(fā)生的故障等級為上述一個故障取值區(qū)間對應的故障等級之后,對上述一個應用執(zhí)行上述一個故障取值區(qū)間對應的故障處理。
結合第二方面,或者結合第二方面的上述任何一種可能的實現(xiàn)方式,在第二方面的第七種可能的實現(xiàn)方式中,上述預定數(shù)量為M,上述M個樣本時間間隔為從連續(xù)的M+1個BFD檢測報文中獲取到的,其中M為大于20的整數(shù)。
根據(jù)本發(fā)明實施例的第三方面,提供了一種雙向轉發(fā)檢測機制BFD檢測系統(tǒng),該系統(tǒng)包括上述第一虛擬機、上述第二虛擬機以及上述任意一種BFD檢測裝置。
根據(jù)本發(fā)明實施例提供的技術方案,在虛擬化環(huán)境中引入BFD檢測機制以實 現(xiàn)故障的快速檢測,滿足電信高實時性業(yè)務對可靠性的要求。獲取預定數(shù)量個相鄰兩個BFD檢測報文的到達時間間隔;并根據(jù)上述時間間隔通過統(tǒng)計計算得到特征值,通過與不同應用的故障判定值進行比較,進而進行相應的故障判定和處理,以使得BFD檢測的判定故障標準能夠適應不同應用的要求,使每一種應用的故障判斷更為精準,相比于傳統(tǒng)BFD檢測中的統(tǒng)一判別方式,大大減少了故障的誤判。
附圖說明
圖1為現(xiàn)有技術中一種BFD檢測架構示意圖;
圖2為本發(fā)明實施例中一種BFD檢測架構示意圖;
圖3為本發(fā)明實施例中一種BFD檢測的方法流程圖;
圖4為本發(fā)明實施例中一種連續(xù)報文的時間間隔示意圖;
圖5為本發(fā)明實施例中一種BFD檢測方法中需要構造的分布函數(shù)圖;
圖6為本發(fā)明實施例中一種BFD判斷應用是否出現(xiàn)故障的方法示意圖;
圖7為本發(fā)明實施例中一種BFD檢測裝置的示意圖;
圖8為本發(fā)明實施例中一種BFD檢測裝置中計算模塊組成結構的示意圖;
圖9為本發(fā)明實施例中一種BFD檢測設備結構示意圖。
具體實施方式
本發(fā)明實施例提供了一種BFD檢測方法、裝置與系統(tǒng)。
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分優(yōu)選實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍;值得注意的是,由于詞匯的使用習慣,在一些語境中,“BFD”與“BFD檢測”表達的意思相同;“BFD檢測報文”有時可簡稱為“檢測報文”或者“報文”;“應用”可以等價于通信“業(yè)務”。
在傳統(tǒng)BFD的檢測模塊中,故障檢測和故障判定兩個功能是結合在一起的。比如BFD檢測過程中在連續(xù)丟失3個BFD報文(可以表現(xiàn)為3個報文周期時間內(nèi)沒有收到報文)的情況下,就會判斷與對方節(jié)點的通信連接發(fā)生中斷,從而觸發(fā)相應應用/業(yè)務的故障處理。請參閱圖1,圖1為現(xiàn)有技術中一種BFD檢測架構示意圖。傳統(tǒng)的BFD檢測模塊只會輸出一個確定的檢測結果,即故障與否的布爾結果,然后將布爾結果告知給故障管理模塊,由故障管理模塊進行后續(xù)的故障處理。傳統(tǒng)的BFD檢測機制是不區(qū)分應用之間的差別的,無論什么類型的應用,都是統(tǒng)一設置一個檢測時間作為檢測標準,因此BFD檢測僅通過單一的檢測時間對對方節(jié)點中正在運行的各個應用進行故障判斷,可能會對一些應用進行誤判,這將無法適用于不同的應用類型。
為了解決上述技術問題,我們的方案中,將傳統(tǒng)BFD檢測模塊中的故障檢測和故障判定進行“功能分離”,進而對不同類型的應用采用不同的可靠性檢測標準。即BFD不再提供是否故障的布爾結果,而是只負責對報文進行檢測,并將檢測結果上報給上層應用或專門的故障管理模塊,由上層應用或專門的故障管理模塊根據(jù)檢測結果以及不同應用各自的故障標準做出故障與否的判斷(下文中僅以故障管理模塊進行舉例,對于上層應用等基于相同原理對故障管理模塊的進行的替換,都應屬于本發(fā)明的保護范圍內(nèi))。
請參閱圖2,圖2為本發(fā)明實施例中一種BFD檢測架構示意圖。BFD檢測模塊進行檢測報文的檢測,從報文中攜帶的信息中讀取報文的到達時間或者直接記錄報文的到達時間(報文的到達時間的就是對方節(jié)點的檢測報文到達本端節(jié)點的時刻);進而得到不同報文之間的到達時間間隔,并對若干個時間間隔進行一系列的數(shù)學運算得到一個和報文到達時間間隔有關的一個特征值ψ;與此同時,BFD檢測架構中還含有故障管理模塊,各個應用根據(jù)各自的故障判定需求預先確定一個閾值(Ф)作為是否故障的判斷標準,將其預先存儲于故障管理模塊中;如此一來,BFD檢測模塊對檢測報文時間間隔進行處理得到特征值ψ,上報給故障管理模塊。故障管理模塊會將這個ψ值與各個應用預先存儲的Ф值進行比較,根據(jù)比較結果判定對方節(jié)點中各個正在運行的應用是否出現(xiàn)故障,進而根據(jù)判定結果 對出現(xiàn)故障的應用采取故障管理措施。
請參閱圖3,圖3為本發(fā)明實施例中一種BFD檢測的方法流程圖。在具體實現(xiàn)過程中,第一虛擬機和第二虛擬機泛指虛擬化云環(huán)境中正在彼此通信的兩臺虛擬機,通常來講兩個虛擬機之間都會進行雙向通信,第一虛擬機接收第二虛擬機BFD檢測報文的同時,第二虛擬機也可以接收并檢測第一虛擬機的BFD檢測報文,因此每個虛擬機中的BFD檢測機制都是類似的;第一虛擬機接收到第二虛擬機的BFD檢測報文,也可以等價表述為第二虛擬機的BFD檢測報文到達第一虛擬機。具體方法如下示例。
步驟101:第一虛擬機接收第二虛擬機的BFD檢測報文時,雙向轉發(fā)檢測機制BFD檢測模塊獲取預測時長和預定數(shù)量個樣本時間間隔;其中,預測時長為當前時刻距離第一虛擬機最近一次接收到BFD檢測報文的時間間隔,樣本時間間隔為相鄰兩個BFD檢測報文的到達時間間隔。
由于本發(fā)明中BFD檢測機制更關心的是兩個檢測報文的時間間隔與報文接收成功的概率關系,所以該方法中獲取的是相鄰檢測報文的到達時間間隔,尤其是連續(xù)的檢測報文的到達時間間隔;例如有連續(xù)先后發(fā)來的100個檢測報文,編號為從1至100,那么統(tǒng)計的是第1個和第2個、第2個和第3個、第3個和第4個……第99個和第100個檢測報文之間的到達時間間隔,共99個。更為通用的情形請見圖4,圖4為本發(fā)明實施例中一種連續(xù)檢測報文的時間間隔示意圖,隨著時間的先后,報文1、報文2……報文N為第一虛擬機接收到的源于第二虛擬機的一系列連續(xù)報文,該方法需要獲取的報文到達時間間隔樣本數(shù)據(jù)為(t2-t1)、(t3-t2)……(tN-tN-1);tn表示第n個報文的到達時間,n可以取遍任意正整數(shù);其中tN一般為當前時刻之前接收的最新的一個報文,即最近一次接收到的報文。
在具體實現(xiàn)的過程中,可能獲取到的每一個樣本時間間隔都會被用到,也可能不是每一個樣本時間間隔都會被用到,比如選取其中的M個樣本時間間隔進行統(tǒng)計計算,M的具體取值通常以樣本統(tǒng)計方法的需求為準,有時也和報文能夠在虛擬機中存儲的數(shù)量有關,有時也和報文的時效性有關;其中M為正整數(shù),為了 滿足樣本統(tǒng)計的經(jīng)驗需求,M一般大于20。
步驟102:BFD檢測模塊根據(jù)預測時長以及預定數(shù)量個樣本時間間隔得到特征值;其中,該特征值用來表示第二虛擬機中應用出現(xiàn)故障的可能性。
在具體實現(xiàn)過程中,BFD檢測模塊可以采用數(shù)學統(tǒng)計方法對步驟101中得到的M個報文到達時間間隔進行統(tǒng)計計算,得到特征值,這個特征值可以描述第一虛擬機在成功接收到第二虛擬機發(fā)送的上一個BFD檢測報文的基礎上,在預測時長后能成功接收到第二虛擬機發(fā)送的下一個BFD檢測報文的可能性。關于特征值后文會詳細介紹。可見本方案與傳統(tǒng)BFD檢測單純地輸出檢測時間是有區(qū)別的。
步驟103:針對第二虛擬機中正在運行的一個應用,將特征值與這一個應用的預設故障判定標準進行對照,并根據(jù)對照結果判定這一個應用是否發(fā)生故障。
本發(fā)明中步驟101-102所基于的原理是:當?shù)谝惶摂M機發(fā)現(xiàn)一個檢測報文丟失時,這時可能存在兩種可能性,一是由于網(wǎng)絡等原因導致檢測報文晚到;二是第二虛擬機的應用真的發(fā)生了故障。所以此時就需要做一個判斷,究竟是報文晚到還是第二虛擬機中的應用發(fā)生故障;而判定的依據(jù)就是基于對以往檢測報文的到達時間間隔統(tǒng)計,根據(jù)當前時刻距離最近一次接收到報文的時間間隔來預測成功接收下一個報文的可能性。所以要實現(xiàn)這個功能,首先需要對以往成功接收到的檢測報文的到達時間間隔做一個統(tǒng)計。
在具體實現(xiàn)過程中,當檢測報文到達第一虛擬機時,BFD檢測模塊會獲取或記錄每個檢測報文的到達時間,并將到達時間存儲到一個存儲隊列中。為了保證時間間隔的時效性,通常將到達時間存放在一個固定長度的存儲隊列中,存儲方式采用堆棧方式,例如存儲隊列的固定長度為100個到達時間,當存儲第101個到達時間時,將原本存儲的第1個到達時間值溢出,保證這個存儲隊列一直是100個值。兩個相鄰檢測報文的到達時間間隔因節(jié)點處理能力、網(wǎng)絡傳輸能力等因素而不同,通常認為這種時間間隔的波動服從高斯分布;例如當網(wǎng)絡中通信模塊處于正常工作時,兩個相鄰的檢測報文的到達第一虛擬機的時間間隔為1s,而由于網(wǎng)絡中各個通信模塊的性能波動,會帶來檢測報文到達時間間隔的波動,使得相 鄰的檢測報文的到達第一虛擬機的時間間隔在1s上下浮動,整體的報文到達時間間隔會呈現(xiàn)一個高斯分布。
在具體實現(xiàn)的過程中,可以根據(jù)檢測報文到達時間間隔的高斯分布特性,相應地建立一個高斯分布函數(shù)進行統(tǒng)計。如圖5所示,圖5為本發(fā)明實施例中一種BFD檢測方法中構造的分布函數(shù),橫坐標x表示預測時長,當前時刻由于下一個檢測報文的不確定到達,使得x成為一個變量;G(x)表示當前時刻后能夠成功接收下一檢測報文的概率,f(x)表示概率密度。從圖中不難推斷出,預測時長越短,能夠成功接收下一個報文的概率越大,預測時長越長,接收到下一個報文的概率也就越來越小。分布函數(shù)f(x)由預定數(shù)量個樣本時間間隔決定,即固定長度隊列中的檢測報文到達時間來確定,仍以固定長度隊列為100個到達時間為例,由于f(x)需要統(tǒng)計的是相鄰報文的到達時間間隔對報文接收成功概率的影響,因此100個連續(xù)檢測報文的到達時間會產(chǎn)生99個樣本時間間隔Δt1、Δt2、......、Δt99,此處的樣本時間間隔指的是相鄰的兩個檢測報文的到達時間間隔;對這99個樣本時間間隔進行統(tǒng)計,計算出這99個樣本時間間隔的均值μ和方差σ,再由均值μ和方差σ確定出分布函數(shù),通用的公式如下:
其中n代表樣本時間間隔的個數(shù),Δt(j)為時間間隔,j為整數(shù),且j∈[1,n],μ表示均值,σ表示方差。
可見,每接收到新的檢測報文,存儲隊列中的檢測報文時間間隔就會有變化,雖然新的時間間隔不會對這個樣本整體有很大的影響,但99個樣本時間間隔統(tǒng)計出來的均值μ和方差σ和分布函數(shù)f(x)都是實時更新的,這就能夠保證對新的報文的檢測和預測能夠更接近目前網(wǎng)絡通信的最新狀況,從而保證一定的時效性和準確性。
進而我們可以得到,當前時刻第一虛擬機應該正常接收到報文的概率為:
當前時刻第一虛擬機還沒有接收到報文的概率,即在當前時刻之后能夠接收到報文的概率:
現(xiàn)在本方案關心的是:在tlast時最新的一個檢測報文成功到達,而當前時刻tnow沒有收到報文,則在當前時刻tnow之后才收到報文的概率即為:G(tnow-tlast;μlast,σlast),其中μlast,σlast分別表示最新檢測報文存儲到固定長度的隊列中時,對當前隊列中的所有相鄰檢測報文的到達時間間隔進行統(tǒng)計得到的,tnow-tlast為最新的預測時長。
作為可選的,G(tnow-tlast;μlast,σlast)可以作為特征值,相應地每一種應用也都設置各自對應的故障判定概率即可,例如對于第二虛擬機中正在運行的A應用來說,故障判定概率為0.2,這個故障判定概率預先存儲于BFD檢測模塊中;如果G(tnow-tlast;μlast,σlast)小于0.2,則認為tnow之后收到下一個檢測報文的概率非常小,認為A應用發(fā)生故障;如果G(tnow-tlast;μlast,σlast)大于0.2,則認為tnow之后還有很大的可能收到下一個報文,認為A應用還未發(fā)生故障。
作為另一種可選的,G(tnow-tlast;μlast,σlast)表達的是概率,因此是一個小數(shù),而且有時可能是一個較小的小數(shù),對這樣的小數(shù)直接進行比較可能會帶來一定的誤差和不確定性,因此為表達方便可以取其對數(shù)log[G(tnow-tlast;μlast,σlast)],又因為0<G(tnow-tlast;μlast,σlast)<1,故log[G(tnow-tlast;μlast,σlast)]<0,因此定義ψ=-log[G(tnow-tlast;μlast,σlast)],這個ψ就是步驟102提到的特征值;并且不難看出,隨著報文的不斷更新,特征值也在不斷地更新。
值得注意的是,本發(fā)明中對樣本時間間隔進行的統(tǒng)計和計算并不局限于上文所提到的數(shù)學方法,與高斯概率統(tǒng)計相關的類似、或衍生的統(tǒng)計數(shù)學模型都可以進行相應地統(tǒng)計計算,由于這些都是數(shù)學領域中公知的統(tǒng)計方法,因此本發(fā)明實施例中不進行一一的詳細列舉;包括后續(xù)對于概率值的變形處理,都是可以通過 基本的數(shù)學運算來實現(xiàn)的,因此通過任意常規(guī)的數(shù)學運算來對樣本時間間隔進行統(tǒng)計處理最終得到特征值都應屬于本發(fā)明的保護范圍內(nèi)。
步驟103在具體實現(xiàn)過程中,故障管理模塊將ψ值與第二虛擬機中正在運行的應用預先設定的故障判定標準進行對照,從而做出應用是否故障的判斷。判斷過程如圖6所示,圖6為本發(fā)明實施例中一種BFD判斷應用是否出現(xiàn)故障的方法示意圖。由于應用種類眾多,各個應用的功能和可靠性的指標要求不同,因此在判斷是否發(fā)生故障的時候也就有多樣性。常見的有以下兩種情況(以下提到的B應用和C應用均為第二虛擬機中正在運行的某一應用,并非特指具體哪一應用;B應用和C應用的故障判定值預先存儲于BFD檢測模塊中)。
情形1:若B應用的故障判定值為單一閾值Ф1時,則B應用的預設故障判定標準包括一個非故障取值區(qū)間(0,Ф1)和一個故障取值區(qū)間[Ф1,+∞);故障管理模塊判斷特征值ψ落在哪個取值區(qū)間中。若對照結果為特征值落在[Ф1,+∞)中,則故障管理模塊判定B應用發(fā)生故障,若對照結果為特征值落在(0,Ф1)中,故障管理模塊判定B應用沒有發(fā)生故障或不做響應。
相應地,如果判斷B應用發(fā)生了故障,故障管理模塊還將執(zhí)行B應用對應的故障處理措施,使得B應用能夠正常運行;如果B應用沒有發(fā)生故障或者故障經(jīng)過故障處理后恢復正常時,則故障管理模塊不會執(zhí)行故障處理或不做任何響應。
情形2:若C應用的故障判定值為至少兩個閾值區(qū)間時,此時C應用的預設故障判定標準包括一個非故障取值區(qū)間和至少兩個故障取值區(qū)間,每一個故障取值區(qū)間對應著一個不同的故障等級,每一個故障等級對應一種不同的故障處理措施,并且故障取值區(qū)間與故障等級一一對應,故障等級與故障處理措施一一對應;不同的閾值區(qū)間對應不同的故障等級,即對應著不同的故障嚴重程度;故障管理模塊將特征值ψ與非故障取值區(qū)間和至少兩個故障取值區(qū)間進行對照,確定特征值所在的取值區(qū)間,進而判定C應用發(fā)生的故障等級。如圖5所示,當ψ∈(0,Ф1]時,故障管理模塊判定C應用無故障或不做響應;當ψ∈(Ф1,Ф2]時,故障管理模塊判定C應用處于故障等級1;當ψ∈(Ф2,Ф3]時,故障管理模塊判定C應用處于故障等級2;當ψ∈(Ф3,+∞)時,故障管理模塊判定C應用處于故障等級3; 其中故障等級1、故障等級2、故障等級3的故障嚴重程度依次遞增。
相應地,如果故障管理模塊判斷C應用發(fā)生了故障,故障管理模塊還會根據(jù)C應用發(fā)生的故障等級,執(zhí)行對應的故障處理措施,使得C應用能夠正常運行;如果C應用沒有發(fā)生故障或者故障經(jīng)過故障處理后恢復正常時,則故障管理模塊不會執(zhí)行故障處理。
作為補充說明,有些應用之所以會有不同的故障等級和相應的故障處理方式,主要源于故障處理時需要調(diào)用軟硬件資源的多少。例如C應用處于低一級故障處理時所需要調(diào)用的軟硬件資源要比處于高一級故障處理時所需要調(diào)用的軟硬件資源更少、更簡單,總體成本也相應更低;因此當C應用出現(xiàn)故障等級1時,對應采取故障等級1所對應的故障處理方式,調(diào)用相應的軟硬件資源即可完成故障的修復;因此這種對應等級的故障處理方式更符合資源的合理利用。
在具體實現(xiàn)過程中,不同應用的故障判定值Ф是根據(jù)該應用對可靠性和實時性的要求,通過大量的經(jīng)驗嘗試得到的。比如對實時性、可靠性要求高的應用,就需要更加快速的故障檢測和恢復,然而檢測時間加快了,誤報率就會相應提高,所以要獲得一個快速的檢測時間以及合理的誤報率,就需要確定一個適當?shù)拈撝掸?。例如應用開發(fā)人員可以基于大量的閾值Ф與檢測時間和誤報率的測試統(tǒng)計結果,在誤報率能夠被所接收的范圍內(nèi),確定出一個合適的閾值。這也說明了本方案的優(yōu)勢:在保證BFD快速檢測能力的同時,可以將誤報率控制在一個可接受的水平。此外,Ф的確定還與步驟102中得到特征值的算法有關;如果特征值為概率,那么Ф表達的應該也是預先選取的概率值;如果特征值對概率取對數(shù),那么Ф也是對預先選取的概率值取對數(shù);如果特征值對概率取負對數(shù),那么Ф也是對預先選取的概率值取負對數(shù)??傊?,歸根結底,本發(fā)明中需要得到的是下一個報文即將到達的概率G(x),Ф的原始數(shù)值為應用開發(fā)人員根據(jù)以往的大量經(jīng)驗評測得到的一個經(jīng)驗允許概率G(x0);其中G(x)采用什么樣的運算方法最終獲得特征值,那么對G(x0)采用同樣的運算方法得到相應的Ф。
本發(fā)明技術方案與傳統(tǒng)的BFD檢測機制不同,引入了對相鄰檢測報文的到達時間間隔的統(tǒng)計分析,使BFD檢測不再基于單一的檢測時間簡單地輸出各應用是 否故障的信息,而是首先基于相鄰報文到達時間間隔進行數(shù)學統(tǒng)計處理計算出一個特征值,通過將該特征值與不同應用各自預先設置的故障判定值進行比較,進而有針對性地判定各個應用的故障情況,以使得BFD檢測能夠適應不同應用的要求,而不再進行統(tǒng)一判別,減少由此帶來的故障誤判。
第一虛擬機和第二虛擬機泛指虛擬化云環(huán)境中正在彼此通信的兩臺虛擬機,通常來講兩個虛擬機之間都會進行雙向通信,第一虛擬機可以接收第二虛擬機報文,第二虛擬機也可以接收第一虛擬機的報文,因此對于每個虛擬機,BFD檢測機制都是類似的。請參閱圖7,圖7為本發(fā)明實施例中一種BFD檢測裝置的示意圖。本實施例中該裝置應用于第一虛擬機接收BFD檢測報文的過程中,所述BFD檢測報文來自第二虛擬機;該裝置即可以位于第一虛擬機中,也可以是在虛擬機外部作為監(jiān)管第一、第二虛擬機通信狀況的上層功能裝置,該裝置200包括:
獲取模塊201,用于獲取預測時長和預定數(shù)量個樣本時間間隔;其中,預測時長為當前時刻距離第一虛擬機最近一次接收到BFD檢測報文的時間間隔,樣本時間間隔為相鄰兩個BFD檢測報文的到達時間間隔。
獲取模塊201用來獲取相鄰報文的間隔時間,尤其是連續(xù)的報文的相隔時間:(t2-t1)、(t3-t2)……(tN-tN-1),其中tm表示第m個報文的到達時間,m可以表示任意正整數(shù)。所謂的預定數(shù)量通常由報文能夠在虛擬機中存儲的數(shù)量或數(shù)學統(tǒng)計的樣本需求來決定;如獲取模塊獲取到(tM-tM-1)、(tM+1-tM)……(tN-tN-1);其中,M小于N,N-M為預定數(shù)量且一般大于20;第N個報文為第一虛擬機在當前時刻之前收到的最后一個報文。
計算模塊202,用于根據(jù)獲取模塊201獲取的預測時長以及預定數(shù)量個樣本時間間隔得到特征值;其中,特征值用來表示第二虛擬機中正在運行的應用出現(xiàn)故障的可能性。
作為可選的,計算模塊202可以包括第一計算單元2021,第二計算單元2022,第三計算單元2023,請參閱圖8,圖8為本發(fā)明實施例中一種BFD檢測裝置中計算模塊組成結構的示意圖。
根據(jù)預定的計算規(guī)則,第一計算單元2021用于對上述N-M個樣本時間間隔樣本進行統(tǒng)計,計算出這N-M個樣本時間間隔的均值μ和方差σ,第二計算單元2022再根據(jù)均值μ和方差σ確定出概率密度分布函數(shù)f(x),通用的公式如下:
其中n代表預定數(shù)量,即N-M,Δt(j)為樣本時間間隔,j為整數(shù),且j∈[1,n]。
其中x為預測時長,接下來由第三計算單元2023得到當前時刻還沒有接收到報文的概率為:
G(x;μ,σ)表達了樣本時間間隔的長短與第一虛擬機能夠成功收到BFD檢測報文的概率關系,由于檢測報文的丟失體現(xiàn)了應用的故障,因此G(x;μ,σ)也表達了樣本時間間隔的長短應用發(fā)生故障的可能性。若當前時刻tnow沒有收到報文,第一虛擬機在tnow之前最近一次接收到檢測報文的時刻記為tlast,而則在刻tnow之后收到報文的概率為:G(tnow-tlast;μlast,σlast),tnow-tlast為最新的預測時長。
可選的,由于概率是一個小數(shù),而且可能是一個較小的小數(shù),因此為表達方便,計算模塊202還可以包括第四計算單元2024,對第三計算單元2023得到的函數(shù)值取負對數(shù),定義ψ=-log[G(tnow-tlast;μlast,σlast)],這個ψ就是特征值。
可選的,計算模塊202也可以包含若干個計算單元,這些若干個計算單元能夠依據(jù)預設算法,通過完成一系列常規(guī)的數(shù)學運算手段得到一個后續(xù)可以方便使用的特征值。
對照模塊203,用于針對第二虛擬機中正在運行的一個應用,將計算模塊202得到的特征值與所述一個應用的預設故障判定標準進行對照。其中,第二虛擬機中每一種應用的預設故障判定標準都預先存儲于對照模塊中。
判定模塊204,用于根據(jù)對照模塊203的對照結果判定所述一個應用是否發(fā)生故障。
在具體實現(xiàn)過程中,對照模塊203、判定模塊204故障管理過程類似于圖5對應執(zhí)行的方法。由于應用種類眾多,各個應用的功能和可靠性的指標要求不同,因此在判斷是否發(fā)生故障的時候也就有多樣性。常見的有兩種情況,分別見以下兩例:
例1:若語音業(yè)務預設的故障判定值為單一閾值0.2時;對照模塊203將計算模塊202得到的特征值ψ與0.2進行比較;若比較結果為特征值大于等于0.2,判定模塊204判定第一應用發(fā)生故障,若比較結果為特征值小于0.2,判定模塊204判定語音業(yè)務這一應用沒有發(fā)生故障或不做響應。
可選的,裝置200還可以包含故障處理模塊205。相應地,如果判定模塊204判斷語音業(yè)務發(fā)生了故障,裝置200中的故障處理模塊205將執(zhí)行語音業(yè)務對應的故障處理措施,使得語音業(yè)務能夠正常運行;如果語音業(yè)務沒有發(fā)生故障或者故障經(jīng)過故障處理后恢復正常時,判定模塊204判定語音業(yè)務沒有發(fā)生故障或者不做響應,進而故障處理模塊205不會執(zhí)行故障處理或者不做任何響應。
例2:若圖片傳送業(yè)務預設的故障判定值為四個取值區(qū)間時,其中,(0,3]表示圖片傳送業(yè)務沒有故障;(3,5]表示圖片傳送業(yè)務發(fā)生一級故障;(5,10]表示圖片傳送業(yè)務發(fā)生二級故障;(10,+∞)表示圖片傳送業(yè)務發(fā)生三級故障。一級故障、二級故障、三級故障分別對應一級故障處理措施、二級故障處理措施、三級故障處理措施;對照模塊203將特征值ψ與上述至少兩個閾值區(qū)間進行對照,確定特征值所在的區(qū)間;判定模塊204根據(jù)ψ所在的取值區(qū)間判定圖片傳送業(yè)務發(fā)生的故障等級。如圖6所示,當對照模塊203確定ψ∈(0,3]時,判定模塊204判定圖片傳送業(yè)務無故障;當對照模塊203確定ψ∈(3,5]時,判定模塊204判定圖片傳送業(yè)務處于一級故障;當對照模塊203確定ψ∈(5,10]時,判定模塊204判定圖片傳送業(yè)務處于二級故障;當對照模塊203確定ψ∈(10,+∞)時,判定模塊204判定圖片傳送業(yè)務處于三級故障。閾值區(qū)間的值越大表明故障越嚴重,比如一級故障、二級故障與三級故障的故障嚴重程度遞增。
可選的,裝置200還可以包含故障處理模塊205。相應地,如果判定模塊204判定圖片傳送業(yè)務發(fā)生了故障,裝置200中的故障處理模塊205根據(jù)判定模塊204判定的故障等級,對第二應用執(zhí)行對應的故障處理措施,使得第二應用能夠正常運行;如果第二應用沒有發(fā)生故障或者故障經(jīng)過故障處理后恢復正常時,判定模塊204判定第二應用沒有發(fā)生故障或者不做響應,進而則故障處理模塊205不會執(zhí)行故障處理或者不做任何響應。
本發(fā)明實施例提供了一種BFD檢測裝置,相比于傳統(tǒng)的BFD檢測裝置,不再使用單一值的判定而簡單地輸出是否故障的信息,本發(fā)明中BFD檢測裝置包括獲取模塊201、計算模塊202、對照模塊203、判定模塊204,還可以包含故障處理模塊205;獲取模塊201和計算模塊202對檢測報文的間隔時間進行數(shù)學處理得到一個衡量應用是否故障的特征值;對照模塊203將特征值與不同應用的預設故障判定標準進行比較,進而使得判定模塊204有針對性地判定各個應用的故障情況,以使得BFD的檢測能夠適應不同類型應用的要求,而不再進行傳統(tǒng)的統(tǒng)一判別,減少由此帶來的故障誤判,最終使得故障處理模塊205能夠有針對性地對出現(xiàn)故障的應用執(zhí)行相應的處理措施。
本發(fā)明實施例提供了一種BFD檢測系統(tǒng),該系統(tǒng)由上述段落中描述的第一虛擬機、第二虛擬機和BFD檢測裝置200組成。作為可選的,上文提到的BFD檢測裝置可以位于第一虛擬機中,直接接收來自第二虛擬機的BFD檢測報文,并對這些檢測報文執(zhí)行如同上文提到的步驟101-步驟103的方法來判定第二虛擬機中正在運行的應用是否出現(xiàn)故障。作為另一種可選的,BFD檢測裝置位于虛擬機之外,作為第一虛擬機和第二虛擬機的上層管理功能裝置,并在第一虛擬機接收第二虛擬機的BFD檢測報文的過程中,獲取這些報文的相關信息,對這些檢測報文執(zhí)行如同上文提到的步驟101-步驟103的方法來判定第二虛擬機中正在運行的應用是否出現(xiàn)故障。
請參閱圖9,圖9為本發(fā)明實施例中一種BFD檢測設備結構示意圖。該設備400包括:
處理器401,用于產(chǎn)生相應的操作控制信號,發(fā)給計算處理設備相應的部件, 讀取以及處理軟件中的數(shù)據(jù),尤其是讀取和處理存儲器402中的數(shù)據(jù)和程序,以使其中的各個功能模塊執(zhí)行相應的功能,從而控制相應的部件按指令的要求進行動作。
存儲器402,用于存儲程序和各種數(shù)據(jù),主要存儲操作系統(tǒng)、應用和功能指令等軟件單元、或者他們的子集、或者他們的擴展集。還可以包括非易失性隨機存取存儲器(NVRAM),向處理器401提供包括管理計算處理設備中的硬件、軟件及數(shù)據(jù)資源,支持控制軟件和應用。
收發(fā)器403,用于采集、獲取或發(fā)送信息,在模塊之間可以用來傳遞信息。
上述各個硬件單元可以通過總線連接進行通信。
如此一來,通過調(diào)用存儲器402存儲的程序或指令,收發(fā)器403接收第二虛擬機的BFD檢測報文時,處理器401獲取預測時長以及預定數(shù)量個樣本時間間隔,處理器401根據(jù)存儲器402中預先存儲的算法對預定數(shù)量個樣本時間間隔進行運算處理,得到特征值;并將特征值與被檢測節(jié)點中正在運行的每種應用的預設故障判定標準分別對照,并根據(jù)對照結果判定是否有應用發(fā)生故障,處理器401對發(fā)生故障的應用執(zhí)行相應的故障處理。
本領域普通技術人員可知,上述方法中的全部或部分步驟可以通過程序指令相關的硬件完成,該程序可以存儲于一計算機可讀存儲介質中。通過以上的實施方式的描述,所屬領域的技術人員可以清楚地了解到本發(fā)明可以用硬件實現(xiàn),或固件實現(xiàn),或它們的組合方式來實現(xiàn)。
以上實施例僅為本發(fā)明技術方案的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍。