<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線(xiàn)通信 > 設(shè)計(jì)應(yīng)用 > TD-SCDMA網(wǎng)絡(luò)測(cè)試儀中SCCP協(xié)議解碼(下)

          TD-SCDMA網(wǎng)絡(luò)測(cè)試儀中SCCP協(xié)議解碼(下)

          ——
          作者:魏輝 張治中 時(shí)間:2007-05-15 來(lái)源:重慶郵電學(xué)院學(xué)報(bào) 收藏

          (接上)

          3、實(shí)際測(cè)試中的SCCP消息組裝問(wèn)題

          中的SCCP消息長(zhǎng)度一般在100個(gè)字節(jié)內(nèi),SCCP消息需要封裝上層RANAP或者RNSAP的數(shù)據(jù),而上層數(shù)據(jù)通常不會(huì)很長(zhǎng),一條SCCP消息完全可以容納,但在少數(shù)情況下,上層數(shù)據(jù)需要分段由幾條SCCP消息中傳輸,而多條SCCP消息再分散在底層的ATM信元中傳送。這個(gè)現(xiàn)象從邏輯上是容易理解的,但從數(shù)據(jù)分析的角度,尤其是從數(shù)據(jù)接收端的角度來(lái)看,處理就要復(fù)雜很多,因?yàn)楸M管數(shù)據(jù)分段的情況相對(duì)較少,但是信令分析注重消息解析的準(zhǔn)確性和信令流程的連貫性,為了達(dá)到這2個(gè)要求,就要保證接收端能夠準(zhǔn)確完成數(shù)據(jù)的組裝,在此基礎(chǔ)上,對(duì)SCCP層的分析以及更高層如RANAP協(xié)議的分析才能夠保證。

          的消息中,絕大部分都包含data或longdata參數(shù),這2個(gè)參數(shù)表示SCCP的用戶(hù)數(shù)據(jù)(service data unit,SDU),也叫做SCCP上層協(xié)議的協(xié)議數(shù)據(jù)單元(protocol olata unit,PDU)。SCCP的大多數(shù)消息都包含數(shù)據(jù)參數(shù),從而加大了獲取PDU的難度,另外,消息類(lèi)型的不同導(dǎo)致獲取的方法也不同,包含Data參數(shù)的消息分類(lèi)如表3所示。


          表3 包含Data參數(shù)的消息分類(lèi)表

          包含Data參數(shù)的消息分類(lèi)表

          當(dāng)調(diào)用模塊的獲取上層PDU函數(shù)時(shí),首先判斷消息類(lèi)型,如果不在

          以上消息類(lèi)型中,則不存在用戶(hù)數(shù)據(jù),那么僅僅完成即可;如果是以上消息類(lèi)型中的一種,那么就需要調(diào)用相應(yīng)的函數(shù)進(jìn)行獲取SDU的操作。由于包含用戶(hù)數(shù)據(jù)的消息比較多,為了處理方便和邏輯清晰,在模塊實(shí)現(xiàn)時(shí)為表3中的消息定義了各自的函數(shù)。

          表3中有兩列內(nèi)容分別是輔助參數(shù)和它們的存在性。輔助參數(shù)是指在相應(yīng)消息中對(duì)于獲取SDU有幫助的參數(shù),而存在性就表示該輔助參數(shù)在相應(yīng)消息中的存在可能,F(xiàn)和V表示一定存在,0表示可能存在。輔助參數(shù)的作用主要是用來(lái)告知消息中包含的Data是完整的還是需要分段傳送的,如果完整,那么取得數(shù)據(jù)后函數(shù)就把PDU數(shù)據(jù)返回;否則要對(duì)來(lái)自多條SCCP消息的多個(gè)Data進(jìn)行組裝。在表3中用A,B,C,D對(duì)消息處理進(jìn)行了分類(lèi),每個(gè)類(lèi)型代表一種處理的復(fù)雜程度如表4所示。


          表4 獲取SDU分析表a

          獲取SDU分析表a

          根據(jù)獲取Data數(shù)據(jù)的復(fù)雜程度,把相應(yīng)函數(shù)分為4類(lèi)。每類(lèi)函數(shù)根據(jù)處理的復(fù)雜程度,都需要輔助函數(shù)的支持,例如,類(lèi)型2中對(duì)DT1和DT2的處理,這2條消息中都有參數(shù)包含more data indicator字段,其作用是指示本條數(shù)據(jù)消息后面是否有屬于同一個(gè)SDU的數(shù)據(jù),因此該參數(shù)是DT1和DT2消息獲取數(shù)據(jù)的重要操作依據(jù)。對(duì)于其他類(lèi)型的函數(shù),輔助參數(shù)起著同樣的作用,另外個(gè)別輔助參數(shù)本身是可選的,如類(lèi)型4函數(shù)中的輔助參數(shù)segments,因此在類(lèi)型4函數(shù)處理時(shí)需要判斷的條件就很多,首先需要知道segments參數(shù)是否存在,存在的話(huà)才有組裝的可能,不存在的話(huà)說(shuō)明數(shù)據(jù)不需要組裝。4類(lèi)函數(shù)對(duì)參數(shù)的需要性如表5所示。

          表5 獲取SDU分析表b

          獲取SDU分析表b

          在實(shí)際的SCCP消息中,大多都是用DT1消息來(lái)承載上層數(shù)據(jù),獲取DT1消息的函數(shù)屬于表5中的第2類(lèi),下面就以該消息為例來(lái)說(shuō)明獲取上層PDU的方法,DT1的格式[5]如表6所示。

          表6 DT1消息結(jié)構(gòu)

          DT1消息結(jié)構(gòu)

          第1個(gè)參數(shù)(Message type)表示消息類(lèi)型,根據(jù)消息類(lèi)型表格可知,DT1消息類(lèi)型為OX0000 0110即6;第2個(gè)參數(shù)(Destination local reference)是目的地本地參考,表示目的地地址信息;第3個(gè)參數(shù)(Segmenting/reassembling)叫做分割/組裝,長(zhǎng)度是1個(gè)字節(jié),格式如圖5所示。

          Segmenting/reassembling參數(shù)結(jié)構(gòu)

          圖5 Segmenting/reassembling參數(shù)結(jié)構(gòu)

          該參數(shù)長(zhǎng)度為一個(gè)字節(jié),最低位是信息字段M,為0表示消息后面沒(méi)有分段的數(shù)據(jù);為1則表示有。圖6表示在模擬真實(shí)的環(huán)境,以DT1數(shù)據(jù)的傳輸為例,說(shuō)明所有可能的情況。

          DT1數(shù)據(jù)在網(wǎng)絡(luò)中傳送的可能情況示意圖

          圖6 DT1數(shù)據(jù)在中傳送的可能情況示意圖

          DT1消息在網(wǎng)絡(luò)中的傳送共4種可能,每種類(lèi)型中右邊的表示本條DT1消息,圖6左邊的表示上條DT1消息,兩消息中都有M指示,下面分別說(shuō)明。

          類(lèi)型1:本條DT1數(shù)據(jù)和前面的DT1是連續(xù)的,另外本條DT1數(shù)據(jù)后面還有連續(xù)的數(shù)據(jù),在此情況下,應(yīng)該把本條DT1數(shù)據(jù)串接在前面的D

          T1后面,并且繼續(xù)等待后面的包含同類(lèi)內(nèi)容的數(shù)據(jù)。

          類(lèi)型2:本條DT1數(shù)據(jù)和前面的DT1是連續(xù)的,另外本條DT1數(shù)據(jù)后面沒(méi)有連續(xù)的數(shù)據(jù),在此情況下,應(yīng)該把本條DT1數(shù)據(jù)串接在前面的DT1后面,構(gòu)成一個(gè)完整的上層數(shù)據(jù)PDU交給上層處理。

          類(lèi)型3:本條DT1數(shù)據(jù)和前面的DT1不是連續(xù)的,另外本條DT1數(shù)據(jù)后面有連續(xù)的數(shù)據(jù),在此情況下,應(yīng)該把本條DT1數(shù)據(jù)保存起來(lái)等待后面同類(lèi)數(shù)據(jù)進(jìn)行組裝。

          類(lèi)型4:本條DT1數(shù)據(jù)和前面的DT1不是連續(xù)的,另外本條DT1數(shù)據(jù)后面沒(méi)有連續(xù)的數(shù)據(jù),在此情況下,應(yīng)該用本條DT1數(shù)據(jù)作為上層PDU。

          下面用流程圖的形式來(lái)說(shuō)明獲取DT1消息上層數(shù)據(jù)的程序處理過(guò)程,如圖7所示。

          獲取DT1消息上層PDU函數(shù)流程圖

          圖7 獲取DT1消息上層PDU函數(shù)流程圖

          在真實(shí)的網(wǎng)絡(luò)環(huán)境中,在使用CR消息建立完SCCP連接后,SCCP協(xié)議出現(xiàn)最多的就是DT1,SCCP層的主要作用是封裝層的信令數(shù)據(jù),而上層數(shù)據(jù)才是對(duì)分析網(wǎng)絡(luò)以及應(yīng)用最有價(jià)值的信息?;谶@樣的現(xiàn)實(shí),分析DT1消息有重要意義,盡管在SCCP協(xié)議中還有其他消息也包含數(shù)據(jù)信息,但在實(shí)際信令中出現(xiàn)的情況并不多。

          5、結(jié)束語(yǔ)

          通過(guò)對(duì)SCCP協(xié)議和獲取上層數(shù)據(jù)的分析,一方面為模塊實(shí)現(xiàn)提供了設(shè)計(jì)方案,另一方面可以把SCCP協(xié)議的分析方法推廣到標(biāo)準(zhǔn)協(xié)議棧中其他傳輸層的協(xié)議分析中。在網(wǎng)絡(luò)分析儀的軟件模塊中,采用面向?qū)ο缶幊谭椒╗7]對(duì)SCCP部分進(jìn)行了實(shí)現(xiàn),該模塊在儀表測(cè)試的過(guò)程中表現(xiàn)穩(wěn)定,通過(guò)實(shí)踐論證了設(shè)計(jì)方案的正確性。

          參考文獻(xiàn):

          [1] KAMMERLANDER K.Benefits and implementation of [EB/OL].(2000-04-12)[2006-11-28].http://IEEExplore.ieee.org/ie15/7138/1922l/00890848.pdf?isnurnber=&arnumber=890848.

          [2] 3GPP TS25.401V3.10.0.UTRAN overall description [EB/OL].(2002-06-06)[2006-11-23].http://www.3gpp.org/ftp/Specs/archlye/25_series/25.401.

          [3] 李小文.李貴勇.TD-SCDMA第三代移動(dòng)通信系統(tǒng)、信令及實(shí)現(xiàn)[M].北京.人民郵電出版社,2003.

          [4] 羅進(jìn)文.信令網(wǎng)技術(shù)教程[M].北京.人民郵電出版社,2003.9.

          [5] ITU-T Q.713.Signalling connection control part for mats and Codes[EB/OL].(2002-01-01)[2006-11-23].http://electronics.ihs.com/document/abstract/NROVWAAAAAAAAAA.

          [6] MIRSA R,BAIER P W.A test system for evaluation of the WCDMA technology[J].IEEE Trans.Commum,2004,(8):16-20.

          [7] 錢(qián)能.c++程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社.2001.6.



          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();