news 2026/6/23 22:13:49

Ubuntu环境下搭建free5GC与OAI gNB/nrUE的5G端到端仿真平台

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu环境下搭建free5GC与OAI gNB/nrUE的5G端到端仿真平台

1. 环境准备与基础概念

在开始搭建5G端到端仿真平台之前,我们需要先理解几个关键组件的作用。free5GC是一个开源的5G核心网实现,相当于5G网络的大脑;OAI gNB是基站(类似4G时代的eNodeB);OAI nrUE则是用户设备模拟器。这三个组件组合起来,就能模拟真实的5G网络环境。

我推荐使用Ubuntu 20.04 LTS版本,这个版本经过社区验证兼容性最好。硬件配置建议至少4核CPU、8GB内存和50GB硬盘空间,如果条件允许,使用物理机比虚拟机性能更好。我曾经在虚拟机里测试时遇到过时钟同步问题,后来改用双物理机部署才解决。

安装前需要准备的依赖项包括:

  • 基础工具链:build-essentialcmakegit
  • 开发库:libsctp-devlibyaml-dev
  • 网络工具:net-toolsiproute2

用以下命令一键安装:

sudo apt update && sudo apt install -y build-essential cmake git libsctp-dev libyaml-dev net-tools iproute2

2. free5GC核心网部署

free5GC的安装分为控制面和用户面两部分。控制面负责信令处理,用户面(UPF)负责数据转发。我遇到过UPF无法启动的问题,后来发现是内核模块加载问题,需要特别注意。

首先克隆代码库:

git clone --recursive -b v3.2.0 https://github.com/free5gc/free5gc.git cd free5gc

编译前需要安装Golang环境。建议使用Go 1.18+版本:

wget https://go.dev/dl/go1.18.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.18.linux-amd64.tar.gz echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc source ~/.bashrc

关键一步是安装gtp5g内核模块,这是UPF正常工作所必需的:

git clone -b v0.6.1 https://github.com/free5gc/gtp5g.git cd gtp5g make sudo make install

编译完成后,启动核心网服务:

cd ~/free5gc make ./run.sh

验证核心网是否正常运行:

curl http://localhost:8000/api/nf-instances

应该能看到返回的JSON数据。如果遇到端口冲突,可以修改config/目录下的配置文件。

3. OAI gNB基站编译与配置

OAI的编译选项很多,新手容易混淆。我建议首次尝试时使用RF模拟器模式(SIMU),这样不需要额外硬件。

获取源码并切换稳定分支:

git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git cd openairinterface5g git checkout 2023.w36

安装依赖时有个小技巧:使用参数-I会自动安装所需依赖,但国内用户可能需要更换apt源:

./build_oai -I -w SIMU --gNB --ninja

编译gNB和nrUE:

./build_oai --gNB --nrUE -w SIMU --ninja

配置文件位于targets/PROJECTS/GENERIC-NR-5GC/CONF/目录。重点修改:

  • plmn_list中的MCC/MNC(需与free5GC一致)
  • amf_ip_address设为free5GC服务器IP
  • 接口名称和IP地址

示例配置片段:

plmn_list = ({ mcc = 466; mnc = 92; mnc_length = 2; }); amf_ip_address = ( { ipv4 = "192.168.1.100"; preference = "ipv4"; });

4. OAI nrUE用户设备配置

nrUE的配置需要与核心网中的用户数据匹配。在free5GC的Web界面(通常为http://localhost:5000)添加用户时,要确保以下信息一致:

  1. IMSI:466920000000001
  2. 密钥(K):8baf473f2f8fd09487cccbd7097c6862
  3. OPC:8e27b6af0e692e750f32667a3b14605d

nrUE的启动参数很关键,特别是频段和频率设置。对于Band78的仿真:

cd cmake_targets/ran_build/build sudo RFSIMULATOR=127.0.0.1 ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --sa

常见问题排查:

  • 如果出现"PBCH解码失败",检查gNB和nrUE的频段配置是否一致
  • "RRC连接超时"通常意味着AMF地址配置错误
  • 使用--phy-test模式可以快速验证射频链路

5. 端到端联调测试

当所有组件都启动后,可以通过以下步骤验证:

  1. 在free5GC控制台查看AMF日志,确认UE注册成功
  2. 在gNB终端查看调度信息,应有类似输出:
[PHY] DL Scheduling: frame 100, slot 2, UE 0, MCS 16, PRB 50
  1. 在nrUE端执行ping测试:
ping -I oaitun_ue1 8.8.8.8

性能优化技巧:

  • 调整min_rxtxtime参数改善时延
  • 使用--parallel-config PARALLEL_SINGLE_THREAD减少上下文切换
  • 在物理机上禁用CPU节能模式

6. 常见问题解决方案

问题1:UPF无法创建GTP隧道解决方法:

sudo modprobe gtp5g lsmod | grep gtp5g # 确认模块加载

问题2:AMF拒绝UE注册检查点:

  1. 确认UE的IMSI已在free5GC注册
  2. 核对gNB配置中的PLMN与核心网一致
  3. 检查时间同步(NTP服务)

问题3:射频链路不稳定尝试调整发射功率:

sudo ./nr-softmodem ... --txgain 75 --rxgain 120

问题4:Docker环境冲突如果使用Docker版free5GC,需要配置网络:

docker network create --subnet=192.168.100.0/24 oai-net

7. 进阶配置与监控

对于想深入研究的开发者,可以:

  1. 使用Wireshark抓包分析NGAP协议
sudo apt install wireshark sudo wireshark -k -i any -f 'port 38412'
  1. 启用详细日志
./nr-softmodem ... --log_config.global_level debug
  1. 性能监控指标
  • gNB侧:cat /proc/net/dev | grep oaitun
  • 核心网侧:curl http://localhost:9090/metrics
  1. Kubernetes部署(生产环境推荐)
kubectl apply -f https://raw.githubusercontent.com/free5gc/free5gc-k8s/master/deployments/base.yaml

这套平台虽然复杂,但通过分步实施和充分测试,完全可以搭建出可用的5G实验环境。我在实际项目中用它验证过网络切片和边缘计算方案,效果很好。关键是要有耐心,遇到问题时多查社区讨论和issue记录。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/17 21:31:17

Magma在医疗领域的创新应用:智能诊断助手实战

Magma在医疗领域的创新应用:智能诊断助手实战 Magma不是又一个“能看图说话”的多模态模型。它是一套面向真实世界交互的AI智能体基础架构——尤其当这个“真实世界”是诊室、影像科、手术准备间时,它的能力边界开始显现出临床价值。本文不讲论文里的Se…

作者头像 李华
网站建设 2026/6/15 10:35:13

Fun-ASR性能优化秘籍,让GPU跑得更快

Fun-ASR性能优化秘籍,让GPU跑得更快 在本地部署语音识别系统时,你是否遇到过这些情况: 上传一段5分钟的会议录音,等了快2分钟才出结果;批量处理20个音频文件,GPU显存突然爆满,页面直接卡死&…

作者头像 李华
网站建设 2026/6/15 10:35:09

那些年的QQ空间说说,终于可以完整保存了

那些年的QQ空间说说,终于可以完整保存了 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory "空间维护中,请稍后再试"——当你第无数次在QQ空间翻找大学时…

作者头像 李华
网站建设 2026/6/15 18:00:42

RMBG-2.0多行业落地案例:医美机构术前术后对比图自动抠图解决方案

RMBG-2.0多行业落地案例:医美机构术前术后对比图自动抠图解决方案 1. 引言:医美行业的图像处理痛点 医美机构每天需要处理大量术前术后对比照片,传统的人工抠图方式存在三个明显问题: 效率低下:设计师需要逐张处理照…

作者头像 李华
网站建设 2026/6/21 8:15:42

博途PLC滤波指令实战:Filter_PT1/PT2/DT1在工业PID控制中的信号优化应用

1. 为什么PID控制需要信号滤波 在工业自动化现场,PLC采集的模拟量信号总是伴随着各种干扰。记得我第一次调试一个恒压供水系统时,压力传感器的读数总是莫名其妙地跳动,导致水泵频繁启停。后来才发现是变频器的电磁干扰窜入了信号线。这种场景…

作者头像 李华