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