基于开源SDR的LTE系统对比研究与实现*
2018-07-09咸立文姚幽然
咸立文,姚幽然,赵 扬
(中国电子科技集团公司第三十研究所,四川 成都 610041)
0 引 言
伴随着移动通信手段不断地更新迭代,人们的通信方式也发生着翻天覆地的变化。从最初解决人与外界沟通联络的基本需求,到近10年来智能手机的普及和不同互联网应用的流行,整个无线网络的流量呈指数增长,而运营商间的竞争愈加惨烈。同时,受国家宏观“提速降费”政策和网络愈加便利的大趋势因素影响,运营商从单个用户处获取的收益正在递减。然而,移动互联网业务激增致使用于基建、运维和升级等方面的投入成本不断增加,使得运营商的盈利大幅缩水。为改变这被动局面,保证盈利持续健康增长,运营商需开源节流,在提供优质无线接入业务的同时,找到有效降低成本的方案[1]。采用模块化通用硬件平台,尽可能利用软件处理基站信号、工作模式切换和频带选择等功能的SDR,提供了一套低成本解决方案,而软件实现新功能模块也为后续升级带来了福音。这给现有通信系统指明了发展方向,给技术研究、开发与验证创造了捷径,大幅降低了开发成本,缩短了迭代周期,且能保持与前后代系统的互联互通。
1 研究基础
1.1 软件无线电(Software Defined Radio)
软件无线电(Software Defined Radio)在标准、通用和模块化的硬件平台上,利用软件编程实现了不同通信功能和应用。图1为典型的SDR基本结构。它的关键在于通用硬件平台和软件实现两方面。硬件平台具有实现不同通信功能的模块;软件实现则是相较于传统无线电技术而言的。传统无线电模块是利用硬件电路设计实现,特定电路只能实现对应的功能,且开发周期长、成本高,而软件实现缩短了开发周期、降低了成本,且便于后期调试和维护。
图1 典型的SDR基本结构
针对处理方式不同,SDR系统分为FPGA、DSP和GPP三类[2]。基于FPGA平台开发的SDR系统,实时处理能力强但成本高昂;基于DSP的SDR系统,实时性稍差且成本不菲;基于GPP的SDR系统即通用处理器,可浅显理解为PC,它可自行利用不同的编程语言、动态库等,开发不同通信模组、系统。同时,基于GPP的SDR系统相比前两种系统更具优势,如门槛更低、成本更低、周期更短以及后期更好调试等,使其成为最通用的实现方式。
1.2 硬件平台
支持SDR的硬件平台较多,适用范围和作用也各不相同。RTL-SDR是极为廉价仅有接收功能的入门级硬件,一般接收电视信号;HadeRF性价比极高,是完全开源充满黑客范的硬件;bladeRF配备ARM,可脱离主机单独运行,顶配版能耐受极端环境;USRP则是儒雅的学院派,发展时间长且应用广泛,成为主流SDR硬件。下面介绍下本文实现使用的USRP X310。
USRP是美国Ettus公司的产品,主要含有B、E、N、X四个系列。各系列性能与功能略不同,有兴趣可访问Ettus官方网站(www.ettus.com/product)。X系列是高性能、支持自主设计并能配置下一代无线通信系统的通用硬件。结合射频子板的扩展,它的频率覆盖高达6 Hz,基带单通道最高带宽为120 MHz,且配备了多种高速接口(1/10G双工以太网口、PCIe总线、外扩展卡),数字信号处理则采用高性能的FGPA高效实时处理信号。X310同样采用开源软件架构,有跨平台的驱动UHD,开发时有相关的开源项目可供参考,并支持对架构增强。图2为简化原理图,图3为USRP X310实物图[3]。
图2 X310简化原理
图3 X310实物
1.3 开源项目
1.3.1 OpenLTE
OpenLTE是前摩托罗拉工程师Ben Wojtowicz在2011年发起,按照3GPP通信协议开发的开源项目。它利用Linux系统,通过开源SDR软件GNU Radio开发实现基础的4G基站功能。最初的00.01版利用MATLAB/OCTAVE编程,实现FDD-LTE的下行链路和接收,并开展了相关测试。在2017年7月,它更新为00.20.05最新版本,完善和新增了许多功能[4]。
OpenLTE基于GNU Radio软件的模块化实现LTE协议的不同层次,主要涵盖物理层协议(PHY)、介质访问控制协议(MAC)、无线资源控制协议(RRC)和无线链路控制协议(RLC)等模块。服务器配置由HSS模块实现;eNode B侧网关IP配置由GW模块实现;eNode B的移动管理由MME模块实现。调制的基带信号通过1/10G以太网口发送至USRP,而后通过采样、上/下变频将数字信号转换成电磁波发送给宿主。物理层支持LTE Release8标准协议,基础功能完备但较为单一;MAC层采用简单实用的轮询调度算法,处理不尽完善,导致调度健壮性不够,但对MAC层以上的功能都做了较完整实现。
1.3.2 srsLTE
srsLTE是爱尔兰SoftwareRadioSystems(简称SRS)公司开发的开源SDR LTE平台,网络架构如图4所示。它在Linux系统下利用标准C语言在GNU Radio框架下开发而成。SRS公司专门从事SDR开发,除了srsLTE外,还有AirScope、srsUE和srsENB等产品,且各产品定位不同。srsLTE最初开发时仅含有物理层下行链路,是开源、简单与稳定的LTE系统,适合入门者学习;AirScope是实现LTE空口信号分析的商业软件;srsUE是从PHY到NAS各层协议的开源LTE UE系统;srsENB是涵盖PHY、MAC、RLC、PDCP、RRC和S1-AP等协议的商用LTE eNB软件。后将srsUE、srsENB集成到srsLTE[5],使得srsLTE变成从PHY到IP全栈LTE系统,可惜只支持FDD双工方式。LTE协议版本也仅有LTE Release8下行链路,应用场景非常有限,常与SRS公司其他产品配套使用。
图4 srsLTE的网络架构
1.3.3 OAI(OpenAirInterface)
OAI(即OpenAirInterface 5G,常称为OpenAir-Interface)是由法国EURECOM组织完全按照3GPP协议栈在Linux实时内核上采用标准C语言优化实现的开源无线通信实验平台。它是在最初wireless 3g4 free的基础平台上,通过演变开发并兼容多种空中接口制式而形成。它采用3GPP标准在PC上用标准C语言完全实现LTE协议的三部分:核心网(EPC)、基站(eNB)和用户(UE)。计算机的IP数据包通过USB或以太网口与射频前端交互,而射频信号在射频首发板上做上下变频、数模变换等再发送:将非接入层(Non-Access Straum)消息通过AT(Attention)命令和IP将eNodeB与MME间连接,再通过IP地址交互实现信息传输[6]。
目前,OAI已经全部实现LTE Release8协议版本,且支持LTE Release10的大部分功能,并在持续不断更新中。近期,EURECOM组织准备基于OAI平台添加NB-IoT模组,朝着十分具有吸引力的5G方向发展。OAI软件主要囊括六部分:openair1具体实现3GPP LTE Release8的物理层协议;openair2实现LTE Release9数据链路层协议、eNodeB应用层及X2接口的功能;openair3实现IP网络层协议及对应脚本;openair-cn实现3GPP LTE Release9/10版本的MME、NAS、HSS及eNodeB与MME间的S1接口;openairITS实现IEEE802.11p协议软件模块;common是OAI的附件,包括常用工具、插件和扩展口等。图5是OAI构建无线网的结构图[7]。几种开源LTE项目内容对比结果如表1所示。
图5 OAI构建无线网的结构
表1 几种开源SDR LTE内容对比
2 不同开源SDR LTE系统实现
需要兼顾三个开源项目同时在一个主机系统上完成搭建,建议主机配置——CPU至少需2个物理内核、主频超3.0 GHz且没有超线程的标准。大致架构是PC通过以太网口连接USRP,然后将通过USRP的射频模块将形成的信号外发。
2.1 系统及硬件
主机采用联想ThinkPad X1 CarBon,主要配置如下:CPU是Inter i7-6500U,主频为2.5 GHz,单核是最高主频为3.1 GHz,双核四线程,基本能满足使用需求。开源项目常在Linux系统下,主机安装了win7、Ubuntu的双系统,本文开发环境是基于Ubuntu 17.04上搭建。通用硬件平台采用USRP X310,通过以太网口和主机相连,其搭建环境如图6所示。具体地,主机与SDR平台构建成“伪基站”,基站间通过无线信道实现数据交换,终端通过正常接入SDR基站。图6是两种基站的简单示意对比。
图6 两种不同基站对比
2.2 不同开源SDR实现LTE功能
2.2.1 OpenLTE安装与LTE网络接入
OpenLTE在Ubuntu17.04系统的安装参考文献[8]。本文采用OpenLTE最新版本V0.20.05。该版本新增了两种编码支持、PUCCH信道在1/1A/1B解码功能、SR配置坐标映射、帮助查找函数和短信工具库等,使其功能更加完善。
安装完成后,通过以太网口测试OpenLTE与USRP X310是否连接,再编译OpenLTE在build目录下生成可执行文件。此外,开一新终端,通过Telnet 127.0.0.1进入OpenLTE工作终端的交互界面,如图7所示;LTE_fdd_dl_scan将扫描dl_earfcn_list列表中的频率信道号为25~187,并执行start对频率做扫描。
图7 telnet到交互界面并开始扫频
2.2.2 srsLTE安装并实现网络ping
目前,srsLTE平台包含了srsENB、srsUE组成的一套全协议栈系统。全协议栈就是利用srsLTE平台可直接与商业手机、运营商基站互联互通。在搭建srsLTE平台前,需要安装用于实时显示图形界面的srsGUI,而后前后安装srsENB、srsUE开源软件。两者可安装在同一台主机上,但为了实时性,建议安装在不同主机上。安装两个软件的差异不大,都需要以下三步:①安装USRP的通用驱动UHD;②安装依赖库;③下载srsLTE源码并编译。若要搭建一个完整的无线网,还需要EPC。SRS公司最近开发出自家的srsEPC,而本文采用开源OAI MME(或Amarisoft MME[9])更成熟的方案。
运行OpenLTE使得系统工作分为两步:一是启动基站——srsENB,先在build目录下运行可执行文件,其后将配置文件复制到srsenb文件下改名并修改配置参数,最后下配srsenb参数并启动;二是启动用户端——sesUE,与启动基站过程类似。实现效果,如图8所示。
图8 srsLTE 显示及ping通EPC
图8中的左上图为srsENB启动界面,相关信息显示,上行载频为2.565 GHz,下行载频为2.685 GHz,协议采用15.36 MHz的采样率经系统对信号做3/4倍抽样,提高了系统的实时性,得到的实际采样率为11.52 MHz,而UE随机接入并分配到RNTI 0x42信道上使用。图8右上图为srsUE启动界面,srsUE侧同样做了3/4抽样,完成了随机接入和鉴权过程,而OAI MME也为其分配了通信的IP地址。图8左下图是srs系统运行的图形界面,显示的是srsENB和srsUE的信号幅值和相位信息。图8右下图是测试并验证srsUE、srsENB及OAI MME的连通性。另开UE终端ping OAI MME发现,srsUE界面能ping通OAI MME,其平均时延约为30 ms。
2.2.3 OAI安装并实现信号分析
OAI开源项目代码分为两部分:eNB模块openairinterface5g和EPC模块openair-cn。最初版本EPC由EPC和HSS两部分组成,后来版本新增了SPGW模块,最稳定版本为master branch,本文就在稳定版本上完成相关实现。图9是经简化概要描述而搭建OAI环境的硬件及IP配置。
OAI的安装最复杂,不在于安装流程,而是安装内容太多且注意事项太多,可参考国外牛人Laurent的教程[10]。依照eNB、EPC、HSS、MME和SPGW等的次序安装、配置并编译后,而后配置IP参数如图9所示,使UE、eNodeB和EPC三者能基于IP正常通信。eNodeB通过分配的IP地址与EPC相互通信,UE则通过USRP X310的射频前端空口双向收发与eNodeB实现数据传输,其他参数根据实际环境做配置。利用搭建的环境做初步测试,在eNodeB端观察到接收信号的各种状态,如图10所示。
图9 搭建OAI环境的硬件及网络IP配
图10 eNodeB示波信号图
测试结果显示了各种信号图,为了便于叙述在截图后对各子图右下角做编号,1表示接收到信号的时域波形,2是信号在SRS的频率响应,3是信道的频率响应,4~6是在PUSCH信道上的自然对数率、I/O两路输出的星座图和信道吞吐量,7是PUCCH1信道上的功率,8是PUCCH信道上I/O两路的射频输出。
3 实现的对比分析
3.1 实现对比与问题解决
三个开源项目使用了相同的操作系统Ubuntu17.04、通用硬件平台USRP X310和一些必备的基础,如开源SDR软件GNU Radio3.7.5、提供API接口硬件驱动UHD003.009.007,还有各种基础的依赖库和编译开发工具,如MS Visual C++11.0、Python2.7.5和gettext0.18.3.2等。下面是每个项目遇到的一些问题与解决方法。
OpenLTE项目主要着重于LTE基站侧的协议栈,并集成了MME功能和测试工具。安装过程出现了以下问题:按照官方安装过程遇到缺少polarssl库的情况,发现改名后采用新libpolarssl可通过,但后面cmake时仍会报错,只能找最原始的polarssl-dev文件安装不再报该错误;OpenLTE编译cmake时出现“not found gnuradio”,而当时GNU Radio是通过Ubuntu软件中心安装的,后经反复查找发现,从Ubuntu软件中心安装版本可能缺少部分文件,在终端重新安装后问题解决;在利用“LTE_fdd_dl_files_scan.py”扫信道频率和信道号时,运行出现“ImportError:No module name _LTE_fdd_dl_fs”,查看环境变量路径都是正确的,后在sourceforge的OpenLTE项目讨论区有类似问题,发现需要设置缺省路径。OpenLTE由个人发起且资源有限,项目功能不够完善和稳定,而项目人员仍在改进完善中。但总体来说,OpenLTE能够实现LTE协议栈的基础功能,代码量小而精,适合入门学习。
srsLTE项目是SRS公司开发的开源软件,也是目前最稳定的SDR LTE系统。安装使用过程中出现了以下问题:使用过程中发现,多个公用数据网冲突时,UE不允许手机入网,与EPC机制缺少、缺省承载过程有关;由于EPC采用的OAI MME,在不同机构互融时需注意细节,如采样率、分配机制等。SRS公司在2018初开发出轻量级的EPC,将MME、SPGW和HSS三者融为一体。srsLTE项目是由商业公司开发的开源软件,代码结构清晰且稳定,实现了全协议栈功能,但只支持邮件技术。
OAI项目由法国Eurecom组织发起的开源软件,是功能最全、最繁复的系统。安装使用过程遇到问题较多,下面列举三个典型的问题:在安装EPC主机时需提前、单独安装mysql-server和phpmyadmin两个数据库管理软件,否则执行HSS会提示错误;写卡过程中需要写入IM5115、KI和OP,算法选择Milenage,尤其要注意OP值须与HSS中设置一致,否则无法正常使用;文件和驱动安装尽可能从官网下载安装文件,否则会出现莫名其妙的错误,其次需要打官方补丁使系统高效稳定运行。OAI项目实现了LTE的全部协议栈,不停留在仿真层面,而是提供了从信源到信宿所需的双向收发、文件传输等真实无线环境,故在该平台上开发、研究人员众多,便于交流。
这三个项目定位有差异,OpenLTE是入门级的SDR LTE,功能齐全但甚是简单;srsLTE是商业公司开源软件,可应用于短时集聚大量人群的无线扩容,保障高质量无线接入;OAI是典型的学院派,LTE协议栈完备且繁复,适合用于新技术研究、测试与验证。
3.2 发展趋势
在未来“万物互联”的时代,5G相关技术正在高速发展,相关技术协议标准正在拟定中。从公开的资料得知,OpenLTE项目由于人力资源缺乏,内容暂未涉及5G和NB-IoT的相关技术应用;srsLTE在开源方面还暂未动作,但从公司成员发表的论文[11]知,SRS公司已经有成型的NB-IoT UE在MWC2017展会上展出;OAI项目在5G、NB-IoT等方面都有涉及,官方网站上面有详细介绍软件5G系统、5G模组和IoT等,且近期OAI基本完成NB-IoT平台的开发并将代码开源。此外,第一个基于SDR实现NB-IoT的Amarisoft商业软件,并在2017年初已有集成NB-IoT的SDR LTE系统平台在出售。从这些成果可知,未来SDR与5G、IoT等会紧密联系在一起,使得无线通信技术发展愈加便利于人们的生活。
4 结 语
本文通过梳理OpenLTE、srsLTE和OAI三个开源项目的基本框架、开源程度和基本功能等,在通用硬件平台USRP上做环境搭建,从而了解并掌握了SDR LTE系统的工作原理,知晓了一些无线通信的薄弱环节,为后续研究无线网络安全、5G和NB-IoT等奠定了基础。与此同时,需在动手实践方面加强,利用现有的USRP X310搭建更多、更有挑战的无线SDR实验环境,为研究相关技术提供平台支撑。
[1] 杨璘.绿色无线接入网络架构C_RAN研究[D].北京:北京邮电大学,2012.YANG Hao.Research on C_RAN of Green Wireless Access Network Architecture[D].Beijing:Beijing University of Posts and Telecommunications,2012.
[2] 陈祝明.软件无线电技术基础[M].北京:高等教育出版社,2007.CHEN Zhu-ming.The Basis of Software Radio[M].Beijing:Higher Education Press,2007.
[3] USRP™ X300/X310 Spec Sheet[EB/OL].(2017-08-06)[2018-03-03].https://www.ettus.com/product/details/X310-KIT.
[4] OpenLTE News[EB/OL].(2017-12-24) [2018-03-03].http://openlte.sourceforge.net/.
[5] SRS Products-srsLTE[EB/OL].(2018-01-15) [2018-03-01].http://www.softwareradiosystems.com/products/#srslte.
[6] 吴彤,张玉艳,赵慧等.基于开源SDR实现LTE系统对比[J].电信工程技术与标准化,2015,28(07):81-86.WU Tong,ZHANG Yu-yan,ZHAO Hui,et al.Comparison of LTE System Based on Open Source SDR[J].Telecom Engineering Technics and Standardization,2015,28(07):81-86.
[7] Guildford.LTE Demo with LimeSDR and OpenAirIntersface[EB/OL].(2016-07-21)[2018-03-03].https://www.crowdsupply.com/lime-micro/limesdr/updates/oai-ltedemo.
[8] Dchard.Installing OpenLTE[EB/OL].(2017-12-27)[2018-03-03].https://sourceforge.net/p/openlte/wiki/Installing%20OpenLTE/.
[9] 光光学长.srsENB+srsUE+Amarisoft MM测试[EB/OL].(2018-01-10)[2018-03-04].http://blog.csdn.net/jxwxg/article/details/73603577.GUANG Guang.srsENB+srsUE+Amarisoft MM Test [EB/OL].(2018-01-10)[2018-03-04].http://blog.csdn.net/jxwxg/article/details/73603577.
[10] Laurent.OpenAir Single Machine Ubuntu 17.04,After Major EPC Update[EB/OL].(2017-07-10)[2018-03-05].https://open-cells.com/index.php/2017/06/07/openairsingle-machine-ubuntu-17-04-after-major-epcupdate/.
[11] André P,Paul S,Ismael G.Implementing NB-IoT in Software-Experiences Using the srsLTE Library[C].Wireless Innovation Forum Europe,2017.