胡 鵬,康 敏,施彥媛
(中國電子科技集團公司第三十研究所,四川 成都 610041)
隨著通信技術的發(fā)展和高帶寬需求,通信設備往大容量、高性能發(fā)展?,F(xiàn)代高性能通信設備一般是基于分布式處理的體系架構進行設計,設備內部由多個功能相對獨立的板卡組成,這些板卡在軟硬件設計、功能實現(xiàn)上均很復雜[1],在一定程度上增加了故障發(fā)生率,為了將故障對通信網絡的影響降低到最小,通過關鍵板卡熱備份技術來提高核心設備的可靠性。本文提出了一套高效易用的熱備份機制(HSP,Hot Standby Protocol),能夠在保證不影響業(yè)務處理前提下,平滑排除故障,恢復正常功能[2]。
目前,設備熱備份機制沒有標準可供遵循,基本都是按設備應用場景具體情況進行設計,總的來說主要可以分為以下兩種方式。
方式1:基于存儲設備方式,兩臺需要熱備的設備使用共享存儲設備,兩臺服務器可以采用主備、并行等不同的運行方式。但是在基于共享存儲設備方式中,存在存儲設備故障問題。
方式2:基于數(shù)據復制設備方式,兩臺服務器將數(shù)據實時復制到另外一臺服務器上,服務器上都存有數(shù)據,如果一臺服務器出現(xiàn)故障,則可以切換到另外一臺服務器。但是沒有共享存儲設備軟件,針對不同的應用場景,單獨設計不同的熱備通信架構,接口眾多且格式不統(tǒng)一,新增功能對整個系統(tǒng)影響大,擴展性差,無法滿足復雜通信設備的要求。
復雜通信設備系統(tǒng)結構示意如圖1所示,設計有多種功能板卡。例如,網管板支持將整機設備數(shù)據上傳給網管服務器;主控板進行整機控制管理,交換板用于信令業(yè)務數(shù)據轉發(fā);信令板完成信令協(xié)議處理等。各個板卡之間存在大量通信信息交互,其中主控板[3]、交換板、信令板是整個設備中的核心板卡,如果核心板卡一旦出現(xiàn)故障,則整個通信設備處于不工作狀態(tài),因此將核心板卡設計為主備板卡,確保某一塊板卡出現(xiàn)故障后自動切換到另外一塊進行工作。
圖1 復雜通信設備系統(tǒng)結構
通過研究現(xiàn)有的熱備份機制[4]發(fā)現(xiàn)其存在不足,并不能有效的實現(xiàn)此功能,我們需要對基于存儲設備、數(shù)據復制等熱備技術加以改進,形成一套用于復雜設備的關鍵板卡熱備份有效機制(HSP),實現(xiàn)整機設備功能高效可靠運行。
復雜通信設備中各熱備板卡的動態(tài)插拔、自動切換、數(shù)據熱備同步等消息均通過下層的HSP服務框架進行傳遞,從而實現(xiàn)板卡的熱備和系統(tǒng)的可靠運行。
HSP提出的主要目的是向上層應用屏蔽通信設備內部物理連接關系,不用關心提供的服務模塊在那塊板卡上以及通過什么物理接口,各板卡可通過靈活配置支持不通的功能。HSP相關術語定義如下。
模塊標識:HSP實體提供服務的標識,每類模塊唯一分配一個模塊標識,供應用協(xié)議調用。
服務主用者:提供HSP服務的主用實體,簡稱主用者。
服務備用者:提供HSP服務的備用實體,簡稱備用者。
通信對等體:進行熱備份通信的主用者與備用者,主用者模塊標識號與備用者模塊標識號是一一對應關系。
熱備項:每個模塊標識下注冊的不同數(shù)據同步項。
關鍵板卡熱備份技術通過自定義協(xié)議操作[5],根據上層應用的熱備需求,為應用預分配動態(tài)、靜態(tài)同步熱備項標識,建立起對等體間的主備同步關系,為對等體間傳輸數(shù)據提供傳輸通道。其協(xié)議架構如圖2所示,為上層應用提供相應的注冊接口、數(shù)據同步調用接口,向下直接使用鏈路層協(xié)議承載,屏蔽下層通信細節(jié),為上層應用協(xié)議完成信息收發(fā)。
熱備份協(xié)議通過收發(fā)HSP消息實現(xiàn)。HSP協(xié)議采用鏈路層協(xié)議作為下層傳輸機制。HSP消息由消息頭和消息體構成。消息頭格式如圖3所示。
VER:HSP協(xié)議版本。
MODULE:上層應用注冊的模塊ID,主用者與備用者一一對應。
TYPE:標識HSP不同的報文類型。不同的報文,消息體的內容不同。
OPT:保留字段。
圖2 熱備份技術在協(xié)議體系的位置
圖3 HSP報文格式
SEQ:基于報文的遞增數(shù),可用于區(qū)分不同的消息。
ID:模塊下進行數(shù)據熱備的熱備項號。
SUB_ID:每個熱備項下的熱備子項號。
LEN:用于標識熱備負載消息長度。
HSP協(xié)議包括14個自定義的消息數(shù)據報文,分別為請求同步數(shù)據消息(SynAsk),請求同步數(shù)據確認消息(SynAskCon),同步數(shù)據消息(Syn),同步數(shù)據確認消息(SynCon),同步數(shù)據完成消息(SynDone),同步數(shù)據完成確認(SynDoneCon),同步數(shù)據全部接收消息(SynAllRecv),同步數(shù)據全部接收確認消息(SynAllRecvCon),同步增量數(shù)據消息(SynNew),同步增量數(shù)據確認消息(SynNewCon),同步增量數(shù)據完成消息(SynNewDone),同步增量數(shù)據完成確認(SynNewDoneCon),同步業(yè)務消息(SynTra),同步業(yè)務確認消息(SynTraCon)。
SynAsk由備用者發(fā)送,備用者根據上層應用注冊的模塊ID以及數(shù)據熱備項,每一個熱備項均向主用者發(fā)送請求同步數(shù)據消息。
SynAskCon由主用者發(fā)送,對備用者發(fā)送的請求同步項消息進行確認,判斷當前熱備項是否存在。
Syn由主用者發(fā)送,主用者將每個數(shù)據熱備項內容進行封裝發(fā)送到備用者。
SynCon由備用者發(fā)送,備用者接收解析同步數(shù)據內容后向主用者發(fā)送確認消息。
SynDone由主用者發(fā)送,主用者收到備用者發(fā)送的數(shù)據同步確認消息后,判斷本模塊下熱備項是否同步完成,同步完成之后向備用者發(fā)送本模塊數(shù)據同步完成消息。
SynDoneCon由備用者發(fā)送,備用者收到此消息后判斷備用者本模塊下是否熱備項完成,完成則向主用者發(fā)送確認消息。
SynAllRecv由備用者發(fā)送,備用者判斷本板卡下所有模塊熱備項均完成,則向主用者發(fā)送此消息。
SynAllRecvCon由主用者發(fā)送,主用者收到此消息后確認所有數(shù)據已經同步完到備用板。
SynNew由主用者發(fā)送,主用者將前階段同步數(shù)據過程中產生變化的數(shù)據通過此同步增量數(shù)據消息同步到備用板。
SynNewCon由備用者發(fā)送,備用者接收解析增量同步數(shù)據內容后向主用者發(fā)送確認消息。
SynNewDone由主用者發(fā)送,主用者收到備用者發(fā)送的同步增量數(shù)據確認消息后,判斷本模塊下其它熱備項是否完成,同步完成之后向備用者發(fā)送本模塊增量數(shù)據同步完成消息。
SynNewDoneCon由備用者發(fā)送,備用者收到此消息后判斷備用者本模塊下熱備項同步增量數(shù)據是否完成,完成則向主用者發(fā)送確認消息。
SynTra由主用者發(fā)送,數(shù)據同步完成之后,在運行過程中當主用者數(shù)據產生變化,則通過此消息向備用者同步變化數(shù)據。
SynTraCon由備用者發(fā)送,備用者接收解析同步數(shù)據內容后向主用者發(fā)送確認消息。
熱備份實體互操作流程如圖4所示,主要過程分為4個階段—主備發(fā)現(xiàn)、靜態(tài)同步、靜態(tài)增量同步、動態(tài)同步。
3.4.1 主備發(fā)現(xiàn)
板卡上電后,由其它軟件模塊從硬件讀取當前板卡主備狀態(tài),并調用熱備份模塊中指定的主備函數(shù)接口來通知熱備份模塊當前工作主備狀態(tài)。
運行過程中,通過定時器監(jiān)測板卡硬件主備狀態(tài),并調用主備函數(shù)接口來通知熱備份模塊當前工作主備狀態(tài),確保板卡切換后熱備份工作正常。
3.4.2 靜態(tài)同步
靜態(tài)同步發(fā)生在軟件模塊初始化階段,此過程主要目的是將主用板卡上相關軟件模塊的狀態(tài)信息同步到備用板卡上對應的軟件模塊,使得兩者之間的狀態(tài)信息完全同步,保障備用板卡上軟件模塊可以在此狀態(tài)信息的基礎上穩(wěn)定運行。
3.4.3 靜態(tài)增量同步
靜態(tài)增量同步發(fā)生在軟件模塊初始化階段,主要目的是將靜態(tài)同步階段中,主用板卡軟件模塊產生變化的狀態(tài)信息再一次同步到備用板卡上對應軟件模塊,使得兩者之間的狀態(tài)信息完全同步,此過程同步時間相對于靜態(tài)同步時間大大減少。
3.4.4 動態(tài)同步
動態(tài)同步發(fā)生在軟件模塊正常運行過程中。此過程主要目的是將主用板卡在運行過程中產生或改變的狀態(tài)信息及時同步到備用板卡上,以使得備用板卡與主用板卡的狀態(tài)時刻保持一致。保證備用板卡上軟件模塊可以在此狀態(tài)信息的基礎上穩(wěn)定運行。
3.5.1 主用者狀態(tài)機
HSP主用者在靜態(tài)同步、靜態(tài)增量同步過程中有4個狀態(tài),分別是S_NON、S_SND1、S_SND2、S_DON2。如圖5所示:
S_NONE:主用者初始狀態(tài)。
S_SND1:發(fā)送靜態(tài)數(shù)據狀態(tài)。主用者向備用者發(fā)送同步數(shù)據消息后,從S_NONE狀態(tài)進入該狀態(tài)。當備用者下線時,回到S_NONE狀態(tài)。
S_SND2:發(fā)送靜態(tài)增量數(shù)據狀態(tài)。主用者向備用者發(fā)送同步增量數(shù)據消息后,從S_SND1狀態(tài)進入該狀態(tài)。當備用者下線時,回到S_NONE狀態(tài)。
S_DON2:靜態(tài)增量數(shù)據完成狀態(tài)。主用者收到備用者發(fā)送的同步增量數(shù)據確認消息后,從S_SND2狀態(tài)進入該狀態(tài)。當主備切換、備用者下線時,回到S_NONE狀態(tài)。
圖4 HSP熱備實體互操作流程
圖5 HSP主用者狀態(tài)機
3.5.2 備用者狀態(tài)機
HSP備用者在靜態(tài)同步、靜態(tài)增量同步過程中有6個狀態(tài),分別是S_NON、S_ASK、S_REV1、S_DON1、S_REV2、S_DON2。如圖6所示。
S_NON:備用者初始狀態(tài)。
S_ASK:請求狀態(tài)。備用者向主用者發(fā)送請求同步數(shù)據消息后。從S_NONE狀態(tài)進入該狀態(tài)。當主用者下線時,回到S_NONE狀態(tài)。
S_REV1:收靜態(tài)數(shù)據狀態(tài)。備用者收到主用者發(fā)送的同步數(shù)據消息后。從S_ASK狀態(tài)進入該狀態(tài)。當主用者下線時,回到S_NONE狀態(tài)。
S_DON1:靜態(tài)數(shù)據完成狀態(tài)。備用者收到主用者發(fā)送的同步數(shù)據完成消息后,從S_REV1狀態(tài)進入該狀態(tài)。當主用者下線時,回到S_NONE狀態(tài)。
S_REV2:收靜態(tài)增量數(shù)據狀態(tài)。備用者收到主用者發(fā)送的同步增量數(shù)據消息后,從S_DON1狀態(tài)進入該狀態(tài)。當主用者下線時,回到S_NONE狀態(tài)。
S_DON2:靜態(tài)增量數(shù)據完成狀態(tài)。備用者收到主用者發(fā)送的同步增量數(shù)據完成消息后,從S_REV2狀態(tài)進入該狀態(tài)。當主備切換、備用者下線時,回到S_NONE狀態(tài)。
圖6 HSP備用者狀態(tài)機
關鍵板卡熱備份技術支持復雜通信設備在保證不影響業(yè)務處理前提下,平滑排除故障,自動切換恢復正常功能。能夠大幅提高通信設備的穩(wěn)定性、可靠性,進而提升整個通信網絡的穩(wěn)定、可靠性。同時熱備份技術具備智能化設計思想、對外接口統(tǒng)一、模塊化和擴展性好等特點,在多個設備上已推廣使用。