基于 OAI 部署私有的 4G EPS,作者分为上下两部分进行阐述,本文主要分享上部分内容,大纲如下:
硬件设备要求
操作系统要求
All-In-One 部署网络拓

下部分内容回顾:
部署步骤
前期部署
安装 OAI-CN
安装 OAI-RAN

前言

前段时间笔者去北京邮电大学参加了今年冬季的 OpenAirInterface Workshop Fall 2019,收获颇丰。尤其是对 Mosaic5G 演示的通过 Ubuntu Snap 来快速部署 OAI All-In-One 实验环境的方式印象深刻。Ubuntu Snap 部署方式的优点是快速便捷,适合新手入门体验 OAI,或者非通信专业人士搭建方案验证环境。但并不适合 OAI 开发者。本文主要是对 Ubuntu Snap 部署方式进行验证以及对 4G LTE/EPC 的实践学习。

注:下文部分内容摘自 PPT 《FlexRAN-Training》

1

硬件设备要求

运行平台

建议在 Intel x86 架构上运行 OAI,因为 DSP(数字信号处理器)需要大量使用到整数指令集(SSE, SSE2, SSS3, SSE4, and AVX2)。OAI 在以下 CPU 型号完成了测试:

Generation 3/4/5/6 Intel Core i5, i7
Generation 2/3/4 Intel Xeon
Intel Atom Rangeley, E38xx, x5-z8300

除了常见的 PC 之外,笔者也看见过有人在 UP Board(Intel Atom x5-Z8350 四核 CPU,4GB RAM,64GB eMMC)上跑。至于树莓派(Raspberry Pi)是不建议的,首先因为树莓派采用的是 ARM Cortex-A72 架构 CPU ,然后树莓派 4 才引入了 USB 3.0,这意味着旧版本的树莓派并不支持常见的 USRP RF 外设。简而言之,个人实验建议使用新一点的 PC。如果想做移动基站的话则可以考虑 UP Board。

UP Board

基于 OAI 部署私有的 4G EPS(上)_第1张图片

Raspberry Pi 4 Model B

基于 OAI 部署私有的 4G EPS(上)_第2张图片

RF 外设

总得来说,OAI 同时支持空口外设(硬件外设支持)和系统级仿真(纯软件)两种部署方式。有条件的话,笔者推荐入手 RF 外设,整体运行情况相对稳定,也更感性直观。同时可以选择的 RF 外设也很多,例如:USRP 系列或者 LimeSDR。笔者使用了是非官方版本的 USRP B210,便宜好用。

关于 USRP B210 更详细的介绍,请浏览《USRP B210 软件定义的无线网络支撑设备》。

USRP B210

基于 OAI 部署私有的 4G EPS(上)_第3张图片

LimeSDR

基于 OAI 部署私有的 4G EPS(上)_第4张图片

可编程 SIM 卡

在使用 RF 外设部署的场景中也有两种不同的 UE 侧部署方式,一种是使用 SIM 卡 + 手机的组合,另一种则是使用 PC + RF 外设模拟手机的组合。

基于 OAI 部署私有的 4G EPS(上)_第5张图片

当然了,除了在调试 UE 侧功能实现的场景中,后者则显得没有必要了。笔者也使用了前一个部署方式,需要 3 个要素:

可编程的 SIM 卡(白卡)
SIM 卡读写设备
SIM 卡编程软件

白卡推荐使用德国 Sysmocom 产的 sysmoUSIM-SJS1,这种卡在国内是很少见的,可以上 taobao 或 xianyu 碰碰运气。需要注意的有两点,第一是首选新卡,否则 OAI 可能不支持;第二是购买时要确认白卡是具有 ADM key 的。关于 SIM 卡的详细信息可以浏览《读写可编程 SIM/USIM 卡》。不推荐使用常规的移动、联通、电信卡,实际上笔者也没有测试过是否可行,但听说是有些问题。

至于 SIM 卡读写设备选择就很多了,笔者选择的是 Omnikey CardMan 3121 USB CCID Reader,这个是 sysmoUSIM 官方文档推荐的读写设备,taobao 可购。需要注意的是,Omnikey 只是一个读写外设,具体的读写操作、管理还需要使用到额外 SIM 卡编程软件,在 Linux 操作系统上推荐使用 pySIM。关于 Omnikey + pySIM 的组合还有一个坑,就是要使用 Ubuntu 18.04,否则可能会遇见由于驱动缺失导致发现不了 Omnikey 设备的情况,这个在后文中有详细记录。Windows 操作系统可以考虑 SIM Personalize tools,不过这个工具也比较认白卡,有些新卡可能就只读不写了。

基于 OAI 部署私有的 4G EPS(上)_第6张图片

UE 终端

上面也提到了 UE 终端可以使用手机也可以使用 PC 模拟,但现在 OAI 的 UE 仿真很不太稳定,不是一个好的选择。至于手机的选择也有讲究,要注意手机的 Band(频段)和 eNB 的 Band 是一致的,否则手机无法搜索到你的 “网络运营商”。因为有些国产手机是不支持某些国外 Band 的,比如小米 5 就对国外的 Band7 支持得不完整。如果你选择了默认的 Band7 来部署 eNB(查看 eNB 配置文件中的配置项 eutra_band,e.g. eutra_band=7),那么就可能会出现问题。通常大厂的手机没有这个问题,但如果遇见了不妨检查一下。

三星 Note8 的频段

基于 OAI 部署私有的 4G EPS(上)_第7张图片

高精度参考时钟

高精度的参考时钟是可选的,假如在你试验的场景中,手机需要在多个 eNB 之间切换,此时才会需要,手机接入 eNB 会更快。高精度参考时钟可以使用 USRP B210 兼容的 GPS-DO 模块。如果你没有使用 USRP B210 也可以采用 GPS-DO 扩展板 + 板载的晶振模块(时钟模块)+ GPS 天线的组合,利用 GPS 的时间信号来进行时钟的校准。GPS-DO 比较贵,也可以使用外接的 OCXO 恒温晶振,不需要天线。

USRP B210 专用 GPSGO

基于 OAI 部署私有的 4G EPS(上)_第8张图片

2

操作系统要求

部署 OAI 的操作系统首选 Ubuntu Linux 发行版,因为 OAI 是在 Ubuntu 上进行开发的,所以这是目前最稳定的部署平台。笔者使用的是 Ubuntu 16.04 LTS。

NOTE 1:不建议在虚拟机上运行,因为某些虚拟机可能没有加载需要的 CPU feature。

NOTE 2:不建议在容器上运行,因为 EPC 需要安装内核模块。

内核要求

OAI 对内核非常敏感,很多莫名其表的错误都是由内核不适应导致的,所以切记检查内核的版本。笔者使用的是 Ubuntu 16.04 自带的 Kernel 4.15.0,可以部署成功但不能就说是没有更好的选择了。

安装 low-latency kernel(低延时内核):

基于 OAI 部署私有的 4G EPS(上)

加载了 GTP 内核模块(for OAI-CN):

基于 OAI 部署私有的 4G EPS(上)

CPU Frequency scaling

OAI eNB 的实时性(Real-Time Operation)要求非常高,为了接入更多的 UE,需要进一步压榨 PC 的性能。CPU 调频功能允许操作系统通过提高或降低 CPU 的频率来达到省电目的,这里我们将 CPU 的频率打满,不让操作系统自己控制 CPU 的频率。

在 BIOS 中移除电源管理功能(P-states, C-states)
基于 OAI 部署私有的 4G EPS(上)_第9张图片

在 BIOS 中关闭超线程(hyper-threading)

基于 OAI 部署私有的 4G EPS(上)_第10张图片

禁用 Intel CPU 的 P-state 驱动(Intel CPU 专用的频率调节器驱动)

基于 OAI 部署私有的 4G EPS(上)_第11张图片

将 intel_powerclamp(Intel 电源管理驱动程序)加入启动黑名单

基于 OAI 部署私有的 4G EPS(上)

关闭 CPU 睿频

基于 OAI 部署私有的 4G EPS(上)_第12张图片

3、All-In-One 部署网络拓扑

基于 OAI 部署私有的 4G EPS(上)_第13张图片