《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信与网络 > 业界动态 > 基于多线程的NGN综合接入网关测试系统的设计与实现

基于多线程的NGN综合接入网关测试系统的设计与实现

2008-03-17
作者:廖 薇, 刘锦高

?

  摘 要: 針對目前接入網(wǎng)關(guān)測試系統(tǒng)" title="測試系統(tǒng)">測試系統(tǒng)的測試速度較慢的現(xiàn)狀,運用多線程技術(shù),設(shè)計了一種新的接入網(wǎng)關(guān)測試系統(tǒng),主要介紹了本測試系統(tǒng)的整體設(shè)計,著重講述了其多線程測試的實現(xiàn),通過測試比較,證明了這種多線程接入網(wǎng)關(guān)測試系統(tǒng)在速度及性能上有很大的優(yōu)勢。
  關(guān)鍵詞: 多線程 NGN? 接入網(wǎng)? 網(wǎng)關(guān)? 線路測試

?

  隨著電信事業(yè)跨越式的發(fā)展和通信技術(shù)的不斷進步,各地電信局在原有交換機容量及出局線對都不能滿足用戶裝機需求的情況下,如何提高和完善電信服務(wù)質(zhì)量已經(jīng)成為電信業(yè)面臨的一個重要問題。傳統(tǒng)的112集中受理系統(tǒng)只受理交換機直接接出的用戶業(yè)務(wù)。隨著電信技術(shù)的不斷發(fā)展和接入網(wǎng)技術(shù)的日趨成熟,網(wǎng)絡(luò)接入設(shè)備解決了城鄉(xiāng)電信用戶對通信的需求,接入網(wǎng)逐漸成為電信網(wǎng)上用戶接入的主流[1]。
  傳統(tǒng)程控電話網(wǎng)采用的是外接測試頭" title="測試頭">測試頭。如果進行話機測試,由于此時用戶線與測試頭建立的是金屬線連接,對用戶的振鈴?fù)ㄔ捦耆蓽y試頭內(nèi)的振鈴電路和通話電路完成,用戶饋電、鈴流都由測試頭控制,語音處理也在測試頭中完成,局端的話機接在測試頭上,與交換機或接入設(shè)備本身無關(guān)。而使用內(nèi)置測試功能時,與用戶的交互只能通過打電話的方式建立,并利用接入設(shè)備本身的通用振鈴和語音電路。因此進行話機測試時,需先打通電話,才能進行振鈴和話機測試。故采用內(nèi)置測試方案,交互測試不能沿用測試頭測試的流程。本文設(shè)計的正是這樣一種內(nèi)線測試方案。
  本系統(tǒng)可以多線程地進行測試。對于不同網(wǎng)元的測試,允許并行進行,不需要等待結(jié)果返回后再開始新的測試;允許接收多條測試指令,對不同NE的測試也可以并行進行,在測試過程中可以接收和執(zhí)行新的測試命令。


1 系統(tǒng)概況
  本測試系統(tǒng)如圖1所示,大容量綜合接入" title="綜合接入">綜合接入網(wǎng)關(guān)(AG)可以連接到網(wǎng)管中心的網(wǎng)管系統(tǒng)上,該系統(tǒng)同時具備網(wǎng)元管理功能和業(yè)務(wù)管理功能。模塊Agent 112可以對其所管轄的綜合接入網(wǎng)關(guān)進行窄帶線路測試" title="線路測試">線路測試,Agent 112與112中心之間通過協(xié)議轉(zhuǎn)換器112MD 實現(xiàn)對接。
  與外接測試頭不同的是,112中心可通過IP網(wǎng)發(fā)命令到112MD的 Socket接口來實現(xiàn)線路測試功能,而傳統(tǒng)的程控電話網(wǎng)的外置測試系統(tǒng)中,還需單獨組建測試頭的網(wǎng)管通道。
1.1 主要測試功能
  綜合接入網(wǎng)關(guān)實現(xiàn)的本測試系統(tǒng)符合電總112集中測試協(xié)議和接口規(guī)范[2]。
  用戶線路測試主要包括內(nèi)線測試(電路測試)、外線測試(線路測試)以及配合測試(終端測試)三部分,各地具體的要求也是在此基礎(chǔ)進行添加的。
  (1)電路測試:包括撥號音測試、饋電電壓測試、回路電流測試等。
  (2)線路測試:包括群測(12項外線測試)、測用戶線路交流電壓值(AB、AG、BG)、測用戶線路直流電壓值(AB、AG、BG)、測用戶環(huán)路直流電流值(AB)、測用戶環(huán)路電阻值(AB)、測用戶線路絕緣電阻值(AB、AG、BG)、測用戶線路電容值(AB、AG、BG)以及測用戶線路阻抗(AB、AG、BG)等。
  (3)終端測試:包括對被測用戶振鈴、測試用戶話機雙音頻特性或脈沖特性、對用戶話機送嗥鳴音等。
1.2 工作過程
  112中心在TS處設(shè)置數(shù)據(jù),使所有綜合接入網(wǎng)關(guān)的用戶都通過112MD(相當(dāng)于一個新增的CS)來測試。112測試由人工坐席或AVR(自動應(yīng)答器)發(fā)起,TS收到測試請求后,如果是綜合接入網(wǎng)關(guān)的用戶,則會向112MD發(fā)出測試請求,112MD收到測試請求后,通過Agent 112的測試接口向相應(yīng)的綜合接入網(wǎng)關(guān)發(fā)送測試命令,網(wǎng)關(guān)測試完畢后將測試結(jié)果" title="測試結(jié)果">測試結(jié)果反饋給Agent 112,再由112MD進行協(xié)議轉(zhuǎn)換后發(fā)送給TS,至此完成一次測試過程。
2 系統(tǒng)設(shè)計及實現(xiàn)
2.1 總體設(shè)計
  本系統(tǒng)主要包括112MD、Agent、綜合接入網(wǎng)關(guān)和用戶終端等模塊[3]
  112MD是一個協(xié)議轉(zhuǎn)換器,測試中心發(fā)送112標(biāo)準(zhǔn)請求時,112MD負責(zé)接收并將協(xié)議轉(zhuǎn)換成1355標(biāo)準(zhǔn),再發(fā)送給Agent 112;Agent 112主要負責(zé)轉(zhuǎn)化基于1355SAP的線路測試需求和結(jié)果并調(diào)用RAMI ,即進行命令分析,根據(jù)對應(yīng)的測試命令對綜合接入網(wǎng)關(guān)進行相應(yīng)的測試;綜合接入網(wǎng)關(guān)可以使一個單一節(jié)點向一個地區(qū)提供多種接入業(yè)務(wù)。
  網(wǎng)管系統(tǒng)與本測試系統(tǒng)的接口通信協(xié)議采用TCP/IP協(xié)議。低層協(xié)議推薦使用x.25和ATM,也可以根據(jù)實際情況選用其他支持IP的低層協(xié)議[4]。
2.2 多線程的實現(xiàn)
  多線程測試是在Agent 112模塊中實現(xiàn)的。該模塊的程序代碼以WIN2000為平臺,用VC++6.0編寫[5]。Agent 112模塊包含1355SAP Entity、Agent 112 Proxy、Log Record Module(日志記錄模塊)、Core Process Module(內(nèi)核進程模塊)和DN Translator Service(DN轉(zhuǎn)換服務(wù))五個部分,如圖2所示。


  1355SAP Entity實現(xiàn)了Agent Socket接入點接口。當(dāng)Agent 運行時,它與調(diào)解設(shè)備進行通信,從解調(diào)設(shè)備獲取LT需求并返回結(jié)果。在這個模塊中還有一個緩沖區(qū)用來保存MD中的數(shù)據(jù)。當(dāng)其收到線路測試需求時,首先驗證此需求的有效性。如果有效,它便在核心程序模塊中調(diào)用接口函數(shù)以啟動測試程序。
  內(nèi)核進程模塊是此應(yīng)用軟件的主要模塊,它控制了整個測試程序,同時負責(zé)創(chuàng)建1355SAP Entity、日志記錄模塊,以及啟動proxy的object,通過測試數(shù)據(jù)執(zhí)行測試。
  日志文檔 是Agent 112和Topological View的共同點。Agent 112通過在日志文檔中記錄的所有關(guān)于被請求的測試(包括錯誤)信息來追蹤測試。同時,通過Main View,操作者可以查看這些日志文檔。當(dāng)Agent 112啟動時,它便會核對日志文檔。如果日志文檔不存在,便建立log file。如果已經(jīng)存在,便打開以記錄。記錄的最大數(shù)量為1 000。如果超過該范圍,便寫在第一條記錄上。
  Agent 112 Proxy是一個獨立程序,而且它也是一個短周期的進程。這就意味著當(dāng)Agent收到有效的LT需求時它開始運行,返回結(jié)果時,它便關(guān)閉。
  在Agent 112 Proxy與NE之間,使用了一個私有接口RAMI。RAMI是一系列的PRC調(diào)用。
2.2.1 類CAgent 112 Main
  這個類與核心程序模塊的軟件架構(gòu)是一致的。
  client thread 啟動,此class? instance便被創(chuàng)建。它管理著整個線路控制程序。socket connection關(guān)閉,它便會被一起刪掉。
2.2.2? Agent 112 Proxy
  Agent 112 Proxy負責(zé)與NE通信。它通過C而不是C++實現(xiàn)。它的功能是進行線路測試。消息程序流程圖如圖3所示。


  線路測試開始,Agent 112便啟動Agent 112 Proxy并通過Windows Message發(fā)送測試命令,然后,Windows Message通過CCPE與NE通信,發(fā)送測試命令給NE,幾秒鐘后,NE通知Windows Message測試完成,Agent 112 Proxy收到,并從NE得到結(jié)果,把結(jié)果通過Windows Message送到Agent 112,最后Agent 112 Proxy自己結(jié)束。
2.2.3 類CTestReport
  對于每個NE的測試,都可以啟動一個獨立的線程TestThread進行測試,并等待接收測試報告。
  線程中主要包含了一個CTestReport類型的對象。CTestReport類是CAgent112Main類的子類。由于測試和等待結(jié)果的功能改在子線程中實現(xiàn),所以,原有的類結(jié)構(gòu)模型也不再適用。但是由于功能間的數(shù)據(jù)耦合緊密,所以采用了繼承的方式分割。CTestReport類的成員保存了測試命令的有關(guān)指數(shù)和測試結(jié)果的相關(guān)信息。CTestReport類還提供了兩個成員函數(shù)PerformTest()和ResultReport(),分別實現(xiàn)進行測試和返回測試結(jié)果的功能。使用數(shù)組pLTObject[m_Index]存儲指向該類的對象指針,方便在結(jié)果返回時能夠找到對應(yīng)的對象。而pLTObject的索引號與NE名在InTestNE[NENum]中的索引號一致,由m_Index表示。
  pLTObject [m_Index]= pTestReport;
  在得到返回的測試結(jié)果時,逐一進行比較,找到對應(yīng)的對象:
  for(i=0;i  ??{
  if(((Agent112_MESSAGE_LT_RESULT *)(pResultData->lpData))->agent112Obj_ptr
           ==(DWORD) pLTObject[i])
  ??{
  ?? pLTObject[i]->
    ResultArrived((Agent112_MESSAGE_LT_RESULT *)(pResultData->lpData));
  ??        break;
  ??}
  ???? }
  在進行測試時,因等待測試結(jié)果需要一定的時間,在這個過程中線程將會掛起,直到結(jié)果到來才被解掛。
  由于測試由單線程變?yōu)槎嗑€程,需要處理一些同步機制。在將一些測試參數(shù)傳遞至子線程時,要保證在傳遞之前這些信息不能被改動,可以利用信號量來進行同步。再一次使用對象時首先需要進行判斷,然后賦值,最后釋放資源[6]
  if(WaitForSingleObject(hBuffWaiting,60000)
????????????           //for synchronization
  ???????? == WAIT_TIMEOUT)
  SetEvent(hBuffWaiting);
  另外,有些命令由多個子命令組成。在第一個子命令還未完成時,第二個子命令應(yīng)處于等待狀態(tài),故而使用dwWaitResult=WaitForSingleObject(pLTObject[i]->GetHandle(),500); 來實現(xiàn)。
  通過NE名找到對應(yīng)的測試線程,所以,首先需要找到NE名,在這種情況下,創(chuàng)建函數(shù)GetNEName()來獲得NE名。
  在CAgent112Main類中增加HANDLE m_hTestThread用來記錄線程的句柄,以便在測試結(jié)果返回時能夠找到對應(yīng)的線程。
  增加一個數(shù)組InTestNE[i]記錄正在進行測試的NE名。該數(shù)組在生成線程之前用來檢測NE是否符合要求。如果要測試的NE名已經(jīng)存在,說明該NE已經(jīng)在進行測試,暫時不能接受新的測試命令,這條命令將會被駁回,返回一個rcode=53的錯誤;反之,認為該NE符合要求,將會為其啟動測試線程,進行測試,并且在InTestNE[i]找到空位置,存儲該NE名。
  針對這種情況,新增加一種錯誤信息,即53號錯誤信息。
  Agent 112_MESSAGE_ERROR*NEBusy=new Agent 112_MESSAGE_ERROR;
  NEBusy->rcode = 53;
    pAgent112 Main->ReturnError(TOE_NE,NEBusy);
  在C1355SAP->ReturnEorror()中,加入處理過程,并進行錯誤處理。
  if(pError->rcode==53)????????????????
    sprintf(szTemp,"TOE,NE,%d,\"NE in Testing\"",pError->rcode);
  在啟動測試線程后,需要將由AnalyzeCMD()得到的信息從主線程傳遞至子線程,所以對于C1355SAP類型的數(shù)據(jù)采用賦值重用的方式封裝。這樣
  C1355SAP & C1355SAP::operator=(const C1355SAP& c1355sap)
  CAgent112Main的析構(gòu)函數(shù)~CAgent112Main()的實現(xiàn)發(fā)生改變。在單線程測試時,CAgent112Main類對象pAgent112Main生命周期結(jié)束時,一輪測試結(jié)束,socket可以關(guān)閉,所以可以將closesocket放在析構(gòu)函數(shù)~CAgent112Main()中實現(xiàn)。但是在多線程測試時,某一個NE測試結(jié)束并不能代表連接的結(jié)束,socket也不能關(guān)閉,所以,closesocket改在停止測試時實現(xiàn)。
  在接收命令部分,允許多條指令的同時輸入。引入一個數(shù)組m_CommandBuff記錄輸入的多條命令,ComIndex指示正在進行測試的命令的索引,ComNum表示一次讀入的命令數(shù)。這個命令數(shù)不一定就是一次發(fā)送的命令的條數(shù),它還與接收指令的Buff大小有關(guān)。它只能表示Agent 112一次從112MD收到的命令的條數(shù)。
  在測試部分,將啟用新的線程,并發(fā)的執(zhí)行測試功能不影響新的命令的接收。
3 測試比較
  在傳統(tǒng)的單線程測試過程中,每次只能發(fā)給Agent 112一個測試指令,并且只有在Agent 112發(fā)回測試結(jié)果后才能發(fā)送下一條命令。在等待測試結(jié)果的過程中,計算機處于閑置狀態(tài),不能對其他的NE進行測試。而在本系統(tǒng)中,允許同時接收多條測試指令,并且對不同NE的測試可以并發(fā)進行,在進行測試的過程中,可以接收和執(zhí)行新的測試命令。但是對同一個NE,一次只允許一條命令進行測試。經(jīng)過測試比較兩種情況分別如圖4所示。


  在發(fā)送命令時,打開一個超級終端,連接到本機127.0.0.1:9009端口。寫好一個文本,例如命名為112command.txt,然后寫入命令:
INVOKEID=900 FEEDVOL TYPE=1:AGNENAME="ne0" AGNEIP=10.8.127.217 RACKNO=1 FRMNO=1 SLOTNO=8 PORTNO=4;
最后在超級終端-傳送-發(fā)送文本文件,選取此文件發(fā)送過去。測試結(jié)果會顯示在112MD和超級終端界面中。
  本文設(shè)計了一種基于多線程的NGN綜合接入網(wǎng)關(guān)測試系統(tǒng),其在測試速度和性能方面較之單線程測試系統(tǒng)有很大的提高,是目前發(fā)展的熱點。
參考文獻
[1]孔小斌,章萍.接入網(wǎng)112線路測試技術(shù)與實現(xiàn)[J].電信科學(xué),2000,(6):36-38.
[2]接入網(wǎng)112電總規(guī)范. 中國電信,1999,(6).
[3]趙慧玲,葉華.以軟交換為核心的下一代網(wǎng)絡(luò)技術(shù)[M].北京:人民郵電出版社,2002:30-56.
[4]W. RICHARD STEVENS. TCP/IP Illustrated Volume1:The ?Protocols[M].北京:機械工業(yè)出版社,2005:20-100.
[5]黃維通. Visual C++面向?qū)ο笈c可視化程序設(shè)計[M].北京:清華大學(xué)出版社,2000:10-250.
[6]Jeffrey Richter.Windows 高級編程指南[M].北京:清華大學(xué)出版社,2001:47-59.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容