程 澄,劉 云,賈 凡
(北京交通大學(xué)通信與信息系統(tǒng)北京市重點(diǎn)實(shí)驗(yàn)室,北京100044)
隨著高速鐵路在我國(guó)的飛速發(fā)展,對(duì)鐵路調(diào)度系統(tǒng)提出了更高的要求,基于GSM-R的無(wú)線通信及列車定位技術(shù)的列車運(yùn)行控制系統(tǒng),實(shí)現(xiàn)了列車控制信息的無(wú)線傳輸與真正的“數(shù)字化鐵路”。其中無(wú)線通信質(zhì)量受到了極大關(guān)注。在無(wú)線通信傳輸過(guò)程中起信號(hào)中繼作用的直放站設(shè)備運(yùn)行的正常與否直接影響著整個(gè)無(wú)線通信系統(tǒng)的運(yùn)行狀態(tài)與服務(wù)質(zhì)量。由于直放站設(shè)備分散在移動(dòng)網(wǎng)絡(luò)覆蓋的各個(gè)區(qū)域,而且有些站點(diǎn)地理環(huán)境復(fù)雜不能時(shí)常人工巡檢,那么就需要直放站監(jiān)控系統(tǒng)對(duì)其進(jìn)行有效監(jiān)控管理以及日常維護(hù)。而這種監(jiān)控又是建立在監(jiān)控系統(tǒng)與直放站之間實(shí)時(shí)通信基礎(chǔ)之上的??紤]到直放站的設(shè)備類型以及其所處的網(wǎng)絡(luò)環(huán)境和通信開(kāi)銷,最經(jīng)濟(jì)并且最便利的通信方式就是采用短消息(Short Message)的形式。為此設(shè)計(jì)了一套建立在直放站網(wǎng)關(guān)系統(tǒng)Web服務(wù)器與短消息中心(SMC(Short Message Center))之間的短信網(wǎng)關(guān)平臺(tái),通過(guò)中國(guó)移動(dòng)點(diǎn)對(duì)點(diǎn)協(xié)議(CMPP(China Mobile Peer to Peer))與直放站通信。
系統(tǒng)功能模塊見(jiàn)圖1,其中的設(shè)備管理、告警管理、輪詢管理這些模塊需要與直放站進(jìn)行短消息通信,并對(duì)發(fā)送接收到的數(shù)據(jù)進(jìn)行處理。告警管理模塊負(fù)責(zé)接收直放站發(fā)來(lái)的告警信息,對(duì)告警信息進(jìn)行記錄分析并發(fā)送確認(rèn)信息,將重要頻繁的告警信息通過(guò)短信網(wǎng)關(guān)轉(zhuǎn)發(fā)給相關(guān)人員。設(shè)備管理模塊和輪詢管理模塊提供對(duì)于直放站站點(diǎn)單個(gè)或者批量的同步處理,可對(duì)站點(diǎn)單個(gè)或全部參數(shù)進(jìn)行查詢和修改。整個(gè)與直放站的通信也是通過(guò)短信息實(shí)現(xiàn)。
圖1 直放站網(wǎng)關(guān)系統(tǒng)功能模塊圖
短信平臺(tái)主要提供短信收發(fā),將接收到的短信初解碼,并將初解碼后的信息通過(guò)Socket發(fā)送給Web端,進(jìn)行解碼分析。另將Web端發(fā)來(lái)的準(zhǔn)備發(fā)送的信息,按照CMPP協(xié)議打包發(fā)出。
作為ISMG(Internet Short Message Gateway)的短信服務(wù)器與短信中心之間按照中國(guó)移動(dòng)通信信息資源站實(shí)體與互聯(lián)網(wǎng)短消息網(wǎng)關(guān)接口協(xié)議進(jìn)行通信。短信網(wǎng)關(guān)在系統(tǒng)中的位置見(jiàn)圖2。
通信中采取CMPP中規(guī)定的長(zhǎng)連接模式,就是短信平臺(tái)建立與短信中心(SMC)的連接,不斷將數(shù)據(jù)包(一個(gè)個(gè)CMPP消息)發(fā)送到SMC,此處發(fā)送不必等待某條消息的回應(yīng)消息返回,就接著發(fā)送下一個(gè)消息。發(fā)送同接收消息不是一定要同步的,實(shí)際采用異步(同時(shí)也時(shí)雙工)模式。
圖2 短信網(wǎng)關(guān)在系統(tǒng)中的位置
當(dāng)收到短信中心發(fā)來(lái)的短信即CMPP包的時(shí)候開(kāi)啟短信處理程序,其流程見(jiàn)圖3。
圖3 短信接收處理程序流程圖
首先啟動(dòng)短信程序,開(kāi)始對(duì)于短信中心發(fā)來(lái)的消息進(jìn)行監(jiān)聽(tīng)捕獲,一旦收到短信開(kāi)啟新線程處理信息。再將準(zhǔn)備好的Socket消息發(fā)給Web的時(shí)候,為了避免大通信量導(dǎo)致的擁塞和Web端處理能力的溢出,在此以隊(duì)列的形式進(jìn)行發(fā)送。
當(dāng)Web端有發(fā)送消息的請(qǐng)求時(shí),Web端根據(jù)業(yè)務(wù)需要形成需要發(fā)送的短信形成固定的格式,提交給短信網(wǎng)關(guān)。
在通信服務(wù)器端,運(yùn)行著SocketServer程序,用來(lái)監(jiān)聽(tīng)來(lái)自Web端的發(fā)送請(qǐng)求。當(dāng)收到Web端發(fā)來(lái)的發(fā)送請(qǐng)求的時(shí)候,首先分析信息格式,是否合法,包括信息編碼格式,目標(biāo)地址格式等等。然后對(duì)信息提取,取出目標(biāo)地址和短信內(nèi)容,按照CMPP協(xié)議進(jìn)行封裝后發(fā)出。
根據(jù)直放站監(jiān)控系統(tǒng)的業(yè)務(wù)要求,在執(zhí)行全部站點(diǎn)輪詢業(yè)務(wù)時(shí),需要短時(shí)間內(nèi)給系統(tǒng)中的幾千個(gè)直放站發(fā)送輪詢請(qǐng)求,由于設(shè)備數(shù)量大,各自所處的網(wǎng)絡(luò)環(huán)境復(fù)雜,短信回復(fù)的時(shí)間有很大的隨機(jī)性,加之系統(tǒng)同時(shí)還要處理日常的告警信息,巡檢信息和開(kāi)站上報(bào)信息,就可能在很短時(shí)間內(nèi)并發(fā)幾十條甚至上百條短信回復(fù),這對(duì)于系統(tǒng)造成了很大的處理壓力,極端情況下可能導(dǎo)致系統(tǒng)癱瘓,所以采用了多線程處理技術(shù),花在為每一個(gè)短信請(qǐng)求創(chuàng)建一個(gè)線程并在任務(wù)完成后銷毀的時(shí)間和消耗的系統(tǒng)資源要比處理短信請(qǐng)求的時(shí)間和資源更多。也會(huì)造成CPU和內(nèi)存資源的大量耗費(fèi),降低了系統(tǒng)的性能。因此在此采用線程池技術(shù)應(yīng)對(duì)這個(gè)問(wèn)題。
圖4 短信發(fā)送處理流程圖
在短信網(wǎng)關(guān)程序啟動(dòng)時(shí)便啟動(dòng)100個(gè)短信接收和解碼處理的線程,并讓這些線程處于睡眠狀態(tài),當(dāng)直放站發(fā)來(lái)一個(gè)回復(fù)短信時(shí),就會(huì)喚醒線程池中的某一個(gè)睡眠線程,讓它來(lái)處理收到的短信請(qǐng)求,處理完該請(qǐng)求后,線程又處于睡眠狀態(tài),等待下次請(qǐng)求時(shí)被喚醒。短信發(fā)送處理流程見(jiàn)圖4。
本系統(tǒng)用Java語(yǔ)言開(kāi)發(fā),Java語(yǔ)言本身內(nèi)置了線程對(duì)象,當(dāng)創(chuàng)建一個(gè)線程,就要從Thread類中繼承,并實(shí)現(xiàn)其run()接口。這樣就可以用wait()和notify()方法休眠或喚醒一個(gè)線程。
三者之間的數(shù)據(jù)交換采取異步全雙工模式進(jìn)行,用以應(yīng)對(duì)隨時(shí)發(fā)生的通信請(qǐng)求。采取了Socket長(zhǎng)連接來(lái)進(jìn)行消息發(fā)送,數(shù)據(jù)收發(fā)流程如圖5。
圖5 短信網(wǎng)關(guān)數(shù)據(jù)收發(fā)流程圖
短信網(wǎng)關(guān)平臺(tái)是直放站監(jiān)控系統(tǒng)中底層通信的承載體,是系統(tǒng)中一切業(yè)務(wù)正常運(yùn)行的基礎(chǔ),這種基礎(chǔ)性的地位決定了短信網(wǎng)關(guān)平臺(tái)必須具有高性能、高穩(wěn)定性、高可靠性的特點(diǎn)。本程序現(xiàn)只適應(yīng)中國(guó)移動(dòng)CMPP協(xié)議,后期可以繼續(xù)對(duì)于本系統(tǒng)加以完善,改進(jìn)其多協(xié)議適應(yīng)性加入SMPP,SGIP,SMGP等短信網(wǎng)關(guān)協(xié)議的支持,使得系統(tǒng)能在各種協(xié)議下正常工作。
經(jīng)實(shí)驗(yàn)室測(cè)試、生產(chǎn)環(huán)境下測(cè)試,本系統(tǒng)運(yùn)行正常,各項(xiàng)指標(biāo)達(dá)到中國(guó)移動(dòng)直放站監(jiān)控系統(tǒng)性能規(guī)范的要求。
[1] Allen Holub.Taming Java Threads[M] . Apress. June 1, 2000.
[2] QB-GF-028-2003,中國(guó)移動(dòng)通信互聯(lián)網(wǎng)短信網(wǎng)關(guān)接口協(xié)議[S] . 北京:中國(guó)移動(dòng)通信集團(tuán)有限公司,2005,7.
[3] QB-W-003-2005,中國(guó)移動(dòng)直放站監(jiān)控系統(tǒng)數(shù)據(jù)需求規(guī)范[S] . 北京:中國(guó)移動(dòng)通信集團(tuán)有限公司,2005,8.
[4] 周恒民. Java TCP/IP Socket 編程[M] . 北京:機(jī)械工業(yè)出版社,2009,1.
[5] 侯建剛. 基于CMPP協(xié)議短信運(yùn)營(yíng)管理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D] . 濟(jì)南:山東大學(xué),2007.