[OpenAirInterface实战-10] :OAI nFAPI的软件组织结构和软件协议栈架构
Posted 文火冰糖的硅基工坊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[OpenAirInterface实战-10] :OAI nFAPI的软件组织结构和软件协议栈架构相关的知识,希望对你有一定的参考价值。
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客
本文网址:[OpenAirInterface实战-10] :nFAPI的软件组织结构和软件协议栈架构_文火冰糖(王文兵)的博客-CSDN博客
目录
第1章 简介
1.1 什么是nFAPI
nFAPI是FAPI接口的扩展。
在无线接入网中,FAPI接口是一种开放的MAC层与物理层的接口之一, 在该接口中,物理层与MAC层通常在一个物理实体中。
然后,随着网络功能虚拟化的出现,MAC层与PHY层可以不在一个物理实体中,并且一个MAC层可以携带多个PHY层,为了对应这种场景,FAPI对自身进行了扩展,扩展后的协议称为nFAPI。
1.2 OAI nFAP主页
nfapi · develop · oai / openairinterface5G · GitLabhttps://gitlab.eurecom.fr/oai/openairinterface5g/-/tree/develop/nfapi/OAI在源代码结构的最顶层提供了对nFAPI的支持:
oai/openairinterface5g>ls
CHANGELOG.md
cmake_targets
CONTRIBUTING.md
executables
nfapi
openair1
openshift
targets
charts
common
doc
LICENSE
NOTICE.md
openair2
pre-commit
ci-scripts
configuration
docker
maketags
oaienv
openair3 README.md
第2章 nFAPI的代码架构
2.1 带nFAPI的空口协议栈
2.2 nFAPI VNF协议栈
2.3 nFAPI PNF协议
第3章 nFAPI的代码结构
3.1 OAI关于nFAPI的顶层代码结构
nfapi:nFAPI的代码
---nfapi/open-nFAPI: nFAPI开源协议栈代码 (基于Cisco的FAPI源代码的增强)
---nfapi/oai_integration:OAI对nFAPI 开源代码的OAI封装(wapper)。
openair1:L1的代码
----SCHED:空口调度器,该程序调用nFAPI的Wapper接口,与L1 PHY通信。
---SIMULATION/xx_PHY/yyy_dummy_function:nFAPIwapper的dummy代码,为调度器和MAC层屏蔽真实的nFAPI接口和真实的PHY。
openair2:L2/L3的代码
--- GNB_APP:5G基站应用程序,该程序通过OAI wapper nFAPI,启动nFAP进程。
--- LTE_APP:4G基站应用程序,该程序通过OAI wapper nFAPI,启动nFAP进程。
3.2 OAI nFAPI wapper的代码:oai_integration的代码结构
(1)nfapi.c:nFAPI对外的模式设置接口。
typedef enum {
NFAPI_MONOLITHIC=0, // 一体化模式,就FAPI接口
NFAPI_MODE_PNF, // PNF基站
NFAPI_MODE_VNF, // VFN基站
NFAPI_UE_STUB_PNF, // ????
NFAPI_UE_STUB_OFFNET, //????
NFAPI_MODE_UNKNOWN // 不支持模式
} nfapi_mode_t;
(2)nfapi_vnf.c nfapi_vnf.h
VNF基站提供的Wapper接口,提供给MAC调度器使用
调度器决定:
- 什么时候发送什么数据包,
- 维护nFAPI协议栈的状态机。
(3)nfapi_pnf.c、nfapi_pnf.h
PNF基站提供的Wapper接口,提供给PHY层调度器使用
- 什么时候发送什么数据包,
- 维护nFAPI协议栈的状态机。
(4)vendor_ext.h:特定vendor的扩展
3.3 open-nFAPI代码结构
(1)integration_tests
对nFAPI接口进行持续集成测试的单元测试程序,它会调用pnf_sim和vnf_sim, 启动对PNF和VFN的测试。
(2)vnf_sim:VNF的控制器的仿真
该仿真器的存在,使得VNF可以不依赖于基站App,就可以直接启动, vnf_sim负责配置和启动nFAPI协议栈。
--- mac.cpp: MAC层的simulator/stub
--- main.cpp:=》主程序
(3) pnf_sim:VNF的控制器的仿真。
该仿真器的存在,使得PNF可以不依赖于基站App,就可以直接启动。pnf_sim负责配置和启动nFAPI协议栈。
----fapi_stub.c: 与PHY的FAPI接口的stbu
----main.c : 主程序
(5)vnf
--- vnf_interface.c: VNF P5协议的接口
--- vnf.c: VNF P5接口接口数据包的接收与发送,并调用nfapi进行性进行TLV解包和封包。
--- vnf_p7_interface.c:VNF P5协议的接口
--- vnf_p7.c: VNF P7接口数据包的接收与发送,并调用nfapi进行性进行TLV解包和封包
(4)pnf
--- pnf_interface.c: PNF P5接口协议的接口
--- pnf.c: PNF P5接口接口数据包的接收与发送,并调用nfapi进行性进行TLV解包和封包。
--- pnf_p7_interface.c:PNF P5协议的接口
--- pnf_p7.c: PNF P7接口数据包的接收与发送,并调用nfapi进行性进行TLV解包和封包。
(5)nfapi
--- nfapi.c:提供tlv的解包和封包的公共操作,被下列的几个功能模块使用。
--- nfapi_p4.c:为VNF和PNF提供同一个的P4包的TLV打包和解包功能。
--- nfapi_p5.c:为VNF和PNF提供同一个的P5包的TLV打包和解包功能。
--- nfapi_p7.c:为VNF和PNF提供同一个的P7包的TLV打包和解包功能。
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/120758517
以上是关于[OpenAirInterface实战-10] :OAI nFAPI的软件组织结构和软件协议栈架构的主要内容,如果未能解决你的问题,请参考以下文章
[OpenAirInterface实战-8] :OAI编译遇到的问题与解决方法汇总
[OpenAirInterface实战-4] :OAI支持的4G LTE功能集
[OpenAirInterface实战-2] :OAI LTE目标系统架构与协议栈
[OpenAirInterface实战-1] :什么是OAI?OAI常见问题解答