国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

核心網(wǎng)熱備份系統(tǒng)中SCTP協(xié)議的應(yīng)用與實(shí)現(xiàn)

2017-11-14 10:49王鑫鵬李晗王俊
移動(dòng)通信 2017年19期

王鑫鵬+李晗+王俊

【摘 要】移動(dòng)通信網(wǎng)絡(luò)中,EPC核心網(wǎng)服務(wù)器作為運(yùn)行通信關(guān)鍵業(yè)務(wù)的設(shè)備,是保障系統(tǒng)安全且有效運(yùn)作的基礎(chǔ),服務(wù)器的任何故障都有可能導(dǎo)致通信關(guān)鍵業(yè)務(wù)的癱瘓或中斷。為了提高通信系統(tǒng)的穩(wěn)定性,提出了兩臺(tái)服務(wù)器共同執(zhí)行同一任務(wù)的雙機(jī)熱備架構(gòu)模式,首先分析了OpenSAF方案的優(yōu)點(diǎn),隨后介紹了SCTP備份的具體實(shí)現(xiàn)方案,最后實(shí)驗(yàn)結(jié)果證明了基于SCTP協(xié)議的雙機(jī)熱備系統(tǒng)可以有效地防止服務(wù)器錯(cuò)誤的發(fā)生,從而保證核心網(wǎng)長(zhǎng)期、可靠的服務(wù)。

【關(guān)鍵詞】流控制傳輸協(xié)議 熱備份 雙機(jī)熱備

中圖分類號(hào):TN929 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-1010(2017)19-0034-07

Application and Implementation of SCTP Protocol in EPC Hot Backup System

WANG Xinpeng1, LI Han2, WANG Jun1

[Abstract] In mobile communication networks, as the device for running critical communication services, EPC sever is the basis to guarantee the safe and effective operation of the system. Any failure of the server would lead to paralysis or disruption of critical communications services. In order to improve the stability of communication system, a hot-standby mode that two servers jointly execute the same task was put forward. Firstly, the advantages of the OpenSAF scheme were analyzed. Then, the concrete implementation solution to SCTP backup was introduced. Finally, experimental results demonstrate the dual hot standby system based on SCTP protocol can effectively prevent the occurrence of server errors and guarantee the long-term and reliable service to the core network.

[Key words]SCTP hot backup dual hot backup

1 引言

雙機(jī)熱備即通過運(yùn)行兩臺(tái)服務(wù)器協(xié)作完成一項(xiàng)服務(wù),其中一臺(tái)做Active(主設(shè)備)提供服務(wù),另一臺(tái)做Standby(從設(shè)備)實(shí)時(shí)備份業(yè)務(wù)數(shù)據(jù),保證Standby和Active任意時(shí)刻狀態(tài)一致,當(dāng)Active出現(xiàn)故障時(shí),Standby快速接管服務(wù),以此來實(shí)現(xiàn)系統(tǒng)備份和冗余,從而保證系統(tǒng)的高可靠性。

EPC作為核心網(wǎng)重要的業(yè)務(wù)單元,需要非常可靠的通信鏈路保證,SCTP(流控制傳輸協(xié)議)是提供基于不可靠傳輸業(yè)務(wù)的協(xié)議之上的可靠的數(shù)據(jù)報(bào)傳輸協(xié)議。SCTP是在IP網(wǎng)絡(luò)上使用的一種可靠的通用傳輸層協(xié)議,它通過借鑒UDP(用戶數(shù)據(jù)報(bào)協(xié)議)的優(yōu)點(diǎn)解決了TCP(傳輸控制協(xié)議)的某些局限。SCTP提供的特性使socket(套接字)初始化的可用性、可靠性和安全性都得以提高,同時(shí)支持按序傳輸、防止攻擊、路徑監(jiān)控和路徑冗余等功能。相比之下,TCP是面向字節(jié)的,而SCTP是針對(duì)成幀的消息。SCTP作為信令通訊協(xié)議,被廣泛運(yùn)用于核心網(wǎng)設(shè)備接口中。

2 總體設(shè)計(jì)方案

在EPC熱備系統(tǒng)中采用的是Active/Standby雙機(jī)熱備方式,當(dāng)Active服務(wù)器出現(xiàn)故障的時(shí)候,通過心跳診斷診測(cè)將Standby機(jī)器激活,保證應(yīng)用在短時(shí)間內(nèi)完全恢復(fù)正常使用。在通信系統(tǒng)運(yùn)行過程中,出現(xiàn)任何網(wǎng)絡(luò)或者是主機(jī)故障都會(huì)自動(dòng)觸發(fā)雙機(jī)熱備系統(tǒng)軟件的錯(cuò)誤判定、故障隔離流程,備份服務(wù)器接管被中斷的服務(wù)并在最短的時(shí)間內(nèi)通過聯(lián)機(jī)恢復(fù)繼續(xù)執(zhí)行中斷的服務(wù)。圖1是熱備系統(tǒng)的結(jié)構(gòu)框圖,EPC熱備系統(tǒng)采用1+1備份模式,由兩臺(tái)設(shè)備組成,一臺(tái)為Active,另一臺(tái)為Standby。

Active連接到網(wǎng)絡(luò),對(duì)外提供服務(wù),通過SCTP與連接上的eNodeB進(jìn)行通信;每連接上一個(gè)eNodeB,Active內(nèi)部生成一個(gè)SCTP socket,通過這個(gè)socket收發(fā)數(shù)據(jù)。

Standby不處理任何業(yè)務(wù),設(shè)置成不與外網(wǎng)通信,只與Active相連;EPC服務(wù)器至少是雙網(wǎng)卡,其中一個(gè)網(wǎng)卡用于熱備通信,另外一個(gè)用于連接到網(wǎng)絡(luò);Standby和網(wǎng)絡(luò)通信的網(wǎng)卡處于down的狀態(tài)。

Active將自身狀態(tài)備份到Standby,在自身狀態(tài)發(fā)生改變時(shí)都進(jìn)行備份,包括SCTP socket的狀態(tài),理論上任意時(shí)刻Active和Standby保持狀態(tài)完全一致。

當(dāng)發(fā)生故障時(shí),Active重啟,Standby將和網(wǎng)絡(luò)通信的網(wǎng)卡激活,IP地址設(shè)置成原來Active的IP,此時(shí)Standby利用備份的狀態(tài)重建socket,作為新的Active開始對(duì)外提供服務(wù);原來的Active重啟后,將自身狀態(tài)改成Standby。

即任意時(shí)刻Active和Standby互為鏡像,但只有Active連接網(wǎng)絡(luò)發(fā)生故障切換時(shí),Standby變成Active,用同樣的IP地址連接網(wǎng)絡(luò),接管服務(wù),對(duì)外部而言整個(gè)備份切換都是透明的。endprint

本文描述的EPC系統(tǒng)里的SCTP熱備設(shè)計(jì)方案里Active和Standby的備份以及故障檢測(cè)和切換是基于開源的OpenSAF項(xiàng)目。OpenSAF主要有兩個(gè)作用:

(1)主從設(shè)備之間的通信都通過OpenSAF進(jìn)行,主設(shè)備在需要備份的地方調(diào)用OpenSAF的接口,將要備份的數(shù)據(jù)發(fā)送到從設(shè)備,從設(shè)備收到主設(shè)備的消息后更新系統(tǒng)狀態(tài)。

(2)當(dāng)主設(shè)備宕機(jī)后,OpenSAF立刻重啟主設(shè)備,同時(shí)為從設(shè)備配置和主設(shè)備一樣的IP,這樣網(wǎng)絡(luò)的數(shù)據(jù)即會(huì)發(fā)送到從設(shè)備,此時(shí)原來的從設(shè)備變成主設(shè)備提供服務(wù)。

為能獲取和備份SCTP socket的狀態(tài),必須使用用戶態(tài)的SCTP協(xié)議棧。直接調(diào)用Linux系統(tǒng)函數(shù)創(chuàng)建的SCTP socket使用的是內(nèi)核態(tài)的SCTP協(xié)議棧,內(nèi)核態(tài)不能獲取和設(shè)置SCTP socket的狀態(tài)。用戶態(tài)SCTP協(xié)議棧有開源的實(shí)現(xiàn)。

3 SCTP熱備架構(gòu)設(shè)計(jì)

3.1 SCTP在EPC中的實(shí)現(xiàn)

核心網(wǎng)EPC主要由MME(Mobility Management Entity,控制面功能)、SGW(Serving Gateway,用戶面功能)、PGW(PDN Gateway,邊界網(wǎng)關(guān))及PCRF(Policy and Charging Rules Function,策略和計(jì)費(fèi)控制)等網(wǎng)元構(gòu)成。

圖2是EPC的各模塊間接口協(xié)議,從圖中可以看出,eNodeB(基站)和EPC間建立UDP鏈接傳輸數(shù)據(jù)流;建立SCTP鏈接,傳輸信令流(S1/X2信令)。

SCTP是一個(gè)面向連接的流傳輸協(xié)議,它可以在兩個(gè)端點(diǎn)之間提供穩(wěn)定、有序的數(shù)據(jù)傳遞服務(wù)。SCTP可以看做是TCP協(xié)議的改進(jìn),它繼承了TCP較為完善的擁塞控制并改進(jìn)TCP的一些不足之處:

SCTP與TCP的最大不同之處在于它是多宿主連接,而TCP是單地址連接。

一個(gè)TCP連接只能支持一個(gè)流,一個(gè)SCTP連接可以支持多個(gè)流。在SCTP協(xié)議中,流是指從一個(gè)SCTP端點(diǎn)到另一端點(diǎn)之間建立的單向邏輯通路,通常情況下所有用戶消息在流中按序傳遞。

SCTP的上述特性使得SCTP socket有非常多的狀態(tài)信息,因此不能直接調(diào)用SCTP的系統(tǒng)函數(shù)(內(nèi)核態(tài)的SCTP socket無法獲取狀態(tài)),必須在用戶態(tài)實(shí)現(xiàn)SCTP協(xié)議棧的功能。且提供下列接口:

(1)獲取SCTP socket的狀態(tài)接口:返回指定的SCTP socket的全部狀態(tài)數(shù)據(jù)。

(2)設(shè)置SCTP socket的狀態(tài)接口:將指定的SCTP socket的狀態(tài)設(shè)置成指定的狀態(tài)。

假定有一個(gè)SCTP socket A在網(wǎng)絡(luò)上收發(fā)SCTP數(shù)據(jù),創(chuàng)建一個(gè)新的SCTP socket B,使用上述接口獲取socket A的狀態(tài),然后用socket A的狀態(tài)數(shù)據(jù)去設(shè)置socket B,那么可以完全用socket B代替socket A收發(fā)數(shù)據(jù)。

EPC的SCTP實(shí)現(xiàn)可以分為兩部分:

(1)業(yè)務(wù)層:主要負(fù)責(zé)處理和MME等上層應(yīng)用之間的消息;保存關(guān)于SCTP鏈接的相關(guān)控制信息(uid、spid、地址等信息);負(fù)責(zé)打開關(guān)閉SCTP鏈接以及處理網(wǎng)絡(luò)上收到的數(shù)據(jù),實(shí)現(xiàn)中由sctp_task線程負(fù)責(zé)。

(2)傳輸層:負(fù)責(zé)從網(wǎng)絡(luò)上收發(fā)數(shù)據(jù),這里調(diào)用用戶態(tài)SCTP協(xié)議棧的接口來實(shí)現(xiàn)建立SCTP鏈接和從SCTP鏈接上收發(fā)數(shù)據(jù),由sctp_io_task線程負(fù)責(zé)。圖3是SCTP實(shí)現(xiàn)總體架構(gòu)。

3.2 OpenSAF在SCTP熱備中的應(yīng)用

OpenSAF是一個(gè)開源的熱備份解決方案,具有心跳檢測(cè)、進(jìn)程監(jiān)控、主備機(jī)通信和故障切換等功能,使用OpenSAF可以很方便實(shí)現(xiàn)熱備份功能。

OpenSAF對(duì)上層的數(shù)據(jù)結(jié)構(gòu)透明,不了解備份的具體數(shù)據(jù)。在OpenSAF內(nèi)部,用sectionid表示備份的數(shù)據(jù),每次備份數(shù)據(jù)時(shí)必須指定對(duì)應(yīng)的sectionid,相同sectionid的備份數(shù)據(jù)會(huì)覆蓋上一次備份的數(shù)據(jù)。

應(yīng)用層需要仔細(xì)設(shè)計(jì)備份數(shù)據(jù)對(duì)應(yīng)的sectionid,確保同一份數(shù)據(jù)的不同備份使用同樣的sectionid,否則備份到Standby的數(shù)據(jù)會(huì)出現(xiàn)重復(fù)或者錯(cuò)誤。EPC熱備架構(gòu)圖如圖4所示:

使用OpenSAF后,EPC熱備可以只關(guān)注應(yīng)用層各個(gè)模塊的業(yè)務(wù):

(1)Active上各個(gè)模塊在自己的狀態(tài)數(shù)據(jù)改變時(shí),備份數(shù)據(jù)到Standby。對(duì)于備份功能,各模塊是完全獨(dú)立的,直接調(diào)用OpenSAF的接口發(fā)送到Standby。

(2)Active通過OpenSAF發(fā)送給Standby的備份消息類別有3類:新增、更新和刪除。Standby根據(jù)收到的消息的類別處理備份信息,分別是將消息內(nèi)容新增到對(duì)應(yīng)的狀態(tài)數(shù)據(jù)里、更新狀態(tài)數(shù)據(jù)和從狀態(tài)數(shù)據(jù)里刪除消息內(nèi)容。

(3)當(dāng)發(fā)生故障時(shí),OpenSAF會(huì)檢查到故障發(fā)生并重啟Active,將Standby切換為Active。此時(shí)Standby根據(jù)備份的狀態(tài)數(shù)據(jù)還原業(yè)務(wù)。如果沒有發(fā)生錯(cuò)誤,Active所有狀態(tài)的改變都正確地備份,那么此時(shí)的Active的狀態(tài)和之前發(fā)生故障的Active完全一致,業(yè)務(wù)可以無縫切換。

4 SCTP備份的具體實(shí)現(xiàn)

4.1 SCTP備份的數(shù)據(jù)結(jié)構(gòu)

EPC作為SCTP的server端,在服務(wù)啟動(dòng)后創(chuàng)建server socket監(jiān)聽來自eNodeB的鏈接。Endpoint結(jié)構(gòu)用于保存server socket業(yè)務(wù)層的狀態(tài)信息,例如監(jiān)聽地址、SCTP的控制參數(shù)等。

當(dāng)有一個(gè)eNodeB連接上后,會(huì)創(chuàng)建一個(gè)connected socket,用于EPC和此eNodeB的通信,assoc結(jié)構(gòu)用于保存connected socket業(yè)務(wù)層的狀態(tài)信息,例如鏈接狀態(tài)、本端和對(duì)端的地址、此鏈接的ID等。endprint

對(duì)于每個(gè)SCTP socket,在傳輸層都有一些狀態(tài)信息用于發(fā)送消息時(shí)組包,以及收消息時(shí)校驗(yàn),切換后必須保證這些信息一致,否則新建立的socket無法直接通信,收發(fā)SCTP數(shù)據(jù)包時(shí)會(huì)直接校驗(yàn)失敗,斷開鏈接。這些狀態(tài)信息保存于socketinfo結(jié)構(gòu)中,包括:

(1)本端IP地址;

(2)對(duì)端IP地址;

(3)本端驗(yàn)證標(biāo)簽(my vtag);

(4)對(duì)端驗(yàn)證標(biāo)簽(peer vtag);

(5)傳輸順序號(hào)(TSN);

(6)對(duì)端接收窗口(rwnd);

(7)鏈接ID(associd);

(8)輸入和輸出流的數(shù)目;

(9)下一個(gè)要發(fā)的包的序列號(hào);

(10)最后一次確認(rèn)過的包的序列號(hào);

(11)流的傳輸順序號(hào)(TSN)。

3個(gè)數(shù)據(jù)結(jié)構(gòu)的關(guān)系如圖5所示。

4.2 SCTP備份點(diǎn)

SCTP備份的原則是只備份穩(wěn)態(tài),非穩(wěn)態(tài)的均不備份。即在SCTP四次握手完成鏈接建立后開始備份,之后每次發(fā)生改變都要進(jìn)行備份,在鏈接斷開后刪除。

對(duì)于業(yè)務(wù)層的數(shù)據(jù)結(jié)構(gòu),在發(fā)生改變時(shí)進(jìn)行備份。

對(duì)于傳輸層,用socketinfo結(jié)構(gòu)來存儲(chǔ)每個(gè)SCTP socket自身的狀態(tài)信息,socketinfo在每個(gè)socket每次收發(fā)數(shù)據(jù)后都要進(jìn)行備份。否則切換后,SCTP鏈接會(huì)因?yàn)閿?shù)據(jù)包中的字段不匹配而斷開鏈接。

EPC作為SCTP的server端,EPC的SCTP模塊創(chuàng)建一個(gè)SCTP server socket,在配置的端口監(jiān)聽鏈接。由于server socket只監(jiān)聽,因此server socket不需要備份。

圖6為SCTP的信令流程,根據(jù)前文描述的備份點(diǎn):

(1)EPC打開server socket后備份endpoint結(jié)構(gòu)。

(2)當(dāng)有eNodeB連接EPC時(shí),4次握手完成,即EPC發(fā)出消息COOKIE ACK后備份對(duì)應(yīng)的assoc結(jié)構(gòu)。

(3)之后EPC收到或者發(fā)出每一條消息都需要備份socketinfo結(jié)構(gòu)。

(4)EPC在收到SHUTDOWN COMPLETE消息后備份assoc結(jié)構(gòu)和socketinfo結(jié)構(gòu),備份消息的類型是delete(刪除)。

4.3 Standby的處理

Standby收到備份的業(yè)務(wù)層數(shù)據(jù)(endpoint結(jié)構(gòu)和assoc結(jié)構(gòu))后,對(duì)這些數(shù)據(jù)進(jìn)行還原,還原后數(shù)據(jù)和Active保持一致。由于Standby沒有運(yùn)行業(yè)務(wù),也沒有建立鏈接,因此沒有SCTP socket,所有狀態(tài)信息里的表示SCTP鏈接的socket字段先置為NULL,等切換為Active的時(shí)刻再創(chuàng)建socket結(jié)構(gòu)并賦值。

Standby收到備份的socketinfo結(jié)構(gòu)后,先將其保存到一個(gè)hash里。切換為Active時(shí),會(huì)利用這些信息創(chuàng)建和恢復(fù)SCTP socket。

備份的所有數(shù)據(jù),Standby都必須保證其唯一性,因此每次收到備份數(shù)據(jù),需要用數(shù)據(jù)里的key去查找,如果有則更新,沒有才能創(chuàng)建。

當(dāng)Standby切換為Active的時(shí)候,需要恢復(fù)全部的socket,處理如下:

(1)對(duì)于server socket,用備份的endpoint結(jié)構(gòu)中的參數(shù)創(chuàng)建;server socket沒有備份內(nèi)部的狀態(tài)信息,無需還原。

(2)遍歷保存socket狀態(tài)信息的hash,對(duì)hash里每一個(gè)節(jié)點(diǎn)創(chuàng)建一個(gè)SCTP socket,然后用hash節(jié)點(diǎn)里保存的socket狀態(tài)信息還原socket的狀態(tài)。

5 實(shí)驗(yàn)結(jié)果

根據(jù)本文設(shè)計(jì)的SCTP熱備,搭建好熱備環(huán)境后,分別啟動(dòng)Active設(shè)備和Standby設(shè)備,一旦Active設(shè)備發(fā)生故障切換到Standby后,系統(tǒng)的業(yè)務(wù)完全不受影響,和外部網(wǎng)絡(luò)建立的SCTP鏈接正常通信,對(duì)端感知不到系統(tǒng)的變化。試驗(yàn)結(jié)果如圖7所示。

圖7是一次完整的熱備切換試驗(yàn)過程中在eNodeB的網(wǎng)口上的SCTP數(shù)據(jù)包,其中IP 172.16.137.86是EPC,IP 172.16.137.55是eNodeB。

從圖7可以看出,開始時(shí),EPC是機(jī)器AdlinkTe_41:e1:39 (00:30:64:41:e1:39),之后發(fā)生了切換,EPC變成了機(jī)器AdlinkTe_41:e1:45 (00:30:64:41:e1:45),EPC的IP沒變,在這個(gè)過程中,SCTP鏈接沒有斷開,心跳正常進(jìn)行,eNodeB完全感知不到EPC的變化。

6 結(jié)束語

本文設(shè)計(jì)了基于OpenSAF的EPC設(shè)備的熱備解決方案,重點(diǎn)描述了EPC中SCTP模塊的熱備解決方案。使用本文描述的SCTP熱備解決方案,可以實(shí)現(xiàn)EPC發(fā)生故障后,自動(dòng)切換到從設(shè)備,并迅速接管主設(shè)備的EPC業(yè)務(wù),保證連接的所有eNodeB的SCTP鏈接不中斷,eNodeB對(duì)EPC的切換完全無感知。

參考文獻(xiàn):

[1] 劉曉潔,黃永佳. Linux的雙機(jī)熱備系統(tǒng)的實(shí)現(xiàn)技術(shù)[J]. 計(jì)算機(jī)應(yīng)用研究, 2007,24(4): 255-257.

[2] IETF RFC 2960. Stream control transmission protocol[S]. 2000.

[3] 武建鋒.荊文芳. 雙機(jī)系統(tǒng)可靠性研究[J]. 微型電腦應(yīng)用, 2005(12): 13-14.

[4] 王延堯. 以太網(wǎng)技術(shù)與應(yīng)用[M]. 北京: 人民郵電出版社, 2007.

[5] 姜堅(jiān)華. 雙機(jī)熱備系統(tǒng)的技術(shù)研究和具體實(shí)現(xiàn)[J]. 微型電腦應(yīng)用, 2004,20(3): 7-9.

[6] 鄭浩. 基于DRBD實(shí)現(xiàn)虛擬化系統(tǒng)的雙機(jī)熱備[J]. 通化師范學(xué)院學(xué)報(bào), 2016,37(8): 69-71.

[7] ITU-T X214. Information technology-Open Systems Interconnection-Transport service definition[S]. 2000.

[8] 張鵬. 基于狀態(tài)檢測(cè)的服務(wù)器熱備方案設(shè)計(jì)與實(shí)現(xiàn)[J]. 電腦編程技巧與維護(hù), 2014(14): 76-77.

[9] 岳浩. Linux操作系統(tǒng)教程[M]. 北京: 機(jī)械工業(yè)出版社, 2005.

[10] 陳劍雄. 基于嵌入式Linux現(xiàn)場(chǎng)總線型開放式數(shù)控系統(tǒng)研究[D]. 福州: 福州大學(xué), 2006.endprint