从0到1构建开源5G核心网:Open5GS部署全攻略
Open5GS作为基于C语言实现的开源5G核心网解决方案,支持3GPP Release-17标准,提供完整的5G核心网与EPC(演进型分组核心网)功能。本文将通过场景化解决方案,帮助开发者从零开始部署功能完备的5G核心网络,掌握从环境准备到二次开发的全流程技术要点。
1 需求解析:为什么选择Open5GS构建5G核心网
在5G技术快速发展的今天,构建灵活、可定制的核心网络成为企业与开发者的迫切需求。Open5GS凭借其开源特性、模块化设计和对最新标准的支持,成为5G核心网研究与原型开发的理想选择。与商业解决方案相比,它提供了完全透明的代码实现和灵活的部署选项,同时支持4G/5G融合网络架构,满足从实验室研究到小规模商用的多样化需求。
2 架构解密:理解Open5GS的模块化设计
Open5GS采用控制平面与用户平面分离(CUPS)的架构设计,实现了网络功能的灵活部署与扩展。下图展示了Open5GS的核心网络架构,清晰呈现了控制平面与用户平面的组件分布及交互关系。
核心组件对比分析
| 平面类型 | 核心组件 | 主要功能 | 协议接口 |
|---|---|---|---|
| 控制平面 | AMF(接入和移动性管理功能) | 处理接入控制、移动性管理、会话管理 | N1/N2/N11 |
| SMF(会话管理功能) | 会话建立、QoS控制、UPF选择 | N4/N7/N11 | |
| UDM(统一数据管理) | 用户身份验证、签约数据管理 | N8/N10 | |
| NRF(网络仓库功能) | 网络功能注册与发现 | NRF服务接口 | |
| 用户平面 | UPF(用户平面功能) | 数据包路由转发、QoS执行 | N3/N9/N6 |
| SGW-U(服务网关用户面) | 4G核心网用户平面数据处理 | S1-U/S5 |
3 实施路径:四阶段部署Open5GS核心网
3.1 环境准备:构建基础开发环境
📌 系统要求验证
# 检查Ubuntu版本(需18.04或更高)
lsb_release -a | grep "Release"
# 验证内存与磁盘空间
free -h | grep "Mem" # 至少2GB可用内存
df -h / # 至少5GB可用磁盘空间
📌 依赖组件安装
# 更新系统包列表
sudo apt update
# 安装必要依赖
sudo apt install -y git meson ninja-build libsctp-dev libgnutls28-dev \
libgcrypt-dev libssl-dev libidn11-dev libmongoc-dev libbson-dev \
libyaml-dev libmicrohttpd-dev libcurl4-gnutls-dev libnghttp2-dev
3.2 核心组件部署:编译与安装Open5GS
📌 获取项目源码
# 克隆Open5GS仓库
git clone https://gitcode.com/gh_mirrors/op/open5gs
📌 编译源代码
# 进入项目目录
cd open5gs
# 配置构建目录(指定安装路径为/usr/local)
meson setup builddir --prefix=/usr/local
# 执行编译(-j参数指定并行编译任务数,根据CPU核心数调整)
ninja -C builddir -j 4
⚠️ 编译常见问题解决:若出现依赖缺失错误,使用sudo apt-get install安装提示缺失的开发包;若编译过程中出现内存不足,减少并行任务数或增加系统内存。
📌 安装核心组件
# 使用sudo权限安装(需输入管理员密码)
sudo ninja -C builddir install
# 验证安装结果
ls /usr/local/bin/open5gs-* # 列出已安装的Open5GS可执行文件
3.3 网络配置:核心网参数设置
📌 配置数据库
# 初始化MongoDB数据库(存储用户签约数据)
cd misc/db
./open5gs-dbctl create # 创建默认数据库与集合
./open5gs-dbctl add 901700000000001 imsi00101 # 添加测试用户
📌 修改核心网配置文件
# 编辑AMF配置文件(设置PLMN、TAC等核心参数)
sudo nano /usr/local/etc/open5gs/amf.yaml
# 关键配置项说明:
# plmn_id: { mcc: 901, mnc: 70 } # 移动国家码和移动网络码
# tai: { plmn_id: { mcc: 901, mnc: 70 }, tac: 1 } # 跟踪区码
# amf: { sbi: { server: { ip: 127.0.0.5 } } } # AMF服务IP地址
3.4 功能验证:服务启动与状态检查
📌 启动核心网服务
# 启动AMF服务(接入和移动性管理功能)
sudo systemctl start open5gs-amfd
# 启动SMF服务(会话管理功能)
sudo systemctl start open5gs-smfd
# 启动UPF服务(用户平面功能)
sudo systemctl start open5gs-upfd
📌 验证服务状态
# 检查服务运行状态
sudo systemctl status open5gs-amfd open5gs-smfd open5gs-upfd
# 查看日志确认服务正常启动
tail -f /var/log/open5gs/amf.log
⚠️ 服务启动失败排查:若服务启动失败,首先检查配置文件语法错误,其次查看日志文件定位具体错误原因,常见问题包括端口冲突、数据库连接失败等。
4 深度解析:网络切片与业务场景配置
网络切片是5G的核心特性,允许在同一物理基础设施上创建多个逻辑网络,为不同业务场景提供定制化服务。Open5GS支持基于S-NSSAI(单网络切片选择辅助信息)的切片管理,通过WebUI可直观配置切片参数。
4.1 典型业务场景切片配置
场景一:增强型移动宽带(eMBB)
- S-NSSAI配置:SST=1(默认切片),SD=000000
- QoS参数:5QI=9,ARP=8,MBR=1Gbps/1Gbps
- 适用业务:高清视频流、VR/AR应用
场景二:低时延高可靠通信(uRLLC)
- S-NSSAI配置:SST=2,SD=000001
- QoS参数:5QI=80,ARP=1,MBR=100Mbps/100Mbps
- 适用业务:工业自动化、远程医疗
4.2 切片配置实操步骤
📌 通过WebUI配置切片
# 启动WebUI服务
cd webui
npm install # 安装依赖
npm run dev # 启动开发服务器
访问http://localhost:3000,登录后在"Subscriber"页面添加或编辑用户的切片信息,设置SST、SD、QoS等参数。
5 部署架构对比:选择适合的部署方案
不同部署环境各有优劣,选择时需考虑资源需求、扩展性和维护成本等因素:
5.1 物理机部署
- 优势:性能最佳,无虚拟化开销
- 劣势:资源利用率低,部署不够灵活
- 适用场景:性能要求高的生产环境
5.2 容器化部署
- 优势:环境一致性好,部署便捷
- 劣势:网络性能有一定损耗
- 适用场景:开发测试、小规模部署
- 实施方式:使用项目docker目录下的Dockerfile构建镜像
5.3 云环境部署
- 优势:弹性扩展能力强,资源利用率高
- 劣势:网络复杂度增加,成本较高
- 适用场景:大规模部署、多租户环境
6 二次开发入门:扩展Open5GS功能
Open5GS的模块化设计为二次开发提供了便利,以下是扩展核心功能的基本步骤:
6.1 代码结构解析
核心源代码位于src目录,各网络功能模块(AMF、SMF等)有独立子目录。例如:
- AMF模块:
src/amf/ - SMF模块:
src/smf/ - 公共库:
lib/(包含核心网络协议实现)
6.2 添加自定义网络功能
- 在
src目录下创建新功能模块目录(如src/custom-nf/) - 实现必要的初始化、事件处理和SBI接口
- 修改Meson构建文件,添加新模块编译规则
- 更新配置文件模板,支持新功能参数配置
6.3 开发资源
- 官方文档:
docs/_docs/目录下包含技术文档 - 测试用例:
tests/目录提供各类功能测试代码 - 协议实现:
lib/asn1c/目录包含ASN.1协议编解码代码
7 效果评估:核心网功能验证方法
7.1 基本功能测试
- 注册测试:使用UE模拟器验证用户注册流程
- 会话建立:检查PDR(分组检测规则)和QER(QoS执行规则)配置
- 切换测试:验证UE在不同小区间的移动性管理
7.2 性能指标监测
- 信令时延:通过Wireshark抓包分析N1/N2接口信令延迟
- 吞吐量测试:使用iperf等工具测试用户平面吞吐量
- 并发用户数:逐步增加UE数量,观察系统稳定性
7.3 日志分析工具
# 实时查看AMF日志
tail -f /var/log/open5gs/amf.log | grep "Registration"
# 使用grep筛选关键事件
grep "Session Establishment" /var/log/open5gs/smf.log
8 技术选型:Open5GS与同类项目对比
| 特性 | Open5GS | Free5GC | OAI Core |
|---|---|---|---|
| 实现语言 | C | Go | C++ |
| 标准支持 | Release-17 | Release-16 | Release-15 |
| 部署复杂度 | 中等 | 较高 | 高 |
| 社区活跃度 | 高 | 中 | 中 |
| 4G支持 | 原生支持 | 有限支持 | 需集成EPC |
| 硬件加速 | 支持DPU/智能NIC | 有限支持 | 部分支持 |
Open5GS以其成熟的C语言实现、对4G/5G的全面支持和较低的部署复杂度,特别适合需要快速原型验证和二次开发的场景。相比Go语言实现的Free5GC,Open5GS在资源占用和运行效率上更具优势,适合资源受限的边缘计算环境。
通过本文的指南,您已掌握Open5GS从环境准备到功能验证的完整部署流程。无论是5G技术研究、教学实验还是产品原型开发,Open5GS都提供了坚实的技术基础。随着5G技术的不断演进,这个开源项目将持续迭代,为开发者提供更多创新可能。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
FreeSql功能强大的对象关系映射(O/RM)组件,支持 .NET Core 2.1+、.NET Framework 4.0+、Xamarin 以及 AOT。C#00

