【OpenAirInterface5g】RRC NR解析(一)

1. RRC源码位置

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 一些全局参数初始化

3. 函数功能

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编码

4. 主函数流程

在这里插入图片描述
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上下文建立和释放。

猜你喜欢

转载自blog.csdn.net/NoBack7/article/details/125347517