3、核心网模拟器搭建:使用 Amarisoft 或 open5gs 搭建 4G/5G 核心网模拟环境
做小基站测试,最头疼的事是什么?
我个人觉得,是缺一个能随时调用的核心网。
你想想看,每次测试都要找运营商拉一条真实的核心网链路,流程繁琐不说,参数还不能随便改。我在项目初期就吃过这个亏——为了测一个切换场景,等核心网配合等了整整两周。
后来我学乖了。自己搭一个核心网模拟器,想怎么测就怎么测。
这一章,我就带你走一遍两种主流方案:Amarisoft 和 open5gs。一个商业,一个开源,各有各的脾气。
3.1 为什么需要核心网模拟器?
说白了,小基站自己不会干活。它得连上核心网,才能完成注册、鉴权、会话建立这些流程。
真实核心网的问题在于:
- 成本高——一套完整的 EPC/5GC 设备,动辄几十万
- 配置僵化——改个 PLMN 都得走审批
- 调试困难——出了问题,你连日志都拿不到
模拟器就不一样了。你可以在笔记本上跑,参数随便调,日志随便看。嗯,这才是搞研发该有的样子。
3.2 方案一:Amarisoft——商业级模拟器
Amarisoft 是我用得最多的方案。为什么?因为它稳定。
我在某大厂做预商用测试时,连续跑了 72 小时的压力测试,Amarisoft 一次都没崩。说实话,这比某些商用核心网还靠谱。
3.2.1 环境要求
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 4 核 x86 | 8 核 Intel Xeon |
| 内存 | 8 GB | 16 GB |
| 网卡 | 千兆以太网 | 双口万兆 |
| 操作系统 | Ubuntu 20.04 | Ubuntu 22.04 LTS |
3.2.2 安装步骤
Amarisoft 的安装其实不复杂,但有个坑——它需要绑定网卡 MAC 地址。我第一次装的时候没注意,结果 License 死活激活不了。
# 1. 下载安装包(需要官方 License)
wget https://www.amarisoft.com/software/amarisoft-2024-03-15.zip
# 2. 解压并安装
unzip amarisoft-2024-03-15.zip
cd amarisoft-2024-03-15
sudo ./install.sh
# 3. 配置网卡绑定
sudo ifconfig eth0 hw ether 00:11:22:33:44:55
3.2.3 配置 4G EPC
配置 Amarisoft 的 EPC,核心文件是 epc.conf。我习惯把关键参数列出来,方便后续调试。
{
"mme": {
"plmn": "310-410",
"mme_code": 1,
"mme_group": 1,
"tac": 1
},
"sgw": {
"s1u_ip": "192.168.1.100",
"gtpu_ip": "192.168.1.100"
},
"hss": {
"imsi": "310410123456789",
"key": "00112233445566778899AABBCCDDEEFF",
"opc": "00FFEEDDCCBBAA998877665544332211"
}
}
这里有个小技巧:IMSI 和 Key 一定要和你的 UE 模拟器一致。我见过有人配错了 Key,结果 UE 一直注册失败,还以为是空口有问题。
3.2.4 启动与验证
# 启动 EPC
sudo ./epc --config epc.conf
# 查看日志
tail -f /var/log/amarisoft/epc.log
# 验证 UE 注册
# 如果看到 "UE registered successfully",说明通了
3.3 方案二:open5gs——开源首选
如果你预算有限,或者想深入理解核心网的信令流程,open5gs 是更好的选择。
我为什么这么说?因为开源项目你可以看源码。有一次我遇到一个 NAS 消息解析异常的问题,就是靠读 open5gs 的代码找到的根因。
3.3.1 安装方式
open5gs 支持两种安装方式:源码编译和包管理器安装。我建议用源码编译,虽然慢一点,但可控性更强。
# 方式一:源码编译(推荐)
git clone https://github.com/open5gs/open5gs.git
cd open5gs
meson build
ninja -C build
sudo ninja -C build install
# 方式二:APT 安装(快速)
sudo add-apt-repository ppa:open5gs/latest
sudo apt update
sudo apt install open5gs
3.3.2 配置 5G Core
open5gs 的 5G 核心网配置比 4G 复杂一些,因为多了 NRF、AUSF、UDM 这些网元。不过别怕,核心逻辑是一样的。
# 修改 amf.yaml
amf:
plmn:
mcc: 310
mnc: 410
tai:
plmn:
mcc: 310
mnc: 410
tac: 1
sbi:
addr: 127.0.0.5
port: 7777
# 修改 smf.yaml
smf:
sbi:
addr: 127.0.0.4
port: 7777
pfcp:
addr: 127.0.0.4
嗯,这里要注意:每个网元的 IP 地址不能冲突。我习惯用 127.0.0.x 的地址段,方便本地调试。
3.3.3 启动所有网元
# 启动顺序很重要:先核心网元,再接入网元
sudo open5gs-nrfd &
sudo open5gs-scpd &
sudo open5gs-ausfd &
sudo open5gs-udmd &
sudo open5gs-pcrfd &
sudo open5gs-nssfd &
sudo open5gs-amfd &
sudo open5gs-smfd &
sudo open5gs-upfd &
# 检查所有进程是否正常
ps aux | grep open5gs
3.4 两种方案的对比
| 特性 | Amarisoft | open5gs |
|---|---|---|
| 成本 | 商业授权(约 $5000/年) | 免费开源 |
| 稳定性 | 极高,适合长时间压力测试 | 较高,社区活跃 |
| 功能完整性 | 支持 4G/5G 全功能 | 5G 功能持续完善中 |
| 调试便利性 | 日志详细,但需付费支持 | 可读源码,自由修改 |
| 适用场景 | 商用测试、认证测试 | 研发调试、教学实验 |
3.5 我的建议
如果你问我怎么选,我的答案是:两个都要。
我在实验室里同时跑着 Amarisoft 和 open5gs。Amarisoft 用来做正式的回归测试,open5gs 用来做信令分析和异常场景模拟。
举个例子:有一次我需要测试 UE 在 TAU 失败后的行为。用 Amarisoft 很难触发这个场景,但 open5gs 我可以直接改代码,让 AMF 返回一个拒绝消息。这就是开源的好处。