
1. 环境准备搭建你的5G核心网实验室想要动手搭建5G核心网别急着敲命令先把实验环境准备好。我建议用Ubuntu 18.04或更高版本作为基础系统这个版本社区支持完善遇到问题容易找到解决方案。实测在VMware Workstation 16 Pro上运行很流畅分配4核CPU、8GB内存和50GB硬盘空间就够用了。装系统时有个小技巧记得勾选安装OpenSSH服务器选项这样后面远程操作会方便很多。系统装好后第一件事是更新软件源sudo apt update sudo apt upgrade -y接下来安装必备工具链。Docker的版本兼容性特别重要我踩过坑推荐用官方脚本安装最新稳定版curl -fsSL https://get.docker.com | sudo sh sudo usermod -aG docker $USER # 把当前用户加入docker组 newgrp docker # 立即生效验证安装时别只看版本号要实际跑个测试容器docker run hello-world如果看到Hello from Docker!的欢迎信息说明环境基本OK。这时候再装docker-compose注意版本要匹配sudo apt install -y python3-pip sudo pip3 install docker-compose1.27.42. 获取OAI核心网组件从源码到镜像OAI项目现在托管在GitLab上克隆代码前建议先配置好Git身份git config --global user.name 你的名字 git config --global user.email 你的邮箱下载核心网联邦仓库时如果遇到速度慢的问题可以尝试先fork到自己的GitHub账号再从国内镜像克隆git clone https://github.com/你的账号/oai-cn5g-fed.git cd oai-cn5g-fed git remote add upstream https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed.git拉取Docker镜像是个耗时操作这里有个加速技巧——使用国内镜像仓库。先登录Docker Hubdocker login然后分批拉取基础镜像避免网络超时docker pull ubuntu:bionic docker pull mysql:5.7 wait核心网组件镜像建议按需拉取AMF和SMF是必选的for image in amf smf spgwu-tiny trf-gen-cn5g; do docker pull oaisoftwarealliance/oai-$image:latest done3. 网络配置让5G核心网组件互通5G核心网各个组件之间需要特定的网络配置才能正常通信。首先启用IPv4转发sudo sysctl -w net.ipv4.conf.all.forwarding1 sudo iptables -P FORWARD ACCEPT创建专用网桥时子网选择很关键。建议用192.168.70.128/26这个网段和官方文档保持一致docker network create \ --driverbridge \ --subnet192.168.70.128/26 \ -o com.docker.network.bridge.namedemo-oai \ demo-oai-public-net如果核心网和基站分开部署需要添加静态路由。假设基站服务器IP是192.168.1.100网卡是eth0sudo ip route add 192.168.70.128/26 via 192.168.1.100 dev eth0验证网络连通性时可以先用busybox容器测试docker run --rm --network demo-oai-public-net busybox ping -c 4 192.168.70.1294. 启动与验证让你的5G核心网跑起来进入docker-compose目录启动最小化核心网部署cd oai-cn5g-fed/docker-compose python3 core-network.py --type start-mini --fqdn no --scenario 2启动成功后用这些命令检查各组件状态docker ps -a # 查看容器运行状态 docker logs oai-amf # 查看AMF日志 docker exec -it oai-amf bash # 进入AMF容器在容器内可以测试关键功能ping oai-smf # 测试服务发现 netstat -tulnp # 检查端口监听情况常见问题排查技巧如果AMF启动失败检查mysql容器是否先启动完成SMF无法连接UPF时确认spgwu-tiny容器的IP配置正确注册流程失败时查看nrf容器的日志是否有证书错误5. 实战技巧我踩过的那些坑版本兼容性问题最让人头疼。有次我用Ubuntu 20.04默认的Docker 24.0结果核心网组件死活起不来。后来发现是docker-compose版本不匹配回退到1.27.4才解决。建议固定这些版本组合Ubuntu 18.04/20.04 LTSDocker 20.10.23docker-compose 1.27.4镜像拉取超时怎么办试试这个技巧先用国内镜像拉取基础镜像再修改tagdocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/ubuntu:bionic docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/ubuntu:bionic ubuntu:bionic内存不足导致容器被kill给Docker分配更多资源编辑/etc/docker/daemon.json添加default-shm-size: 1g重启Docker服务日志文件太大撑爆磁盘用logrotate管理容器日志sudo tee /etc/logrotate.d/docker EOF /var/lib/docker/containers/*/*.log { rotate 7 daily compress delaycompress missingok copytruncate } EOF6. 进阶配置定制你的5G核心网想修改AMF配置找到配置文件路径docker volume inspect oai-amf-config然后挂载自定义配置文件# 在docker-compose文件中添加 volumes: - ./my-amf-conf.yaml:/etc/oai-amf/amf.conf启用HTTPS接口需要准备证书。用OpenSSL生成自签名证书openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes性能调优参数示例AMF容器docker update --cpus 2 --memory 4g oai-amf监控方案建议用cAdvisor监控容器资源使用部署PrometheusGrafana收集指标关键指标AMF注册成功率、SMF会话建立时长7. 常见问题解决方案Q: 核心网启动后UE无法注册 A: 按这个顺序检查确认nrf服务正常curl -v http://oai-nrf:8080/nnrf-nfm/v1/nf-instances检查amf日志是否有UDM连接错误验证smf到upf的网络连通性Q: docker-compose报端口冲突 A: 快速定位占用端口的进程sudo netstat -tulnp | grep 80Q: 镜像拉取速度慢 A: 配置国内镜像加速器{ registry-mirrors: [https://registry.docker-cn.com] }Q: 容器启动后立即退出 A: 调试步骤docker run -it --entrypoint bash oai-amf # 交互式启动 docker logs --tail 50 oai-amf # 查看最后50行日志