文章目录

  • 1 OAI代码架构分析
    • 1.1 简介
    • 1.2 硬件部分
    • 1.3 软件部分
      • 1.3.2 代码结构
      • 1.3.3 代码结构说明
    • 1.4 参考文献

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目录
  1. CODING Turbo和卷积码,编码和解码操作,速率匹配,crc生成部分代码
  2. INIT 在vars.h中定义的变量,在这里面初始化(分配内存)
  3. LTE_ESTIMATION 定时、频偏、信道估计
  4. LTE_REFSIG LTE 参考信号生成(36.211)
  5. LTE_TRANSPORT 各信道的上层循环
  6. MODULATION 调制解调操作(FFT/SC-FDMA)
  7. TOOLS FFT/IFFT,向量运算,矩阵乘法等等
  8. 待补充…
  • 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代码架构分析相关推荐

  1. [OAI] OAI代码架构分析

    简介 官方网站: https://www.openairinterface.org/ OAI Radio Access Network (OAI-RAN/UE) 源码: https://gitlab. ...

  2. RT-1052学习笔记 - GPIO架构分析

    RT-1052学习笔记 - GPIO架构分析 一.RT1052之GPIO与IOMUX 二.GPIO架构分析 分析GPIO的外设框架 库函数操作 1.初始化MUX 2.初始化PAD 3.初始化GPIO外 ...

  3. App工程结构搭建:几种常见Android代码架构分析

    原文:http://mobile.51cto.com/abased-386212.htm 关于Android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的角度,看到整齐的代码,优 ...

  4. go build 无文件_Go学习_30_Golang代码性能分析工具

    Golang内置了一些性能分析工具,可以将性能分析的结果文件输出,我们可以使用图形化的工具查看分析结果,在使用这些工具之前,我们需要安装一些工具,以便于查看分析文件. 为了支持查看图形化分析结果,首先 ...

  5. 5G 学习笔记 NG-RAN架构

    5G的整个系统包括核心网(5GC),接入网和用户终端(UE)三部分.核心网与接入网间需要进行用户平面和控制平面的接口连接:接入网与终端间通过无线空口协议栈进行连接. 5G系统的无线接口继承了LTE系统 ...

  6. 从OAI代码学习5G

    从OAI学习5G 从OAI代码学习5G UE的主函数 PHY_VARS_NR_UE结构体 跳回主函数: set_default_frame_parms(frame_parms) 函数 重新跳回主函数: ...

  7. 2021-2027全球与中国5G非独立组网架构市场现状及未来发展趋势

    2021-2027全球与中国5G非独立组网架构市场现状及未来发展趋势 本文研究全球及中国市场5G非独立组网架构现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比北美.欧洲.日本.中国.东南 ...

  8. 丰迈实验工坊学习笔记——5G系统组成与架构演进分析

    5G系统组成与架构演进分析 一.基础知识了解 二. 网元功能 三.架构设计 一.基础知识了解 DU:全称为Distributed Unit,意思是分布单元. CU:全称为Centralized Uni ...

  9. motan学习笔记 二 motan架构分析

    motan学习笔记 一 微博轻量级RPC框架Motan motan学习笔记 二 motan架构分析 motan学习笔记 三 motan Demo 分析 motan学习笔记 四 motan Demo 之 ...

最新文章

  1. 集成开放平台标准化连接器之基于OAS3.0的API管理能力
  2. view工作原理-计算视图大小的过程(onMeasure)
  3. 教你前端input框只允许输入正整数
  4. Ant Design Pro在使用TreeSelect树选择组件时,报错未注册
  5. ASP.NET MVC+EF框架+EasyUI实现权限管理系列
  6. 使用第三方库iOS-ECharts做柱状图的心得
  7. linux 下安装wps
  8. 修改jsp文件刷新网页没有更新
  9. omnet++tictoc3案例解析
  10. JDBC 操作数据库步骤
  11. 祝大家新年快乐,前兔似锦!
  12. 新房装修流程详细步骤有哪些? 新房装修流程注意事项有哪些?
  13. 搜狗输入法怎么打印间隔号
  14. ubantu系统从命令行进入桌面
  15. 使用Aspose在Java中将Excel文件转换为HTML
  16. 非线性规划(凸规划,无约束最优化方法,约束最优化方法)
  17. QMessageBox
  18. Vue中引入富文本编辑器
  19. 矩阵光学 matlab,矩阵光学.doc
  20. Salesforce搬砖之功能概况

热门文章

  1. 产品小白如何从模仿开始学习Axure
  2. 基于FPGA的 矩阵键盘按键识别 【原理+源码】
  3. 确认取消弹窗的监听事件
  4. FTTH蝶形光缆产品特点介绍
  5. LPC5528使用记录(一)
  6. 产品新人必看:入职前的准备及快速适应产品工作
  7. 娱乐项目————打豆豆
  8. nand读寿命_别在较真寿命 NAND闪存要“长生不老”
  9. 面向对象与面向过程最本质的区别
  10. 笔记 局域网中的以太网和无线局域网