当前位置: 首页 > news >正文

基于OAI与Ueransim的5G网络切片平台构成简述

自定义多切片核心网构建

为了实现在同一台机器上同时对每一个切片启动一套单独的核心网,并且可以同时启动多套核心网,我们在官方提供的核心网模板的基础上进行适当的修改,扩展出其他可以正常运行的核心网,由此我们可以实现在同一台机器上同时运行多套OAI5G核心网。我们可以手动在模板的基础上进行适当的修改构建出特定的核心网,为了支持一键构建核心网,编写了代码通过定义核心网模板,在模板的基础上输入切片序号(slice_id),以及其他信息如:核心网cpu限制、核心网运行内存限制等,通过代码快速自动实现核心网的文件的文件的构建。

核心网启动yaml文件构建

官方提供的核心网启动yaml文件中使用了固定的docker服务名、容器名、核心网仿真网桥网段以及其他与这些参数相关的参数,由于容器在一台机器上运行不允许同名同标签的容器运行故需要对名称进行更改,为了保证不同网络切片对应的核心网之间的数据不会相互干扰,仿真核心网使用到的仿真网桥之间不能共用,并且由于同一网桥提供的ip地址有限限制了可以启动的核心网数量,所以需要对不同核心网使用的网段进行更改与合理设置,官方提供的yaml文件中没有对核心网网元容器进行cpu与内存方面的限制,为了适配后期资源管理算法的实现与核心网资源的合理配置,在yaml文件中增设了限制cpu与内存的参数。经过大量的尝试与测试得出了OAI5G核心网启动yaml文件中可以进行修改的内容,进行修改后的核心网可以正常的运行。
对核心网中进行修改的具体项目如下:yaml文件名称、docker-compose启动服务名、网元容器名称、三个仿真通信网桥oai、access与core的网段、cpu与存储的限制。

核心网组成文件构成

除了对于核心网yaml文件的配置,根据模板构建对应的核心网文件,还需要配置与其相关的文件如健康检查文件、日志存储文件、服务端业务文件等。编写代码在构建核心网文件夹中完成相关代码的构建,如切片1会构建一个名为Slice1的文件夹,其中包括面向该切片特制的核心网yaml文件与服务端文件,以及healthcheck健康检查文件,数据库存储文件database,以及conf和policies文件夹。

基站构成

基站部署在虚拟机中,每一个基站使用一个虚拟机,其中配置了对应切片的专用文件以及专用的ueransim基站仿真容器解析。首先根据官方提供的ueransim镜像的Dockerfile文件在其中添加了用于启动代理程序的python3,构建了新的镜像。然后针对每一个基站构建了专用的配置文件,主要包括启动基站的yaml文件,代理proxy文件以及代理关闭文件。在基站启动前会自动化配置到对应切片核心网的路由,然后启动基站,基站启动后会将proxy与proxy关闭文件复制到容器内运行。

切片启动流程

在后台会先开启rev.py用于接收前端的传输信息,在前端界面进行切片配置后下发配置信息到后端,后端接收到后会读取并进行解析,根据解析到的信息执行相应的操作。

在下发切片时,会根据前端信息及数据库查询信息生成切片信息,然后将信息写入数据库并生成切片文件夹Slicex,然后回依次启动OAI5G核心网,Ueransim基站,业务服务端以及代理,接下来客户端接入对应的切片即可进行对应业务的传输。
在停止切片时,前端会告知想要关闭的切片,后端根据信息依次关闭服务端及代理,Ueransim基站,OAI5G核心网。
在删除切片时,前端会告知想要关闭的切片,后端会将对应切片之前生成文件夹删除,并清除数据库中的信息,释放切片相关的所有资源。

切片状态监测

使用者通过前端QT界面与后端连接,当启动任意一个切片之后,前端会发送指令到后端linux环境中,运行状态监视python脚本。脚本启动后首先查询数据库切片数目和切片id,然后读取对应切片的容器,并统计其运行时间和各切片健康状态。在统计上述链路状态和数据后脚本将上述数据写入到数据库对应位置,前端读取数据库即可获取各个切片状态和运行时长。

http://www.lryc.cn/news/101282.html

相关文章:

  • 论文笔记:Adjusting for Autocorrelated Errors in Neural Networks for Time Series
  • DataEase开源BI工具安装_数据全量_增量同步_大屏拖拽自动生成_多数据源支持_数据血缘分析---大数据工作笔记0183
  • 如何提升程序员的软素质
  • msvcp100.dll丢失怎么修复,这三个常用的修复方法可以解决
  • python实现递推算法解决分鱼问题
  • 【LeetCode】142.环形链表Ⅱ
  • 16.Netty源码之ChannelPipeline
  • “使用Spring Boot构建微服务应用的最佳实践“
  • redis高可用之主从复制,哨兵,集群
  • 【Ajax】笔记-原生jsonp跨域请求案例
  • QT--day2(信号与槽,多界面跳转)
  • 热备份路由协议原理
  • 模拟实现定时器
  • TCP/IP的分包粘包
  • 盘点:查快递教程
  • TransGPT 开源交通大模型开源
  • gitignore文件使用方法(gitignore教程)(git status --ignored)(git check-ignore -v <file>)
  • mybatis拼接sql导致的oom报错 GC报错
  • 如何通俗理解扩散模型?
  • 【C#】并行编程实战:并行编程中的模式
  • Apache Kafka 入门教程
  • python皮卡丘编程代码教程,用python打印皮卡丘
  • shell脚本:数据库的分库分表
  • AtCoder Beginner Contest 312(A~D)
  • SQL中Partition的相关用法
  • 微服务——Docker
  • 测试|测试用例方法篇
  • 负载均衡的策略有哪些? 负载均衡的三种方式?
  • 二十三章:抗对抗性操纵的弱监督和半监督语义分割的属性解释
  • curator实现的zookeeper可重入锁