1. 环境准备Ubuntu 24.04基础配置在开始部署5G核心网之前我们需要确保Ubuntu 24.04系统已经做好充分准备。我实测发现跳过某些看似简单的步骤往往会导致后续操作失败。首先打开终端执行以下命令安装基础工具包sudo apt install -y git net-tools putty这里有个细节容易被忽略net-tools在新版Ubuntu中默认不安装但后续网络调试时ifconfig命令必不可少。有次我在测试时发现容器网络异常却连基础排查工具都没有不得不中断所有操作重新安装。-y参数能避免安装过程中频繁确认特别适合自动化脚本。接着更新软件源索引这个步骤直接影响后续软件安装的成功率sudo apt update我遇到过因为软件源未更新导致的依赖冲突问题表现为Docker安装时提示无法定位软件包。此时可以尝试更换国内镜像源或者多执行几次更新命令。安装CA证书和curl工具也很关键sudo apt install -y ca-certificates curl最近一次部署中由于服务器时间未同步导致证书验证失败。这时候需要先安装ntpdate同步时间sudo ntpdate ntp.aliyun.com2. Docker引擎安装与优化配置容器化部署是当前5G核心网的主流方案但Docker的安装过程藏着不少坑。首先创建GPG密钥目录sudo install -m 0755 -d /etc/apt/keyrings这个目录权限设置很重要我遇到过因权限过松导致的安全警告也遇到过因权限过严导致apt无法读取密钥。接下来下载Docker官方GPG密钥sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc这里有个实用技巧如果下载速度慢可以先在浏览器中下载再用scp传到服务器。密钥下载后需要调整权限sudo chmod ar /etc/apt/keyrings/docker.asc添加Docker源时这个命令会自动适配系统架构和版本echo deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release echo ${UBUNTU_CODENAME:-$VERSION_CODENAME}) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null更新源后安装Docker全家桶sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin有次我在ARM架构服务器上安装时发现部分插件不兼容这时可以去掉docker-buildx-plugin参数。安装完成后务必将当前用户加入docker组sudo usermod -a -G docker $(whoami)这个步骤需要注销重新登录才能生效我建议直接重启reboot3. OAI CN5G资源获取与解压OAI官方提供的压缩包包含全套配置文件下载命令如下wget -O ~/oai-cn5g.zip https://gitlab.eurecom.fr/oai/openairinterface5g/-/archive/develop/openairinterface5g-develop.zip?pathdoc/tutorial_resources/oai-cn5g如果下载中断可以尝试用-c参数续传。解压时要注意路径结构unzip ~/oai-cn5g.zip mv ~/openairinterface5g-develop-doc-tutorial_resources-oai-cn5g/doc/tutorial_resources/oai-cn5g ~/oai-cn5g清理临时文件时建议先确认目标目录是否包含重要文件ls ~/oai-cn5g rm -r ~/openairinterface5g-develop-doc-tutorial_resources-oai-cn5g ~/oai-cn5g.zip4. 容器部署与网络调优进入工作目录拉取镜像cd ~/oai-cn5g docker compose pull镜像拉取可能耗时较长我记录了几次实测数据基础镜像约1.2GB下载速度约5MB/sAMF镜像约800MB下载速度波动较大SMF镜像约1.5GB含完整功能模块启动所有服务建议使用-d参数在后台运行docker compose up -d查看服务状态可以用docker compose ps常见的网络问题排查方法检查容器IP分配docker network inspect oai-cn5g_default查看特定容器日志docker logs oai-amf测试容器间连通性docker exec -it oai-amf ping oai-smf停止服务时建议先保存日志docker compose logs oai_logs.txt docker compose down有次我在测试时发现SMF服务频繁重启后来发现是默认配置的内存限制过低。解决方法是在docker-compose.yml中增加资源限制services: oai-smf: mem_limit: 2g mem_reservation: 1g5. 核心网组件深度配置OAI CN5G包含多个核心组件每个都需要特别关注。AMF配置主要修改# amf.conf amf: sbi: addr: 192.168.70.132 port: 80SMF的UPF配置需要匹配实际网络环境# smf.conf upf: - addr: 192.168.70.133 type: UPF interfaces: - N3 - N4 - N6UDM的数据库连接配置很关键# udm.conf database: type: mongodb uri: mongodb://oai-mongodb:27017我建议首次部署时开启调试日志# 通用配置 logger: level: debug reportCaller: true6. 典型问题排查手册根据多次部署经验我整理了常见错误及解决方法问题1容器启动后立即退出检查项查看docker logs 容器名典型原因配置文件语法错误解决方案用yamllint验证配置文件问题2AMF无法连接SMF检查项docker exec oai-amf curl -v http://oai-smf:80典型原因网络策略限制解决方案检查docker网络配置确保在相同网络问题3UE注册失败检查项AMF日志中的S1AP消息典型原因PLMN配置不匹配解决方案检查plmnSupportList参数问题4数据库连接超时检查项MongoDB容器状态典型原因资源不足解决方案增加容器内存限制7. 性能调优实战建议经过多次压力测试我总结出这些优化参数AMF优化amf: n2: maxUe: 1000 # 默认100 sbi: worker: 4 # 默认2SMF优化smf: pduSession: max: 500 # 默认100 upf: selecter: roundrobin系统级优化调整Docker守护进程参数sudo nano /etc/docker/daemon.json添加{ default-ulimits: { nofile: { Name: nofile, Hard: 65535, Soft: 65535 } } }内核参数调整echo net.core.somaxconn 1024 | sudo tee -a /etc/sysctl.conf echo vm.swappiness 10 | sudo tee -a /etc/sysctl.conf sudo sysctl -p8. 扩展功能集成方法基础网络搭建完成后可以考虑这些增强功能监控系统集成docker run -d --name prometheus \ -p 9090:9090 \ -v ~/oai-cn5g/monitoring/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus日志收集方案# docker-compose.yml services: loki: image: grafana/loki ports: - 3100:3100 grafana: image: grafana/grafana ports: - 3000:3000自动化测试脚本示例import requests amf_api http://localhost:80 ue_count 100 for i in range(ue_count): r requests.post(f{amf_api}/register, json{ imsi: f0010100000000{i}, plmn: 00101 }) print(fUE {i} status: {r.status_code})这套环境搭建完成后可以稳定支持约200个并发UE的连接测试。在实际项目中建议根据业务需求调整AMF和SMF的资源配置特别是当需要支持切片功能时需要额外配置NSSAI参数。