logo资料库

OAI 5G-NR gNB源码架构分析.docx

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
1特性范围
2gNB源码解析
2.1代码框架时序图
2.2重要函数及过程
2.2.1主进程
2.2.2ru_thread线程
2.2.3rrc_gnb_task线程
2.2.4随机接入过程
2.3数据结构
3接口
3.1nFAPI(P5 &P7)
3.1.1架构
3.1.2过程
3.2EN-DC
3.2.1架构
3.2.2过程
3.3F1AP(CU-DU)[38.401 38.473]
3.3.1F1接口功能
3.3.2F1接口实现
3.3.2.1CU侧
3.3.2.2DU侧
OAI 5G-NR 源码架构分析 1 特性范围 目前 gNB 和 5G-NRUE 支持如下的配置  工作模式:TDD  CP 长度:Normal CP  子载波间隔: 30kHz  信道带宽:40MHz(106PRB)、80MHz(217PRB)、100MHz(237PRB)  天线端口:单波束  时隙格式:14 OFDM 符号  编码方式:LDPC、polar 当前开源项目进展:  具备 EN-DC 功能,从开发进展来看还有一些 bug;  SA 还在开发中,RRC、SDAP、N2 Interface 和 N3 Interface 还在开发中,随机接入的调 试中,Msg2 还不能被 UE 成功解析。 2 gNB 源码解析 2.1 代码框架时序图 gNB 源码主框架图如下图所示。 Main:主进程,主要功能包括: 1) 命令行参数解析 2) 系统配置文件解析 3) 各子层初始化工作,包括重要数据结构、接口初始化工作 4) 线程初始化,gNB 管理线程、包括 RRC 层处理线程、rx/tx 处理线程、传输网接口线程、 x2 口交互线程 5) 射频 phy 层及 RU 单元初始化及配置工作 6) 物理层算法模块数据初始化 7) 用户面数据业务缓存开辟 gNB_app_task:gNB 管理线程,主要功能包括: 1) gNB 主要数据结构初始化 RCconfig 2) MAC 层与 PHY 层的 P5&P7 接口初始化,回调函数注册 3) 调用 P5 接口向 RRC 发送承载配置命令 4) 处理核心网下发的一些消息 5) 处理各种超时处理消息等 rrc_gnb_task:RRC 处理线程,主要功能包括: 1) RRC 配置消息处理,如果支持 NSA 方式,还需要处理 MN 设备发送的 RRC 重配置消息。 2) 双连接副站添加相关处理 3) 随机接入消息处理(Msg3,Msg4)
4) 测量相关处理 5) 系统消息处理 sctp_eNB_task:传输网接口线程,主要功能包括: 1) NG 口连接建立相关的消息处理 2) 与 F1AP 控制面的消息处理(包括 CU 和 DU 两部分) ru_thread:rx/tx 处理线程,主要功能包括: 1) RU 设备库加载 2) 上行流程处理,包括 PHY、MAC、RLC、PDCP 3) 下行流程处理, 包括 PHY、MAC、RLC、PDCP 2.2 重要函数及过程 2.2.1 主进程 [nr-softmodem.c] Main() 1. get_options() 通过解析命令行参数来对系统做配置。 重要的数据结构:RAN_CONTEXT_t, 存储 gNb 实例、macrlc 实例、L1 实例,RU 实例信息。 2. netlink_init() 3. init_pdcp()
4. create_gNB_tasks(1) 起来几个主要线程 a. 1) L1 配置信息初始化 2) 完成对 phy 层、rlc 子层、PDCP 子层的初始配置工作,若支持 noS1 模式,还要读 itti_create_task(TASK_GNB_APP, gNB_app_task,NULL): 取 rrc 子层的配置信息。 3) 初始化 MAC 与 PHY 之间的接口(具体描述详见 ),回调函数注册: Nr_ul_indication:层 2 上行接收接口函数,当物理层从空口接收到上行数据,经 过物理层过程后将会触发该函数将解码后的数据 pdu 上送至 MAC 层 nr_phy_config_request:系统参数配置入口处理函数。在 SA 模式下,系统读取初 始化配置文件,然后将其传送给 RRC 层,RRC 层根据配置文件信息形成 RRC message (如:SI 系统消息),在 5G NR NSA 模式下,其接收的配置消息基本上就是 MIB 以及 服务小区从 X2 接口传来的重配置消息。(目前 SA 下该过程还没有) nr_schedul_response:MAC 与 PHY 的下行接口处理函数。该函数可对 MAC 层下 行 pdu 进行调度,包括 MIB、PRACH 消息、rrc 消息业务数据 pdu 以及一些半动态配 置消息,并根据调度结果生成 DCI。 4) configure_nr_rrc:初始化 RRC 实体,生成 rrc 配置消息,包括物理层及射频单元配 置。通知 RRC 处理线程。 b. c. d. itti_create_task(TASK_SCTP, sctp_eNB_task,NULL): gNB NG-C 的接口线程,也可作为 F1-C 的接口。 itti_create_task(TASK_X2AP, x2ap_task,NULL): X2 接口线程 itti_create_task(TASK_RRC_GNB, rrc_gnb_task,NULL) RRC 子层的处理线程,主要应包括系统消息、随机接入的 Msg3、Msg4 相关处理、 一些测量相关消息处理(但目前该部分只有初始的静态配置消息处理以及 X2 接口收到的 rrc 重配置消息,其他部分有待后续跟踪关注)。 5. init_gNB() 注 册 MAC 层 与 PHY 层 接 口 回 调 函 数 : Nr_ul_indication 、 nr_phy_config_request 、 nr_schedul_response(详细描述见 4)。 6. wait_gNBs() 此处采用了停等的模式。至此,系统参数配置以及生效,phy 及 mac 层以上子层均完 成初始配置工作。 7. init_NR_RU() 1) 射频单元参数初始化。主要参数包括:uhd driver 地址、类型、同步时钟源,接收 增益,参考信号能量等。 2) 回调函数注册,主要回调有: ru->fh_south_in:RU 与 phy 的上行接口处理函数 ru->fh_south_out:RU 与 phy 的下行接口处理函数 ru->feptx_ofdm:射频前端处理函数 ru->feprx :射频前端处理函数 3) init_RU_proc():空口线程管理,此处起了 gNB 上下行处理的主线程 ru_thread 8. wait_RUs() 此处采用线程同步方式(pthread_cond_signal(&RC.ru_cond),RC.ru_mask)。至此,包 括射频单元在内的所有模块初始配置工作完成。 9. init_eNB_afterRU() 1) 初始化物理层算法模块使用的数据表格、配置物理层处理过程的一些关键参数 2) 回调函数注册:gNB_top, gNB 上/下行数据处理入口函数。
3) 为 ULSCH/DLSCH 开辟存储 buffer 10. 至此,所有 RU 单元及 gNB 实体 ok,发送同步信号(pthread_cond_broadcast(&sync_cond)) 通知所有处理线程可以开始上/下行数据处理。 2.2.2 ru_thread 线程 1. nr_init_frame_parms() 这里计算了空口帧的许多重要参数信息,包括每帧的时隙数、每子帧的时隙数、每个时 隙的符号数、每帧的采样点数、每个时隙的点数、接收/发送天线数、频率范围、帧类型、 子载波间隔等信息。 2. fill_rf_config() 根据 numerology 及 PRB 配置信息得到系统的信道带宽及采用率等信息上下 行频点,天线 tx_gain,rx_gain 等信息 3. nr_phy_init_RU() 初始化与 phy 层的接口 buffer 4. openair0_device_load() 加载 RF 设备库 5. 线程同步,启动 RF 设备,开始正常的接收发送 6. 上行处理流程 7. 下行处理流程 2.2.3 rrc_gnb_task 线程 RRC 子层处理线程 1. RRC 配置/重配置 接收 gNB 管理线程的 rrc 配置消息 NRRRC_CONFIGURATION_REQ,调用 init_NR_SI,该函 数最终会调用 P5 接口对底层设备进行配置。如下图所示: 2. 副站添加 接收 X2 接口发送的副站添加消息 X2AP_ENDC_SGNB_ADDITION_REQ
2.2.4 随机接入过程 1. preamble 接收  调用函数 L1_nr_prach_procedures()在上行 PRACH 信道上接收 preamble,最多能检测 到 64 个 preamble。获取 preamble 序列,找到当前 root 序列下的 preamble 循环偏移 位置,计算输出检测到的 pramble 的 TA(时间调整值)和能量。  选取能量最大的 preamble  gNB->UL_INFO.rach_ind.number_of_pdus = 1, 发起随机接入流程 2. 初始化发起随机接入  handle_nr_rach()  调用 nr_initiate_ra_proc()  将状态改为 ra->state = Msg2  初始化随机接入过程 3. 发送 RAR  nr_schedule_RA()  nr_generate_Msg2()生成 Msg2,分别处理 DCI,PDCCH,PDSCH 设置,  赋值 tx_req  在发送时隙,调用 phy_procedures_gNB_TX()  生成 DCI  执行 PDCCH、PDSCH 过程  将状态改为 ra->state = WAIT_Msg3 4. Msg3 接收  调用 nr_schedule_reception_msg3()存储 msg3 主要信息(ul_req):包大小,包地址, 当前帧号和时隙。  ifi->NR_Schedule_response[回调函数:nr_schedule_response]  调用函数 handle_nfapi_nr_ul_dci_pdu 解出 ul dci  调用函数 nr_fill_ulsch()根据 dci 找到 ulsch 位置  在 物 理 层 接 收 主 函 数 phy_procedures_gNB_uespec_RX 中 调 用 函 数 nr_ulsch_procedures()  调用函数 nr_ulsch_decoding()得到解码后的 mac_pdu  rx_ind.number_of_pdus++ , crc_ind.number_crcs++  mac 上行接收主函数中调用 nr_rx_sdu() 注:openairinterface5g-NR_RRC_PRACH_procedures 分支中并无提供 Msg3 sdu 的解析处理。
2.3 数据结构 3 接口 3.1 nFAPI(P5 &P7) 3.1.1 架构 FAPI 提供了 MAC 层与 PHY 层之间的接口,实现了 phy 层与 mac 层的分离,其接口架 构如下图所示,其中 P5 口主要用于传送静态配置信息,P7 口主要用来传送数据和半动态配 置信息。 3.1.2 过程 如上图所示,MAC 层从命令行或配置文件获取系统配置参数,然后将其传送至 RRC 层, RRC 层会通过 P5 接口触发 nr_phy_config_req()对 PHY 及 RU 进行配置。在 5G NR NSA 方式 下,RRC 子层接收从 X2 接口来的主校区 rrc 重配置消息。 对于半动态配置消息以及用户面数据信息的传送,MAC 层与 PHY 层之间使用 P7 接口, 对于上行数据,触发 nr_ul_indication();对于下行数据,触发 nr_schedule_response()。
    NR_UL_INDICATION NR_SCHEDULE_RESPONNSE TX_REQ 携带从 MAC 层到 PHY 层的 PDU. RX_IND 携带从 PHY 层到 MAC 层的 PDU 3.2 EN-DC gNB 支持双连接模式下的 UE 接入,eNB 作为主站 MN,gNB 作为副站 SN。 3.2.1 架构 如下图所示,针对控制信令,gNB 可以通过 X2-C 接口传递给 eNB,再由 eNB 与 EPC 和 UE 进行通信。针对数据信息,gNB 可以通过 X2-U 接口传递给 eNB,再由 eNB 与 EPC 和 UE 进行通信。针对于核心网交互的数据报文,可以通过 S1-U 接口直接与 EPC 进行通信, 也可以通过 X2-U 接口转交给 eNB,再由其将数据发送至 EPC。 3.2.2 过程
副站添加过程如上图所示,过程描述如下: 1. MN 向 SN 发送 SgNB Addition Request 请求为 UE 分配无线资源,消息中包括:UE 的能 力;最近一次的测量结果;SRB3 的安全验证信息;X2-U 的隧道地址配置信息;Qos level 等信息 2. gNB rrc 处理进程处理该消息,调用函数 rrc_gNB_process_AdditionInformation,副小区组 参 数 中 包 括 无 线 承 载 配 置 以 及 RACH 专 用 配 置 参 数 两 个 部 分 , 前 者 会 触 发 rrc_mac_config_gNB 函数调用 F5 接口开始物理层参数设置过程。后者是为了与 UE 发起 随机接入过程。 3. gNB 发送 SgNB Addition Request Acknowledge 给 eNB。其中 SgNB Addition Request Acknowledge 包含:分配的无线资源,… 5-9.eNB 接收 SgNB Addition Request Acknowledge 消息,生成RRC重配置消息,发送给 UE。 10.UE收到重配置消息后检测是否所有的配置信息都满足,然后向eNB回复重配置完成 消息,消息中携带NR RRC Response消息 11-12. 一旦eNB收到了重配置完成消息,则通知gNB,表示UE已经完成了rrc重 配置过程 13-15. 如果配置的承载有副小区的无线资源,UE 将执行与 SN 的随机接入过程,并发送 RRCConnectionReconfigurationComplete消息。 16. MN 向 SN 发送 SN status Transfer 17. MN 将其上的数据业务转给 SN,并撤销其对 UE 的无线承载 18 - 21.数据路径更新 3.3 F1AP(CU-DU)[38.401 38.473] F1AP 提供 gNB-CU 节点与 gNB-DU 节点之间的信令服务。服务分为两类: 1)非 UE 相关服务:在 gNB-CU 与 gNB-DU 之间建立 F1 接口实例。 2)UE 相关服务:为 UE 接入核心网提供信令和数据连接。 代码驻留目录 openair2->F1AP
分享到:
收藏