5G学习-OAI代码架构分析
Posted 儒雅的钓翁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5G学习-OAI代码架构分析相关的知识,希望对你有一定的参考价值。
文章目录
1 OAI代码架构分析
1.1 简介
官方网站: https://www.openairinterface.org/
OpenAirInterface(简称OAI)项目,是由OSA(The OpenAirInterface Software Alliance)维护开发的开源项目,创始人是EURECOM。该组织主要致力于3GPP(The3 rd Generation PartnershipProject,第三代合作伙伴计划)蜂窝网络相关的分组核心网、无线接入网和用户设备等开源软件生态系统的开发和维护。相应地,在3 GPP LTE(LongTerm Evolution,长期演进)标准框架下,OAI项日实现了对LTE核心网、无线网(包括基站侧和终端侧)的开源仿真。
要构建完整的LTE仿真系统,需要OAI的两个子项目:openair-cn和openairinterface5G。openair-cn是对LTE EPC(Evolved Packet Core,演进分组核心网)的仿真,而openairinterface5g则是对终端和基站侧的仿真。
大白话就是OAI项目是可以在硬件上进行实现的代码,通过阅读、仿真和复现,不但可以帮助专业相关人士进行算法仿真,最重要的是可以实现工程开发(区别于MATLAB 5G toolbox纯算法仿真)。
但是OAI是开源平台,其存在一定的缺陷。其一,只提供开源代码,并不提供技术支持,且缺少相关说明文档,部分代码编写混乱,代码结构有待完善,该项目使用C语言进行编写,相比于面向对象语言,可读性和复用性较低,二次开发难度较大;其二,高层协议开发不完整,大多数高层相关功能并没有实现,已实现功能很多是简化版本,核心网版本较为落后:其三,开源代码版本不稳定,很多代码未经严格审查就上传,导致版本不可使用,降低开发使用效率。
1.2 硬件部分
OAI平台要求用基于Intel架构的PC机来部署eNB或UE
OAI在设计之初就考虑到了与多种射频硬件平台兼容的问题,所以它能轻松地和第三方SDR外设对接,目前OAI正式支持的射频平台包括EURECOMEXMIMO2、USRP(Universal Software Radio Peripheral)B系列和X系列、BladeRF和LimeSDR等。
1.3 软件部分
【官网文档 The implemented features】官方给出的OAI实现框图和eNB功能切分如下图(这部分理解需要OSI参考模型和核心网的前置知识 )。
核心网OAI EPC(Evolved Packet Core,EPC)中实现了MME(Mobility Management Entity)、HSS(HomeSubscriber Server)、SGW(Serving Gate Way)、PGW(PDN Gate Way)等网元的功能,重用了符合标准的GTPv1u和GTPv2c应用协议栈。
openair-cn是对LTE分组核心网EPC(Evolved Packet Core,EPC)的仿真,主要由HSS(Home Subscriber Server,归属用户服务器)、MME(Mobility Management Entity,移动管理实体)、SGW(Serving Gateway,服务网关)、PGW(PDN Gateway,PDN网关)等网元构成。
openairinterface5g是对LTE无线系统的仿真,包括基站侧和终端侧。实际操作时,可根据需求通过变换编译选项,将项目编译成eNodeB(基站侧)或者UE(终端侧)。当利用openairinterface5g仿真eNodeB时,它提供符合3GPP规范的S1接口,包括控制面S1-MME接口和用户面S1-U接口。主要包括下面讲解的OpenAir1、OpenAir2、OpenAir3。
OpenAirInterface Block Diagram
Functional Split Architecture
注释:RCC: Radio-Cloud Center RAU: Radio-Access Unit RRU: Remote Radio-Unit
1.3.2 代码结构
【官网文档 OAI/README.md 】OpenAirInterface (OAI) 软件由以下部分组成:
openairinterface5g ├── ci-scripts : Meta-scripts used by the OSA CI process. Contains also configuration files used day-to-day by CI. ├── cmake_targets : Build utilities to compile (simulation, emulation and real-time platforms), and generated build files. ├── common : Some common OAI utilities, other tools can be found at openair2/UTILS. ├── doc : Contains an up-to-date feature set list and starting tutorials. ├── executables : Top-level executable source files. ├── LICENSE : License file. ├── maketags : Script to generate emacs tags. ├── nfapi : Contains the NFAPI code. A local Readme file provides more details. ├── openair1 : 3GPP LTE Rel-10/12 PHY layer / 3GPP NR Rel-15 layer. A local Readme file provides more details. │ ├── PHY │ ├── SCHED │ ├── SCHED_NBIOT │ ├── SCHED_NR │ ├── SCHED_NR_UE │ ├── SCHED_UE │ └── SIMULATION : PHY RF simulation. ├── openair2 : 3GPP LTE Rel-10 RLC/MAC/PDCP/RRC/X2AP + LTE Rel-14 M2AP implementation. Also 3GPP NR Rel-15 RLC/MAC/PDCP/RRC/X2AP. │ ├── COMMON │ ├── DOCS │ ├── ENB_APP │ ├── F1AP │ ├── GNB_APP │ ├── LAYER2/RLC/ : with the following subdirectories: UM_v9.3.0, TM_v9.3.0, and AM_v9.3.0. │ ├── LAYER2/PDCP/PDCP_v10.1.0 │ ├── M2AP │ ├── MCE_APP │ ├── NETWORK_DRIVER │ ├── NR_PHY_INTERFACE │ ├── NR_UE_PHY_INTERFACE │ ├── PHY_INTERFACE │ ├── RRC │ ├── UTIL │ └── X2AP ├── openair3 : 3GPP LTE Rel10 for S1AP, NAS GTPV1-U for both ENB and UE. │ ├── COMMON │ ├── DOCS │ ├── GTPV1-U │ ├── M3AP │ ├── MME_APP │ ├── NAS │ ├── S1AP │ ├── SCTP │ ├── SECU │ ├── TEST │ ├── UDP │ └── UTILS └── targets : Top-level wrappers for unitary simulation for PHY channels, system-level emulation (eNB-UE with and without S1), and realtime eNB and UE and RRH GW.
1.3.3 代码结构说明
- OpenAirInterface主要包含四个部分:
targets:无线嵌入式系统设计,包含了一些硬件相关的设计文件和firmware之类。
OpenAir1:实现了物理层的功能,包括信道建模、传播控制、物理层调制编码和映射等。另外还提供专门和底层射频硬件对接的接口,使得OAI平台能和不同的射频硬件轻松完成对接。【该模块严格按照3 GPP Release10相关协议实现了LTE层一(物理层)的相关功能,包括上下行各信道建模、通信模式选择、信道编解码、信道估计、HARQ等,另外还提供了与底层射频单元通信的相关接口,使得软件模块可以与不同厂家的射频硬件进行灵活组合。】
OpenAir2:这个文件夹主要实现了OSI层二中的功能,包括:MAC层、无线链路控制层(Radio Link Control,RLC)和分组数据汇聚层(Packet Data Convergence Protocol,PDCP),MAC层定义了数据帧的传输格式、物理寻址、逻辑拓扑等。此外无线资源控制层(Radio Resource Control,RRC)的功能也在该层中进行了实现,openair2中还实现了无线资源管理方案的部署和与无线接入控制有关的协议内容,它和openairl一起便可构成一个较为完整的通信系统。【该模块主要实现了LTE层二中MAC层、无线链路控制层(RadioLink Control,.RLC)和分组数据汇聚层(Packet Data Convergence Protocol,PDCP)和层三中无线资源控制层(Radio Resource Control,RRC)以及用于基站间通信的X2接口的相关功能。上述两个模块组成了一个无线通信系统的基本功能。】
OpenAir3:在前两个文件夹的基础上,这一部分进一步完善了OAI平台的功能。它提供了基于全P的网络模块,这些模块可为网络上层应用提供接口,开发者拥有更加丰富的开发环境和应用场景来进行全新的系统开发和验证。【该模块包含了层三中非接入层(Non-access stratum,NAS)和一些与核心网进行通信的接口(S1-C,S1-U)的相关功能,还提供了基于全IP的网络模块,为上层应用提供了接口,便于开发者开发更多与OAI交互的应用软件。】
- PHY目录
- CODING Turbo和卷积码,编码和解码操作,速率匹配,crc生成部分代码
- INIT 在vars.h中定义的变量,在这里面初始化(分配内存)
- LTE_ESTIMATION 定时、频偏、信道估计
- LTE_REFSIG LTE 参考信号生成(36.211)
- LTE_TRANSPORT 各信道的上层循环
- MODULATION 调制解调操作(FFT/SC-FDMA)
- TOOLS FFT/IFFT,向量运算,矩阵乘法等等
- 待补充…
- SCHED目录
调度不同的物理层函数
- SIMULATION目录
pbchsim:PBCH(物理广播信道)
pdcchsim:DCI/PDCCH(下行控制信道)
dlsim:DLSCH/PDSCH(下行共享信道)
ulsim:ULSCH/PUSCH(上行共享信道)
pucchsim:PUCCH(上行控制信道
prachsim:PRACH(随机接入信道
mbmssim:MCH/PMCH(物理多播信道)
1.4 参考文献
[1] 官网文档 The implemented features](./doc/FEATURE_SET.md)
[2] 《雾无线接入网络的硬件演示平台设计和应用研究_麦思航》
[3] 《https://blog.csdn.net/mouse1598189/article/details/88057602》
以上是关于5G学习-OAI代码架构分析的主要内容,如果未能解决你的问题,请参考以下文章