陳遵義,曹龍漢,張治中,羅 鵬
(1.重慶郵電大學(xué)通信網(wǎng)與測試技術(shù)重點(diǎn)實驗室,重慶400065;2.重慶通信學(xué)院控制工程重點(diǎn)實驗室,重慶400035)
EV-DO(Evolution-Data Only/Optimization)是CDMA2000 1x網(wǎng)絡(luò)面向數(shù)據(jù)業(yè)務(wù)的演進(jìn)技術(shù)[1-6]。綜合業(yè)務(wù)接入網(wǎng)關(guān)(Integrated Service Access Gateway,ISAG)是移動業(yè)務(wù)網(wǎng)絡(luò)中實現(xiàn)業(yè)務(wù)統(tǒng)一接入和服務(wù)質(zhì)量監(jiān)控的功能實體,它為內(nèi)容提供商(Content Provider,CP)和服務(wù)提供商(Service Provider,SP)提供以ParlayX2.0為基礎(chǔ)的開放接口,采用Web Service技術(shù)進(jìn)行封裝。Web Service是基于可擴(kuò)展標(biāo)記語言(Extensible Markup Language,XML)和安全超文本傳輸協(xié)議(Hypertext Transfer Protocol over Secure Socket Layer,HTTPS)的一種服務(wù),其通信協(xié)議主要為簡單對象訪問協(xié)議(Simple Object Access Protocol,SOAP)。SOAP協(xié)議是基于XML的開發(fā)協(xié)議,它由HTTP、遠(yuǎn)程過程調(diào)用協(xié)議(Remote Procedure Call Protocol,RPC)和XML三部分組成,使用SOAP協(xié)議可以在不同的平臺和應(yīng)用程序間很方便地交互數(shù)據(jù)[2]。HTTP作為底層通信協(xié)議為上層提供必要的信息,RPC遠(yuǎn)程過程調(diào)用協(xié)議維護(hù)調(diào)用途徑的一致性,XML作為數(shù)據(jù)傳送的格式允許服務(wù)提供者和客戶端在互聯(lián)網(wǎng)進(jìn)行通信交互。EV-DO網(wǎng)絡(luò)中,ISAG網(wǎng)關(guān)以ParlayX為基礎(chǔ)規(guī)范定義了一些業(yè)務(wù)能力,如SMS(短消息)、MMS(彩信)、WAP Push(推入信息)、LCS(用戶位置)、ECC(增強(qiáng)呼叫控制)等。由于ParlayX規(guī)范定義的一系列業(yè)務(wù)能力都是基于SOAP協(xié)議以及XML作為數(shù)據(jù)傳送格式,本文以Short Messaging(SMS)[3]為例,介紹解碼模塊的設(shè)計與實現(xiàn)過程。
ISAG網(wǎng)關(guān)為SP/CP的SMS業(yè)務(wù)提供了3個接口,分別為 SendSmsService,SMSNotificationService和 ReceiveSmsService,每一個接口提供不同的操作。SendSmsService接口提供了SendSMS和GetSmsDeliveryS-tatus兩個操作,SendSMS是SP下發(fā)短信給終端用戶,方向為SP到ISAG,GetSmsDeliveryStatus功能為在產(chǎn)品對于SMS的狀態(tài)報告簽約方式是GET方式時,SP通過此方法得到SMS的發(fā)送狀態(tài),方向為SP到ISAG。SMSNotificationService接口提供了NotifySmsReception和NotifySms-DeliveryReceipt兩個操作,NotifySmsReception 操作的功能是ISAG上報短消息給SP,NotifySmsDeliveryReceipt提供ISAG上報短消息狀態(tài)給SP功能操作。ReceiveSmsService接口只提供了一個操作GetReceivedSms,功能為SP在SMS消息通知的類型為Get方式時通過此方法獲取SMS,方向為SP到ISAG。
ParlayX消息是基于SOAP協(xié)議,其消息格式如圖1所示。
圖1 ParlayX消息格式
ParlayX消息格式包括HTTP協(xié)議頭和SOAP信封。HTTP協(xié)議頭主要包括請求方法、請求URI、內(nèi)容類型、用戶代理、主機(jī)等重要字段信息?;贖TTP豐富的特征庫優(yōu)勢以及SOAP樣式的靈活性等特征,SOAP使用HTTP作為底層通信協(xié)議可以靈活地把RPC請求和應(yīng)答映射到HTTP的請求和應(yīng)答,從而可以使用request/response機(jī)制來傳送信息。XML版本信息主要攜帶XML版本號和XML編碼方式信息。SOAP的消息主體部分是“text/xml”形式,包含了一個XML文檔形式的SOAP封套。SOAP封套包含了消息頭(Header)、消息體(Body)和出錯消息(Fault)。消息頭通常攜帶與消息體相關(guān)的可選元素信息,比如消息路徑、數(shù)字簽名、認(rèn)證信息、消息關(guān)聯(lián)性信息、消息體的加密公匙等。消息體包含SOAP消息的實際負(fù)載,可以為任意內(nèi)容,但是ParlayX中只提供RPC風(fēng)格供發(fā)送者和接收者使用。出錯消息是SOAP結(jié)構(gòu)的可選元素,攜帶出錯信息。
解碼的作用是把信令比特流中的數(shù)據(jù)翻譯為有邏輯意義的信息,以供后期分析模塊調(diào)用。因此,解碼模塊在EV-DO網(wǎng)絡(luò)測試儀中占有舉足輕重的地位。
在CDMA-EVDO監(jiān)測系統(tǒng)中,呼叫詳細(xì)記錄合成、消息過濾、統(tǒng)計分析等功能模塊實現(xiàn)的前提條件是對線網(wǎng)采集的數(shù)據(jù)能夠準(zhǔn)確無誤地解析。PalaryX解碼模塊由基礎(chǔ)解碼和詳細(xì)解碼兩個部分組成,而基礎(chǔ)解碼中又分為簡單解碼和合成解碼。
由于ISAG和SP/CP之間PalaryX接口采集的原始數(shù)據(jù)對應(yīng)PalaryX接口協(xié)議棧,在PalaryX接口解碼中,由PalaryX協(xié)議棧解碼器負(fù)責(zé)總體的調(diào)度。PalaryX協(xié)議棧先把消息緩沖區(qū)中的原始數(shù)據(jù)交給最底層進(jìn)行EthernetII的協(xié)議解碼,再取出EthernetII的凈荷,調(diào)用IP解碼逐層取出上層,然后再取出IP數(shù)據(jù)包的凈荷,調(diào)用TCP解碼器,最后取出TCP的凈荷交給PalaryX解碼。
詳細(xì)解碼是對現(xiàn)網(wǎng)采集的數(shù)據(jù)按照消息格式逐字節(jié)、逐比特進(jìn)行解析,在界面上采用樹形結(jié)構(gòu)對用戶進(jìn)行直觀的顯示。PalaryX接口協(xié)議相對于傳統(tǒng)的一些接口協(xié)議來說有兩大不同點(diǎn)。首先,PalaryX中HTTP協(xié)議頭和SOAP信封是兩種不同的信息承載方式,HTTP協(xié)議頭在比特流數(shù)據(jù)上承載的信息是具有連續(xù)性的,而SOAP信封基于XML格式確保了信息傳遞的靈活性,卻破壞了比特流數(shù)據(jù)承載信息的連續(xù)性;其次,PalaryX中SOAP信封的Header是可選元素而Body中內(nèi)容具有不確定性?;谏鲜鲈?,傳統(tǒng)接口協(xié)議詳細(xì)解碼模塊設(shè)計方案[4-6]在PalaryX協(xié)議中并不適用,因此,在PalaryX詳細(xì)解碼模塊中采用了一種全新的解碼思路,把PalaryX解碼器拆分為HTTP解碼器和SOAP信封解碼器兩部分,此時完整的PalaryX接口數(shù)據(jù)被看成是由HTTP和SOAP兩個不同協(xié)議層傳遞的數(shù)據(jù)。PalaryX協(xié)議棧先把TCP層傳遞來的PalaryX PDU交給HTTP解碼器進(jìn)行HTTP的協(xié)議解碼,取出HTTP的凈荷即SOAP信封PDU傳遞給上層SOAP解碼器進(jìn)行解碼。這種解碼思路優(yōu)點(diǎn)是模塊簡單化、代碼冗余度小、維護(hù)性強(qiáng)。ParlayX詳細(xì)解碼流程如圖2所示。
圖2 ParlayX詳細(xì)解碼流程圖
提取SOAP信封中所攜帶的信息,就是對XML格式進(jìn)行解析。XML是使用一組標(biāo)記來描繪數(shù)據(jù)元素,XML標(biāo)記用于定義數(shù)據(jù)本身的結(jié)構(gòu)和數(shù)據(jù)類型。和一般性數(shù)據(jù)格式比較,不同點(diǎn)在于每一個元素都必須有封裝的起始標(biāo)記符和結(jié)束標(biāo)記符。正是因為XML數(shù)據(jù)采用標(biāo)記的方式去描述數(shù)據(jù)元素,所以它們需要占用更多的網(wǎng)絡(luò)帶寬和存儲空間,或著需要更多的處理器時間進(jìn)行壓縮。XML格式的數(shù)據(jù)解析速度通常要比分析高度優(yōu)化的二進(jìn)制格式的數(shù)據(jù)慢,解碼難度也要比二進(jìn)制格式大,并且可能需要更多內(nèi)存。但使用XML語言格式定義的數(shù)據(jù),有很好的可讀性和擴(kuò)展性。
由于XML的標(biāo)記一定要擁有結(jié)尾標(biāo)記,例如:〈name〉CHENZY〈/name〉,由此看出 XML 標(biāo)記是成雙成對的。如果沒有結(jié)尾標(biāo)記,那么在結(jié)束的“〉”前,需要有“/”,表示開頭和結(jié)尾是在同一標(biāo)記內(nèi),例如:〈name=”CHENZY”/〉。經(jīng)過大量方案的研究,總結(jié)出遞歸方式能夠快速、準(zhǔn)確地解析XML格式數(shù)據(jù)。
在RecursionXML解析函數(shù)中,SkipBracket函數(shù)的作用是解析數(shù)據(jù)中沒有結(jié)尾標(biāo)記,而是在結(jié)束的“〉”前,有“/”的這種元素標(biāo)記的值。在完整解析一條被封裝的元素標(biāo)記之后,此時調(diào)用遞歸函數(shù)RecursionXML,重新開始下一條元素標(biāo)記的解析,該遞歸函數(shù)的遞歸結(jié)束條件是解析的數(shù)據(jù)長度等于原始數(shù)據(jù)的長度。
簡單解碼是對原始數(shù)據(jù)有目的地、非連續(xù)地提取某些關(guān)鍵信息,簡單解碼結(jié)果用于列表顯示和消息過濾。合成解碼也是對原始數(shù)據(jù)有目的地非連續(xù)提取某些關(guān)鍵信息,不同于簡單解碼的是合成解碼所提取的某些關(guān)鍵信息是用于消息的呼叫詳細(xì)記錄合成。
簡單解碼與合成解碼的實現(xiàn)都需要調(diào)用靜態(tài)鏈接庫中基礎(chǔ)解碼的接口函數(shù),簡單解碼和合成解碼首先調(diào)用Sdecode函數(shù)獲取待解碼消息的PDU長度和頭指針,然后判斷消息是否有效,若有效,簡單解碼需要設(shè)置協(xié)議層次為PalaryX,并獲取適當(dāng)?shù)膬?nèi)存池,調(diào)用PalaryX_sdecode函數(shù)提取關(guān)鍵字段填寫至解碼結(jié)果表直到簡單解碼結(jié)束,后期用于消息顯示、消息過濾等;而合成解碼則需要獲取適當(dāng)?shù)膬?nèi)存池,調(diào)用PalaryX_sdecode函數(shù)提取用于后期合成模塊所需的關(guān)鍵參數(shù)。
經(jīng)過CDMA-EVDO信令監(jiān)測系統(tǒng)實時采集并測試數(shù)據(jù),圖3和圖4是對采集的大量數(shù)據(jù)中某一條消息的解碼結(jié)果。圖3中ParlayX消息詳細(xì)解碼結(jié)果表明一條ParlayX消息的正確解析,從中顯示出這條消息所處的協(xié)議棧結(jié)構(gòu)為Ethernet,IP,TCP,ParlayX。在 ParlayX 這一層協(xié)議解析中,能夠清楚地看到ParlayX的數(shù)據(jù)格式是HTTP+XML版本信息+SOAP信封結(jié)合組成,這與本文上述的ParlayX的數(shù)據(jù)格式是一致的。HTTP協(xié)議頭中,請求URI的字段值為/isag/North/SMS/SendSms,表明該消息是通過ISAG網(wǎng)關(guān)的北向接口傳遞的,綁定的是SMS接口的SendSms業(yè)務(wù)請求。內(nèi)容類型中顯示為text/xml,表明該P(yáng)arlayX消息中SOAP消息主體部分是“text/xml”形式。
圖3 ParlayX消息詳細(xì)解碼結(jié)果(截圖)
圖4 SOAP信封各字段解析結(jié)果(截圖)
圖5為ParlayX消息簡單解碼結(jié)果。從圖中可以清楚地看到Ns1_SPID=02100000,Ns1_timeStamp=0601180402,Ns1_spPassword=92C5183F98F810,……,這與圖4中顯示解析出的服務(wù)提供商、時間戳、服務(wù)提供商密碼是一致的,表明本文設(shè)計的詳細(xì)解碼模塊和簡單解碼模塊對原始數(shù)據(jù)解析的結(jié)果保持了一致性。準(zhǔn)確有效的簡單解碼結(jié)果為快速過濾有效消息提供了最直接、最便捷的方法。
圖5 ParlayX消息簡單解碼結(jié)果(截圖)
論文深入分析EV-DO網(wǎng)絡(luò)ISAG網(wǎng)關(guān)ParlayX協(xié)議的數(shù)據(jù)格式,提出了基于XML格式ParlayX協(xié)議解碼模塊的全新設(shè)計方案,有效解決了同一協(xié)議中采用不同承載方式數(shù)據(jù)格式的解碼難題。通過專門測試系統(tǒng)對該解碼方案進(jìn)行了驗證,成功實現(xiàn)HTTP解碼模塊和SOAP解碼模塊耦合。這對于進(jìn)一步實現(xiàn)EV-DO網(wǎng)絡(luò)增值業(yè)務(wù)質(zhì)量監(jiān)測和優(yōu)化具有非常重要的意義。
[1]管文明.CDMA20001XEV-DO網(wǎng)絡(luò)優(yōu)化思路[J].電信工程技術(shù)與標(biāo)準(zhǔn)化,2009(12):26-30.
[2]張仙偉,張璟.Web服務(wù)的核心技術(shù)之一——SOAP協(xié)議[J].電子科技,2010,23(3):93-96.
[3]3GPP TS 29.199-4 V6.8.0,Technical specification group core network and terminals;open service access(OSA);parlay x web services;part 4:short messaging(release 6)[S].2007.
[4]李丹風(fēng),張治中.LTE網(wǎng)絡(luò)監(jiān)測系統(tǒng)中DHCP協(xié)議的解碼方案研究[J].電視技術(shù),2012,36(9):69-73.
[5]范廣,張治中,楊蘊(yùn)宇,NGN集中監(jiān)測系統(tǒng)SIP解碼模塊的設(shè)計與實現(xiàn)[J].集成電路設(shè)計與開發(fā),2009(9):899-902.
[6]龔玨,雒江濤.TD-SCDMA測試儀中Iub接口實現(xiàn)RLC層信令解碼[J].重慶郵電大學(xué)學(xué)報:自然科學(xué)版,2007(2):28-34.