首页
/ 从0到1构建开源5G核心网:Open5GS部署全攻略

从0到1构建开源5G核心网:Open5GS部署全攻略

2026-04-08 09:06:05作者:邓越浪Henry

Open5GS作为基于C语言实现的开源5G核心网解决方案,支持3GPP Release-17标准,提供完整的5G核心网与EPC(演进型分组核心网)功能。本文将通过场景化解决方案,帮助开发者从零开始部署功能完备的5G核心网络,掌握从环境准备到二次开发的全流程技术要点。

1 需求解析:为什么选择Open5GS构建5G核心网

在5G技术快速发展的今天,构建灵活、可定制的核心网络成为企业与开发者的迫切需求。Open5GS凭借其开源特性、模块化设计和对最新标准的支持,成为5G核心网研究与原型开发的理想选择。与商业解决方案相比,它提供了完全透明的代码实现和灵活的部署选项,同时支持4G/5G融合网络架构,满足从实验室研究到小规模商用的多样化需求。

2 架构解密:理解Open5GS的模块化设计

Open5GS采用控制平面与用户平面分离(CUPS)的架构设计,实现了网络功能的灵活部署与扩展。下图展示了Open5GS的核心网络架构,清晰呈现了控制平面与用户平面的组件分布及交互关系。

Open5GS CUPS架构图:展示控制平面与用户平面分离的5G核心网结构,包含AMF、SMF等控制平面组件和UPF等用户平面组件的交互关系

核心组件对比分析

平面类型 核心组件 主要功能 协议接口
控制平面 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可直观配置切片参数。

Open5GS网络切片配置界面:显示用户901700000000001的订阅信息,包含默认切片(SST:1)和专用切片(SST:1 SD:000080)的QoS参数配置

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 添加自定义网络功能

  1. src目录下创建新功能模块目录(如src/custom-nf/
  2. 实现必要的初始化、事件处理和SBI接口
  3. 修改Meson构建文件,添加新模块编译规则
  4. 更新配置文件模板,支持新功能参数配置

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技术的不断演进,这个开源项目将持续迭代,为开发者提供更多创新可能。

登录后查看全文
热门项目推荐
相关项目推荐