APP下载

一种协议栈RRC状态机的分析与实现

2018-02-22汪小军祝颂东

无线互联科技 2018年23期
关键词:状态机

汪小军 祝颂东

摘 要:无线资源控制(RRC)层是协议栈空口部分控制面的重要组成部分。文章首先介绍了RRC层的作用,之后提出了一种RRC状态机的实现原理,最后给出了状态机的实现并通过测试验证。

关键词:协议栈;RRC;状态机

随着通信技术发展,移动通信已经与人们的日常生活密不可分。地面移动通信从GSM演进到4G/5G,移动通信系统基站协议栈的无线资源控制(Radio Resource Control,RRC)层作为空中接口部分控制面功能的实际载体,负责管理整个空口资源及无线链路的执行过程[1]。因此,开发好RRC状态机对整个通信系统协议栈的稳定和高效运行有着重要的作用。

1 RRC层协议分析与状态机实现

RRC是3层控制面协议,是移动通信系统中空中接口部分协议栈控制面功能的实际载体,负责空中接口无线链路过程的执行。主要负责无线资源的分配与管理、系统消息广播、寻呼、RRC连接建立和释放、RRC连接移动性管理(小区更新、GRA更新)、RB管理、NAS层消息传递、测量控制、加密等[2]。

RRC层主要分为空闲状态和连接状态,其中连接状态又细分为RRC-Cell_Shared,RRC-Cell_Dedicated 和 RRC-GRA_PCH 3种状态。RRC连接模式下,RRC层会执行相关的过程,进而实现相关的功能。

RRC消息的触发和执行使用一个线程进行控制,由状态机进行过程执行的决策控制。所以,状态机的实现是开发协议栈RRC层的核心部分,通过接收RRC消息的到来以及根据RRC消息的接收情况来触发相应的RRC处理过程,从而实现状态机的跳转,维持协议栈的运行。另外,在收到上层或下层实时性的请求时,状态机控制模块能够作出正确处理。在整个子系统运行过程中,状态机控制模块还能够管理和维护RRC过程,包括并行性处理,过程的事务性管理。对具有事务性处理的过程能够保存和恢复过程的正确状态。因此,如何设计状态机使其更清晰地维护状态机跳转,同时高效地完成RRC的各个过程,将直接影响整个协议栈的运行效率和稳定性[3]。

状态机的一般运行方式是:在某个状态下,收到某个事件,执行相应的动作,转到相应的状态,再在新的状态下,重复上述循环,直至结束。其中事件可以是收到的消息,某个定时器的到达等;相应的动作一般可以是执行相应的函数处理等。

现有技术主要针对一般复杂度的状态机系统,涉及的有单一并行状态机的处理,有单一串行状态机的处理;有采用状态机方法,有采用两层状态机结构,有表格驱动的,有基于状态事件的数组结构的。而RRC层协议栈状态机复杂,涉及的过程较多,现有的技术没有完全考虑到RRC层协议栈的特点,实现起来,要么消耗过多的资源,要么线程多,运行繁杂,造成后续开发维护困难,影响整个系统的稳定性。

本文提出了一种适合RRC状态机的设计和实现,简化了状态机的实现复杂度,保证了系统运行的高效性和稳定性。首先分解RRC协议栈中的过程,将过程执行分解为子状态触发,将子状态和事件以及对应的处理函数都记录到前面定义的数组结构中,同时按照上述的描述,记录好过程之间的联系,对并行执行的过程,如果有优先级的过程,要记录所有低优先级过程子状态收到高优先级事件及对应的处理函数。这样,维护RRC的状态机就变得简单了,只需要一个数组结构就可以实现。后续若有新的过程加入,分析过程关系,分解过程子状态,就很方便地加入状态机中运行;而且运行时,通过调用回调函数,无需多次查找,耗费的资源也较少,使状态机能高效稳定地运行,通过分析RRC的各个功能分类,明确过程之间的相互关系和优先级,对每一个可能引起RRC_Idle,RRC-Cell_Shared,RRC-Cell_Dedicated 和 RRC-GRA_PCH基本状态改变的功能过程,添加过程执行的各个触发子状态。

具体实现步骤如下:

(1)用结构数组记录所有过程中出现的状态事件及对应的处理函数,并初始化,数组結构构成如下:

结构数组S{ 参数1 状态;

参数2 事件;

参数3 回调函数(形参1, 形参2, 形参3);

}rrc_sm[] = {{状态0, 事件1,函数1},{状态1, 事件2,函数2},

{状态2, 事件1,函数3}, ………其他……};。

上述数组结构中的route是回调函数,而且上述结构中完整记录了所有可能出现的过程状态事件及处理函数,如状态0下收到事件1,执行函数1动作;所述结构数组中的参数3是一个回调函数,函数1,2,3有相同的形参,符合回调函数的要求。

(2)当接收到事件后(消息或定时器到达),确定事件类型,再判断当前的状态,看在当前的状态下收到的事件是否在上述记录表中有相应的处理函数,若有,调用回调函数执行相应的函数,将状态改变到新的状态;若没有相应的处理函数,丢弃收到的消息,不处理,状态保持不变。

(3)重复(2)过程直至结束。

如图1所示,比方RRC层的信令过程包括RRC连接建立过程、初始直传过程、上下行直传过程、小区更新过程等;其中,RRC连接建立过程要先完成,该过程完成后基本状态从空闲状态转到连接状态,在所述的连接状态下,初始直传过程、上下行直传过程、小区更新过程都可以发生,但是上下行直传过程必须要等到初始直传过程发生后才能完成,而小区更新过程和初始直传过程没有联系,小区更新过程的优先级高,这样,在完成RRC连接建立过程后,如果同时收到初始直传过程、上下行直传和小区更新过程的事件,则优先处理小区更新过程。在RRC连接建立过程(相当于a过程)、初始直传过程(相当于b过程)、上下行直传过程(相当于c过程)、小区更新过程(相当于d过程)中,设定状态0、1、2是过程a的子状态,状态3、4、5是过程b的子状态,状态6、7是过程c的子状态,状态8、9、10是过程d的子状态。假定过程a完成之后变到状态2,这时可以用一个主状态(4个基本状态之一)去表示,在该状态(对应子状态2)下,过程b、过程c、过程d都可以发生,但是过程c必须等到过程b完成之后才完成,这两个过程有先后顺序,而过程d和过程b完全是并行的,之间没有联系,但是过程d的执行优先级最高,也就是说,状态3、4、5、6、7、8、9、10都处在一个大的主状态下,在这个大的主状态下,只要收到最高优先级的事件触发过程d发生,就立即转到子状态8,执行过程d,不管状态是处在过程b还是过程c的任一子状态。图2中的在状态3、4、5、6、7状态下收到事件10都会转到状态8,表明事件10的优先级要高于事件6、7、8、9。

2 测试验证

为了验证状态机实现的正确性,符合协议信令过程,搭建测试环境进行测试,通过wireshark抓包工具进行抓包,对抓取的数据包进行分析。图2是一个终端打电话的过程流程,从抓包信令可知,通过该方法实现的RRC层协议信令过程,其中的状态机实现了正确的状态跳转,保证了通信过程的正确执行。

3 结语

本文分析了RRC的协议过程,将RRC的信令过程分解为各个子状态,设计了一种RRC状态机的实现方式,同时实验验证了状态机运行的正确性、稳定性,状态机维护简单、高效,为移动通信系统协议栈的开发设计起到了很好的支撑作用。

[参考文献]

[1]陈宇恒,肖竹,王洪.LTE协议栈和信令分析[M].北京:人民邮电出版社,2013.

[2]3GPP.Universal Mobile Telecommunications System (UMTS) Radio Resource Control (RRC) Protocol specification TS 25.331 v4.21.0. 2012-01[S].3GPP,2012.

[3]陈玲.WCDMA终端测试仪中高层协议栈状态机的设计与实现[D].北京:北京邮电大学,2014.

Abstract:Radio resource control layer is an important part of the control plane of the protocol stack. This paper introduces the function of RRC layer at first, and then proposes the implementation principle of RRC state machine, finally gives the realization of state machine and verifies it through testing.

Key words:protocol stack; RRC; state machine

猜你喜欢

状态机
FPGA状态机综合可靠性探究 ①
基于有限状态机的交会对接飞行任务规划方法
基于Spring StateMachine的有限状态机应用研究
三段式状态机在单片机中的实现
基于单片机运行的多线程任务状态机
基于状态机比对的状态机推断方案
双口RAM读写正确性自动测试的有限状态机控制器设计方法
FPGA设计中状态机安全性研究
基于反熔丝FPGA的有限状态机加固设计
μC/OS 的层次式状态机在人机界面中的应用