[方一鳴 張涵嫣 谷小勇]
基于TTCN-3的RLC層協(xié)議一致性測(cè)試*
[方一鳴 張涵嫣 谷小勇]
在系統(tǒng)級(jí)測(cè)試儀表的開(kāi)發(fā)過(guò)程中,對(duì)協(xié)議棧各層功能的測(cè)試和驗(yàn)證是關(guān)鍵性一步,其中對(duì)RLC(Radio Link Control)層的功能測(cè)試也不例外,依據(jù)3GPP 最新發(fā)布的Release 12標(biāo)準(zhǔn),首先搭建了基于TTCN-3(Testing and Test Control Notation version 3)的單層測(cè)試平臺(tái),并在此平臺(tái)上對(duì)分組數(shù)據(jù)匯聚協(xié)議層功能進(jìn)行了協(xié)議一致性測(cè)試,通過(guò)測(cè)試結(jié)果來(lái)驗(yàn)證RLC層核心功能實(shí)現(xiàn)的正確性。
TTCN-3 一致性測(cè)試 分組數(shù)據(jù)匯聚協(xié)議層 數(shù)據(jù)處理
方一鳴
碩士研究生,重慶郵電大學(xué),重慶市移動(dòng)通信技術(shù)重點(diǎn)實(shí)驗(yàn)室,主要研究方向:TD-LTE系統(tǒng)協(xié)議棧開(kāi)發(fā),RRM一致性測(cè)試儀表開(kāi)發(fā)。
張涵嫣
碩士研究生,重慶郵電大學(xué),重慶市移動(dòng)通信技術(shù)重點(diǎn)實(shí)驗(yàn)室,主要研究方向:TD-LTE系統(tǒng)協(xié)議棧開(kāi)發(fā),RRM一致性測(cè)試儀表開(kāi)發(fā)。
谷小勇
碩士研究生,重慶郵電大學(xué),重慶市移動(dòng)通信技術(shù)重點(diǎn)實(shí)驗(yàn)室,主要研究方向:TD-LTE系統(tǒng)協(xié)議棧開(kāi)發(fā),RRM一致性測(cè)試儀表開(kāi)發(fā)。
無(wú)線鏈路控制層(Radio Link Control,RLC)位于協(xié)議棧分組數(shù)據(jù)匯聚協(xié)議層(Packet Data Convergence Protocol,PDCP)和媒體接入控制層(Medium Access Control,MAC)之間,功能是對(duì)來(lái)自PDCP層的RLC PDU(Protocol Data Unit,PDU)進(jìn)行格式化,以適應(yīng)MAC層所提供資源的大?。?]。本文基于TD-LTE TTCN擴(kuò)展測(cè)試儀表開(kāi)發(fā),通過(guò)實(shí)現(xiàn)網(wǎng)絡(luò)端協(xié)議棧各個(gè)層功能來(lái)驗(yàn)證終端功能的正確性,RLC層位于LTE協(xié)議棧的接入層,它的功能能否正確實(shí)現(xiàn)是整個(gè)測(cè)試儀表開(kāi)發(fā)的重要部分。
本文以RLC層AM模式下數(shù)據(jù)的級(jí)聯(lián)重組功能和ARQ(Automatic Repeat reQuest)功能為例,首先在TTWorkBench測(cè)試軟件上搭建了基于TTCN-3的單層測(cè)試平臺(tái),并對(duì)分組數(shù)據(jù)匯聚協(xié)議層功能進(jìn)行了協(xié)議一致性測(cè)試,通過(guò)比較TTCN-3收到的消息與期望收到的消息內(nèi)容的匹配程度來(lái)判斷來(lái)驗(yàn)證RLC層核心功能實(shí)現(xiàn)的正確性[2]。
RLC層功能測(cè)試平臺(tái)的搭建主要有3部分組成,它們分別是測(cè)試模塊、中轉(zhuǎn)模塊以及被測(cè)模塊[3]。其中TTCN-3作為測(cè)試系統(tǒng)的控制部分,主要實(shí)現(xiàn)測(cè)試?yán)牧鞒炭刂埔约皡f(xié)議棧RRC層和非接入層的功能。TTCN-3與主控制器(Main Controller,MC)之間通過(guò)用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,UDP)進(jìn)行通信,包括多個(gè)編號(hào)各異的端口。MC主要用于TTCN-3與協(xié)議棧處理單元之間的數(shù)據(jù)轉(zhuǎn)發(fā)工作[4]。具體測(cè)試模塊如圖1所示。
圖1 基于TTCN-3的單層測(cè)試平臺(tái)
測(cè)試系統(tǒng)的核心組件說(shuō)明如下:
TTCN-3執(zhí)行部分(TTCN-3 Executable,TE):編寫測(cè)試數(shù)據(jù)以及測(cè)試用例。測(cè)試用例加載過(guò)后,在此界面對(duì)其進(jìn)行調(diào)試、執(zhí)行。
系統(tǒng)適配器(System Adapter,SA):實(shí)現(xiàn)TTCN-3執(zhí)行部分與被測(cè)系統(tǒng)之間的通信,在系統(tǒng)適配器上可以調(diào)用TTCN-3運(yùn)行接口(TTCN-3 Runtime Interface,TRI)提供的應(yīng)用程序編程接口(Application Programming Interface,API)函數(shù)。
TTCN-3執(zhí)行模塊主要負(fù)責(zé)對(duì)測(cè)試套進(jìn)行加載,同時(shí)提供執(zhí)行過(guò)程中的異常信息判斷。適配器則負(fù)責(zé)與通信接口進(jìn)行連接,以保證TTCN-3測(cè)試平臺(tái)和待測(cè)模塊或系統(tǒng)能夠進(jìn)行正常的信令交互,從而為整個(gè)測(cè)試過(guò)程的順利進(jìn)行提供保障。
本文實(shí)現(xiàn)的RLC模塊屬于底層協(xié)議和網(wǎng)絡(luò)的支持部分,負(fù)責(zé)實(shí)現(xiàn)無(wú)線接口的通信。測(cè)試方法上主要采用回環(huán)測(cè)試,即在TTCN-3中構(gòu)造數(shù)據(jù)包發(fā)往下層,在RLC層處理結(jié)束之后,將其處理結(jié)果返回TTCN-3,在TTCN-3中把RLC層對(duì)數(shù)據(jù)包處理的結(jié)果與事先按照RLC層協(xié)議分析的正確結(jié)果進(jìn)行匹配,最后以日志圖的形式顯示出來(lái)。下面以分段級(jí)聯(lián)、重組、狀態(tài)報(bào)告和重傳為例來(lái)進(jìn)行測(cè)試。
2.1 分段級(jí)聯(lián)和重組
在TTCN-3中構(gòu)造5個(gè)SDU發(fā)送給RLC層,其大小分別為3、1、2、1、2個(gè)字節(jié),分別由{0x01,0x02,0x03}、{0x04}、{0x05,0x06}、{0x07}、{0x08,0x09}填充,圖2中第一條數(shù)據(jù)流是原始數(shù)據(jù),前面用矩形框標(biāo)注的部分是系統(tǒng)消息自帶的數(shù)據(jù),可以看到后面依次發(fā)出的5個(gè)SDU。RLC被測(cè)模塊收到這5個(gè)SDU后先將其存儲(chǔ)在發(fā)送緩存中。TTCN-3作為外部環(huán)境模擬MAC層給RLC層指示傳輸資源大小,RLC層根據(jù)其指示的資源大小對(duì)數(shù)據(jù)進(jìn)行分段級(jí)聯(lián)[5],此測(cè)試?yán)蠺TCN-3先后分別指示了四次傳輸時(shí)機(jī),指示的資源大小依次為:4字節(jié)、8字節(jié)、6字節(jié)、4字節(jié)。因此RLC層既需要對(duì)SDU進(jìn)行分段又需要進(jìn)行級(jí)聯(lián),最后一共組裝了4個(gè)PDU,按照序列號(hào)從小到大分別為:{0x88,0x00,0x01,0x02}、{0x9c,0x01,0x80,0x10,0x01,0x03,0x04,0x05}、{0x94,0x02,0x00,0x10,0x06,0x07}、{0x80,0x03,0x08,0x09}。
依據(jù)AM模式數(shù)據(jù)PDU的各個(gè)位域的結(jié)構(gòu),4個(gè)PDU的FI域(2bit)分別為:01、11、11、10。E域分別:0、(1、1、0)、(1和0)、0,第2個(gè)PDU有3個(gè)不同的數(shù)據(jù)域,所以有3個(gè)擴(kuò)展域,第3個(gè)PDU有2個(gè)不同的數(shù)據(jù)域,所以有2個(gè)擴(kuò)展域。SN域(選擇協(xié)議中的10bit)依次為0000000000(0號(hào)PDU)、0000000001(1號(hào)PDU)、0000000010(2號(hào)PDU)、0000000011(3號(hào)PDU)。LI域(11bit,多于一個(gè)數(shù)據(jù)域時(shí)才存在),第一個(gè)和最后一個(gè)PDU都只有一個(gè)數(shù)據(jù)域,所以沒(méi)有LI域,第2個(gè)PDU有兩個(gè)LI域,換算為十進(jìn)制分別為1和1,代表該P(yáng)DU中有三個(gè)不同的數(shù)據(jù)域并且第一個(gè)數(shù)據(jù)域和第二個(gè)數(shù)據(jù)域的長(zhǎng)度均為1個(gè)字節(jié),同理第3個(gè)LI域?yàn)?,代表該P(yáng)DU中有兩個(gè)不同的數(shù)據(jù)域并且第一個(gè)數(shù)據(jù)域的長(zhǎng)度為1個(gè)字節(jié)[6]。按照協(xié)議,奇數(shù)個(gè)LI域時(shí),頭部信息中最后一個(gè)LI域之后要填充4個(gè)bit位(這里我們填0000),即在第一個(gè)PDU和最后一個(gè)PDU頭部信息的最后四個(gè)比特位填充4個(gè)比特的零值。從圖2中部的兩條數(shù)據(jù)流可以看出,經(jīng)過(guò)分段級(jí)聯(lián)之后的PDU以八位組即字節(jié)組的形式顯示。這里用矩形框標(biāo)注為了區(qū)分4個(gè)PDU的八位組形式,該分段級(jí)聯(lián)的結(jié)果和預(yù)期的結(jié)果是匹配成功的,說(shuō)明RLC層分段級(jí)聯(lián)的功能得到正確實(shí)現(xiàn)。
根據(jù)圖1中RLC被測(cè)模塊部分的原理圖,在驗(yàn)證了分段級(jí)聯(lián)的功能之后,我們編寫測(cè)試?yán)苯永们懊娣侄渭?jí)聯(lián)之后的數(shù)據(jù)進(jìn)行逆向過(guò)程,看其能否正確進(jìn)行SDU的重組過(guò)程。重組的過(guò)程是根據(jù)PDU的SN號(hào)進(jìn)行的,如果由于某一個(gè)PDU的丟失導(dǎo)致一個(gè)或者幾個(gè)SDU不能重組則進(jìn)行丟棄,并且在AM模式下要組裝狀態(tài)報(bào)告通知發(fā)送端進(jìn)行重傳,關(guān)于狀態(tài)報(bào)告和重傳我們將在下面的小節(jié)進(jìn)行測(cè)試。
從圖2的最后兩條數(shù)據(jù)流中可以看出,RLC層利用上面測(cè)試?yán)蟹侄渭?jí)聯(lián)之后的數(shù)據(jù)進(jìn)行重組的SDU和最原始的SDU是完全匹配的,說(shuō)明RLC層重組級(jí)聯(lián)的功能得以正確實(shí)現(xiàn)。
圖2 分段級(jí)聯(lián)和重組測(cè)試
2.2狀態(tài)報(bào)告和重傳
在TTCN-3中組裝4個(gè)PDU,PDU#1:{0x88,0x00,0x01,0x02},PDU#2:{0x9c,0x01,0x80,0x10,0x01,0x03,0x04,0x05},PDU#3:{0x94,0x02,0x00,0x10,0x06,0x07},PDU#4:{0x80,0x03,0x08,0x09}。前面3個(gè)PDU原樣發(fā)送,在發(fā)送第4個(gè)PDU的時(shí)候TTCN-3在該P(yáng)DU中包含輪詢位,即PDU#4:{0xA0,0x03,0x08,0x09}。
根據(jù)控制PDU的格式,發(fā)現(xiàn)輪詢比特P域?yàn)?,此時(shí)被測(cè)模塊就要根據(jù)當(dāng)前的接收狀況組裝狀態(tài)報(bào)告。在接收端,截止到收到發(fā)送端的輪詢?yōu)橹?,PDU#1和PDU#2都已經(jīng)確認(rèn)收到,PDU#3沒(méi)有收到。根據(jù)協(xié)議中狀態(tài)報(bào)告的格式進(jìn)行填充:D/C域?yàn)?;CPT域?yàn)?00;ACK_ SN域?yàn)?,意味著后面NACK_SN域表示的是PDU#4之前所有PDU的接收情況,即PDU#4之前的PDU#1和PDU#2都已經(jīng)收到了;E域?yàn)?表示后面有NACK_SN和E1以及E2的組合;NACK_SN為2,且E1和E2均為0表示整個(gè)PDU#3都沒(méi)有收到。最終組裝的狀態(tài)報(bào)告為{0x00,0x0E,0x01,0x00}。如圖3所示,為方便描述,這里僅截取PDU#4和狀態(tài)報(bào)告返回的數(shù)據(jù)流,第一條數(shù)據(jù)流為TTCN-3模擬發(fā)送端向RLC被測(cè)模塊發(fā)送的PDU#4,從第2條數(shù)據(jù)流可以看出RLC被測(cè)模塊作為接收端成功組裝了狀態(tài)報(bào)告。
圖3 狀態(tài)報(bào)告測(cè)試結(jié)果圖
被測(cè)模塊成功組裝了狀態(tài)報(bào)告{0x00,0x0E,0x01,0x00},即整個(gè)PDU#3都沒(méi)有收到,這里我們要進(jìn)行對(duì)該P(yáng)DU#3的重傳。首先TTCN-3模擬外部環(huán)境給RLC層配置了4個(gè)SDU,RLC被測(cè)模塊對(duì)SDU分段級(jí)聯(lián)結(jié)束之后將這4個(gè)PDU重新發(fā)送回TTCN-3。然后TTCN-3構(gòu)造關(guān)于上述4個(gè)PDU的狀態(tài)報(bào)告發(fā)往RLC被測(cè)模塊,其中只有PDU#3沒(méi)有收到,檢查RLC層是否正確進(jìn)行了PDU#3的重傳功能,測(cè)試結(jié)果如圖4所示。
圖4中第1條是TTCN-3配置給RLC被測(cè)模塊的數(shù)據(jù),第2條是RLC被測(cè)模塊經(jīng)過(guò)分段級(jí)聯(lián)和重組之后回送給TTCN-3的數(shù)據(jù)。然后TTCN-3作為外部環(huán)境模擬接收端給RLC被測(cè)模塊發(fā)送了狀態(tài)報(bào)告{0x00,0x0E,0x01,0x00},RLC被測(cè)模塊收到狀態(tài)報(bào)告之后解析出各個(gè)數(shù)據(jù)域,重新對(duì)PDU#3進(jìn)行重傳。可以看到在最后一條數(shù)據(jù)流中,PDU#3被正確重傳,因?yàn)檫@里沒(méi)有別的PDU需要傳輸,所以PDU#3的頭部信息是沒(méi)有任何改變的。
圖4 重傳測(cè)試結(jié)果圖
本文首先提出了RLC層功能測(cè)試對(duì)于系統(tǒng)級(jí)測(cè)試儀表開(kāi)發(fā)的重要性,隨后搭建了RLC層的單層測(cè)試平臺(tái),并在此平臺(tái)上對(duì)分組數(shù)據(jù)匯聚協(xié)議層功能進(jìn)行了協(xié)議一致性測(cè)試,通過(guò)測(cè)試結(jié)果來(lái)驗(yàn)證RLC層核心功能實(shí)現(xiàn)的正確性。在今后的工作中,還需對(duì)如何節(jié)省緩存資源以及上下層之間內(nèi)存的合理分配等問(wèn)題進(jìn)行更加深入的研究。
1 3GPP TS 36.323 V12.4.0,Packet Data Convergence Protocol (PDCP)specification,2015.07
2 陳發(fā)堂,牛勇清,韓娜娜.協(xié)議一致性測(cè)試平臺(tái)的搭建及仿真實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2014,40(4):137-140
3 申丹.TD-LTE協(xié)議測(cè)試平臺(tái)中RLC實(shí)體的研究與實(shí)現(xiàn)[D].北京: 北京郵電大學(xué),2013
4 董宏成,張寧,李小文.TTCN-3在RRC協(xié)議一致性測(cè)試中的應(yīng)用[J].電子技術(shù)應(yīng)用,2013,39(7):117-120
5 劉斌濤,張形形,聶文霞.TD-LTE系統(tǒng)RLC層協(xié)議一致性測(cè)試[J].光通信研究,2015(5):67-70
6 3GPP TS 36.322 V12.3.0,Radio Link Control (RLC)protocol specification,2015.09
10.3969/j.issn.1006-6403.2016.08.012
2016-07-14)
國(guó)家科技重大專項(xiàng)資助項(xiàng)目“TD-LTE TTCN 擴(kuò)展測(cè)試集儀表開(kāi)發(fā)(無(wú)線資源管理部分)”(No.2012ZX03001024)