徐方圓 張治中 李 晨
(重慶郵電大學通信與信息工程學院 重慶 400065)
傳統(tǒng)測試基站容量的方法是使用多個終端對基站進行呼叫,缺點是需要布置多個終端測試,成本高且十分復雜。而5G終端模擬器能同時模擬多個用戶的行為,在進行基站測試時,只需要放置幾臺終端模擬設備就可以代替大量的終端,這樣大大減少了測試基站容量的復雜性。在5G終端模擬系統(tǒng)中,隨機接入過程是一個至關重要的過程,只有經過隨機接入過程后UE才能進行上行數(shù)據的傳輸。文獻[1]提出了NB-IOT系統(tǒng)的隨機接入過程的實現(xiàn),主要針對物聯(lián)網中超低復雜性和低吞吐量來設計,具有窄帶隨機接入的特點。文獻[2]提出了基于TD-LTE系統(tǒng)的隨機接入過程的設計與實現(xiàn),主要面向TD-LTE系統(tǒng)中終端的隨機接入,對用戶的接入速度和時延達不到5G低時延高速的標準要求。為了使多個用戶能夠獲得上行同步以及滿足時延標準,5G終端模擬系統(tǒng)中的隨機接入過程具有十分重要的作用。
為更好提高系統(tǒng)資源利用率和管理系統(tǒng)資源,設計出了線程池。在MAC層實現(xiàn)中,創(chuàng)建一個主進程,在主進程中創(chuàng)建任務管理線程、管理線程、監(jiān)控線程,以及一個任務池、空閑線程池、忙碌線程池。對線程池的動態(tài)調度和調整,由監(jiān)控線程負責。將MAC層中的消息事件封裝成任務并激活休眠,是任務管理線程的主要任務。管理線程主要負責從任務池中取任務以及從線程池中取線程,通過條件變量進行同步。監(jiān)控線程主要負責動態(tài)調整和調度線程池。任務池主要將任務封裝成任務對象。空閑線程池主要是負責創(chuàng)建線程對象,忙碌線程池主要對與任務匹配的線程進行處理。當任務線程中的任務到達時,管理線程才會從休眠的狀態(tài)中被激活。
管理線程先將任務線程池中線程ID與空閑線程池中的線程ID賦值,然后將任務池中的函數(shù)指針放到線程池對象中進行匹配,最后將匹配到的任務放到相應的空閑線程池中的線程中。
將空閑線程池中的線程添加到忙碌線程池中,在忙碌線程池中處理匹配的任務。主要思路如下:創(chuàng)建空閑線程池鏈表和忙碌線程池鏈表,在空閑線程池中創(chuàng)建8個用戶線程。此時監(jiān)控進程對空閑線程池中的線程進行判斷,如果創(chuàng)建的用戶線程大于空閑線程池線程總量的80%,則添加20%的空閑線程池線程總量。如果創(chuàng)建的用戶線程小于線程池線程總量的50%,則殺死多余20%空閑線程池線程總量。獲取用戶線程鏈表的頭結點,當?shù)谝粋€任務到達時,將空閑線程池中的第一個用戶線程節(jié)點取出,然后添加到忙碌線程池鏈表頭節(jié)點后面,并將此用戶線程節(jié)點的指針域置為空。當?shù)诙€任務到達時,將空閑線程池中的第二個用戶線程節(jié)點取出,添加到忙碌線程池鏈表的第一個節(jié)點后面,并將添加的第二個用戶線程節(jié)點的指針域置為空。以此類推,當8個用戶同時添加時,只需將空閑線程池中的8個線程添加到忙碌線程池中,由忙碌線程池來處理8個用戶的任務。最終,降低添加用戶線程的時間復雜度,從原來輪詢整個線程鏈表時的O(N)下降到O(1),具體流程如圖1所示。
圖1 線程池設計
圖2 鏈表的設計
隨機接入消息所在的任務對象與空閑線程池中的任務對象,通過管理線程進行匹配。如果匹配成功,將空閑線程池中匹配成功的線程添加到忙碌線程池,并對隨機接入消息進行處理,通過原語發(fā)送到物理層。以隨機接入過程為例子,利用線程池的思想設計具體流程如圖3所示。
圖3 隨機接入過程設計
隨機接入主要采用狀態(tài)分析法對各個交互接口進行分析。以原語的形式對接入狀態(tài)進行設計,5G終端模擬系統(tǒng)中UE的狀態(tài)轉移圖如圖4所示。
圖4 UE狀態(tài)分析
UE剛開機時處于空狀態(tài)NUL,UE的RRC層命令MAC層去測量周圍小區(qū)的功率和頻點。經物理層測量后上報給RRC層,RRC層就會根據測量的值取平均最終得出小區(qū)駐留的結果。此時UE就會處于選擇態(tài)SEL。當小區(qū)駐留后,基站會不斷地廣播MIB消息,UE收到基站廣播的MIB消息后對其進行解析然后命令物理層接收SIB1消息。當物理層接收到SIB1消息并解析成功后,UE由選擇態(tài)SEL變成空閑態(tài)IDL。當UE需要接入到基站時就會從空閑態(tài)IDL變成接入態(tài)ACC,此時UE開始隨機接入。當隨機接入完成時,UE由接入態(tài)ACC變成連接態(tài)CON。當UE連接到小區(qū)時,如果想要斷開無線連接,UE會從連接態(tài)CON變成非激活態(tài)INA。當UE處于非激活態(tài)時,此時UE與核心網保持連接,但斷開了無線連接。本文主要研究UE從接入態(tài)ACC到連接態(tài)CON的過程。
原語是協(xié)議通信的一種形式,也是函數(shù)接口的一種表示方法,運用原語來描述協(xié)議棧之間的消息交互更加準確。當UE發(fā)起隨機接入時,原語設計如圖5所示。具體步驟如下:
圖5 UE原語設計
步驟1物理層在收到PHY_SSB_REQ后,開始SSB的測量,測量的過程中會不斷地向MAC層發(fā)送PHY_SSB_ACK,當收齊SSB后,MAC層選擇隨機接入前導和隨機接入資源,并將選擇的結果和其他參數(shù)通過原語PHY_RACH_REQ發(fā)給物理層。
步驟2物理層在收到隨機接入響應后,組裝原語PHY_RACH_REC發(fā)給MAC,MAC收到該原語后,首先存儲消息中的退避值(無退避值則設為0),然后根據消息中的RAPID是否與前導匹配來判斷隨機接入響應是否接收成功,如果成功,則執(zhí)行定時提前命令以及保存上行授權信息,如果失敗且未達到前導最大發(fā)送次數(shù),重新發(fā)起前導和資源選擇并重發(fā)。最后將接收成功或失敗(達到前導最大發(fā)送次數(shù))的結果通過原語MAC_ACC_IND發(fā)送給RRC層。
步驟3若隨機接入響應接收成功,則RRC會將RRC連接建立請求通過原語MAC_RRC_SETUP發(fā)送至MAC層隊列來建立請求,然后開啟競爭解決定時器。
步驟4當物理層收到Msg4后,進行解碼,將解碼結果通過原語PHY_DL_ACK發(fā)送到MAC層,MAC層收到后停止競爭解決定時器,根據Msg4中攜帶的競爭解決標識或C-RNTI判斷競爭解決是否成功,若成功則組裝原語MAC_CCCH_IND上報給RRC,至此隨機接入過程完成。若不成功且未達到前導最大發(fā)送次數(shù),則再次發(fā)送前導。如果競爭解決成功,則RRC會向MAC層發(fā)送原語MAC_CONNECT_REC,MAC層收到后保存參數(shù),并發(fā)送PHY_CONNECT_REQ給物理層,之后MAC層跳到連接態(tài)。
測試的方案有很多,論文主要基于Linux平臺下進行模擬測試,最終生成測試日志log。然后將傳統(tǒng)用戶模擬與本文設計模擬的線程資源占用率進行對比。整個測試的形式是以消息的傳輸形式體現(xiàn)的。對于基于競爭的隨機接入測試時,首先,按照TS38.331協(xié)議標準配置隨機接入前導資源。其次,當發(fā)送Msg1后,UE開啟時間窗ra-ResponseWindow。在有效的時間窗內,對收到的隨機接入響應的數(shù)據包進行解析。最后對競爭解決進行測試,主要的判斷依據是能否接收到小區(qū)的信息,如果能說明競爭解決成功。
如圖6所示,按照TS38.331協(xié)議配置了發(fā)送前導碼的相關資源。如圖7可知,隨機接入響應能成功解出ra_RNTI并且RAR中的RAPID的值與preamble id相等,說明隨機接入響應成功。Msg3的發(fā)送數(shù)據如圖8所示。當發(fā)送Msg3時,終端側開啟競爭解決定時器并在定時器定時的范圍內成功地接收了Msg4。Msg4的接收如圖9所示,最終UE建立了RRC連接并成功駐留主小區(qū)。
圖6 隨機接入資源選擇測試用例
圖7 RAR PDU解析
圖8 Msg3的發(fā)送數(shù)據
圖9 Msg4的接收
傳統(tǒng)模擬用戶在模擬過程中采用線程的結構,其資源利用情況如圖10所示。本文設計的是5G終端模擬采用的是線程池架構設計,其資源利用情況如圖11所示。結果表明,采用線程池架構實現(xiàn)隨機接入過程的CPU占用率比傳統(tǒng)的使用線程的CPU占用率低30%左右。隨機接入過程中大大減少創(chuàng)建線程和銷毀線程的環(huán)節(jié)。故此方案設計更有利于資源的節(jié)省和提高資源利用效率。
圖10 采用普通線程系統(tǒng)的資源利用情況
圖11 采用線程池系統(tǒng)的資源利用情況
針對資源能耗的問題,文中首先提出了一種線程池的架構對隨機接入過程進行設計,避免頻繁創(chuàng)建線程造成的資源浪費。然后根據UE的狀態(tài),對UE隨機接入過程原語進行設計。最后,對5G終端模擬系統(tǒng)中UE的隨機接入過程進行測試,并對傳統(tǒng)用戶模擬與本文設計模擬的線程資源占用率進行對比。結果表明,采用本文設計的5G終端模擬系統(tǒng)隨機接入過程的資源利用率大大增加,減少線程不必要的資源損耗。