LTE-A 层3中继 RRC 层消息处理模块的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LTE-A 层3中继 RRC 层消息处理模块的设计与实现
陈裕通;刘立程;魏国廷;郝禄国
【摘要】在传统的无线资源控制(RRC)消息处理模块设计方案中,存在着函数调用频繁、内存碎片增多以及开发过程不便于调试等问题。

通过对消息处理模块的设计与实现方法以及针对其以往设计中所存在的问题进行深入研究,根据相关研究结果得出改进消息处理与开发过程效率的相应方法。

最后通过仿真与测试的结果表明,改进的方法在消息处理模块的编解码性能方面能够提高将近17%,且方便了开发阶段的调试过程。

%In traditional design scheme of message handling module of radio resource control (RRC),there are the problems like frequent function call,memory fragments increase and debugging inconvenience and so on.Through design and implementation methods in regard to message handling module as well as in-depth study on the problems in previous designs,the paper acquires the corresponding approach for im-proving the efficiency of message handling and developing process according to correlated study results.At last,it is demonstrated by the sim-ulation and test result that the improved method has about 17% enhancement in performance of encoder/decoder of message handling module, and gives the convenience to the debugging process in development phase.
【期刊名称】《计算机应用与软件》
【年(卷),期】2015(000)006
【总页数】4页(P149-151,159)
【关键词】层 3 中继;消息处理模块;ASN.1 编解码;XML
【作者】陈裕通;刘立程;魏国廷;郝禄国
【作者单位】广东工业大学信息工程学院广东广州 510006; 广州民航职业技术学院广东广州 510403;广东工业大学信息工程学院广东广州 510006;广东工业大学信息工程学院广东广州 510006;广东工业大学信息工程学院广东广州510006
【正文语种】中文
【中图分类】TP319
相比以往的移动通信系统,LTE-Advanced可能使用覆盖能力较差的高频载波以及支持高数据速率业务的需求,因此可能需要部署更多的站点[1]。

基站与核心网之间的连接方式如果仍然采用传统的有线连接方式,那在部署的难度与成本上将会给运营商带来较大的困难,并且限制了其站点部署的灵活性,因此需要引入某种技术来解决上述出现的问题。

中继技术不仅能够解决部署灵活性和成本的问题,还有非常广泛的应用前景,如用户覆盖增强与系统容量增强[2]。

层3中继作为当下的一个研究热点,它与层2中继相比主要是增加了RRC层,这使得层3中继除了包含层2中继所具有的功能外,还将包含更多的功能:具有eNB的所有功能以及部分UE的功能,减少了终端的RRC连接建立与切换所需的时间。

由于LTE-A层3中继与终端交互的消息众多,而消息处理模块作为RRC层中的一个关键模块,其设计与实现的方法将关系到整个LTE系统的性能。

在以往的消息处理模块设计方案中,存在着函数调用频繁、内存碎片增多以及开发过程不便于调试等问题。

本文将针对这些问题,在深入研究消息处理模块的设计与实现方法基础上,提出了通过“优化转换规则”、“恰当使用宏函数”、“调试中加入XML打
印语句”以及“优化内存管理”等方法以实现对消息处理模块的改进。

最后通过仿真与测试的结果验证了这些方法对于提高消息处理模块的消息处理与开发调试阶段的效率确实起到了一定的成效。

Type I relay 和 Type II relay为LTE-A系统中所提到的中继类型。

在现阶段,将Type I relay引入到未来移动蜂窝系统则是LTE-A的主要目标。

本文所研究的层3中继即为Type I relay。

根据中国移动给予设备商的技术要求可知,国内LTE系统将选用Alt2[3]的架构。

从图1可以看到,RRC层位于中继空口控制面的协议栈上,而消息处理模块为RRC层中的一个关键模块,通过它可以将RRC SDU转换为RRC PDU或者将RRC PDU转换为RRC SDU。

因此,设计并实现一个正确、高效以及功能完善的消息处理模块对于开发LTE-A层3中继协议栈软件起着至关重要的作用。

以RRC SDU转换为RRC PDU为例,RRC SDU从图2的上方输入到消息处理模块后,首先由PDU处理模块将其转换为原始的RRC PDU,如果在转换的过程中发生了错误,则对其进行错误处理,没有错误则进入到RRC填充与去填充模块。

在填充与去填充模块中,如果检测到该消息为PCCH或BCCH信道上的消息且该原始RRC PDU没有填满一个传输块,则对其进行填充。

最后,RRC PDU经L2处理后由L1的PHY发送出去。

由于PDU处理模块为设计的核心部分,故将在文中重点阐述。

消息处理模块的核心部分即为PDU处理子模块,而根据3GPP TS36.331协议可知其实质即为ASN.1的编解码。

ASN.1是一种 ISO/ITU-T的标准。

该语言与C/C++类似,可定义具有复杂结构的数据类型,且不同的数据类型之间还可以有像C++那样的继承关系。

在LTE系统中使用到ASN.1的协议有RRC、S1-AP以及X2-AP。

因为它是以一种独立于计算机架构和语言的方式来描述消息结构类型的,故需要将其转换为计算机语言,如
C/C++/Java。

对于中继的RRC层,其ASN.1使用了UPER[4]编码规则(即Unsigned PER)。

PER是在BER的基础上所设计的一种ASN.1编码规则,它的优势是可以有效地减少消息的编码开销。

图3为PER的编码结构。

其中,PLC的每个域都是比特串而
不是八位组串,且每个域都是可选的[5]。

采用UPER方式所编码出来的数据会按
其被编码的次序顺序相连,不像Signed PER(对齐编码方式)那样需要填充数据以
达到每个信元编码后都字节对齐,只需在编码完成后所生成的比特数据长度不为8的倍数时,在其后面填“0”以达到8的倍数[6]。

编码结构中的Preamble用来标记结构类型中是否有扩展项、可选项以及缺省值;Length标记Contents部分的长度; Contents部分可以对基本类型直接编码,
也可以对结构类型采用嵌套编码,甚至可以包含PLC三个部分。

ASN.1编解码的实现方案有多种,如直接编写代码、商业编译软件等,但商业编
译软件一般并不是针对LTE系统的,对LTE系统而言存在价格高、冗余大和调试
与维护不便等问题,因而需要进行一定的修改。

本文将把ASN.1编解码作为研究
对象,对其进行设计与实现。

根据PER相关的ITU-T规范文档[4,7,8],我们实现过程的第一步是将TS36.331
协议里用ASN.1语法所描述的消息转换为C语言代码。

按照表1的转换规则在消息相应的.h文件中转换为其C语言的描述,并在每一条消息的.c文件中给该消息
在编解码过程中所需的数据结构进行相应的赋值。

基于“空间换时间”的思想,将表1的ASN.1转换规则与文献[5]相比做了如下一些改进:⑴ INTEGER的转换类型改为long。

因为INTEGER类型分为包含负数和不包含负数两种。

当包含负数时,最小值为-140,最大值为91;不包含负数时,最大值能达到4 294 967 295,故考虑用long型。

在描述INTEGER属性的结构
体中将专门用一个成员变量来指明其是unsigned还是signed,以提高对该类型
的处理效率。

⑵ BIT STRING的转换规则中增加“int bits_unused ”。

使用该变量来记录二进制串中没有使用到的二进制位数,以简化该类型的编解码算法设计,从而提高编解码的效率。

⑶ CHOICE中改用枚举类型枚举CHOICE中供选择的成员,以保证代码的简洁性,方便调试与阅读。

在改进的方法中,还将为36.331协议里的每一条消息类型设计一个描述其属性的数据结构,每条RRC消息将根据自己各自的情况,在其.c文件中对它所用到的类型的属性进行相关的赋值,这样就能很好地提高ASN.1编解码的编解码效率。

宏函数在程序的运行过程中会长时间地占用内存资源,一般在编写代码时并不建议随便使用。

但在中继的RRC层设计中,因需要处理的数据庞大,在数据编解码过程中会频繁地进行一些操作,如将数据写入到缓冲区,从缓冲区中读数据等,这些操作普遍存在于各类型消息的编解码函数中,因此可以使用宏函数来实现。

在ASN.1编解码的代码未release之前需要对其进行足够地仿真与测试,以确保其本身的正确性。

为了在调试与出错的时候能直观与准确地跟踪消息赋值情况,可以在代码的调试阶段加入XML打印语句,而在release的时候再通过宏把该功能去掉。

在嵌入式系统中,内存资源往往十分紧缺,如果内存分区不合理,那么经常会产生内存碎块,这是ASN.1编解码设计中需要充分注意的。

大量的指针被RRC消息的.h文件所使用,导致解码时内存被频繁地申请,而如果使用ANSI C中标准库函数,就容易生成碎片,使系统的开销增大,因此,需要专门设计一个独立的内存管理模块。

在内存管理模块的设计中,可以使用一个专门的数组作为ASN.1编解码模块的内存区,并用一个变量指示其当前可用的空间。

该模块能提供初始化、内存分配和释放等3种功能函数。

在编解码过程中,对内存的操作均在专用内存区中,直至编解码过程结束时被释放。

图4为ASN.1编解码模块的总体设计结构图。

根据协议TS36.331可知,并不是所有信道上的消息经过ASN.1编码后都能传递给下一层。

对于PCCH和BCCH信道的消息,如果编码的RRC消息没有填满一个传输块(24 bit),那么RRC层将需要填充比特使消息为填充块的整数倍。

根据协议TS36.331,当在BCCH、PCCH、CCCH或者MCCH上收到一条无效的RRC消息时,只需要直接忽略该消息。

本文将采用如图5所示的测试方法对设计的消息处理模块进行互通性的测试,以确定其能与别的系统的消息处理模块进行互通。

测试的对象选取CCCH上传输的RRCConnectionSetup消息,因为该消息几乎包含所有的ASN.1数据类型且包含的复合结构比较多,有很好的代表性。

PDU的赋值选用Objective System的ASN1VE软件,并在其编码方式中选择3GPP R10,对消息中的各信息单元进行随机赋值,得到16进制串{0x70,0x1B,0x84,0x00,0x20,0x0C,0xFF,0x00,0x40,0x04},然后将该串数据作为RRC PDU,先后进行ASN.1的解码与编码操作。

在Visual C++ 6.0下建立仿真环境,新建ASN.1编解码工程并运行测试程序,得到如图6、图7的测试结果。

比较测试前后的数据以及查看XML打印函数所打印的消息赋值情况可以得知编解码正确,与Objective System可以达到互通。

通过ASN1VE赋值得到了500个测试数据,对这500个测
本文对LTE-A层3中继的RRC层消息处理模块进行了设计与实现,并针对以往消息处理模块设计中所存在的问题,提出了几点改进方法。

最后通过仿真与测试结果验证了这些方法的有效性,对层3中继高层协议栈的实现具有重要的意义。

在下一步的工作中,将结合层3中继RRC层的过程处理模块在ARM目标板上进行运行与调试,因此研究的工作仍然还有待进一步地完善。

相关文档
最新文档