【OpenAirInterface5g】RRC NR解析(一)
作者:柒号华仔
个人主页:欢迎访问我的主页
个人信条:星光不问赶路人,岁月不负有心人。
个人方向:主要方向为5G,同时兼顾其他网络协议,编解码协议,C/C++,linux,云原生等,感兴趣的小伙伴可以关注我,一起交流。
RRC(Radio Resource Control)称为无线资源控制,是5G系统的核心模块,其主要作用是给下层(PHY,MAC,RLC,PDCP)控制或配置所有无线资源,从而保证UE与基站之间进行通信。 OAI RRC模块位于openair2\RRC下,其下有NR,LTE,NR UE等几个源码目录,我们只分析NR。
2. 文件功能RRC模块主要文件如下:
文件名
功能
rrc_gNB.c
RRC核心程序,包括RRC消息接收和处理
rrc_gNB_NGAP.c
NGAP消息生成和发送
rrc_gNB_UE_context.c
UE上下文生成,获取和删除等
rrc_gNB_reconfig.c
Coreset0,搜索空间,BWP,rb等参数配置
rrc_gNB_GTPV1U.c
GTPV1U相关
nr_rrc_config.c
Rlc,mac cellgroup等一些参数初始化为0
nr_rrc_common.c
一些全局参数初始化
rrc_gNB.c是RRC模块的核心源码文件,所有RRC消息由这里接收,所有处理流程也从这里发起,rrc_gnb_task()相当于RRC模块的Main主函数。
函数
描述
rrc_gnb_task
接收其他模块传给RRC模块的msg,根据消息ID进入不同的处理分支
rrc_gNB_decode_dcch
dcch解码
nr_rrc_gNB_decode_ccch
ccch解码
rrc_gNB_generate_RRCSetup
生成RRC Setup
rrc_gNB_generate_RRCSetup_for_RRCReestablishmentRequest
生成对于RRC重建的RRC SETUP
rrc_gNB_generate_RRCReject
生成RRC Reject
rrc_gNB_process_RRCSetupComplete
处理RRC setupComplete
rrc_gNB_generate_defaultRRCReconfiguration
生成RRC重配命令
rrc_gNB_process_RRCReconfigurationComplete
处理RRC重配完成命令
rrc_gNB_generate_RRCReestablishment
生成RRC重建命令
rrc_gNB_process_RRCConnectionReestablishmentComplete
处理RRC重建完成命令
rrc_gNB_generate_SecurityModeCommand
生成加密模式命令
rrc_gNB_generate_UECapabilityEnquiry
生成UE能力查询
rrc_gNB_generate_RRCRelease
生成RRCRelease
init_NR_SI
MIB,SIB1编码
itti_receive_msg()为主接收函数,上一篇已讲过。通过ITTI_MSG_ID(msg_p)获取消息ID,由switch转入各个处理分支流程,对数据进行解码。 nr_rrc_gNB_decode_ccch():负责CCCH解码,传入的数据调用uper_decode()进行per解码,得到消息ID,主要消息包括rrcSetupRequest和rrcReestablishmentRequest两条。 rrc_gNB_decode_dcch():负责DCCH解码,传入的数据调用uper_decode()进行per解码,得到消息ID,包括rrcSetupComplete,rrcReconfigurationComplete,ulInformationTransfer,securityModeComplete,securityModeFailure,ueCapabilityInformation,rrcReestablishmentComplete。 其他几条分支主要是NGAP相关的消息,包括下行NAS,PDU会话建立和释放,UE上下文建立和释放。
版权声明
本文仅代表作者观点,不代表博信信息网立场。