1 設(shè)計(jì)背景
在我國(guó)開(kāi)始實(shí)施的移動(dòng)網(wǎng)間號(hào)碼攜帶(NP:Number Portability)現(xiàn)網(wǎng)試驗(yàn),采用了一種集中數(shù)據(jù)庫(kù)的方式,即在號(hào)碼攜帶業(yè)務(wù)網(wǎng)絡(luò)中設(shè)置一個(gè)集中的數(shù)據(jù)庫(kù),也稱為集中業(yè)務(wù)管理系統(tǒng)(CSMS:Central Service Management System),運(yùn)營(yíng)商的號(hào)碼攜帶業(yè)務(wù)節(jié)點(diǎn)通過(guò)此集中數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行通信,實(shí)現(xiàn)號(hào)碼攜帶的業(yè)務(wù)協(xié)商及NP數(shù)據(jù)下發(fā)。此體系結(jié)構(gòu)如圖1所示。
圖1 NP業(yè)務(wù)體系架構(gòu)
本地業(yè)務(wù)管理系統(tǒng)(LSMS)保存本地的號(hào)碼攜帶數(shù)據(jù),并負(fù)責(zé)管理運(yùn)營(yíng)商內(nèi)部的網(wǎng)元設(shè)備;業(yè)務(wù)受理系統(tǒng)(SOA)主要負(fù)責(zé)受理和處理用戶提出的號(hào)碼攜帶申請(qǐng);而CSMS處理所有SOA之問(wèn)的交互信息,并負(fù)責(zé)向LSMS同步號(hào)碼攜帶數(shù)據(jù)。
在此體系架構(gòu)中,需要在CSMS與SOA/LSMS之間定義一種協(xié)議,以實(shí)現(xiàn)各方之間的通信,CSMS接口協(xié)議應(yīng)運(yùn)而生。
2 設(shè)計(jì)原則
在開(kāi)始進(jìn)行CSMS接口協(xié)議設(shè)計(jì)之前,首先擬定了如下的幾條設(shè)計(jì)原則,協(xié)議的具體內(nèi)容也都是遵循這幾條原則進(jìn)行設(shè)計(jì)的。
(1)滿足各種NP業(yè)務(wù)流程的需求
這一條是最基本的設(shè)計(jì)原則。由于此接口協(xié)議是直接服務(wù)于NP業(yè)務(wù)流程,因此通過(guò)協(xié)議定義的各種流程,都與實(shí)際的NP業(yè)務(wù)需求相對(duì)應(yīng)。例如NP業(yè)務(wù)開(kāi)展的第一步就是受理NP申請(qǐng),在協(xié)議中就定義了與之對(duì)應(yīng)的規(guī)范化的流程。
(2)協(xié)議有較高的可靠性
提出這點(diǎn)原則,是與協(xié)議的應(yīng)用環(huán)境有關(guān)的。一方面,運(yùn)營(yíng)商側(cè)的NP業(yè)務(wù)節(jié)點(diǎn)以及CSMS都是IT設(shè)備,基于TCP/IP的網(wǎng)絡(luò)環(huán)境進(jìn)行信息傳輸,網(wǎng)絡(luò)可靠性并不高;另一方面此協(xié)議對(duì)于NP業(yè)務(wù)體系又至關(guān)重要,一旦出現(xiàn)問(wèn)題會(huì)影響NP業(yè)務(wù)的正常開(kāi)展,這就需要在協(xié)議可靠性方面做一些特殊的考慮。
(3)易于開(kāi)發(fā)和維護(hù)
一個(gè)易于開(kāi)發(fā)和維護(hù)的協(xié)議將擁有更強(qiáng)的生命力。CSMS接口協(xié)議雖然是一個(gè)自定義的協(xié)議,但是自定義的部分主要是在應(yīng)用層,在基礎(chǔ)承載協(xié)議還會(huì)選擇現(xiàn)成的協(xié)議。選擇一種通用性強(qiáng)、規(guī)范化程度高、使用范圍廣的承載協(xié)議,無(wú)疑能夠降低協(xié)議開(kāi)發(fā)和實(shí)現(xiàn)的難度,也更利于今后的擴(kuò)展和升級(jí)。
下面將會(huì)逐一介紹上述設(shè)計(jì)原則是如何體現(xiàn)在CSMS接口協(xié)議中的。
3 業(yè)務(wù)流程設(shè)計(jì)
為了實(shí)現(xiàn)完整的NP業(yè)務(wù),在接口協(xié)議中共定義“NP業(yè)務(wù)申請(qǐng)流程”、“NP業(yè)務(wù)生效流程”、“NP業(yè)務(wù)取消流程”、“NP業(yè)務(wù)注銷流程”、“NP業(yè)務(wù)審計(jì)流程”、“欠費(fèi)處理流程”等6大類的業(yè)務(wù)流程。而在每一個(gè)大類中,基于正常的或者可能出現(xiàn)異常的情況,還定義出了若干的子流程。例如在NP業(yè)務(wù)申請(qǐng)流程中,就包括“成功的申請(qǐng)流程”、“CSMS拒絕流程”、“攜出方SOA拒絕流程”等。
在CSMS接口協(xié)議業(yè)務(wù)流程中,兩個(gè)主要元素就是“消息”和“定時(shí)器”。下面就以成功的NP業(yè)務(wù)申請(qǐng)流程為例說(shuō)明CSMS接口協(xié)議中的流程設(shè)計(jì)思路,以及消息和定時(shí)器的定義方法(圖2)。
圖2成功的NP業(yè)務(wù)申請(qǐng)流程
從圖2可以看到,攜入方SOA首先需要將用戶的申請(qǐng)信息發(fā)送給CSMS,CSMS響應(yīng)后轉(zhuǎn)發(fā)給攜出方SOA,SOA驗(yàn)證通過(guò)后,將響應(yīng)結(jié)果返回CSMS,并由CSMS告知攜入SOA申請(qǐng)成功。
在流程圖中,每一條消息(申請(qǐng)請(qǐng)求、申請(qǐng)響應(yīng)、申請(qǐng)結(jié)果告知)都對(duì)應(yīng)一種消息結(jié)構(gòu),用于傳遞相應(yīng)的信息。例如,在申請(qǐng)響應(yīng)消息中,就包含了“消息ID”、“請(qǐng)求消息ID”、“消息命令碼”、“業(yè)務(wù)類型”、“NP號(hào)碼”、“NP流程ID”、“返回代碼”、“拒絕消息”等參數(shù)字段。每個(gè)參數(shù)的用法、長(zhǎng)度、數(shù)據(jù)類型在協(xié)議中也都進(jìn)行了嚴(yán)格的定義。比如“消息ID”是由發(fā)送方維護(hù)的流水號(hào),用于唯一標(biāo)識(shí)的消息,采用l6位的定長(zhǎng)字符串的方式來(lái)存儲(chǔ)和傳遞。在CSMS接口協(xié)議中,共定義了34種消息,應(yīng)用于各種流程之中。
除了消息,另一種對(duì)流程影響非常大的元素就是定時(shí)器??梢哉f(shuō),定時(shí)器嚴(yán)格的限定了NP業(yè)務(wù)節(jié)點(diǎn)的行為方式。在圖2中,Tl-1定時(shí)器是申請(qǐng)請(qǐng)求與申請(qǐng)響應(yīng)之間最大間隔的定時(shí)器,此定時(shí)器要求CSMS在收到申請(qǐng)請(qǐng)求消息后,必須在T1-1超時(shí)之前發(fā)送申請(qǐng)響應(yīng)消息;而攜入方一旦在T1-1的時(shí)間內(nèi)沒(méi)有正確地收到申請(qǐng)響應(yīng)消息,將會(huì)進(jìn)行重發(fā)和告警。在CSMS接口協(xié)議中,共定義了20個(gè)定時(shí)器,分布于各個(gè)流程之中。
受篇幅的限制,對(duì)于協(xié)議中更多的流程不再介紹,感興趣的讀者可查閱網(wǎng)間移動(dòng)號(hào)碼攜帶CSMS接口協(xié)議規(guī)范。
4 協(xié)議高可靠性的設(shè)計(jì)
為了提高CSMS接口協(xié)議的可靠性,在設(shè)計(jì)過(guò)程中引入了以下三種機(jī)制:
·ACK快速反饋機(jī)制;
·完善的錯(cuò)誤定義和后處理機(jī)制;
·心跳檢測(cè)機(jī)制。
首先,在CSMS接口協(xié)議中,定義了一種特殊的消息,稱為ACK消息。在業(yè)務(wù)節(jié)點(diǎn)接收到任何一條NP消息后,將首先返回一條ACK消息。ACK消息不攜帶任何應(yīng)用層面上的信息,僅僅是告知發(fā)送方我已經(jīng)接收到了你方發(fā)來(lái)的消息。有了ACK消息,發(fā)送方就能立刻確認(rèn)對(duì)方是否已經(jīng)正確地接收到了消息,而不是在等待對(duì)方超時(shí)仍然沒(méi)有返回響應(yīng)消息時(shí)才發(fā)現(xiàn)上一條消息對(duì)方并沒(méi)有正確接收到。通過(guò)使用ACK機(jī)制,無(wú)疑是提高了協(xié)議的可靠性。
其次,在CSMS接口協(xié)議中,定義了50多種錯(cuò)誤消息代碼,并且根據(jù)實(shí)際應(yīng)用情況,還有可能繼續(xù)擴(kuò)充。這些錯(cuò)誤消息代碼的定義,最大程度上細(xì)化了NP業(yè)務(wù)中可能出現(xiàn)的異常情況,而細(xì)化的結(jié)果就是針對(duì)每一種錯(cuò)誤情況都定義了完備的后處理機(jī)制。例如當(dāng)消息發(fā)送方收到的ACK消息中攜帶“500”(接收方服務(wù)器異常)錯(cuò)誤代碼,則發(fā)送方應(yīng)在五分鐘后使用新的MessageID號(hào)重發(fā)此消息。這些錯(cuò)誤代碼和后處理流程的定義,保證了協(xié)議具有較強(qiáng)的容錯(cuò)性和自愈能力。
最后,CSMS接口協(xié)議中還定義了心跳檢測(cè)機(jī)制,CSMS會(huì)定期通過(guò)網(wǎng)絡(luò)層的消息(例如Ping消息)檢測(cè)對(duì)端的健康狀態(tài)。一旦發(fā)現(xiàn)與對(duì)端之間的網(wǎng)絡(luò)出現(xiàn)問(wèn)題,則暫停發(fā)送消息,避免在網(wǎng)絡(luò)故障時(shí)出現(xiàn)大量重發(fā)消息的堆積。
5 底層承載協(xié)議的選擇
CSMS接口協(xié)議是一種自定義的協(xié)議,但是自定義的部分主要是為了實(shí)現(xiàn)NP特有的業(yè)務(wù)流程,即自定義了各種消息和定時(shí)器。而從協(xié)議的網(wǎng)絡(luò)模型上看,接口協(xié)議然是構(gòu)建于一些底層的承載協(xié)議之上。CSMS接口協(xié)議的層次結(jié)構(gòu)如圖3所示。
圖3 CSMS接口協(xié)議層次結(jié)構(gòu)
采用以上這種協(xié)議架構(gòu),是基于CSMS接口協(xié)議的網(wǎng)絡(luò)環(huán)境決定的。CSMS接口協(xié)議需要應(yīng)用于TCP/IP的網(wǎng)絡(luò)環(huán)境之下,在此網(wǎng)絡(luò)環(huán)境下,HTTP協(xié)議具有最強(qiáng)的適應(yīng)性,可以很好地解決私網(wǎng)穿越、防火墻隔離等問(wèn)題。
而使用SOAP協(xié)議,是因?yàn)镾OAP協(xié)議一方面具備自定義應(yīng)用語(yǔ)義的能力,另一方面標(biāo)準(zhǔn)化程度相對(duì)較高,有完善的協(xié)議規(guī)范,并且已經(jīng)在各種領(lǐng)域(包括電信領(lǐng)域)得到了較為廣泛的應(yīng)用。
誠(chéng)然,TCP/IP網(wǎng)絡(luò)和HTTP協(xié)議在先天上都具有可靠性不夠強(qiáng)的缺陷,但是作為主流的應(yīng)用協(xié)議,基于它們進(jìn)行協(xié)議開(kāi)發(fā),能夠大大降低開(kāi)發(fā)周期和開(kāi)發(fā)難度,自然也就提高了協(xié)議的易用性和可維護(hù)性。而對(duì)于可靠性不高的問(wèn)題,也可以通過(guò)各種提高可靠性的機(jī)制加以彌補(bǔ)。總體而言,這種協(xié)議架構(gòu)還是具有很大的優(yōu)勢(shì)的。
6 結(jié)語(yǔ)
我國(guó)的移動(dòng)網(wǎng)間號(hào)碼攜帶現(xiàn)網(wǎng)試驗(yàn)工作很快就要開(kāi)展了,CSMS接口協(xié)議也已經(jīng)在CSMS設(shè)備和運(yùn)營(yíng)商的SOA/LSMS設(shè)備上獲得了實(shí)現(xiàn)。從內(nèi)部測(cè)試和試運(yùn)行的情況來(lái)看,這套協(xié)議基本達(dá)到了當(dāng)初的設(shè)計(jì)目標(biāo),能夠很好地支撐各種NP業(yè)務(wù)流程。
隨著號(hào)碼攜帶業(yè)務(wù)的不斷深入,這套協(xié)議將接受進(jìn)一步的考驗(yàn),并且定將繼續(xù)發(fā)展和完善下去,以服務(wù)于全國(guó)網(wǎng)間移動(dòng)號(hào)碼攜帶業(yè)務(wù)的開(kāi)展。