LTE協(xié)議棧中ASN1模塊的設(shè)計與實現(xiàn)_第1頁
LTE協(xié)議棧中ASN1模塊的設(shè)計與實現(xiàn)_第2頁
LTE協(xié)議棧中ASN1模塊的設(shè)計與實現(xiàn)_第3頁
LTE協(xié)議棧中ASN1模塊的設(shè)計與實現(xiàn)_第4頁
LTE協(xié)議棧中ASN1模塊的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

LTE協(xié)議棧中ASN.1模塊的設(shè)計與實現(xiàn)李小文;冉靖【摘要】ItisnecessarytorealizetheAbstractSyntaxNotationOne(ASN.1)forRadioResourceControl(RRC)indevelopmentofLongTermEvolution(LTE)protocol,buttheefficiencyoftraditionalmethodislow.Aimingatthisproblem,thispaperproposesanoveldesignmethodofASN.1encode/decodemoduletomeettherequirementofLTEprotocolstack.Themethodadoptsmodulardesign,simplifiesfunctioncallandimprovescodeefficiency.ItrealizesandtestsASN.1encode/decodemoduleinTD-LTEwirelesscomprehensivemeasurementinstrument.Testingthefunctionsofthismodule,itprovestheeffectofmoduletoencodeanddecodeinRRCinformationofLTEprotocolstack.Itispracticallyusefulandownspromotionalvalue.%開發(fā)長期演進(LTE)協(xié)議必須實現(xiàn)針對無線資源控制(RRC)消息的ASN.1編解碼模塊,但傳統(tǒng)的ASN.1編解碼方案函數(shù)調(diào)用頻繁,編碼效率較低?為此,分析LTE協(xié)議棧的軟件需求,提出一種ASN.1編解碼模塊設(shè)計與實現(xiàn)方案.該方案采用模塊化設(shè)計,從而簡化函數(shù)調(diào)用、提高編碼效率?在TD-LTE無線綜合測試儀的協(xié)議棧軟件中實現(xiàn)并進行測試,結(jié)果表明,該方案可實現(xiàn)對RRC消息的編解碼.【期刊名稱】《計算機工程》【年(卷),期】2011(037)008【總頁數(shù)】4頁(P252-255)關(guān)鍵詞】長期演進協(xié)議棧;抽象語法記號;壓縮編碼規(guī)則;無線資源控制【作者】李小文;冉靖【作者單位】熏慶郵電大學(xué)計算機科學(xué)與技術(shù)學(xué)院,重慶,400065;熏慶郵電大學(xué)計算機科學(xué)與技術(shù)學(xué)院,重慶,400065【正文語種】中文【中圖分類】TP302.11概述在“移動通信寬帶化”的趨勢下,為對抗WIMAX(WorldinteroperabilityforMicrowaveAccess)等無線接入技術(shù)的市場挑戰(zhàn),3GPP(3rdGenerationPartnershipProject)組織在十幾年超3G研究的技術(shù)儲備基礎(chǔ)上研發(fā)出了長期演進(LongTermEvolution,LTE)技術(shù)。LTE能提供比以往所有移動通信更高的數(shù)據(jù)傳輸率,它支持各類數(shù)據(jù)的傳輸,整合了廣域網(wǎng)覆蓋,并提供對移動設(shè)備的無縫連接。LTE的性能目標(biāo)是在20MHz頻譜帶寬下提供下行100Mb/s、上行50Mb/s的峰值速率。與前一代移動通信系統(tǒng)相比,LTE的頻譜利用率有了顯著提高,并設(shè)計了新的無線網(wǎng)絡(luò)架構(gòu)用來簡化操作和降低成本[1]。在LTE系統(tǒng)中,進行通信的設(shè)備是由不同的廠商生產(chǎn)的,其硬件結(jié)構(gòu)、軟件結(jié)構(gòu)以及數(shù)據(jù)結(jié)構(gòu)等均不相同。因此,在通信過程中,不同類型的設(shè)備對同一數(shù)據(jù)的理解會出現(xiàn)二義性。為解決該問題,LTE協(xié)議在設(shè)計時使用了抽象語法記號(AbstractSyntaxNotationOne,ASN.1)。ASN.1是ISO組織為解決不同類型終端或開放系統(tǒng)之間應(yīng)用數(shù)據(jù)信息的交換而提出的,它以一種高度抽象的形式來表示數(shù)據(jù)結(jié)構(gòu)信息,用它描述的信息獨立于任何應(yīng)用環(huán)境,不會引起二義性的解釋。LTE協(xié)議棧中,ASN.1用來描述空中接口(Uu)的層3中無線資源控制(RadioResourceControl,RRC)消息[2],RRC主要實現(xiàn)廣播、尋呼、RRC連接管理、RB控制、移動性功能、終端的測量和測量上報控制等功能,在LTE協(xié)議棧中非常重要。如何高效地實現(xiàn)RRC消息的編解碼,成為LTE協(xié)議棧重點解決的問題。本文針對LTE協(xié)議棧,設(shè)計一種新的ASN.1編解碼模塊實現(xiàn)方案,并在TD-LTE無線綜合測試儀的協(xié)議棧軟件上對其進行了實現(xiàn)和測試。ASN.1數(shù)據(jù)類型及編碼規(guī)則ASN.1標(biāo)準可分為抽象語法和傳送語法[3]。抽象語法規(guī)定ASN.1怎樣對數(shù)據(jù)類型進行描述;傳送語法規(guī)定數(shù)據(jù)類型的值在傳輸時使用何種編碼規(guī)則。在ASN.1中,一個數(shù)據(jù)類型就是一個值的集合。一個給定的ASN.1類型的值是該類型集合里的一個元素。ASN.1有2種數(shù)據(jù)類型,基本類型是ASN.1描述數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ);結(jié)構(gòu)類型是由基本類型和其他結(jié)構(gòu)類型組合而形成的復(fù)雜類型。結(jié)構(gòu)類型中有可選成員,可選成員可能有默認值[4]。在LTE中使用的基本類型有BITSTRING.INTEGER.NULL、OCTETSTRING、BOOLEAN、ENUMERATED。ASN.1標(biāo)準定義了5個結(jié)構(gòu)類型,在LTE中使用到的只有3個:CHOICE,SEQUENCE和SEQUENCEOF。ASN.1標(biāo)準定義了5種編碼規(guī)則:基本編碼規(guī)則(BasicEncodingRules,BER),規(guī)范編碼規(guī)則(CanonicalEncodingRules,CER),分布式編碼規(guī)則(DistinguishedEncodingRules,DER),壓縮編碼規(guī)則(PackedEncodingRules,PER),XML編碼規(guī)則(XMLEncodingRules,XER),這5種編碼規(guī)則各有特點,在實際應(yīng)用時,根據(jù)具體的需求進行選擇[5]。ASN.1編解碼模塊設(shè)計設(shè)計目標(biāo)根據(jù)ASN.1應(yīng)用過程和LTE協(xié)議棧的要求,設(shè)計的ASN.1編解碼模塊應(yīng)達到如下目標(biāo):滿足LTE協(xié)議棧對實時性的要求;向高層同時提供編碼和解碼2個接口函數(shù);(3)使用結(jié)構(gòu)化設(shè)計,但子函數(shù)層應(yīng)盡可能少;(4)出現(xiàn)異常情況時,要提供異常信息,并進行日志記錄,便于調(diào)試。編碼規(guī)則的選取在ASN.1的5種編碼規(guī)則中,基本的非對齊模式的PER在編碼時冗余最小、編碼最緊湊、效率最高。本文設(shè)計的ASN.1編解碼模塊將選用基本的非對齊模式的PER作為編碼規(guī)則,原因如下:⑴PER省略對類型標(biāo)識符的編碼,提高編碼效率。⑵PER省略長度編碼。PER調(diào)整數(shù)值范圍,可以節(jié)省大量編碼,對于一切有下界的數(shù)值簡化編程。經(jīng)非對齊模式的PER編碼后的比特?zé)o須進行8位組對齊,能使編碼更緊湊。PER編碼的結(jié)構(gòu)如圖1所示,為“[P][L][C]”voptionalPreamble,optionalLength,optionalContents>,PLC中每個域都不再是8位組串而是比特串,且每個域都是可選的。Preamble只出現(xiàn)在結(jié)構(gòu)類型中,用來記錄結(jié)構(gòu)類型中是否有擴展、可選成員或缺省值;Length用來記錄Contents的具體長度,其單位根據(jù)具體類型而變化;對于Contents,若數(shù)據(jù)是基本類型,則直接編碼,若數(shù)據(jù)是結(jié)構(gòu)類型,則進行嵌套編碼。PER對各個類型的詳細編碼規(guī)則參照ITU-T的X.691標(biāo)準。圖1PER編碼結(jié)構(gòu)詳細設(shè)計ASN.1在一種高度抽象的層次上來表示數(shù)據(jù)結(jié)構(gòu)信息,各種應(yīng)用程序無法直接對其進行操作和使用。因此,在實際應(yīng)用中,需要先將ASN.1描述的數(shù)據(jù)結(jié)構(gòu)翻譯轉(zhuǎn)換成具體語言(如C、C++、Java等)的數(shù)據(jù)結(jié)構(gòu)表示形式,然后通過相應(yīng)的ASN.1編碼函數(shù)生成能在通信介質(zhì)上傳輸?shù)亩M制碼流。整個過程如圖2所示。圖2ASN.1應(yīng)用過程傳統(tǒng)的ASN.1編解碼模塊包括ASN.1數(shù)據(jù)結(jié)構(gòu)、ASN.1編解碼函數(shù)、ASN.1基本類型編解碼庫、其他輔助函數(shù)。先將ASN.1抽象描述轉(zhuǎn)換為相應(yīng)語言的數(shù)據(jù)結(jié)構(gòu),再根據(jù)數(shù)據(jù)結(jié)構(gòu)編寫ASN.1編解碼函數(shù),最后編解碼函數(shù)調(diào)用基本類型編解碼庫來實現(xiàn)對數(shù)據(jù)的編解碼功能。該方案簡單易實現(xiàn),但編解碼效率低,每調(diào)用一次基本類型編解碼庫都需要重新計算編解碼比特個數(shù),增加了額外開銷。并且,該方案的函數(shù)調(diào)用過多,也降低了程序效率。在分析傳統(tǒng)方案優(yōu)缺點的基礎(chǔ)上,本文設(shè)計了一種新的ASN.1編解碼模塊方案,如圖3所示。該方案包含有內(nèi)存管理模塊、比特流處理模塊、輔助模塊以及核心模塊,采用了高效的C語言作為實現(xiàn)語言。新的ASN.1編解碼模塊方案簡化了調(diào)用過程,提高了程序效率,更適合于LTE協(xié)議棧軟件的開發(fā)和應(yīng)用。圖3ASN.1編解碼模塊結(jié)構(gòu)內(nèi)存管理模塊由于RRC消息的數(shù)據(jù)結(jié)構(gòu)中存在大量的指針,解碼過程中對其賦值就需要頻繁地申請內(nèi)存。若使用C語言提供的內(nèi)存管理函數(shù),會造成系統(tǒng)開銷大、易生成碎片等問題。因此,需要設(shè)計專門的內(nèi)存管理模塊。內(nèi)存管理模塊的設(shè)計基于“多次申請,一次釋放”的原則,使用一個數(shù)組作為ASN.1編解碼模塊的專用內(nèi)存區(qū),并用一個偏移變量指向當(dāng)前可用的內(nèi)存,提供3個函數(shù),分別是初始化函數(shù)、內(nèi)存分配函數(shù)以及內(nèi)存釋放函數(shù)。解碼過程中所需要的內(nèi)存均在專用內(nèi)存區(qū)中按順序申請,待完成一次解碼或編碼任務(wù)后統(tǒng)一釋放內(nèi)存,開銷僅為O(1)。比特流處理模塊應(yīng)用于LTE協(xié)議棧軟件的ASN.1編解碼模塊選用非對齊模式的PER,比特是編解碼過程中的基本單位。在編解碼中,經(jīng)常需要對字節(jié)中的某些比特進行特定的操作,而C語言中缺乏能直接利用的庫函數(shù)。所以,需要專用的比特流處理模塊來進行比特的獲取、添加等操作。比特流處理模塊定義了“從比特流中取得比特串函數(shù)GETSTREAMFROMSTREAM(source,pos,len,target)”和“向比特流中添加比特串函數(shù)SETBITSTREAMFROMSTREAM(target,pos,len,source)”來實現(xiàn)比特操作。輔助模塊輔助模塊包含程序跟蹤和異常處理2個部分。ASN.1編解碼模塊代碼龐大,函數(shù)之間層層調(diào)用,如何調(diào)試檢錯成為突出的問題。程序跟蹤模塊負責(zé)在程序運行時,將階段數(shù)據(jù)導(dǎo)出到運行日志中,以備實時檢錯。異常處理則解決編解碼過程中難以預(yù)料的一些問題,比如數(shù)據(jù)越界、返回值錯誤等。核心模塊核心模塊負責(zé)實現(xiàn)對RRC消息的編解碼功能,并向高層提供編碼和解碼2個接口。RRC消息的ASN.1抽象描述是嵌套型的,因此,它轉(zhuǎn)換成的C語言數(shù)據(jù)結(jié)構(gòu)和實現(xiàn)的編解碼函數(shù)也是嵌套型的。每個轉(zhuǎn)換后的C語言數(shù)據(jù)結(jié)構(gòu)都有一個對應(yīng)的編解碼函數(shù)或宏,負責(zé)對結(jié)構(gòu)中所有成員進行編解碼,在實現(xiàn)編解碼函數(shù)時計算出所需的編解碼比特個數(shù)。若某個成員是由其他自定義數(shù)據(jù)結(jié)構(gòu)定義,則直接調(diào)用其對應(yīng)的編解碼函數(shù)。每調(diào)用一個編解碼函數(shù),都要存儲其編碼或解碼結(jié)果。當(dāng)所有函數(shù)返回時,編解碼過程結(jié)束。4ASN.1編解碼模塊的實現(xiàn)與測試本文針對使用LTE協(xié)議棧軟件的TD-LTE無線綜合測試儀,實現(xiàn)了ASN.1編解碼模塊并對其進行測試。ASN.1編解碼模塊的實現(xiàn)模塊的編解碼功能分2步實現(xiàn):⑴將RRC消息的ASN.1抽象描述翻譯轉(zhuǎn)換為C語言數(shù)據(jù)結(jié)構(gòu),轉(zhuǎn)換規(guī)則見表1(2)根據(jù)C語言數(shù)據(jù)結(jié)構(gòu)為每一個對象實現(xiàn)編解碼函數(shù)。表1ASN.1類型轉(zhuǎn)換規(guī)則ASN.1類型C數(shù)據(jù)類型NULLcharBOOLEANcharBITSTRINGstructbitstring_name{unsignedshortlength;unsignedshort*value;}bitstring_name;OCTETSTRINGstructoctetstring_name{unsignedshortlength;unsignedshort*value;}octetstring_name;INTEGERunsignedshortENUMERATEDenumvariable_name{member_01=0,member_02=1,...}variable_name;SEQUENCEstructsequence_name{類型member_01;類型member_02;...}sequence_name;SEQUENCEOFstructsequenceof_name{structsequenceof_name*next;sequenceof_namevalue;}*sequenceof_name;CHOICEstructchoice_name{unsignedshortchoice;#definemember_011#definemember_022...union{類型member_01;類型member_02;...}choice_union;}choice_name;自定義類型typedef自定義類型新類型名自定義類型變量名完成數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換后,再實現(xiàn)對應(yīng)的編解碼。RRC消息數(shù)據(jù)結(jié)構(gòu)的編解碼分為3個部分:協(xié)議數(shù)據(jù)單元(ProtocolDataUnit,PDU)的編解碼,簡單基本信息單元的編解碼以及復(fù)雜基本信息單元的編解碼。其中,PDU和復(fù)雜基本信息單元的編解碼使用函數(shù)的方式實現(xiàn);簡單基本信息單元的編解碼使用宏的方式實現(xiàn),以減少進出函數(shù)的開銷。編解碼函數(shù)及宏的編寫要嚴格遵守X.691標(biāo)準。下面以CounterCheckResponse為例來說明數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換及編解碼實現(xiàn)過程。CounterCheckResponse是一個復(fù)雜基本信息單元,其ASN.1描述如下:在對復(fù)雜基本信息單元實現(xiàn)編碼時,需要從上至下為每一個數(shù)據(jù)結(jié)構(gòu)成員編碼。rrc_TransactionIdentifier是由其他數(shù)據(jù)類型所定義的成員,對它的編碼直接調(diào)用編碼函數(shù)Encode_RRC_TransactionIdentifier(BitS,bitP-os,target)實現(xiàn);criticalExtensions是一^個choice類型,包含2個成員,先使用一^比特對其選擇值(choice_num)進行編碼,再根據(jù)選擇值,對被選中的成員進行編碼。本例選擇counterCheckResponse_r8,則調(diào)用Encode_CounterC-heckResponse_r8_IEs(in,bitPos,out)進行編碼。ASN.1編解碼模塊的測試設(shè)計并實現(xiàn)的ASN.1編解碼模塊是否符合PER標(biāo)準,能否正確對RRC消息實現(xiàn)編解碼都需要進行測試。整個測試以RRC消息的PDU為單位進行。測試方法如下:⑴使用成熟的商業(yè)軟件OSSNokalva公司的ASN.1Tools為PDU賦值并生成符合PER的二進制編碼(數(shù)據(jù)A,即測試用例)。使用本文實現(xiàn)的ASN.1編解碼模塊對數(shù)據(jù)A進行解碼,重新得到PDU的值(數(shù)據(jù)B)。⑶再次使用ASN.1編解碼模塊對數(shù)據(jù)B進行編碼,得到二進制編碼(數(shù)據(jù)C)。通過對比數(shù)據(jù)A和數(shù)據(jù)C的差異就能迅速判斷編解碼的正誤。該方法簡單、高效,測試通過則能證明按照該方案實現(xiàn)的ASN.1編解碼模塊符合PER標(biāo)準,避免了個人在理解標(biāo)準時可能出現(xiàn)的差錯。實現(xiàn)的ASN.1編解碼模塊以3GPP.TS36.331V9.0.0中RRC消息的ASN.1抽象描述為基礎(chǔ)。在測試時,以該協(xié)議的RRC消息的PDU為單位賦予不同的值,得到若干測試用例,這些測試用例覆蓋PDU的所有數(shù)據(jù)分支及邊界值。3GPP.TS36.331V9.0.0的RRC消息共15個PDU,如表2所示。通過賦值得到474個測試用例,使用上述用例對ASN.1編解碼模塊進行測試,474個用例均成功通過。以DL_CCCH_Message的一個測試為例,測試過程及結(jié)果見圖4。表2PDU測試用例PDU名測試用例個數(shù)BCCH_BCH_Message6BCCH_DL_SCH_Message36PCCH_Message8DL_CCCH_Message68DL_DCCH_Message122UL_CCCH_Message16UL_DCCH_Message112UECapabilityInformation10UE_EUTRA_Capability8VarMeasConfig14VarMeasReportList6VarShortMAC_Input6HandoverCommand10HandoverPreparationInformation42UERadioAccessCapabilityInformation10合計474圖4ASN.1編解碼模塊的測試過程及結(jié)果性能分析新的ASN.1編解碼模塊設(shè)計方案,增添了內(nèi)存管理模塊和比特流處理模塊,提高了編碼效率;核心模塊中采用嵌套設(shè)計的編解碼函數(shù)和宏來代替?zhèn)鹘y(tǒng)的基本類型編解碼庫,簡化了函數(shù)調(diào)用。以文獻[2]中RRC消息的編解碼為例,設(shè)定運行環(huán)境為VisualC++6.0,計算解碼開始到編碼結(jié)束時所需時間,ASN.1編解碼模塊的編解碼性能如表3所示??梢姡疚乃O(shè)計的ASN.1編解碼模塊單個比特的編解碼時間均在微秒級,完全滿足LTE協(xié)議棧對實時性的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論