徐方圓 張治中 李 晨
(重慶郵電大學通信與信息工程學院 重慶 400065)
傳統測試基站容量的方法是使用多個終端對基站進行呼叫,缺點是需要布置多個終端測試,成本高且十分復雜。而5G終端模擬器能同時模擬多個用戶的行為,在進行基站測試時,只需要放置幾臺終端模擬設備就可以代替大量的終端,這樣大大減少了測試基站容量的復雜性。在5G終端模擬系統中,隨機接入過程是一個至關重要的過程,只有經過隨機接入過程后UE才能進行上行數據的傳輸。文獻[1]提出了NB-IOT系統的隨機接入過程的實現,主要針對物聯網中超低復雜性和低吞吐量來設計,具有窄帶隨機接入的特點。文獻[2]提出了基于TD-LTE系統的隨機接入過程的設計與實現,主要面向TD-LTE系統中終端的隨機接入,對用戶的接入速度和時延達不到5G低時延高速的標準要求。為了使多個用戶能夠獲得上行同步以及滿足時延標準,5G終端模擬系統中的隨機接入過程具有十分重要的作用。
為更好提高系統資源利用率和管理系統資源,設計出了線程池。在MAC層實現中,創建一個主進程,在主進程中創建任務管理線程、管理線程、監控線程,以及一個任務池、空閑線程池、忙碌線程池。對線程池的動態調度和調整,由監控線程負責。將MAC層中的消息事件封裝成任務并激活休眠,是任務管理線程的主要任務。管理線程主要負責從任務池中取任務以及從線程池中取線程,通過條件變量進行同步。監控線程主要負責動態調整和調度線程池。任務池主要將任務封裝成任務對象。空閑線程池主要是負責創建線程對象,忙碌線程池主要對與任務匹配的線程進行處理。當任務線程中的任務到達時,管理線程才會從休眠的狀態中被激活。
管理線程先將任務線程池中線程ID與空閑線程池中的線程ID賦值,然后將任務池中的函數指針放到線程池對象中進行匹配,最后將匹配到的任務放到相應的空閑線程池中的線程中。
將空閑線程池中的線程添加到忙碌線程池中,在忙碌線程池中處理匹配的任務。主要思路如下:創建空閑線程池鏈表和忙碌線程池鏈表,在空閑線程池中創建8個用戶線程。此時監控進程對空閑線程池中的線程進行判斷,如果創建的用戶線程大于空閑線程池線程總量的80%,則添加20%的空閑線程池線程總量。如果創建的用戶線程小于線程池線程總量的50%,則殺死多余20%空閑線程池線程總量。獲取用戶線程鏈表的頭結點,當第一個任務到達時,將空閑線程池中的第一個用戶線程節點取出,然后添加到忙碌線程池鏈表頭節點后面,并將此用戶線程節點的指針域置為空。當第二個任務到達時,將空閑線程池中的第二個用戶線程節點取出,添加到忙碌線程池鏈表的第一個節點后面,并將添加的第二個用戶線程節點的指針域置為空。以此類推,當8個用戶同時添加時,只需將空閑線程池中的8個線程添加到忙碌線程池中,由忙碌線程池來處理8個用戶的任務。最終,降低添加用戶線程的時間復雜度,從原來輪詢整個線程鏈表時的O(N)下降到O(1),具體流程如圖1所示。

圖1 線程池設計

圖2 鏈表的設計
隨機接入消息所在的任務對象與空閑線程池中的任務對象,通過管理線程進行匹配。如果匹配成功,將空閑線程池中匹配成功的線程添加到忙碌線程池,并對隨機接入消息進行處理,通過原語發送到物理層。以隨機接入過程為例子,利用線程池的思想設計具體流程如圖3所示。

圖3 隨機接入過程設計
隨機接入主要采用狀態分析法對各個交互接口進行分析。以原語的形式對接入狀態進行設計,5G終端模擬系統中UE的狀態轉移圖如圖4所示。

圖4 UE狀態分析
UE剛開機時處于空狀態NUL,UE的RRC層命令MAC層去測量周圍小區的功率和頻點。經物理層測量后上報給RRC層,RRC層就會根據測量的值取平均最終得出小區駐留的結果。此時UE就會處于選擇態SEL。當小區駐留后,基站會不斷地廣播MIB消息,UE收到基站廣播的MIB消息后對其進行解析然后命令物理層接收SIB1消息。當物理層接收到SIB1消息并解析成功后,UE由選擇態SEL變成空閑態IDL。當UE需要接入到基站時就會從空閑態IDL變成接入態ACC,此時UE開始隨機接入。當隨機接入完成時,UE由接入態ACC變成連接態CON。當UE連接到小區時,如果想要斷開無線連接,UE會從連接態CON變成非激活態INA。當UE處于非激活態時,此時UE與核心網保持連接,但斷開了無線連接。本文主要研究UE從接入態ACC到連接態CON的過程。
原語是協議通信的一種形式,也是函數接口的一種表示方法,運用原語來描述協議棧之間的消息交互更加準確。當UE發起隨機接入時,原語設計如圖5所示。具體步驟如下:

圖5 UE原語設計
步驟1物理層在收到PHY_SSB_REQ后,開始SSB的測量,測量的過程中會不斷地向MAC層發送PHY_SSB_ACK,當收齊SSB后,MAC層選擇隨機接入前導和隨機接入資源,并將選擇的結果和其他參數通過原語PHY_RACH_REQ發給物理層。
步驟2物理層在收到隨機接入響應后,組裝原語PHY_RACH_REC發給MAC,MAC收到該原語后,首先存儲消息中的退避值(無退避值則設為0),然后根據消息中的RAPID是否與前導匹配來判斷隨機接入響應是否接收成功,如果成功,則執行定時提前命令以及保存上行授權信息,如果失敗且未達到前導最大發送次數,重新發起前導和資源選擇并重發。最后將接收成功或失敗(達到前導最大發送次數)的結果通過原語MAC_ACC_IND發送給RRC層。
步驟3若隨機接入響應接收成功,則RRC會將RRC連接建立請求通過原語MAC_RRC_SETUP發送至MAC層隊列來建立請求,然后開啟競爭解決定時器。
步驟4當物理層收到Msg4后,進行解碼,將解碼結果通過原語PHY_DL_ACK發送到MAC層,MAC層收到后停止競爭解決定時器,根據Msg4中攜帶的競爭解決標識或C-RNTI判斷競爭解決是否成功,若成功則組裝原語MAC_CCCH_IND上報給RRC,至此隨機接入過程完成。若不成功且未達到前導最大發送次數,則再次發送前導。如果競爭解決成功,則RRC會向MAC層發送原語MAC_CONNECT_REC,MAC層收到后保存參數,并發送PHY_CONNECT_REQ給物理層,之后MAC層跳到連接態。
測試的方案有很多,論文主要基于Linux平臺下進行模擬測試,最終生成測試日志log。然后將傳統用戶模擬與本文設計模擬的線程資源占用率進行對比。整個測試的形式是以消息的傳輸形式體現的。對于基于競爭的隨機接入測試時,首先,按照TS38.331協議標準配置隨機接入前導資源。其次,當發送Msg1后,UE開啟時間窗ra-ResponseWindow。在有效的時間窗內,對收到的隨機接入響應的數據包進行解析。最后對競爭解決進行測試,主要的判斷依據是能否接收到小區的信息,如果能說明競爭解決成功。
如圖6所示,按照TS38.331協議配置了發送前導碼的相關資源。如圖7可知,隨機接入響應能成功解出ra_RNTI并且RAR中的RAPID的值與preamble id相等,說明隨機接入響應成功。Msg3的發送數據如圖8所示。當發送Msg3時,終端側開啟競爭解決定時器并在定時器定時的范圍內成功地接收了Msg4。Msg4的接收如圖9所示,最終UE建立了RRC連接并成功駐留主小區。

圖6 隨機接入資源選擇測試用例

圖7 RAR PDU解析

圖8 Msg3的發送數據

圖9 Msg4的接收
傳統模擬用戶在模擬過程中采用線程的結構,其資源利用情況如圖10所示。本文設計的是5G終端模擬采用的是線程池架構設計,其資源利用情況如圖11所示。結果表明,采用線程池架構實現隨機接入過程的CPU占用率比傳統的使用線程的CPU占用率低30%左右。隨機接入過程中大大減少創建線程和銷毀線程的環節。故此方案設計更有利于資源的節省和提高資源利用效率。

圖10 采用普通線程系統的資源利用情況

圖11 采用線程池系統的資源利用情況
針對資源能耗的問題,文中首先提出了一種線程池的架構對隨機接入過程進行設計,避免頻繁創建線程造成的資源浪費。然后根據UE的狀態,對UE隨機接入過程原語進行設計。最后,對5G終端模擬系統中UE的隨機接入過程進行測試,并對傳統用戶模擬與本文設計模擬的線程資源占用率進行對比。結果表明,采用本文設計的5G終端模擬系統隨機接入過程的資源利用率大大增加,減少線程不必要的資源損耗。