基于free5gc模拟5G核心网和UERANSIM模拟5G用户设备的模拟5G网络环境的部署搭建方法总结和解析。

news2024/11/15 12:59:13

简介:下文介绍了基于free5gc模拟5G核心网和UERANSIM模拟5G用户设备的模拟5G网络环境的部署搭建方法,并且通过完成相关配置,

简单实现测试5G用户设备接入核心网的注册流程、去注册流程,模拟了一个用户设备通过模拟核心网进行实际的数据业务的过程。

这样一套模拟5G环境,可以有效缓解研究者所面临的没有实际5G环境可用以及实际环境过于复杂等问题,为5G安全研究提供一个可行的途径。

1. 安装前准备工作

 1.1 确认Linux内核版本

使用命令:uname -a 确定虚拟机内核版本

使用以下命令更新虚拟机内核版本

sudo apt install 'linux-image-5.0.0-23-generic'
sudo apt install 'linux-headers-5.0.0-23-generic

在 Linux 系统中,sudo apt install 命令用于从软件仓库中安装软件包。

  • linux-image 安装新的内核版本,允许系统使用该内核启动并运行。
  • linux-headers 为编译与该内核版本相关的模块提供必要的头文件。

 1.2 通过apt安装部分基础支持组件

sudo apt install git-all
sudo apt-get install curl
sudo apt install make
sudo apt -y install gcc
sudo apt -y install g++
sudo apt -y install autoconf
sudo apt -y install libtool
sudo apt -y install pkg-config
sudo apt -y install libmnl-dev
sudo apt -y install libyaml-dev

这些命令安装了一套常见的开发工具和库,用于设置编译环境、版本控制、网络管理以及配置文件解析。它们广泛应用于软件开发和构建过程,特别是在编译从源代码构建的软件时。

1.3 安装go语言环境

通过命令安装go语言环节,安装完成后,配置环境变量。

1.4 安装docker环境

通过官方安装脚本安装docker,

安装完成后,运行命令docker --version验证

之后需要安装docker-compose,通过以下命令完成:

再之后,我们需要更换docker源,默认源下载速度过慢,会导致之后部署时出现下载超时错误:

之后重启docker服务即可完成docker的部署:

完成后,需要将当前普通用户加入docker用户组,docker用户组在上述安装时自动创建,无需手动创建:

此步目的在于防止后续free5gc容器化部署时,到make base步骤,出现以下错误:

Docker 是一个开源的平台,用于开发、发布和运行应用程序。通过使用 Docker,开发者可以将应用程序及其依赖项打包在一个轻量级、可移植的容器中,并在任何支持 Docker 的环境中运行。Docker 容器提供了一个隔离的环境,确保应用程序在不同的操作系统和硬件环境中保持一致的行为。

1.5   安装cmake

!此处装的cmake,需要3.17及以上版本,否则后续UERANSIM环境搭建会出错。

CMake 是一个开源的跨平台构建系统,用于自动化软件的编译、测试和打包。它特别适合管理大型复杂项目,尤其是在涉及多个平台(如 Windows、Linux、macOS)和编译器(如 GCC、Clang、MSVC)时。CMake 通过读取项目的配置文件(通常是 CMakeLists.txt)生成适合目标平台的构建脚本,如 Makefile 或 Visual Studio 的项目文件。

CMakeLists.txt 的基本结构:

每个使用 CMake 的项目都需要一个 CMakeLists.txt 文件,它定义了如何构建项目。一个简单的 CMakeLists.txt 可能包含以下内容

# 声明使用的 CMake 版本
cmake_minimum_required(VERSION 3.10)

# 项目名称和版本号
project(MyProject VERSION 1.0)

# 指定使用的 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 添加可执行文件
add_executable(MyExecutable main.cpp)

# 链接外部库(例如查找 OpenSSL 并链接)
find_package(OpenSSL REQUIRED)
target_link_libraries(MyExecutable OpenSSL::SSL)

1.6 安装mongodb

注:此组件为free5gc的数据库组件,为free5gc独立部署的必须步骤

MongoDB 是一个面向文档的 NoSQL 数据库系统,它主要用于存储和处理大量的非结构化数据。与传统的关系型数据库系统不同,MongoDB 不使用表格和行的形式来存储数据,而是使用类似 JSON 的 BSON(Binary JSON)格式来存储文档。

MongoDB 在 Free5GC 独立部署中的作用主要体现在数据存储、配置管理、日志记录和性能优化等方面。它的文档存储模型、灵活的查询语言、强大的索引和聚合功能、以及支持高可用性和扩展性的特性,使其成为管理 Free5GC 数据和配置的理想选择。这些功能使得 MongoDB 能够有效地支持 Free5GC 的高性能和高可用性需求。

1.7 安装yarn

注:此组件为free5gc的webui支持组件,为free5gc独立部署的必须步骤

YARN(Yet Another Resource Negotiator)是 Hadoop 生态系统中的一个资源管理和调度框架。它主要用于管理计算集群中的资源分配,以支持分布式数据处理任务。YARN 是 Hadoop 2.x 及更高版本的一部分,它负责管理集群资源,并协调各种应用程序的资源需求。以下是 YARN 的详细解释以及它对 Free5GC 独立部署的作用。

YARN 作为 Hadoop 的资源管理和调度框架,主要负责集群资源的分配、调度和监控。在 Free5GC 的独立部署中,YARN 可以用于有效地管理计算资源,处理大规模数据任务,并提供高可用性和扩展性。这使得 Free5GC 能够在需要大规模数据处理和分析时,利用 YARN 提供的资源管理和调度能力,以优化性能和可靠性。

2.  free5gc容器化部署

2.1 构建GTP5G模块

!注意构建GTP5G模块时,需要用普通用户构建,否则后续使用时会出错

注:gtp5g模块是free5gc模拟核心网的内核模块,无论何种部署方案,都必须安装

2.2 容器化部署free5gc模拟核心网

容器化的部署方式:

1. 下载Free5GC Compose项目

2. 修改构建脚本以应对国内网络问题

3. 构建Free5GC Docker镜像

4. 构建Docker容器

5. 运行Free5GC核心网

3.UERANSIM模拟设备安装

UERANSIM 是一个开源项目,旨在模拟用户设备(UE)和无线接入网络(RAN)环境,特别是5G网络中的UE和gNodeB(gNB,5G基站)。这个工具主要用于测试和验证5G核心网(如Free5GC)的功能,而不需要实际的物理设备。通过UERANSIM,开发者可以创建虚拟的UE和gNB来与5G核心网通信,进行端到端的网络测试。

作用:模拟UE(User Equipment)和模拟gNB(gNodeB,5G基站)

组成和架构:UE模拟器和gNB模拟器

工作流程:

网络启动,UE注册和认证,PDU会话简历,数据传输

4. 全套环境配置并运行

1 启动Free5GC环境

2 UERANSIM配置设置:

获取虚拟机网卡地址,获取AMF的IP地址,修改UERANSIM中的gnb配,注册虚拟UE到Free5GC

3 启动UERANSIM模拟设备:

启动模拟基站(gNB),启动模拟用户设备(UE),验证连接

通过正确配置Free5GC的网络信息(如AMF IP)和UERANSIM的配置文件,可以成功模拟5G基站和用户设备的行为,进行5G网络功能的验证与测试。这种模拟方式为研究人员和开发人员提供了无需物理硬件的5G网络测试环境。

5. 模拟5g网络基本使用演示

5.1  free5gc模拟核心网基本信息查看

上述环境搭建完成,并且启动free5gc容器后,我们可以通过以下命令查看free5gc单个容器的一些状态信息:

docker inspect <容器名(如amf)>

可以通过命令,查询出所有容器及其对应的ip地址,查询出所有容器及其对应的mac地址,进入到各个容器的交互界面

5.2  free5gc模拟核心网基本网络结构分析

free5gc模拟环境搭建完成后,其会虚拟出一个网桥,以及数个和网元对应的虚拟端口,网元通过这些端口和网桥、gnb连接,可以安装bridge-utils工具,以使用brctl命令查看相关信息。

在此基础上经过一定分析后,可画出当前free5gc+ueransim模拟5g网络的组网图大致如下:

5.3 UERANSIM模拟gNB建立

通过以下命令即可建立起虚拟的gnb,并且可以在前台看到相关的建立信息。

cd ~/UERANSIM/build
./nr-gnb -c ../config/free5gc-gnb.yaml

5.4 UERANSIM模拟ue建立与注册、去注册

1.通过命令即可建立出虚拟的UE设备,同时该命令还会将UE设备在核心网处注册。

cd ~/UERANSIM/build
sudo ./nr-ue -c ../config/free5gc-ue.yaml

(命令的目的就是到对应文件夹当中执行对应可执行文件自动化建立UE和gnb)

2. 抓包分析UE注册交互:

使用Wireshark抓包工具,在UE注册过程中捕获通过NGAP协议传输的信令包。通过过滤NGAP协议,可以详细分析UE与网络注册时的信令交互,帮助了解5G网络的工作原理和调试流程。

3. 去注册流程

使用./nr-cli imsi-<UE的IMSI>命令进入UE的命令行界面,并使用deregister命令执行UE的去注册操作。Wireshark可用来抓取去注册过程中发送的信令包,帮助验证去注册流程的正确性。

5.5 Free5GC实际数据业务模拟

5.6 总结

以上步骤详细介绍了如何通过Free5GC和UERANSIM模拟5G网络的关键流程,包括:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2111329.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年上海松江启动建筑绿色低碳发展专项检查,共绘城市节能新篇章

2024年9月4日&#xff0c;2024年度松江区建筑工程绿色低碳发展工作专项检查会议正式开展&#xff0c;会议内容主要围绕以下三点&#xff0c; 1、《关于开展 2024年度本市建筑领域绿色低碳发展工作监督检查的通知》宣贯。 2、分项计量、能效测评工作验收要求介绍。 3、专项检…

怎么使用matplotlib绘制一个从-2π到2π的sin(x)的折线图-学习篇

首先&#xff1a;如果你的环境中没有安装matplotlib&#xff0c;使用以下命令可以直接安装 pip install matplotlib如何画一个这样的折线图呢&#xff1f;往下看 想要画一个简单的sin(x)在-2π到2π的折线图&#xff0c;我们要拆分成以下步骤&#xff1a; 先导入相关的库文…

用ChatGPT撰写论文被判抄袭?8个技巧让你轻松写出原创优质论文

在学术写作中,原创性和诚信是评价论文质量的关键因素。ChatGPT作为一种先进的AI写作助手,可以帮助您快速生成内容,但同时也带来了抄袭的风险。本文将探讨如何在使用ChatGPT时确保您的论文内容独特且原创。 以下是每个步骤的详细使用说明和操作案例: 一、具体提问与个性化…

VBA进行excel坐标转换

在Excel里利用坐标绘图时&#xff0c;可以比较容易想到采用数据透视表&#xff0c;但是数据透视表生成的图不可更改&#xff0c;因此本案例采用VBA进行坐标变换而不改变原始值来转换图像&#xff0c;即实现图像的左右翻转和上下翻转&#xff0c;如下图所示&#xff0c;选择map的…

万字长文,只为给小白说明白搭建一个单节点多工作节点k8s如何操作!!!

这里写目录标题 1. Kubernetes 基础概念1.1 什么是 Kubernetes&#xff1f;1.2 核心组件 本次搭建的机器演示具体的安装部署步骤修改主机的机器名称依次修改主机的host文件配置免密登录当前用户的 SSH 公钥复制到远程主机关闭交换区分区加载 br_netfilter 内核模块为什么安装 K…

iptables防火墙的通俗理解,和k8s中的iptables策略使用

iptables是什么&#xff1f; 是ip table s ip 表格 多个 就是 多个和ip有关系的表格 什么是ip&#xff1f; 每个网络设备的唯一标识 有这个&#xff0c;能和别的有ip的设备聊天 没这个&#xff0c;得想别的办法 拿四版本来说 ip是32个二进制数 比如…

JAVA并发编程JUC包之CAS原理

在JDK 1.5之后&#xff0c;java api中提供了java.util.concurrent包&#xff0c;简称JUC包。这个包定义了很多我们非常熟悉的工具类&#xff0c;比如原子类AtomicXX&#xff0c;线程池executors、信号量semaphore、阻塞队列、同步器等。日常并发编程要用的熟面孔基本都在这里。…

Rk3588 Android12 AIDL 开发

AIDL (Android Interface Definition Language) 和 HIDL (HAL Interface Definition Language) 都是 Android 系统中用于定义接口的工具&#xff0c;但它们有不同的用途和特性。 AIDL (Android Interface Definition Language) 用途&#xff1a; 主要用于应用程序之间的进程间…

基于SpringBoot的智能物流仓库管理系统-源代码-论文

&#x1f4a5;&#x1f4a5;源码和论文下载&#x1f4a5;&#x1f4a5;&#xff1a;基于SpringBoot的智能物流仓库管理系统-源代码-论文-数据库 1. 系统介绍 物流快递仓库管理是一项非常繁琐复杂的工作&#xff0c;每天要处理大量的单据数据&#xff0c;包括入库、出库、退库、…

Web:攻防世界unseping

目录 一、初见 二、解题步骤 一、初见 刚拿到这个题目&#xff0c;可以发现是一串PHP代码&#xff0c;关注到unserialize(base64_decode($ctf))函数&#xff0c;就知道是考php反序列化。 审计PHP类ease&#xff1a; __construct($method, $args) &#xff1a;构造器需要传入两…

k8s中的层级结构,及节点组件的作用

可以从三个层面来看待k8s集群 第一个层 是client主机 为什么要有client主机 不是在控制节点上管理计算节点吗 是的 但是&#xff0c;当有多个k8s集群需要管理的时候 一般不会每管理一个集群&#xff0c;就登录到那个集群的控制节点上 这样来来回回切换登录 client主机…

电路分析 ---- 加法器

1 同相加法器 分析过程 虚短&#xff1a; u u − R G R G R F u O u_{}u_{-}\cfrac{R_{G}}{R_{G}R_{F}}u_{O} u​u−​RG​RF​RG​​uO​ i 1 u I 1 − u R 1 i_{1}\cfrac{u_{I1}-u_{}}{R_{1}} i1​R1​uI1​−u​​&#xff1b; i 2 u I 2 − u R 2 i_{2}\cfrac{u_{…

同时播放多个视频

介绍一款小众的视频播放器&#xff0c;之前有小伙伴找那种可以同时播放多个视频的软件&#xff0c;“恒硕加播放”可以做到这一点&#xff0c;功能不是太多&#xff0c;但是日常播放是足够了。 同时播放多个视频控制多个视频跳到指定进度同时暂停/播放/停止/静音/倍速浏览系统…

金属3D打印与压铸模具的融合:创新引领制造新纪元

步入工业4.0的新纪元&#xff0c;3D打印技术犹如一股强劲的东风&#xff0c;为制造业的转型升级插上了智慧的翅膀。作为铸造领域的核心&#xff0c;压铸模具在工业领域扮演着不可或缺的角色&#xff0c;其重要性不言而喻。然而&#xff0c;面对日益多样化的压铸件需求&#xff…

力扣最热一百题——和为K的子数组

目录 题目链接&#xff1a;560. 和为 K 的子数组 - 力扣&#xff08;LeetCode&#xff09; 题目描述 示例 提示&#xff1a; 解法一&#xff1a;暴力枚举 Java写法&#xff1a; C写法&#xff1a; 解法二&#xff1a;前缀和哈希表 计算子数组和 如何优化问题 代码解…

混合部署 | 在RK3568上同时部署RT-Thread和Linux系统-迅为电子

RT-Thread 是一个高安全性、实时性的操作系统&#xff0c;广泛应用于任务关键领域&#xff0c;例如电力、轨道交通、车载系统、工业控制和新能源等。它的加入让 RK3568 能够在保证系统实时性和安全性的同时&#xff0c;灵活处理复杂的任务场景。 在一般情况下&#xff0c;iTOP-…

AI聊天应用不能上架?Google play对AI类型应用的规则要求是什么?

随着生成式AI模型的广泛应用&#xff0c;很多开发者都有在开发AI应用或将其整合到应用中。我们知道&#xff0c;谷歌是非常注重应用生态的&#xff0c;去年开始就推出了一些针对生成式AI应用的政策&#xff0c;对AI应用的内容质量和合规性问题提出了一些要求。 几天前&#xff…

Deep Ocr

1.圈出内容,文本那里要有内容.然后你保存,并导出数据集. 2.找出deep_ocr_recognition_training_workflow.hdev 文件.修改“DatasetFilename : Test.hdict” 310行 write_deep_ocr (DeepOcrHandle, BestModelDeepOCRFilename) 3.推理test.hdev 但发现很慢&#xff0c;没有mlp…

STM32快速复习(九)RTC时钟模块

文章目录 前言一、RTC是什么&#xff1f;RTC的工作原理&#xff1f;二、库函数以及示例1.标准库函数2.示例代码 总结 前言 STM32 的实时时钟&#xff08;RTC&#xff09;是一个独立的定时器。 STM32 的 RTC 模块拥有一组连续计数的计数器&#xff0c;在相应软件配置下&#xf…

ARM----时钟

时钟频率可以是由晶振提供的,我们需要高频率,但是外部接高的晶振会不稳定,所有使用PLL(锁相环)来放大频率。接下来就让我们学习用外部晶振提供的频率来配置时钟频率。 一.时钟源的选择 在这里我们选择外部晶振作为时钟源,通过查看芯片手册和原理图来看我们的时钟源。 这是…