学堂 学堂 学堂公众号手机端

【OpenAirInterface5g】RRC NR解析(一)

lewis 1年前 (2024-03-28) 阅读数 4 #技术

作者:​​柒号华仔​​

个人主页:​​欢迎访问我的主页​​

个人信条:星光不问赶路人,岁月不负有心人。

个人方向:主要方向为5G,同时兼顾其他网络协议,编解码协议,C/C++,linux,云原生等,感兴趣的小伙伴可以关注我,一起交流。



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上下文建立和释放。

版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门