陶琴,汪文晶,王志勇
(1.武漢虹信通信技術有限責任公司,湖北 武漢 430205;2.武漢郵電科學研究院,湖北 武漢 430074)
基于OpenSAF的MiniEPC熱備系統(tǒng)設計與實現
陶琴1,汪文晶2,王志勇1
(1.武漢虹信通信技術有限責任公司,湖北 武漢 430205;2.武漢郵電科學研究院,湖北 武漢 430074)
為了實現低時延、無網絡中斷的用戶體驗,解決EPC服務器關鍵業(yè)務中斷導致通信網絡癱瘓的問題,分析了目前3種保障系統(tǒng)高可用性技術的優(yōu)缺點,設計了一種基于OpenSAF開源項目的EPC雙機熱備系統(tǒng),通過測試證實了熱備份的時延非常小,可以做到EPC關鍵服務不中斷,達到用戶無感知的效果,用以確保核心網長期、可靠的服務。
OpenSAF EPC 雙機熱備系統(tǒng)
隨著移動互聯網的高速發(fā)展,核心網EPC(Evolved Packet Core,核心分組網演進)上的業(yè)務量與數據量飛速增長,一旦核心網服務器因故障宕機,整個通信網絡就會癱瘓,網絡中斷將極大降低用戶體驗。目前,主要有服務器集群、雙機熱備和單機容錯等技術用以保障系統(tǒng)的高可用性,其中單機容錯技術是基于硬件的容錯,價格極其昂貴,只適用于對容錯要求極高的應用;集群技術主要用于解決負載均衡等問題,安裝使用操作復雜,投資較大,一般只適用于大型系統(tǒng);雙機熱備技術配置簡單,投資小,適用于各種中小型系統(tǒng)[1],因此本文設計了一種基于開源的OpenSAF項目MiniEPC的HA(High Availability,熱備)純軟件方案,此方案成本極小,實用性高。
2.1 雙機熱備系統(tǒng)
雙機熱備系統(tǒng)有兩種實現方式,其中一種是基于共享的存儲設備的方式(如SAN(Storage Area Network,存儲區(qū)域網絡)或共享的磁盤陣列),另一種是純軟件方式。
共享方式:將數據庫放在共享的存儲設備上,當一臺服務器提供服務時,直接在存儲設備上進行讀寫,而當系統(tǒng)切換后,另一臺服務器也同樣讀取該存儲設備上的數據[2]。
純軟件方式:通過鏡像軟件,將數據實時復制備份到另一臺服務器上,同樣的數據在兩臺服務器上各存一份,一旦其中一臺服務器出現故障,就可以及時切換到另一臺服務器繼續(xù)工作[2]。
鑒于共享存儲設備方式(如磁盤陣列)不僅成本昂貴,而且增加了新的故障單點,降低了雙機熱備系統(tǒng)的可靠系數,而且還受SCSI(Small Computer System Interface,小型計算機系統(tǒng)接口)電纜線長度約束(雖然光纖通道的磁盤陣列不受距離限制,但投資會很大),導致服務器部署很不靈活,因此本文的設計方案選擇純軟件方式。
2.2 總體網絡結構體系
本文設計的基于OpenSAF的EPC熱備系統(tǒng)采用“1+1”備份模式,硬件由2臺服務器組成,軟件運行環(huán)境為Centos 6.5操作系統(tǒng),2臺服務器均要安裝OpenSAF開源項目和虛擬EPC業(yè)務的軟件包。需要注意的是,2臺服務器的硬件型號與軟件版本必須保證完全相同,一臺EPC設備為Active(主設備),另一臺EPC設備為Standby(從設備),從設備只是連接到網絡中,不處理任何業(yè)務(如圖1所示,從設備處于Standby時,黑色虛線表示非連接狀態(tài),只有當從設備切換成Active狀態(tài)時,與Internet和eNodeB之間的鏈路才會被激活),全部核心網的業(yè)務都由主設備來處理,當主設備宕機時,從設備能夠迅速切換為Active狀態(tài),并保持業(yè)務不中斷。
(1)OpenSAF軟件架構
設計方案中的主設備能實時同步配置信息及業(yè)務信息給從設備,同步機制就是選用開發(fā)高可用性中間件的OpenSAF開源項目,其實現了用SAF(Service Availability Forum,服務可用性論壇)接口規(guī)范和一些補充的服務來滿足HA系統(tǒng)的需求,OpenSAF軟件架構圖如圖2所示:

圖1 EPC網絡結構圖

圖2 OpenSAF框架圖
(2)OpenSAF關鍵服務
在O p e n S A F開源項目中有兩個關鍵服務:CKPT(Checkpoint Service,檢查點服務)和AMF(Availability Management Framework,可用性管理框架)。
Checkpoint Service:Checkpoint Service是OpenSAF的備份服務,實現了為進程提供數據備份的功能,用于保護應用程序避免產生故障。當設備因為故障切換或重新啟動時,Checkpoint Service可以檢索數據,并從故障之前記錄的狀態(tài)恢復數據。且為了避免在系統(tǒng)中累積未使用的備份復本,過多占用內存資源,備份副本會被設定一定的保留時間,當任何進程的備份副本在保留時間期間沒有數據備份時,Checkpoint Service將自動刪除這個進程的備份副本來釋放內存資源。
AMF:AMF是OpenSAF的狀態(tài)監(jiān)控機制,是OpenSAF的核心服務之一,用以實現進程的監(jiān)控,它通過協(xié)調集群中的冗余資源來提供一個無單點故障系統(tǒng)。AMF實現了HA機制中的應用程序管理監(jiān)控功能,包括應用程序生命周期管理、故障檢測、故障隔離和修復等。OpenSAF的AMF提供了監(jiān)控應用程序的接口,在軟件程序設計中,需要注冊一個AMF回調函數結構,并開啟AMF的心跳檢測機制,當設備狀態(tài)發(fā)生變化時,注冊的回調函數會執(zhí)行相應的處理函數。
在MiniEPC的熱備系統(tǒng)中,軟件設計主要由EPC設計、HA監(jiān)控機制、數據備份與還原這3部分組成,實現主備EPC設備的切換和數據備份。
3.1 EPC設計
核心網EPC主要由MME(Mobility Management Entity,移動管理實體)、SGW(Serving Gateway,服務網關)、PGW(PDN Gateway,PDN網關)、PCRF(Policy and Charging Rules Function,政策和收費規(guī)則功能)等網元構成。在MiniEPC中需要數據備份的是MME和XGW,則本文的熱備就主要完成二臺EPC設備的MME、XGW數據備份和信令TRANS(此處指EPC的信令業(yè)務,即圖3中User SCTP部分)備份,當主設備的MME、XGW和TRANS的數據發(fā)生變化則用線程通知從設備,實現數據發(fā)送和數據更新,且數據庫會自動同步。

圖3 數據備份還原框架圖
3.2 HA監(jiān)控機制
本系統(tǒng)HA的監(jiān)控機制采用OpenSAF的AMF服務實現,通過AMF來監(jiān)控進程的狀態(tài)及系統(tǒng)的狀態(tài),并在監(jiān)控到異常后采取相應的措施。具體實現是通過在監(jiān)控的進程中增加一個AMF分派線程,該線程在完成AMF的初始化及注冊流程之后,通過AMF的心跳檢測機制來監(jiān)控Active(主設備)上的應用程序,當檢測到主設備某個應用程序故障或者系統(tǒng)宕機時,就將Active(主設備)狀態(tài)切換到Standby狀態(tài),Standby(從設備)切換到Active狀態(tài),并迅速接管業(yè)務,需要注意的是:主備設備的OpenSAF是通過TIPC(Transparent Inter-process Communication,透明進程間通信)通信協(xié)議完成的。
本系統(tǒng)需要將EPC業(yè)務與OpenSAF的AMF監(jiān)控機制結合起來。所以系統(tǒng)的IP配置設計如圖4所示,由于雙機熱備系統(tǒng)中從設備是不做業(yè)務的,所以從設備上不配置業(yè)務IP。
SGW配置在eth1口上,S1配置在eth2口上。當AMF檢測到主設備發(fā)生異常后,會觸發(fā)切換流程,在切換過程中,如果設備當前狀態(tài)是Active,則調用命令配置eth1和eth2口的IP地址,并發(fā)出廣播包廣播接口的MAC地址;如果設備當前狀態(tài)是Standby,則調用命令將eth1和eth2口的IP地址刪除。切換后的IP配置如圖5所示。

圖4 切換前的IP配置

圖5 切換后的IP配置
需要注意的是,由于Standby設備上的業(yè)務IP未配置,所以該設備上啟動的XGW/MME/TRANS等進程的套接字沒法綁定IP地址,這就要求當Standby設備切換為Active設備時,為XGW/MME/TRANS等進程綁定IP地址。具體實現:在AMF回調函數中檢測到設備發(fā)生切換,如果當前設備是Standby變?yōu)锳ctive,則給相應進程發(fā)消息,通知其進行套接字綁定。
3.3 EPC數據備份與還原
EPC數據備份的總體流程圖如圖3所示。數據備份將EPC業(yè)務與OpenSAF的AMF監(jiān)控機制結合起來,采用OpenSAF的Checkpoint Service來實現,Checkpoint(檢查點)通過備份副本同步來備份數據。具體實現:給每個進程設計一個檢查點,每個檢查點分配多個區(qū),每個區(qū)內存都是相同大小,并且每個區(qū)ID是唯一的,每個區(qū)ID必須與數據結構的某一參數匹配。例如:MME的進程有一個檢查點,備份12 000個UE,每個UE備份一定的數據,通過UE索引與每個區(qū)ID匹配,還原通過UE索引還原。
為減少進程中多個線程同時備份給Checkpoint Service產生的壓力,本系統(tǒng)設計在每個進程中新增3個線程:OspHaCkptWrite線程、OspHaCkptDispatch線程、OspHaCkptInit線程。
(1)OspHaCkptInit線程:負責檢查點的初始化,如果是Active node,則將檢查點設置為Active;如果是Standby node,則同步備份副本,將備份數據一次性同步過來(僅在進程剛啟動時進行);
(2)OspHaCkptWrite線程:OspHaCkptWrite一旦收到消息就調用saCkptCheckpointWrite將數據寫入備份副本;
(3)OspHaCkptDispatch線程:循環(huán)調用saCkptDispatch分發(fā)Checkpoint消息。
當Active/Standby設備的MME/XGW/TRANS進程數據更新需要備份/還原時,就發(fā)送消息給OspHaCkptWrite線程進行備份或給OspHaCkptDispatch線程進行還原。但如果有多個線程有數據備份或還原,此時就會同時調用OspHaCkptWrite線程里的saCkptCheckpointWrite函數將備份數據寫入備份副本,或者調用OspHaCkptDispatch線程里saCkptCheckpointRead函數將備份數據從備份副本讀出。但這顯然會造成阻塞,故想到在調用OspHaCkptWrite線程或OspHaCkptDispatch線程時進行加鎖處理,以解決數據沖突問題,但是OspHaCkptWrite線程和OspHaCkptDispatch線程功能復雜,如果對整個OspHaCkptWrite線程或OspHaCkptDispatch線程進行加鎖處理,會造成數據備份或還原的時延非常大,這違背了熱備高可用性的初衷,顯然是不合理的。因此本文設計的數據備份、還原流程如圖6、圖7所示。

圖6 數據備份流程圖
數據備份流程具體步驟如下:
(1)應用程序有數據備份時,創(chuàng)建鎖(Mutex_lock);
(2)應用程序將備份數據放進緩存Bufferlist;
(3)應用程序數據備份完時,銷毀鎖(Mutex_unlock);
(4)增加信號量的值,即點燈(Sem_post);
(5)一旦信號量加“1”,即燈亮之后,一直被阻塞在此信號量上的OspHaCkptWrite線程就會被喚醒,即Sem_wait成功,并將信號量值減“1”,即熄燈;
(6)OspHaCkptWrite線程創(chuàng)建鎖(Mutex _lock);
(7)OspHaCkptWrite線程從緩存Bufferlist取出備份數據;
(8)OspHaCkptWrite線程銷毀鎖(Mutex_unlock);
(9)OspHaCkptWrite線程將取出的備份數據調用saCkptCheckpointWrite函數寫入備份副本;
(10)Sem_wait使OspHaCkptWrite線程一直阻塞在此信號量上,直到應用程序有數據備份來將燈點亮。
以此類推,一直循環(huán)上述流程來完成數據的備份工作。

圖7 數據還原流程圖
數據還原流程具體步驟如下:
(1)應用程序有數據還原時,saCkptCheckpoint-Read函數將備份數據從備份副本讀出;
(2)saCkptCheckpointRead函數創(chuàng)建鎖(Mutex_lock);
(3)saCkptCheckpointRead函數將備份數據放進緩存Bufferlist;
(4)saCkptCheckpointRead函數銷毀鎖(Mutex_unlock);
(5)增加信號量的值,即點燈(Sem_post);
(6)一旦信號量加“1”,即燈亮之后,一直被阻塞在此信號量上的OspHaCkptDispatch線程就被喚醒,即Sem_wait成功,并將信號量值減“1”,即熄燈;
(7)OspHaCkptDispatch線程創(chuàng)建鎖(Mutex_lock);
(8)OspHaCkptDispatch線程從緩存Bufferlist取出備份數據;
(9)OspHaCkptDispatch線程銷毀鎖(Mutex _unlock);
(10)OspHaCkptDispatch線程將取出的備份數據根據數據的類型還原數據;
(11)sem_wait使OspHaCkptDispatch線程一直阻塞在此信號量上,直到有數據還原來將燈點亮。
以此類推,一直循環(huán)上述流程來完成數據的還原工作。
綜上所述,即可完成應用程序的數據備份和還原工作。
3.4 實驗結果
根據本文設計的MiniEPC的熱備系統(tǒng),搭建好熱備環(huán)境后,分別啟動Active設備和Standby設備,一旦Active設備發(fā)生故障,就會觸發(fā)Failover(宕機)機制,重啟Active設備,促使發(fā)生HA切換。Active主設備宕機后的日志如圖8所示,Standby從設備切換為Active的日志如圖9所示。
圖8為Active主設備宕機,圖9為Standby設備通過TIPC通信協(xié)議檢測到Active失聯,并切換成Active,這一過程花費的時間大概是600 ms,由此可見本設計方案中熱備系統(tǒng)的時延是很小的,可以滿足一般中小型系統(tǒng)的應用。且設計為純軟件模式,不僅成本較低,同時還具備文中所述的雙機熱備純軟件方式的所有優(yōu)勢。

圖8 Active node宕機后日志

圖9 Standby node切換為Active node日志
基于OpenSAF的MiniEPC熱備系統(tǒng)設計方案是一種通過開源軟件實現的熱備份方案,不僅成本較低,而且不受SCSI電纜線限制,可以靈活部署服務器,達到宕機后Ping包不斷(時延小于1 s)的效果,可實現EPC服務不中斷,用戶無感知。對于下一步的研究方向,希望能進一步優(yōu)化備份策略,將時延降低到微秒級,這樣將會實現更少的數據丟失,從而提高系統(tǒng)的高可用性和可靠性。
[1] 劉曉潔,黃永佳. 基于Linux的雙機熱備系統(tǒng)的實現技術[J]. 計算機應用研究, 2007,24(4): 255-257.
[2] 史文路. 雙機熱備份系統(tǒng)的研究與設計[D]. 南京: 南京工業(yè)大學, 2006.
[3] 武建鋒,荊文芳. 雙機系統(tǒng)可靠性研究[J]. 微型電腦應用, 2005,21(12): 13-14.
[4] 李宏亮,胡國平,胡華平,等. 強實時雙系統(tǒng)中容錯技術研究[J]. 國防科技大學學報, 2000,22(6): 57-59.
[5] 姜堅華. 雙機熱備系統(tǒng)的技術研究和具體實現[J]. 微型電腦應用, 2004,20(3): 7-9.
[6] 鄭浩,要鹍. 基于DRBD實現虛擬化系統(tǒng)的雙機熱備[J].通化師范學院學報, 2016,37(8): 69-71.
[7] 王強. 信息實時備份平臺研究與實現[D]. 成都: 電子科技大學, 2013.
[8] 張鵬,李飛,劉之良. 基于狀態(tài)檢測的服務器熱備方案設計與實現[J]. 電腦編程技巧與維護, 2014(14): 76-77.
[9] 史文路,胡平. 雙機熱備份系統(tǒng)的研究與改進[J]. 微處理機, 2008,29(3): 180-182.
[10] 張藝林. 運營商交換核心網元容災備份技術的應用[J].電子技術與軟件工程, 2017(9): 188. ★
Design and Implementation of MiniEPC High Availability System Based on OpenSAF
TAO Qin1, WANG Wenjing2, WANG Zhiyong1
(1. Wuhan Hongxin Communication Technology Co., Ltd., Wuhan 430205, China;2. Wuhan Post and Telecommunications Science Research Institute, Wuhan 430074, China)
In order to achieve the user experience of low delay and uninterrupted network and deal with the communication network paralysis resulted from the interruption of the key service of EPC server, advantages and disadvantages of three techniques to guarantee the high-availability of the system at present were analyzed, an EPC high availability redundant system based on OpenSAF open source project was designed. Experiments show that the high availability system not only has very small delay, but also achieves the uninterrupted EPC key service no impact on user to guarantee the long-term and reliable service of core network.
OpenSAF EPC high availability redundant system



10.3969/j.issn.1006-1010.2017.17.012
TN929.5
A
1006-1010(2017)17-0060-06
陶琴,汪文晶,王志勇. 基于OpenSAF的MiniEPC熱備系統(tǒng)設計與實現[J]. 移動通信, 2017,41(17): 60-65.
2017-06-26
責任編輯:文竹 liuwenzhu@mbcom.cn
陶琴:畢業(yè)于武漢理工大學,現任武漢虹信通信技術有限責任公司軟件工程師,從事無線通信設備研發(fā)等相關工作。
汪文晶:碩士研究生就讀于武漢郵電科學研究院,主要從事無線通信系統(tǒng),4G TD-LTE、NanoCell方面的應用研究等工作。
王志勇:畢業(yè)于清華大學,現任職于武漢虹信通信技術有限責任公司,具有多年無線通信設備研究工作經驗,獲得多個通信相關專利。