專利名稱:一種用于主備倒換的綜合故障檢測(cè)裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種應(yīng)用通信和控制總線的分布式的體系,其中的重要 工作單元需要具有主備倒換功能。
背景技術(shù):
在具有通信和控制總線的分布式的體系中,經(jīng)常需要為比較重要的單元提供熱備份(所 謂熱備份,是指?jìng)浞莸膯卧幱谏想姞顟B(tài),在受保護(hù)的單元失效的時(shí)候,能夠自動(dòng)進(jìn)入工作 狀態(tài),代替失效單元的功能,同時(shí)不影響系統(tǒng)中其他單元的正常工作)。
專利1494228談及一種實(shí)現(xiàn)單板主備倒換的方法及其電路,在本單板和對(duì)方板上分別設(shè) 置狀態(tài)監(jiān)控,接收對(duì)方板的狀態(tài)信息,根據(jù)對(duì)方板所處狀態(tài),調(diào)整本單板狀態(tài);對(duì)方板接收 本單板的狀態(tài)信息后,作相應(yīng)狀態(tài)調(diào)整。該專利使用的電路包括與門、非門、異或門和上下 拉電阻。不需在背板和其它單板上增加控制模塊以參與主備倒換,這就使背板設(shè)計(jì)可以做到 無源,因而簡(jiǎn)化了設(shè)計(jì),而且避免了在控制模塊失效時(shí)無法帶電更換的缺陷,在一定程度上 提高了系統(tǒng)的可靠性。當(dāng)單板出現(xiàn)故障時(shí),可以在不影響主板業(yè)務(wù)的情況下更換備用故障單 板。而專利1463081則指出了一種通信設(shè)備中實(shí)現(xiàn)主備設(shè)備快速倒換的方法,包括利用FP GA (現(xiàn)場(chǎng)可編程門列陣)建立主備設(shè)備倒換控制模塊,主備設(shè)備倒換控制模塊包括主備 設(shè)備倒換檢測(cè)子模塊、主備設(shè)備倒換指令發(fā)出子模塊及執(zhí)行,主備設(shè)備的倒換速度有所提高。 專利1437326提供了--種通訊設(shè)備中的主備倒換方法,在主備倒換系統(tǒng)的兩塊單板上設(shè)置四 條狀態(tài)信號(hào)線,即本板實(shí)際態(tài)信號(hào)線、本板申請(qǐng)態(tài)信號(hào)線、對(duì)板實(shí)際態(tài)信號(hào)線和對(duì)板申請(qǐng)態(tài) 信號(hào)線,能夠在主備倒換過程中對(duì)主備板的狀態(tài)進(jìn)行制約,可以避免兩塊單板雙主狀態(tài)的出 現(xiàn),并協(xié)調(diào)兩塊單板狀態(tài)的躍遷,使得兩塊單板的主備倒換過程快速可靠,減少對(duì)業(yè)務(wù)處理 的影響。
現(xiàn)有的技術(shù)中,要實(shí)現(xiàn)主備倒換的快速診斷和處理,往往需要對(duì)整個(gè)系統(tǒng)架構(gòu),尤其是 背板和其他單元進(jìn)行很大的改造,實(shí)現(xiàn)熱備份往往帶來業(yè)務(wù)的中斷,不能自動(dòng)的實(shí)現(xiàn)工作狀 態(tài)和備用狀態(tài)的靈活遷移,不能在主備之間數(shù)據(jù)同步的基礎(chǔ)上快速實(shí)現(xiàn)倒換,并且往往會(huì)影 響到系統(tǒng)中其他單元的工作,或者需要對(duì)其他單元的軟硬件結(jié)構(gòu)進(jìn)行改變。
發(fā)明內(nèi)容
本發(fā)明所要解決的一個(gè)技術(shù)問題是提供一種用于主備倒換的綜合故障檢測(cè)裝置,對(duì)設(shè)備 軟件故障和硬件故障提供綜合檢測(cè),進(jìn)一步可以實(shí)現(xiàn)設(shè)備軟硬件運(yùn)行可靠性的保障。
本發(fā)明所要解決的另一個(gè)技術(shù)問題是提供一種用于主備倒換的綜合故障檢測(cè)方法,為設(shè) 備的主備倒換提供硬件故障和軟件故障的綜合檢測(cè),為設(shè)備的主備倒換提供一個(gè)綜合的判據(jù)。 為解決上述第一個(gè)技術(shù)問題,本發(fā)明所采用的技術(shù)方案為 一種用于主備倒換的綜合故 障檢測(cè)裝置,包括互為主備狀態(tài)的主機(jī)和伙伴機(jī),主機(jī)和伙伴機(jī)在結(jié)構(gòu)上是對(duì)稱的,各自均
包括cpu、以及通過cpu地址/數(shù)據(jù)/控制總線與該cra相連的可編程控制電路模塊、通信接
口模塊、硬件復(fù)位寄存器和軟件復(fù)位寄存器;其中,可編程控制電路模塊用于進(jìn)行邏輯控制, 通信接口模塊用于主機(jī)和伙伴機(jī)之間數(shù)據(jù)同步和備份;通信接口模塊的狀態(tài)和屬性由可編程 控制電路模塊控制;主機(jī)和伙伴機(jī)之間連有主備檢測(cè)和控制線;硬件復(fù)位寄存器用于記錄硬 件異常,軟件復(fù)位寄存器用于記錄軟件異常;主機(jī)、伙伴機(jī)周期性地進(jìn)行狀態(tài)檢測(cè)和數(shù)據(jù)同 歩,并根據(jù)檢測(cè)結(jié)果決定是否在硬件復(fù)位寄存器和軟件復(fù)位寄存器寫入標(biāo)志。
其中,所述可編程控制電路模塊內(nèi)部包含有累加計(jì)數(shù)器;該累加計(jì)數(shù)器通過地址/數(shù)據(jù)/ 控制總線掛接在cpli上,用于對(duì)cpu的并行輸入/輸出的計(jì)數(shù);cpu通過地址/數(shù)據(jù)/控制總線 完成對(duì)主機(jī)和伙伴機(jī)中所述累加計(jì)數(shù)器的讀寫;連接主機(jī)和伙伴機(jī)的信號(hào)有伙伴機(jī)中所述 累加計(jì)數(shù)器的當(dāng)前值的信號(hào)和伙伴機(jī)對(duì)主機(jī)的清零信號(hào)。
上述裝置還包括系統(tǒng)控制總線和系統(tǒng)數(shù)據(jù)總線;該系統(tǒng)控制總線和系統(tǒng)數(shù)據(jù)總線與所述 cpu、可編程控制電路模塊、主備檢測(cè)和控制線組成所述主備倒換的綜合故障檢測(cè)裝置的控制 部分,用于在確認(rèn)倒換信號(hào)后執(zhí)行邏輯組合、復(fù)位和倒換動(dòng)作。
在主機(jī)和伙伴機(jī)上分別設(shè)置有手動(dòng)切換健。
為解決上述第二個(gè)技術(shù)問題,本發(fā)明所采用的技術(shù)方案為 一種用于主備倒換的綜合故 障檢測(cè)方法,包括步驟
(1) 可編程控制電路及應(yīng)用軟件進(jìn)行初始化;
(2) 主機(jī)、伙伴機(jī)周期性地進(jìn)行狀態(tài)檢測(cè)和數(shù)據(jù)同步,并根據(jù)檢測(cè)結(jié)果決定是否在硬件 復(fù)位寄存器和軟件復(fù)位寄存器寫入標(biāo)志。
其中,所述步驟(1)具體為 (11)可編程控制電路進(jìn)行初始化設(shè)置,設(shè)置主機(jī)和伙伴機(jī)的主備狀態(tài),及可編程控制 電路邏輯以及處理策略;(12)應(yīng)用軟件進(jìn)行初始化,如果狀態(tài)為"主",應(yīng)用軟件進(jìn)入正常的初始化過程,創(chuàng) 建和啟動(dòng)所有的應(yīng)用層進(jìn)程,如果狀態(tài)為"備",則只創(chuàng)建和啟動(dòng)進(jìn)行數(shù)據(jù)備份和定時(shí)檢測(cè) 的相關(guān)進(jìn)程,其余的應(yīng)用進(jìn)程不創(chuàng)建和啟動(dòng)。 所述步驟(2)具體為
當(dāng)伙伴機(jī)發(fā)現(xiàn)自身硬件和軟件出現(xiàn)異常,則通過主備檢測(cè)和控制線分別選擇寫入主機(jī)的 硬件復(fù)位寄存器和軟件復(fù)位寄存器;
當(dāng)主機(jī)當(dāng)向伙伴機(jī)周期性的發(fā)送HELLO包無應(yīng)答,或主機(jī)與伙伴機(jī)之間數(shù)據(jù)同步不成功, 或主機(jī)收到伙伴機(jī)的自殺申請(qǐng),則根據(jù)處理策略決定是否寫入標(biāo)志軟件復(fù)位寄存器;
當(dāng)主機(jī)檢測(cè)到伙伴機(jī)硬件異常,包括伙伴機(jī)的CPU的"心跳"故障,則在主機(jī)的硬件復(fù) 位寄存器寫入標(biāo)志。
其中,所述主機(jī)對(duì)伙伴機(jī)的CPU的"心跳"故障檢測(cè)的步驟具體為-(al)主機(jī)的CPU對(duì)主機(jī)可編程控制電路內(nèi)部的累加計(jì)數(shù)器進(jìn)行周期性的累加,伙伴機(jī) 的CPU對(duì)伙伴機(jī)可編程控制電路內(nèi)部的累加計(jì)數(shù)器迸行周期性的累加;
(a2)伙伴機(jī)的CPU對(duì)主機(jī)可編程控制電路內(nèi)部的累加計(jì)數(shù)器定期置零,當(dāng)有伙伴機(jī)的 清零信號(hào)到達(dá)時(shí),主機(jī)的累加計(jì)數(shù)器便復(fù)位到零,重新開始計(jì)數(shù);否則主機(jī)的累加計(jì)數(shù)器一 直計(jì)數(shù)到溢出為止;
(a3)定期査看主機(jī)和伙伴機(jī)的累加計(jì)數(shù)器的狀態(tài);若伙伴機(jī)的累加計(jì)數(shù)器的數(shù)據(jù)發(fā)生 靜止,和/或主機(jī)累加計(jì)數(shù)器的內(nèi)容不被周期性地清零,則主機(jī)判斷伙伴機(jī)的CPU "心跳"出 現(xiàn)故障。
伙伴機(jī)的累加計(jì)數(shù)器的輸入時(shí)鐘信號(hào)同時(shí)作為主機(jī)累加器的清零信號(hào)。
主機(jī)和伙伴機(jī)之間綜合故障檢測(cè)是相互對(duì)稱的。
在所述步驟(2)之后還包括步驟
(3) CPU不斷讀取硬件復(fù)位寄存器和軟件復(fù)位寄存器的狀態(tài),并根據(jù)處理策略決定是否 啟動(dòng)異常處理。
所述步驟(3)具體為
若主機(jī)檢測(cè)到伙伴機(jī)出現(xiàn)故障,則僅對(duì)伙伴機(jī)進(jìn)行復(fù)位;若伙伴機(jī)檢測(cè)到主機(jī)出現(xiàn)故障, 則在對(duì)主機(jī)進(jìn)行復(fù)位的同時(shí),在主機(jī)和伙伴機(jī)之間進(jìn)行主備狀態(tài)倒換。 上述方法還支持主機(jī)和伙伴機(jī)之間的手動(dòng)切換。 與現(xiàn)有技術(shù)相比,主備用機(jī)的硬件和軟件模塊體系完全一致,能夠?qū)ο到y(tǒng)進(jìn)行靈活的升 級(jí),最大限度的保證原有背板和工作單元不動(dòng),各個(gè)工作單元能夠獨(dú)立升級(jí),實(shí)現(xiàn)熱備份, 減小了開發(fā),生產(chǎn)和維護(hù)的工作量。
采用本發(fā)明所述方法,可以不僅僅對(duì)系統(tǒng)中的關(guān)鍵單元進(jìn)行備份,任何單元都可以在不 影響背板和其他單元的結(jié)構(gòu)的情況下,實(shí)現(xiàn)熱備份;對(duì)互連環(huán)境的要求簡(jiǎn)單,任何一個(gè)單元 發(fā)生主備倒換,都不影響到其他單元的正常運(yùn)行,甚至可以不知曉,也可以獨(dú)立發(fā)出報(bào)警。
當(dāng)工作單元發(fā)現(xiàn)自身軟件或者硬件出現(xiàn)異常時(shí),亦可以在對(duì)方的硬件復(fù)位寄存器和軟件 復(fù)位寄存器寫入標(biāo)志,主動(dòng)要求主備倒換。
采用本發(fā)明所描述的心跳故障檢測(cè)裝置,倒換檢測(cè)電路邏輯清晰,控制簡(jiǎn)單,最大限度 的防止了誤判,完全適合硬件故障的檢測(cè)。
通過采用本技術(shù),提高了控制系統(tǒng)的可靠性,使得主備單元相對(duì)獨(dú)立,便于實(shí)現(xiàn)自動(dòng)倒 換,自動(dòng)回復(fù),便于和其他各種冗余方式結(jié)合使用。
圖1是本發(fā)明所述主備倒換的綜合故障檢測(cè)裝置的系統(tǒng)結(jié)構(gòu)圖。 圖2是本發(fā)明所述的主備倒換的綜合故障檢測(cè)方法的主備倒換故障判斷過程。 圖3是一種用于主備倒換的心跳故障檢測(cè)裝置。 圖4是主備控制板心跳故障檢測(cè)裝置。
具體實(shí)施例方式
為了克服現(xiàn)有技術(shù)中的復(fù)雜性和低可靠性等缺點(diǎn),本發(fā)明是基于分布式的結(jié)構(gòu),多個(gè)相 互通訊的單元組成的系統(tǒng)中,提出了一種主備倒換條件綜合檢測(cè)的硬件裝置和方法,對(duì)設(shè)備 軟件故障和硬件故障提供綜合檢測(cè),為設(shè)備的主備倒換提供一個(gè)綜合的判據(jù)。進(jìn)一步可以實(shí) 現(xiàn)設(shè)備軟硬件運(yùn)行可靠性的保障。
要實(shí)施檢測(cè)的目標(biāo)包括
1. 主、備機(jī)作為控制器與系統(tǒng)中其他單元之間的通信是否正常;
2. 主、備機(jī)之間的通信是否正常;
3. 主、備機(jī)的硬件是否有故障;
4. 主、備機(jī)的應(yīng)用軟件模塊是否正常運(yùn)行。
作為綜合檢測(cè)的硬件裝置部分,這里還提出了一種主備倒換心跳檢測(cè)的硬件裝置,該裝
8
置為系統(tǒng)控制部分進(jìn)行主備倒換操作提供了基于硬件檢測(cè)的判斷依據(jù)。
如圖1所示,主備倒換條件綜合檢測(cè)的硬件裝置包括互為主備狀態(tài)的主機(jī)1和伙伴機(jī)2,
主機(jī)1和伙伴機(jī)2在結(jié)構(gòu)上是對(duì)稱的,各自均包括CPU、以及通過CPU地址/數(shù)據(jù)/控制總線A 與該CPU相連的可編程控制電路模塊、通信接口模塊、硬件復(fù)位寄存器和軟件復(fù)位寄存器; 其中,可編程控制電路模塊用于進(jìn)行邏輯控制,通信接口模塊用于主機(jī)和伙伴機(jī)之間數(shù)據(jù)同 歩、備份和故障判斷;通信接口模塊的狀態(tài)和屬性由可編程控制電路模塊控制;主機(jī)和伙伴 機(jī)制之間連有主備檢測(cè)和控制線;硬件復(fù)位寄存器用于記錄硬件異常,軟件復(fù)位寄存器用于 記錄軟件異常。
具體地,主機(jī)包括CPU1、可編程控制電路模塊l、通信接口模塊l、硬件復(fù)位寄存器H1 和軟件復(fù)位寄存器S1;伙伴機(jī)包括CPU2、可編程控制電路模塊2、通信接口模塊2、硬件復(fù) 位寄存器H2和軟件復(fù)位寄存器S2。
主備倒換條件綜合檢測(cè)系統(tǒng)由圖l所示,由的檢測(cè)部分和控制部分組成。其中檢測(cè)部分 包括CPU,可編程控制電路,主備檢測(cè)和控制線,主要進(jìn)行主備狀態(tài)的識(shí)別和故障的檢測(cè)和 通知;控制部分包括CPU,可編程控制電路,主備檢測(cè)和控制線,系統(tǒng)控制總線,并結(jié)合系 統(tǒng)數(shù)據(jù)總線來實(shí)現(xiàn),這部分主要用來在確認(rèn)倒換信號(hào)后執(zhí)行各種形式的邏輯組合,復(fù)位和倒 換動(dòng)作。
其中,Hl用于記錄伙伴機(jī)硬件異常,包括心跳檢測(cè)故障;Sl用于記錄伙伴機(jī)軟件異 常,判斷依據(jù)包括-
1、 周期性的HELLO包無應(yīng)答,則寫入標(biāo)志;
2、 伙伴機(jī)之間數(shù)據(jù)同步不成功,則寫入標(biāo)志;
3、 伙伴機(jī)自殺申請(qǐng)。
CPU中故障判斷過程,讀取H1, Sl標(biāo)志進(jìn)行綜合判斷,并根據(jù)可編程邏輯電路設(shè)定的策 略機(jī)制來進(jìn)行處理。
基于硬件故障檢測(cè)的心跳檢測(cè)裝置主要包括CPU,地址/數(shù)據(jù)/控制總線和可編程邏輯電 路內(nèi)部的累加計(jì)數(shù)器,其中硬件檢測(cè)部分由累加計(jì)數(shù)器來實(shí)現(xiàn),而主備倒換的控制部分由CPU 來完成。累加計(jì)數(shù)器通過地址/數(shù)據(jù)/控制總線掛接在CPU上,CPU通過該總線完成對(duì)當(dāng)前板 和伙伴板累加計(jì)數(shù)器的讀寫。可編程邏輯電路內(nèi)部的累加計(jì)數(shù)器完成對(duì)CPU的并行IA)(PIO)
的計(jì)數(shù)功能。連接主備板的信號(hào)有伙伴板的累加計(jì)數(shù)器的當(dāng)前值的信號(hào)和伙伴板對(duì)本板的
清零信號(hào)。
下面就針對(duì)實(shí)現(xiàn)的核心思想,算法和操作步驟進(jìn)行描述-
步驟1:初始化過程——設(shè)置主、備狀態(tài),(主、備工作差別),及可編程控制電路邏 輯,以及處理策略;
步驟2:主單元承擔(dān)系統(tǒng)中必要的通信和控制功能,備份單元進(jìn)入創(chuàng)建和啟動(dòng)進(jìn)行數(shù)據(jù) 備份和定時(shí)檢測(cè)相關(guān)的進(jìn)程;
歩驟3:主、備單元周期性地進(jìn)行狀態(tài)檢測(cè)和數(shù)據(jù)同步; 歩驟4:不斷讀取S1,H1的狀態(tài);
歩驟5:當(dāng)主機(jī)發(fā)現(xiàn)自身硬件和軟件出現(xiàn)異常,則通過主備檢測(cè)和控制總線寫入分別選 擇寫入對(duì)方H2和S2,返回步驟;
歩驟6:對(duì)主機(jī)來說,當(dāng)向伙伴機(jī)周期性的發(fā)送HELLO包無應(yīng)答;伙伴機(jī)之間數(shù)據(jù)同歩
不成功;收到伙伴機(jī)的自殺申請(qǐng)則可以根據(jù)一定的策略決定是否寫入標(biāo)志S1; 歩驟7:當(dāng)發(fā)現(xiàn)伙伴機(jī)硬件異常,包括心跳檢測(cè)故障等,則寫入標(biāo)志H1; 歩驟8:當(dāng)發(fā)現(xiàn)S1或者H1被寫入,則根據(jù)邏輯處理策略決定是否啟動(dòng)對(duì)伙伴機(jī)異常的
處理,返回歩驟2。
其中基于硬件故障檢測(cè)的心跳檢測(cè)故障的方法是伙伴板通過讀取主機(jī)累加計(jì)數(shù)器來相互 判斷故障,歩驟是
步驟一通過伙伴板上的CPU2對(duì)主機(jī)上的累加計(jì)數(shù)器定期置0。
歩驟二主機(jī)上的CPU1對(duì)可編程邏輯電路內(nèi)部的累加計(jì)數(shù)器每隔一定周期進(jìn)行一次累
加,該心跳信號(hào)直接反映了 CPU1當(dāng)前的工作狀態(tài)。
步驟三當(dāng)有伙伴板的清零信號(hào)到達(dá)的時(shí)候,本板的累加計(jì)數(shù)器便會(huì)復(fù)位到零,重新開
始計(jì)數(shù)。除非有伙伴板的清零信號(hào)到來,否則計(jì)數(shù)器一直計(jì)數(shù)到溢出為止。
歩驟四定期通過伙伴板的主備倒換控制總線査看累加計(jì)數(shù)器1和2的狀態(tài)。
步驟五當(dāng)不能察覺"心跳",也就是出現(xiàn)下面兩種情況中的一種或全部,可以認(rèn)為對(duì)
方系統(tǒng)出了問題,CPU2實(shí)現(xiàn)對(duì)CPU1硬件故障的判斷
1、 累加計(jì)數(shù)器1的數(shù)據(jù)發(fā)生靜止;
2、 累加計(jì)數(shù)器2的內(nèi)容不被周期性地清0;
上述故障是多種情況下可能出現(xiàn)的結(jié)果,包括以下故障可能
(1) CPU不能對(duì)伙伴板發(fā)出清零信號(hào);
(2) 清零信號(hào)發(fā)出,但對(duì)方?jīng)]有收到;
(3) 累加寄存器不能對(duì)自身周期性的加1;
(4) 不能讀取對(duì)方累加寄存器的狀態(tài)。 主機(jī)和伙伴機(jī)之間綜合故障檢測(cè)是相互對(duì)稱的。上述"心跳"檢測(cè)裝置在結(jié)構(gòu)上對(duì)稱,
也適用于主機(jī)對(duì)伙伴板的監(jiān)視,如果主機(jī)察覺不到伙伴板的"心跳",即可判斷認(rèn)為備用板 發(fā)生問題,也可以將備用板執(zhí)行倒換操作。
主機(jī)對(duì)伙伴機(jī)的CPU的"心跳"故障檢測(cè)的步驟具體為-
1、 主機(jī)的CPU對(duì)主機(jī)可編程控制電路內(nèi)部的累加計(jì)數(shù)器進(jìn)行周期性的累加,伙伴機(jī)的 CPU對(duì)伙伴機(jī)可編程控制電路內(nèi)部的累加計(jì)數(shù)器進(jìn)行周期性的累加;
2、 伙伴機(jī)的CPU對(duì)主機(jī)可編程控制電路內(nèi)部的累加計(jì)數(shù)器定期置零,當(dāng)有伙伴機(jī)的清零 信號(hào)到達(dá)時(shí),主機(jī)的累加計(jì)數(shù)器便復(fù)位到零,重新開始計(jì)數(shù);否則主機(jī)的累加計(jì)數(shù)器一直計(jì) 數(shù)到溢出為止;
3、 定期査看主機(jī)和伙伴機(jī)的累加計(jì)數(shù)器的狀態(tài);若伙伴機(jī)的累加計(jì)數(shù)器的數(shù)據(jù)發(fā)生靜止, 和/或主機(jī)累加計(jì)數(shù)器的內(nèi)容不被周期性地清零,則主機(jī)判斷伙伴機(jī)的CPU"心跳"出現(xiàn)故障。
下面結(jié)合附圖,詳細(xì)描述技術(shù)方案的實(shí)施。
在圖l所示實(shí)施例中,檢測(cè)部分包括CPU,可編程控制電路,主備檢測(cè)和控制線,主要 進(jìn)行主備狀態(tài)的識(shí)別和故障的檢測(cè)和通知;控制部分包括CPU,可編程控制電路,主備檢測(cè) 和控制線,系統(tǒng)控制總線,并結(jié)合系統(tǒng)數(shù)據(jù)總線來實(shí)現(xiàn),這部分主要用來在確認(rèn)倒換信號(hào)后 執(zhí)行各種形式的邏輯組合,復(fù)位和倒換動(dòng)作。
CPU通過地址/數(shù)據(jù)/控制總線來進(jìn)行主備狀態(tài)的檢測(cè),異常的識(shí)別,數(shù)據(jù)的同步,以及
對(duì)出現(xiàn)異常后的處理。
FPGA由H1:硬件復(fù)位寄存器和Sh軟件復(fù)位寄存器組成,其中Hl用于記錄伙伴機(jī)硬件 異常,包括心跳檢測(cè)故障,還可以接受對(duì)方的自殺申請(qǐng)(可以直接被寫入);Sl用于記錄伙
伴機(jī)軟件異常,判斷依據(jù)包括
(1) 主機(jī)和伙伴機(jī)之間周期性的相互發(fā)送HELLO包,如果一定時(shí)間內(nèi)收不到對(duì)方的的應(yīng)
答,則寫入主機(jī)標(biāo)志S1;
(2) 主機(jī)和伙伴機(jī)之間數(shù)據(jù)同步不成功,則寫入標(biāo)志S1;(3)收到伙伴機(jī)的自殺申請(qǐng),則寫入標(biāo)志S1。 主備檢測(cè)和控制線包括軟件故障識(shí)別線、硬件故障識(shí)別線、主備標(biāo)志識(shí)別線、復(fù)位線 通信接口承擔(dān)了主機(jī)和伙伴機(jī)之間數(shù)據(jù)同步的工作,通訊接口的狀態(tài)和屬性受到FPGA的 控制;可以通過通訊接口來進(jìn)行數(shù)據(jù)同步,并周期性的相互發(fā)送HELLO包。
在智能光網(wǎng)絡(luò)設(shè)備中,機(jī)架單元的分布式控制總線體系的實(shí)現(xiàn)主備倒換檢測(cè)和控制的具
體實(shí)施過程如下所述
智能光網(wǎng)絡(luò)設(shè)備中,控制板有一個(gè)以太網(wǎng)口用來進(jìn)行主機(jī)和伙伴機(jī)之間的數(shù)據(jù)同步。FPGA 的HI和SI寄存器用來標(biāo)識(shí)和記錄自身和伙伴機(jī)軟件和硬件是否正常,缺省狀況下設(shè)置為0; 復(fù)位控制線負(fù)責(zé)控制另一個(gè)控制板的故障檢測(cè)和復(fù)位。
節(jié)點(diǎn)上電初始化過程中,首先是FPGA初始化過程,F(xiàn)PGA初試設(shè)置主機(jī)和伙伴機(jī)的狀態(tài),
完成初試化的FPGA通過軟件故障識(shí)別線和硬件故障識(shí)別線,主備標(biāo)志識(shí)別線査看伙伴機(jī)的狀 太
心、o
當(dāng)FPGA完成初始化設(shè)置后,應(yīng)用軟件進(jìn)行初始化,在軟件初試化之前首先査看FPGA主 備狀態(tài)寄存器的狀態(tài),不同的狀態(tài)進(jìn)入不同的初始化流程。如果狀態(tài)是"主",那么應(yīng)用軟 件進(jìn)入正常的初始化過程,創(chuàng)建和啟動(dòng)所有的應(yīng)用層進(jìn)程。如果狀態(tài)是"備",那么只創(chuàng)建 和啟動(dòng)進(jìn)行數(shù)據(jù)備份和定時(shí)檢測(cè)的相關(guān)進(jìn)程,其它應(yīng)用進(jìn)程不創(chuàng)建和啟動(dòng)。主備控制板都初 試化完成后,主控制板運(yùn)行應(yīng)用軟件的所有功能,備份控制板只負(fù)責(zé)檢測(cè)主控制板狀態(tài),并 且主備控制板的數(shù)據(jù)要同步,需要主控制板將數(shù)據(jù)庫(kù)中的信息通過通訊接口備份到備控制板 上。
當(dāng)前工作的主控制板故障后,要發(fā)生主備倒換,故障的檢測(cè)機(jī)制如下
1、 主機(jī)和伙伴機(jī)相互之間使用全雙工的硬件故障識(shí)別線周期性的對(duì)對(duì)方進(jìn)行心跳檢 湖1J,如果一定時(shí)間內(nèi)察覺不到對(duì)方的"心跳",則將自己的Hl寄存器設(shè)置為l。
2、 如果主機(jī)認(rèn)為自身出現(xiàn)了故障,可以通過軟件故障識(shí)別線向伙伴機(jī)發(fā)出自殺申請(qǐng), 方法是直接寫入對(duì)方的S2寄存器。
3、 如果主機(jī)向?qū)Ψ街芷谛缘陌l(fā)送HELLO包時(shí), 一定時(shí)間內(nèi)收不到對(duì)方的應(yīng)答,同時(shí)判
斷主機(jī)和伙伴機(jī)之間數(shù)據(jù)同步不成功,兩種情況同時(shí)發(fā)生時(shí)可以寫入自身軟件故障寄存器SI
設(shè)置為1 (當(dāng)然也可以設(shè)置策略為任何一種情況發(fā)生都可以置位自身的軟件故障寄存器),
如果收到伙伴機(jī)的自殺申請(qǐng),也可以直接設(shè)置自身軟件寄存器Sl設(shè)置為1。 4、主機(jī)的cpu周期性的査看自己的m和si的狀態(tài),如果發(fā)現(xiàn)他們中的任何一個(gè)從缺 省狀態(tài)的o變成了 i,則將對(duì)方復(fù)位,并發(fā)出告警。上述過程是對(duì)稱的,也同樣適用于伙伴
機(jī)通過査看自身H2和S2寄存器的狀態(tài)變化檢測(cè)主機(jī)的故障。之所以同時(shí)選擇軟件和硬件兩 種故障檢測(cè)機(jī)制,主要為考慮到單一機(jī)制的不可靠性,比如有時(shí)應(yīng)用軟件己經(jīng)跑飛,但系統(tǒng) 控制進(jìn)程(響應(yīng)"心跳")的工作仍然正常進(jìn)行的情況等。
當(dāng)伙伴機(jī)發(fā)現(xiàn)主機(jī)出現(xiàn)異常時(shí),對(duì)主控制板進(jìn)行復(fù)位,在主機(jī)被復(fù)位的同時(shí),主機(jī)和伙 伴機(jī)的主備狀態(tài)發(fā)生改變,并發(fā)出聲光告警,同時(shí)向網(wǎng)管發(fā)出告警消息,通訊接口的狀態(tài)也 發(fā)生改變。
當(dāng)主機(jī)發(fā)現(xiàn)自身出現(xiàn)異常時(shí),也可以直接向伙伴機(jī)發(fā)出請(qǐng)求倒換申請(qǐng);收到申請(qǐng)后,伙 伴機(jī)對(duì)主機(jī)進(jìn)行復(fù)位。 強(qiáng)制倒換的實(shí)施例
強(qiáng)制倒換的機(jī)制實(shí)際就是給管理員提供了一種可以手動(dòng)啟動(dòng)倒換的機(jī)制,在不需要理由 的情況下,管理員可以按下主控制板或者備用板上的手動(dòng)倒換鍵。主機(jī)和伙伴機(jī)之間支持手 動(dòng)切換。
其他機(jī)制都和實(shí)施例1所說的類似或相同,只是當(dāng)強(qiáng)制信號(hào)到來時(shí),當(dāng)管理員按下手動(dòng) 倒換鍵,單板首先確認(rèn)自己是主機(jī)還是伙伴機(jī),如果是主機(jī),則將伙伴機(jī)的H2寄存器置1; 如果是伙伴機(jī),則將主機(jī)的H1寄存器置1;如果上述操作沒有效果,則管理員應(yīng)該按下另外 一個(gè)單板上的手動(dòng)倒換鍵。
在這個(gè)機(jī)制基礎(chǔ)上,也支持讓主機(jī)被突然拔掉或者調(diào)電的時(shí)候,伙伴機(jī)一旦發(fā)現(xiàn)主機(jī)消
失(通過主備檢測(cè)和控制總線影響到H2和S2的狀態(tài)),就馬上啟動(dòng)倒換進(jìn)程,將自己的狀 態(tài)由"備"轉(zhuǎn)為"主",同時(shí)啟動(dòng)應(yīng)用軟件進(jìn)程,擔(dān)負(fù)起數(shù)據(jù)處理和網(wǎng)元內(nèi)部數(shù)據(jù)通訊的作用。
在圖3所示實(shí)施例所述的情況是
當(dāng)系統(tǒng)正常工作時(shí),主備板上的CPU分別通過并行10 (PIO)對(duì)本板上累加計(jì)數(shù)器進(jìn)行 累加操作。PlO由CPU控制每隔50ms產(chǎn)生一次翻轉(zhuǎn)(心跳),該心跳信號(hào)直接反映了 CPU 當(dāng)前的工作狀態(tài)。
每檢測(cè)到PIO上的一個(gè)上跳變,計(jì)數(shù)器便進(jìn)行加一操作。除非有伙伴板的清零信號(hào)到來,
否則計(jì)數(shù)器一直計(jì)數(shù)到全l (即1111)為止。在計(jì)數(shù)的過程中,當(dāng)有伙伴板的清零信號(hào)到達(dá)
的時(shí)候,本板的累加計(jì)數(shù)器便會(huì)復(fù)位到零,重新開始計(jì)數(shù)。
為了簡(jiǎn)化設(shè)計(jì),本板的累加計(jì)數(shù)器的輸入時(shí)鐘(CPU的PIO)信號(hào)同時(shí)作為伙伴板累加 計(jì)數(shù)器的清零信號(hào),即CPU在控制本板累加計(jì)數(shù)器進(jìn)行累加操作的同時(shí)還要復(fù)位伙伴板的累 加計(jì)數(shù)器。
當(dāng)下面兩種情況同時(shí)出現(xiàn)時(shí)
*當(dāng)本板的累加計(jì)數(shù)器已經(jīng)累加到全1時(shí);
*伙伴板的累加計(jì)數(shù)器長(zhǎng)期停留在某一固定值的時(shí)候。
認(rèn)為伙伴板己經(jīng)離線或者跑飛,應(yīng)該產(chǎn)生中斷通知主機(jī)CPU對(duì)伙伴板進(jìn)行復(fù)位操作。因 此主機(jī)判斷伙伴機(jī)是否出現(xiàn)故障的可靠判斷依據(jù)包括1、累加計(jì)數(shù)器2的數(shù)據(jù)發(fā)生靜止、2、
累加計(jì)數(shù)器1的內(nèi)容不被周期性地清0,則CPU1實(shí)現(xiàn)對(duì)CPU2硬件故障的判斷。
由于主機(jī)和伙伴板的結(jié)構(gòu)和邏輯設(shè)計(jì)相同,CPU2和CPU1同時(shí)進(jìn)行相互的"心跳"檢測(cè)
進(jìn)程,判斷過程和判斷依據(jù)相同。
這種檢測(cè)結(jié)果可能發(fā)生在主用板也可能發(fā)生在備用板,當(dāng)發(fā)生在主用板時(shí),只需復(fù)位備
用板即可;當(dāng)發(fā)生在備用板時(shí)除了要復(fù)位主用板外,還要進(jìn)行倒換操作。
當(dāng)伙伴板不在線時(shí),CPU需要屏蔽中斷產(chǎn)生的條件,此時(shí)當(dāng)前板恒為主用板。
在圖4所示實(shí)施例所述的情況是
智能光網(wǎng)絡(luò)中的控制板主備故障檢測(cè)裝置由CPU, FPGA定時(shí)累加寄存器,F(xiàn)PGA定時(shí)檢 測(cè)寄存器,主備狀態(tài)寄存器等組成。其中FPGA定時(shí)累加寄存器是一個(gè)4位的寄存器,F(xiàn)PGA 定時(shí)檢測(cè)寄存器是一個(gè)兩比特寄存器,低位用來標(biāo)識(shí)對(duì)方累加寄存器的狀態(tài),有故障為1; 高位用來自身累加寄存器的狀態(tài),有故障為l;雙方都正常的時(shí)候寄存器的值為00。
智能光網(wǎng)絡(luò)中對(duì)控制板進(jìn)行主備倒換操作時(shí)的故障檢測(cè)過程是-
首先是FPGA初始化過程,F(xiàn)PGA初試設(shè)置主備控制板的FPGA主備狀態(tài)寄存器都為備 份狀態(tài),完成初試化的FPGA通過復(fù)位控制線査看另一控制板狀態(tài),如果狀態(tài)為"主",則 將本板FPGA主備狀態(tài)寄存器設(shè)置為"備",反之設(shè)置為"主"。如果狀態(tài)是"主",那么
應(yīng)用軟件進(jìn)入正常的初始化過程,創(chuàng)建和啟動(dòng)所有的應(yīng)用層進(jìn)程。如果狀態(tài)是"備",那么 只創(chuàng)建和啟動(dòng)進(jìn)行數(shù)據(jù)備份和定時(shí)檢測(cè)的相關(guān)進(jìn)程。主備控制板的定時(shí)檢測(cè)寄存器的缺省狀 態(tài)都是00。
備控制板對(duì)主控制板進(jìn)行主備倒換故障"心跳檢測(cè)"的機(jī)制如下1 、主控制板CPU以50ms為周期將主控制板的FPGA定時(shí)累加寄存器加1;
2、 如果主控制板FPGA定時(shí)累加寄存器不等于O,則備控制板將主控制板的定時(shí)累加寄 存器置0,重復(fù)步驟1 2;
3、 備份控制板的FPGA定時(shí)檢測(cè)寄存器通過以200ms為周期檢測(cè)主控制板FPGA定時(shí) 累加寄存器的狀態(tài);
4、 如果備份控制板發(fā)現(xiàn)主控制板的定時(shí)累加寄存器保持O,說明主控制板CPU失去對(duì) 主控制板FPGA定時(shí)累加寄存器的累加操作能力,備控制板的定時(shí)檢測(cè)寄存器低位置1;
5、 備份控制板的FPGA定時(shí)檢測(cè)寄存器以200ms為周期檢測(cè)備控制板FPGA定時(shí)累加 寄存器的狀態(tài);
6、 如果備控制板的定時(shí)累加寄存器出現(xiàn)llll,說明主控制板無力對(duì)備控制板進(jìn)行定期 清零操作,備控制板的定時(shí)檢測(cè)寄存器的高位置1;
7、 如果備控制板的定時(shí)檢測(cè)寄存器的值變成ll,判斷認(rèn)為主控制板出現(xiàn)了故障,執(zhí)行 對(duì)主控制板的主備倒換進(jìn)程。
上述過程中,主控制板檢測(cè)備份控制板的故障也執(zhí)行上述程序,判斷依據(jù)相同。
權(quán)利要求
1. 一種用于主備倒換的綜合故障檢測(cè)裝置,包括互為主備狀態(tài)的主機(jī)和伙伴機(jī),其特征在于,主機(jī)和伙伴機(jī)在結(jié)構(gòu)上是對(duì)稱的,各自均包括CPU、以及通過CPU地址/數(shù)據(jù)/控制總線與該CPU相連的可編程控制電路模塊、通信接口模塊、硬件復(fù)位寄存器和軟件復(fù)位寄存器;其中,可編程控制電路模塊用于進(jìn)行邏輯控制,通信接口模塊用于主機(jī)和伙伴機(jī)之間數(shù)據(jù)同步和備份;通信接口模塊的狀態(tài)和屬性由可編程控制電路模塊控制;主機(jī)和伙伴機(jī)之間連有主備檢測(cè)和控制線;硬件復(fù)位寄存器用于記錄硬件異常,軟件復(fù)位寄存器用于記錄軟件異常;主機(jī)、伙伴機(jī)周期性地進(jìn)行狀態(tài)檢測(cè)和數(shù)據(jù)同步,并根據(jù)檢測(cè)結(jié)果決定是否在硬件復(fù)位寄存器和軟件復(fù)位寄存器寫入標(biāo)志。
2、 根據(jù)權(quán)利要求1所述的綜合故障檢測(cè)裝置,其特征在于,所述可編程控制電路模塊內(nèi)部包含有累加計(jì)數(shù)器;該累加計(jì)數(shù)器通過地址/數(shù)據(jù)/控制總線掛接在CPU上,用于對(duì)CPU的 并行輸入/輸出的計(jì)數(shù);CPU通過地址/數(shù)據(jù)/控制總線完成對(duì)主機(jī)和伙伴機(jī)中所述累加計(jì)數(shù)器的讀寫;連接主機(jī)和伙伴機(jī)的信號(hào)有伙伴機(jī)中所述累加計(jì)數(shù)器的當(dāng)前值的信號(hào)和伙伴機(jī)對(duì)主機(jī)的清零信號(hào)。
3、 根據(jù)權(quán)利要求2所述的綜合故障檢測(cè)裝置,其特征在于,還包括系統(tǒng)控制總線和系統(tǒng)數(shù)據(jù)總線;該系統(tǒng)控制總線和系統(tǒng)數(shù)據(jù)總線與所述CPU、可編程控制電路模塊、主備檢測(cè)和 控制線組成所述主備倒換的綜合故障檢測(cè)裝置的控制部分,用于在確認(rèn)倒換信號(hào)后執(zhí)行邏輯組合、復(fù)位和倒換動(dòng)作。
4、 根據(jù)權(quán)利要求3所述的綜合故障檢測(cè)裝置,其特征在于,在主機(jī)和伙伴機(jī)上分別設(shè)置有手動(dòng)切換健。
5、 一種用于主備倒換的綜合故障檢測(cè)方法,其特征在于,包括步驟(1) 可編程控制電路及應(yīng)用軟件進(jìn)行初始化;(2) 主機(jī)、伙伴機(jī)周期性地進(jìn)行狀態(tài)檢測(cè)和數(shù)據(jù)同步,并根據(jù)檢測(cè)結(jié)果決定是否在硬件復(fù)位寄存器和軟件復(fù)位寄存器寫入標(biāo)志。
6、 根據(jù)權(quán)利要求5所述的綜合故障檢測(cè)方法,其特征在于,所述步驟(1)具體為 (11)可編程控制電路進(jìn)行初始化設(shè)置,設(shè)置主機(jī)和伙伴機(jī)的主備狀態(tài),及可編程控制電路邏輯以及處理策略;(12)應(yīng)用軟件進(jìn)行初始化,如果狀態(tài)為"主",應(yīng)用軟件進(jìn)入正常的初始化過程,創(chuàng) 建和啟動(dòng)所有的應(yīng)用層進(jìn)程,如果狀態(tài)為"備",則只創(chuàng)建和啟動(dòng)進(jìn)行數(shù)據(jù)備份和定時(shí)檢測(cè) 的相關(guān)進(jìn)程,其余的應(yīng)用進(jìn)程不創(chuàng)建和啟動(dòng)。
7、 根據(jù)權(quán)利要求6所述的綜合故障檢測(cè)方法,其特征在于,所述步驟(2)具體為 當(dāng)伙伴機(jī)發(fā)現(xiàn)自身硬件和軟件出現(xiàn)異常,則通過主備檢測(cè)和控制線分別選擇寫入主機(jī)的硬件復(fù)位寄存器和軟件復(fù)位寄存器;當(dāng)主機(jī)當(dāng)向伙伴機(jī)周期性的發(fā)送HELLO包無應(yīng)答,或主機(jī)與伙伴機(jī)之間數(shù)據(jù)同步不成功, 或主機(jī)收到伙伴機(jī)的自殺申請(qǐng),則根據(jù)處理策略決定是否寫入標(biāo)志軟件復(fù)位寄存器;當(dāng)主機(jī)檢測(cè)到伙伴機(jī)硬件異常,包括伙伴機(jī)的CPU的"心跳"故障,則在主機(jī)的硬件復(fù)位寄存器寫入標(biāo)志。
8、 根據(jù)權(quán)利要求7所述的綜合故障檢測(cè)方法,其特征在于,所述主機(jī)對(duì)伙伴機(jī)的CPU的 "心跳"故障檢測(cè)的歩驟具體為(al)主機(jī)的CPU對(duì)主機(jī)可編程控制電路內(nèi)部的累加計(jì)數(shù)器進(jìn)行周期性的累加,伙伴機(jī)的CPU對(duì)伙伴機(jī)可編程控制電路內(nèi)部的累加計(jì)數(shù)器進(jìn)行周期性的累加;(a2)伙伴機(jī)的CPU對(duì)主機(jī)可編程控制電路內(nèi)部的累加計(jì)數(shù)器定期置零,當(dāng)有伙伴機(jī)的 清零信號(hào)到達(dá)時(shí),主機(jī)的累加計(jì)數(shù)器便復(fù)位到零,重新開始計(jì)數(shù);否則主機(jī)的累加計(jì)數(shù)器--直計(jì)數(shù)到溢出為止;(a3)定期査看主機(jī)和伙伴機(jī)的累加計(jì)數(shù)器的狀態(tài);若伙伴機(jī)的累加計(jì)數(shù)器的數(shù)據(jù)發(fā)生 靜止,和/或主機(jī)累加計(jì)數(shù)器的內(nèi)容不被周期性地清零,則主機(jī)判斷伙伴機(jī)的CPU "心跳"出現(xiàn)故障。
9、 根據(jù)權(quán)利要求8所述的綜合故障檢測(cè)方法,其特征在于,伙伴機(jī)的累加計(jì)數(shù)器的輸入 時(shí)鐘信號(hào)同時(shí)作為主機(jī)累加器的清零信號(hào)。
10、 根據(jù)權(quán)利要求9所述的綜合故障檢測(cè)方法,其特征在于,主機(jī)和伙伴機(jī)之間綜合故 障檢測(cè)是相互對(duì)稱的。
11、 根據(jù)權(quán)利要求5至10任一權(quán)利要求所述的綜合故障檢測(cè)方法,其特征在于,在所述歩驟(2)之后還包括步驟(3) CPU不斷讀取硬件復(fù)位寄存器和軟件復(fù)位寄存器的狀態(tài),并根據(jù)處理策略決定是否啟動(dòng)異常處理。
12、 根據(jù)權(quán)利要求10所述的綜合故障檢測(cè)方法,其特征在于,所述步驟(3)具體為-若主機(jī)檢測(cè)到伙伴機(jī)出現(xiàn)故障,則僅對(duì)伙伴機(jī)進(jìn)行復(fù)位;若伙伴機(jī)檢測(cè)到主機(jī)出現(xiàn)故障,則在對(duì)主機(jī)進(jìn)行復(fù)位的同時(shí),在主機(jī)和伙伴機(jī)之間進(jìn)行 主備狀態(tài)倒換。
13、 根據(jù)權(quán)利要求11所述的綜合故障檢測(cè)方法,其特征在于,主機(jī)和伙伴機(jī)之間支持手動(dòng)切換。
全文摘要
本發(fā)明公開了一種用于主備倒換的綜合故障檢測(cè)裝置和方法,涉及應(yīng)用通信領(lǐng)域,為提供主備倒換條件綜合檢測(cè)而發(fā)明。主備倒換的綜合故障檢測(cè)裝置的本機(jī)和伙伴機(jī)結(jié)構(gòu)上對(duì)稱,均包括CPU、以及通過CPU地址/數(shù)據(jù)/控制總線與該CPU相連的可編程控制電路模塊、通信接口模塊、硬件復(fù)位寄存器和軟件復(fù)位寄存器,可編程控制電路模塊內(nèi)部包含有累加計(jì)數(shù)器。主備倒換的綜合故障檢測(cè)方法包括步驟可編程控制電路及應(yīng)用軟件進(jìn)行初始化;本機(jī)、伙伴機(jī)周期性地進(jìn)行狀態(tài)檢測(cè)和數(shù)據(jù)同步,并根據(jù)檢測(cè)結(jié)果決定是否在硬件復(fù)位寄存器和軟件復(fù)位寄存器寫入標(biāo)志。本發(fā)明適用于重要工作單元需要具有主備倒換功能的通信和控制總線的分布式的系統(tǒng)。
文檔編號(hào)H04B1/74GK101207408SQ200610168070
公開日2008年6月25日 申請(qǐng)日期2006年12月22日 優(yōu)先權(quán)日2006年12月22日
發(fā)明者永 李, 楊永勝, 王加瑩 申請(qǐng)人:中興通訊股份有限公司