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

          新聞中心

          EEPW首頁 > 測試測量 > 通信網(wǎng)絡測試儀表中CAP軟件模塊的研究

          通信網(wǎng)絡測試儀表中CAP軟件模塊的研究

          ——
          作者:重慶郵電大學通信網(wǎng)與測試技術重點試驗室 中訊郵電咨詢設計院 尚楠,張治中,楊抗,余銀鳳 時間:2007-11-26 來源:摘自《現(xiàn)代電子技術》 收藏
          1 引 言

          儀中的信令分析,針對的是協(xié)議棧一系列的傳輸層和應用層協(xié)議。協(xié)議分析的基礎,要能夠?qū)崿F(xiàn)對所接收到的數(shù)據(jù)進行譯碼解析,并在此功能上進行更高級的統(tǒng)計追蹤功能。在進行協(xié)議分析時,鑒于協(xié)議之間消息格式和處理機制的不同,以及模塊化的實現(xiàn)要求,采取以單個協(xié)議進行模塊封裝的辦法是更有效的,其好處在于能夠忽略協(xié)議問功能和格式的細微差別,對單個協(xié)議的分析方法也能在很大程度上推廣到其他協(xié)議。

          本文研究的主要內(nèi)容是消息的分析,一方面描述如何根據(jù)協(xié)議標準中規(guī)定的協(xié)議消息結(jié)構進行解碼,另一方面結(jié)合實際情況探討消息的統(tǒng)計及呼叫數(shù)據(jù)記錄合成等功能。

          協(xié)議概述

          智能網(wǎng)是技術和計算機技術相融合的經(jīng)典范例,其基本思想是將業(yè)務控制智能從交換中分離出來,以No.7信令系統(tǒng)為橋梁,使交換網(wǎng)絡的控制信息與大容量分布式數(shù)據(jù)庫聯(lián)系起來,集中控制,以方便新業(yè)務的引入和快速適應不斷變化的市場需求,不必像過去那樣在大范圍多機種的交換機上進行繁雜的修改。

          為了在移動系統(tǒng)中引入智能網(wǎng),歐洲電信標準研究所(ETSI)于1997年在GSM Phase 2+上定義了CAM-EL(Customised Applications for Mobile network EnhancedLogic,移動網(wǎng)絡增強邏輯的客戶化應用協(xié)議)。CAMEL協(xié)議的特征是為用戶提供一種網(wǎng)絡無關的業(yè)務一致性。即使用戶不在其所歸屬的公共陸地移動網(wǎng)絡(HPLMN)中CAMEL協(xié)議也可以作為一種手段幫助網(wǎng)絡運營者向用戶提供特定的業(yè)務。CAP(CAMEI,Application Part)是CAMEL的應用部分,他基于智能網(wǎng)的INAP協(xié)議。CAP協(xié)議描述了移動智能網(wǎng)中各個功能實體之間的標準
          通信規(guī)程[1,2]。

          CAP作為應用層協(xié)議,與INAP,MAP同屬于TCAP的用戶[3],他們在七號信令系統(tǒng)中的位置如圖1所示。


           


          移動智能網(wǎng)系統(tǒng)中的各個設備往往是各個不同的廠家提供的,CAP定義的精確和無二義性就變得非常重要。目前CAP的語法的定義使用ASN.1。

          ASN.1(Abstract Syntax NotationOne)就相當于描述傳送語法的一種語言,他定義的編碼規(guī)則也就是從不同的協(xié)議語言到統(tǒng)一的傳送語法之間的轉(zhuǎn)換規(guī)則。因此,在具體實現(xiàn)時,必須在發(fā)送方設置一個ASN.1編碼器,將發(fā)送方所要傳送的符合發(fā)送方編程語法的消息格式轉(zhuǎn)換成為符合ASN.1編碼規(guī)則的格式然后再發(fā)送出去,然后在接收方設置一個ASN.1解碼器,將接收到的符合ASN.1編碼規(guī)則的消息格式解碼為符合接收方協(xié)議語法的消息格式。這樣,經(jīng)ASN.1描述的信息獨立于任何應用系統(tǒng)及傳送網(wǎng)絡,不會因為應用環(huán)境的不同而引起二義性的解釋。 

          ISO在制定ASN.1的同時也推出了ASN.1的兩種編碼規(guī)則,一是基本編碼規(guī)則(Basic Encode Rule,BER),詳細內(nèi)容請見X.690;另一個是數(shù)據(jù)包編碼規(guī)則(Packet EncodeRule,PER),詳細內(nèi)容請見X.691。BER和PER實際上都是一種傳送語法,他可以把復雜的用抽象語法描述的數(shù)據(jù)結(jié)構表示成簡單的數(shù)據(jù)流,從而便于在通信線路上傳送。PER就是在BER的基礎上,以減少編碼開銷為目的而設計的編碼規(guī)則,相對BER編碼更加精簡,但目前的通信協(xié)議仍以BER編碼居多,CAP協(xié)議遵循BER編碼規(guī)則[4]。

          3 CAP模塊系統(tǒng)設計

          3.1 CAP模塊的設計要求

          對于通信網(wǎng)絡儀器的軟件模塊,CAP模塊需要滿足CAP消息的詳細解碼,信息提取、統(tǒng)計,CDR合成,過濾等功能。其設計主要考慮以下方面:

          (1)軟件的面向?qū)ο蠹澳K化設計

          在面向?qū)ο笏枷胂虏捎媚K化設計,模塊內(nèi)部的結(jié)構清晰易懂,各模塊之間相對獨立。這樣便于檢查錯誤,節(jié)省開發(fā)時間,提高了軟件系統(tǒng)的穩(wěn)定性、可修改性和重用性。

          (2)與數(shù)據(jù)庫的配合

          通信系統(tǒng)涉及到數(shù)量相當大的數(shù)據(jù)庫文件系統(tǒng),信息提取,消息統(tǒng)計及CDR合成均需要同數(shù)據(jù)庫配合,因此,在軟件模塊設計期間要考慮模塊的數(shù)據(jù)庫實現(xiàn)問題。

          (3)模塊的效率問題

          為滿足測試長時間大負荷監(jiān)控和實時解碼統(tǒng)計等功能,模塊必須提高運行效率。為了更好地提高軟件的性能,在軟件設計上,可以考慮采取多線程,流水線技術。

          3.2 CAP模塊的結(jié)構分析

          系統(tǒng)分析在用戶需求的基礎上,采用面向?qū)ο蟮乃枷雽AP模塊具體分析,劃分系統(tǒng)的各個部分,明確他們之間的層次關系,然后將各個部分作為一個對象進行功能分析,對每一層次的數(shù)據(jù)進行加工處理,并向上一層提供必要的支持。根據(jù)軟件總體架構方案協(xié)議消息處理流程如圖2所示。 


           

          其中,采集卡捕獲到的數(shù)據(jù)首先保存在消息緩存中;解碼器從消息緩存中取出消息逐條進行粗略解碼,獲得每幀數(shù)據(jù)的幀信息和呼叫信息;這兩類信息按照協(xié)議類別交給呼叫合成器進行呼叫合成,得到每個協(xié)議的CDR集合,保存在CDR緩存中;根據(jù)用戶需要進行顯示和統(tǒng)計。統(tǒng)計功能可以直接面向CDR緩存進行,也可以先將CDR輸入數(shù)據(jù)庫,在數(shù)據(jù)庫中進行統(tǒng)計,然后輸出統(tǒng)計結(jié)果。對于CAP模塊,我們主要實現(xiàn)CAP解碼器和呼叫合成器的
          設計與實現(xiàn)。

          3.3 CAP軟件模塊研究與實現(xiàn)

          3.3.1 CAP協(xié)議解碼分析

          在對CAP進行解碼分析前,首先要知道BER編碼的基本編碼格式。BER以8 b為一個基本傳送單位。對于每個所傳送的值,無論是基本類型還是構造類型,都由TLV三個字段組成。TLV分別指標識類型標識符域(TAG)、數(shù)據(jù)長度域(LENGTH)和數(shù)據(jù)域(VALUE)字段。其中,數(shù)據(jù)域可以多重嵌套其他數(shù)據(jù)元素的TLV字段。BER編碼的具體格式如圖3所示。 


           


          在CAP協(xié)議描述中,以localValue,length,operator-code,errorcode分別對應BER編碼中的TLV,組成樹狀數(shù)據(jù)結(jié)構圖[1],具體解碼設計將在下面分析。

          3.3.2 解碼器實現(xiàn)方案

          在通信測試中主要是對協(xié)議及信令的PDU進行操作,為滿足對PDU的公共操作我們制定了CPdu基類,主要實現(xiàn)對PDU的創(chuàng)建、刪除、合并、內(nèi)存管理、長度檢查、指針操作等基本功能。在繼承CPdu類的基礎上,我們派生出CPduCap類,在類CPduCap中設定外部接口函數(shù)int Deeode(CString&res),完成詳細解碼過程,并通過引用傳遞的方式將解碼結(jié)果置于CString類型的字符串內(nèi),便于主控方調(diào)用解碼結(jié)果。返回值結(jié)果定義如下:1:非本層PDU,不操作res;0:成功解碼;1:本層PDU,解碼出錯,錯誤信息加到結(jié)果字符串中。

          由于ASN.1語法的特點,Decode(CString&res)函數(shù)采用樹狀遍歷嵌套調(diào)用的方式進行解碼,直至解到BER的基礎函數(shù)為止。

          在基礎解碼函數(shù)中,我們大量使用C++標準模板庫中的模板類:容器std::vector。vector是一個多功能的,能夠操作多種數(shù)據(jù)結(jié)構和算法的模板類和函數(shù)庫,在ASN.1復雜數(shù)據(jù)機構的環(huán)境下,vector的使用方便了對各種數(shù)據(jù)類型進行讀取、存儲、轉(zhuǎn)換操作。

          詳細解碼的實現(xiàn)是對通信協(xié)議進行深層次分析,以及統(tǒng)計、CDR合成的基礎,下面主要關注CAP CDR合成的實現(xiàn)。

          3.3.3 呼叫合成器實現(xiàn)方案

          呼叫合成器的主要功能就是根據(jù)到達的幀信息和呼叫信息,將幀消息按呼叫歸類,即把消息ID加入到相應的CDR記錄中,并在呼叫結(jié)束時通知CDR緩存。CDR(calldata record)在PSTN中表示呼叫數(shù)據(jù)記錄,現(xiàn)在延伸意思為一個完整的流程,CDR合成是上述功能的基礎,對網(wǎng)絡中消息按信令流程進行歸類,并用索引方式把這些消息聯(lián)系到一起,然后才便于完成諸如呼叫跟蹤和呼損統(tǒng)計等高級功能。CDR合成算法主要是根據(jù)一些關鍵參數(shù)進行查找、匹配來確定是否屬于同一個消息流程,因此在這個過程中,需要一些臨時存儲方式來保存沒有匹配到的消息,在內(nèi)存分配上比較復雜,涉及動態(tài)分配內(nèi)存[5]。

          移動智能網(wǎng)應用部分(CAP)是在7號信令的SCCP/TCAP之上的,即CAP為TCAP的用戶(也稱TC用戶),直接與TCAP的成分子層相連。CAP使用TCAP所提供的TC請求原語將要發(fā)送的CAP消息傳送至TCAP成分子層,然后再通過TCAP的事物處理子層、SCCP以及MTP將消息發(fā)到對端,或者使用TCAP所提供的指示原語接收對端發(fā)來的CAP消息。

          TCAP有兩個重要概念:對話和操作。在網(wǎng)絡中一對節(jié)點之間使用TCAP進行的所有通信都被結(jié)構化為對話。例如,為處理一個智能呼叫而在SSP和SCP之間進行的所有通信可構成一個對話。在對話過程中交換的信息元素稱為操作,CAP協(xié)議的消息即存放在這些信息元素中傳輸。操作由源TC用戶調(diào)用,請求目的地TC用戶執(zhí)行該操作指定的動作。在這個過程中,每個成份處理TC原語均帶有一個事務ID(也稱對話ID),成份子層收到此原語后,就將收到的對話ID與其相同的所有成份分配給這一對話。因此,我們在CAP的CDR過程中,以Transac-tionID作為關鍵字CDR ID在數(shù)據(jù)結(jié)構中進行查找,匹配,確定惟一的CDR流程。TransactionID又分源事務ID和目的事務ID,分別存在于不同的TC原語中。

          在呼叫合成實現(xiàn)中,最主要有兩個方法:

          (1)設定CDR緩存的方法void SetCdrBuffer(CAPCDR BUF*pBuf):其中CAP CDR BUF是包含CCapCDR的CDR緩存模板類,此函數(shù)指定了CDR記錄緩存的位置。

          (2)CDR處理函數(shù):void Handle(const CallInfoCap&CapInfo,const NgnPktInfo& PktInfo)。他是進行呼叫合成的核心,也是設計的關鍵。他有兩個參數(shù),分別是該協(xié)議呼叫信息和數(shù)據(jù)幀信息。其基本流程如圖4所示。

          其中,判斷某CDR是否已緩存,通知CDR緩存該CDR已結(jié)束和向緩存中添加新的CDR都需要調(diào)用CDR緩存模板類的方法,對于CAP協(xié)議的CDR子類:CCapCDR,聲明一個CAP CDR緩存類型方法如下:ty-pedef CCallBuf<CCapCDR>CAP CDR BUF。

          在緩存操作中的具體實現(xiàn)如下:

          (1)查詢某CDR是否已緩存,利用CDR緩存的Search方法:

          newCdr.nLinkID=nLinkld:
          //設定關聯(lián)屬性(根據(jù)協(xié)議類型增加)
          _tcscpy(newCdr.Call ID,Caplnfo.Call ID);
          CCapCDR*pFind=m pCdrBuf=->Search(newCdr);
          //查詢該CDR是否已存在

          (2)向緩存中添加新的CDR:使用InsertNewCDR方法:

          CCapCDR*pFind=m pCdrBuf->InsertNewCDR(newCdr);

          (3)通知緩存某CDR已結(jié)束:

          bool bReturn=m pCdrlBuf->CallCompleted(*pFind);CDR呼叫其他相關分析在此不再贅述。

          4 軟件運行實現(xiàn)結(jié)果

          在模塊的整個開發(fā)流程中,每一步都要進行軟件的測試工作,以保證整個模塊開發(fā)工作的正確性。下面是軟件實測后進行CDR合成的結(jié)果,可以從圖5中看到,軟件實現(xiàn)了CAP的CDR功能,點擊單條消息名稱可以看到消息的關鍵數(shù)據(jù),在此不再進行演示。




             

            

          5 結(jié) 語

          采用面向?qū)ο蟮乃枷耄ㄟ^C++語言,我們實現(xiàn)了CAP軟件模塊。在模塊開發(fā)流程結(jié)束后,通過現(xiàn)場測試,該軟件模塊完全符合中國移動《軟交換測試儀表測試規(guī)范(征求稿)》中對移動智能網(wǎng)測試的要求[6],目前該軟件模塊已運用于商用通信測試儀表中。 

            

          c++相關文章:c++教程


          通信相關文章:通信原理




          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();