别再问OAI是啥了!手把手带你用USRP B210和Ubuntu 20.04搭建自己的4G/5G实验网
从零搭建4G/5G实验环境:USRP B210与OAI实战指南
在通信技术快速迭代的今天,能够亲手搭建并调试一套完整的蜂窝网络实验环境,对于开发者、研究人员和学生来说都是极具价值的实践体验。不同于商业设备的"黑箱"特性,开源项目OpenAirInterface(OAI)为我们提供了深入理解无线通信协议栈的机会。本文将使用USRP B210软件定义无线电设备和Ubuntu 20.04系统,带你完成从硬件组装到手机成功接入的全过程。
1. 实验环境准备
1.1 硬件选型与配置
USRP B210作为一款性价比较高的SDR设备,支持70MHz-6GHz频段和双通道收发,非常适合OAI实验。除了主机设备外,还需要准备以下配件:
天线系统:根据目标频段选择合适的天线(如2.4GHz/5GHz WiFi天线)
时钟同步:对于多设备场景,建议配备外部10MHz时钟源和触发信号
供电方案:USB 3.0接口供电可能不足,需准备带电源适配器的USB Hub
配件清单:
组件 规格要求 备注 USRP B210 固件版本≥4.0 需更新FPGA镜像 主机 i5/i7四核以上 建议16GB内存 存储 SSD≥256GB 确保读写速度 网络 千兆以太网 建议使用Intel网卡
1.2 软件基础环境
Ubuntu 20.04 LTS是目前OAI兼容性最好的操作系统版本。在全新安装系统后,需要执行以下基础配置:
# 更新系统并安装基础工具 sudo apt update && sudo apt upgrade -y sudo apt install -y git build-essential cmake libusb-1.0-0-dev \ libfftw3-dev libmbedtls-dev libboost-program-options-dev \ libconfig++-dev libsctp-dev libtool autoconf注意:建议禁用Ubuntu的自动更新服务,避免内核升级导致驱动不兼容
内核需要启用特定的实时补丁和调度策略,可通过以下命令验证:
uname -r # 应显示类似5.4.0-135-generic的版本 cat /sys/kernel/realtime # 应返回1表示启用实时支持2. OAI源码编译与安装
2.1 依赖项深度配置
OAI对系统库版本有严格要求,需要专门配置开发环境:
# 安装UHD驱动 sudo apt install -y libuhd-dev uhd-host # 下载USRP FPGA镜像 sudo uhd_images_downloader # 验证设备连接 uhd_find_devices对于射频前端校准,还需安装特定工具链:
sudo apt install -y sox libsox-fmt-all octave \ liboctave-dev gnuplot-x112.2 源码获取与编译
OAI代码分为核心网(EPC)和接入网(eNB/gNB)两部分,建议分开编译:
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git cd openairinterface5g source oaienv ./cmake_targets/build_oai -I --eNB --gNB \ -w USRP --ninja编译过程中常见问题及解决方案:
错误:mbedtls版本冲突
rm -rf /usr/local/lib/libmbed* sudo apt install libmbedtls-dev警告:CPU指令集不支持需在CMakeLists.txt中添加
-march=native编译选项报错:内存不足增加swap空间:
sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
3. 核心网部署与配置
3.1 EPC组件安装
OAI核心网包含MME、HSS、SPGW等组件,推荐使用docker-compose部署:
version: '3' services: mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: linux oai-hss: image: oai-hss:latest depends_on: - mysql configs: - source: hss_config target: /etc/oai/hss.conf关键配置文件hss.conf需要根据实验环境调整:
HSS: { OPERATOR_key = "11111111111111111111111111111111"; # IMSI与密钥对应关系 USERS: ( { IMSI="001010000000001"; KEY="00112233445566778899aabbccddeeff"; OPc="63bfa50ee6523365ff14c1f45f88737d"; } ); }3.2 网络拓扑设计
实验网络通常采用隔离的物理接口或虚拟网络:
+----------------+ +------------+ +-------------+ | UE设备 |-----| eNodeB/gNB |-----| OAI EPC | | (手机/软件UE) | | (USRP B210)| | (主机) | +----------------+ +------------+ +-------------+ | +-------+ | 互联网 | +-------+配置TUN/TAP设备实现网络桥接:
sudo ip tuntap add mode tun tun0 sudo ip addr add 192.168.100.1/24 dev tun0 sudo ip link set tun0 up4. 基站配置与优化
4.1 eNB参数调优
针对USRP B210的典型配置文件示例:
eNB: { // 硬件配置 rf_config: { usrp_args = "type=b200"; clock_source = "internal"; time_source = "internal"; }; // 小区参数 cell_config: { dl_earfcn = 3350; // 对应Band 7 ul_earfcn = 21350; n_rb_dl = 25; // 5MHz带宽 tx_gain = 90; // 根据实际环境调整 rx_gain = 40; }; }重要:首次运行时需逐步调整发射功率,避免射频饱和
4.2 实时性优化
为满足严格的时序要求,需要配置CPU隔离和实时优先级:
# 隔离CPU核心 sudo vim /etc/default/grub # 修改GRUB_CMDLINE_LINUX="isolcpus=2,3" sudo update-grub # 设置CPU亲和性 taskset -cp 2,3 <eNB_PID>实时性能可以通过以下命令监控:
watch -n 0.1 "cat /proc/xenomai/stat | grep latency"5. 终端接入与问题排查
5.1 手机端配置
商用手机接入OAI网络需要特殊设置:
- 进入工程模式(不同品牌方法不同)
- 设置仅LTE模式
- 手动选择网络运营商
- 配置APN为"oai.ipv4"
常见兼容性设备列表:
| 手机型号 | 基带版本 | 备注 |
|---|---|---|
| Google Pixel 3 | SDM845 | 需解锁bootloader |
| Huawei P40 | Kirin 990 | 可能限制NSA模式 |
| Samsung S10 | Exynos 9820 | 需禁用运营商定制软件 |
5.2 典型故障排除
问题1:UE无法附着网络
排查步骤:
- 检查核心网日志确认鉴权流程
- 验证HSS中IMSI与密钥配置
- 使用wireshark捕获S1AP信令
问题2:高丢包率
优化方向:
- 调整USRP的tx/rx_gain参数
- 检查天线驻波比
- 降低系统中断延迟
问题3:吞吐量不稳定
性能优化技巧:
# 调整网络缓冲区大小 sudo sysctl -w net.core.rmem_max=16777216 sudo sysctl -w net.core.wmem_max=16777216 # 禁用CPU节能 sudo cpupower frequency-set --governor performance6. 进阶实验方向
完成基础部署后,可以尝试以下扩展实验:
- 5G NSA组网:添加gNB组件实现5G非独立组网
- 端到端加密:集成Open5GS实现完整安全体系
- 网络切片:通过QoS策略实现资源隔离
- 移动性测试:使用两台eNB实现切换实验
实验数据记录建议表格:
| 测试场景 | RSRP(dBm) | SINR(dB) | 吞吐量(Mbps) | 时延(ms) |
|---|---|---|---|---|
| 静态近距离 | -65 | 25 | 45.2 | 12 |
| 移动状态 | -78 | 15 | 28.7 | 32 |
| 穿墙场景 | -92 | 8 | 5.4 | 48 |
在多次实验中我们发现,USRP B210在2.4GHz频段的表现最为稳定,而高频段(如3.5GHz)需要更精细的射频校准。建议初次实验从Band 7(2600MHz)开始,逐步扩展到其他频段。
