news 2026/4/15 20:11:53

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/4/13 1:14:44

Qwen-Image-Edit-2511支持视频帧编辑吗?可能性分析

Qwen-Image-Edit-2511支持视频帧编辑吗?可能性分析 文档版本:1.0.0 发布日期:2025-12-27 适用对象:AI图像工程师、多模态应用开发者、视频处理技术决策者 1. 问题本质:我们到底在问什么? “Qwen-Image-Ed…

作者头像 李华
网站建设 2026/4/16 11:15:16

通义千问3-Reranker-0.6B性能优化:批处理大小调优使吞吐提升2.3倍实测

通义千问3-Reranker-0.6B性能优化:批处理大小调优使吞吐提升2.3倍实测 你有没有遇到过这样的情况:明明模型推理速度看着还行,但一到实际批量处理几十个查询上百个候选文档时,系统就卡顿、响应变慢、吞吐上不去?我们最…

作者头像 李华
网站建设 2026/4/11 22:19:19

ChatGLM-6B开源模型实战:双语对话服务在低显存GPU上的稳定运行

ChatGLM-6B开源模型实战:双语对话服务在低显存GPU上的稳定运行 1. 为什么是ChatGLM-6B?——轻量、双语、真可用 很多人一听到“大模型”,第一反应就是“得配A100”“显存不够跑不动”。但现实里,大多数开发者手头只有单卡3090、…

作者头像 李华
网站建设 2026/4/16 11:10:07

Z-Image-Turbo真实体验:输入一句话就能出高清图

Z-Image-Turbo真实体验:输入一句话就能出高清图 1. 这不是“又一个”图像生成工具,而是真正能用起来的AI画手 你有没有过这样的经历:看到一张惊艳的AI图,立刻想试试——结果打开网页、注册账号、等加载、调参数、反复试错半小时…

作者头像 李华
网站建设 2026/4/15 19:24:49

CosyVoice-300M Lite为何快?模型压缩技术解析与部署教程

CosyVoice-300M Lite为何快?模型压缩技术解析与部署教程 1. 为什么它跑得快:不是“小”,而是“精” 你可能已经注意到——CosyVoice-300M Lite 启动只要2秒,生成一段30秒语音平均耗时不到8秒(纯CPU环境)&…

作者头像 李华