进入研究生阶段,就开始从事软件无线电(SDR)方向的学习及研究,到目前为止,接触过Amarisoft LTE100、Openairinterface、srsLTE、OpenBTS等SDR系统。实验室师兄们在基于OpenAirInterface(OAI)平台上做过较多的开发,也积累了相关的经验,想进一步了解SDR技术的,可以参考http://blog.csdn.net/jxwxg/article/details/53446841(实验室大牛写的SDR基本原理,简洁易懂)。
OAI 功能非常强大,其按照3GPP LTE协议实现了UE、eNB以及EPC全协议栈的功能,目前已经支持到Release10版本,且在不断更新中。但是,OAI平台功能太过复杂,从而导致其运行及配置的时候,都比较麻烦,比如OAI EPC的运行,需要分别单独运行HSS、MME以及SPGW三个模块,且配置也是需要单独进行配置的,所以过程上,比较繁琐。
接触SRS,是在去年年初,当时srsLTE只开源了全协议栈的UE,eNB,还包括一个下行的PDSCH,没有EPC的功能,而且其srsUE、srseNB运行的时候,必须要接EPC,所以使用起来,还需要找第三方的EPC才能够使用,但是在2018年,srs开源了EPC模块,且配置及使用非常简单,即不再需要使用第三方的EPC,即可搭建完整的LTESDR系统。
下面对srsLTE的功能、环境搭建以及配置进行一个整体上的介绍~
srsLTE是由爱尔兰SoftwareRadioSystems (SRS)公司开发实现的免费开源LTE SDR平台,在AGPLv3 license许可下发布,并且在实现中使用了OpenLTE的相关功能。SrsLTE的开源过程大致经历了三个阶段:
(1)srsLTE包含全协议栈的UE(srsUE)以及一个物理层下行链路的收发链路,该阶段可以使用第三方(如OAI)的eNB以及EPC来搭建LTE SDR系统;
(2)srsLTE开源了srseNB,即srs具备了全协议栈的eNB以及UE,没有EPC,因此需要使用第三方(如Amarisoft)的EPC,搭建LTE SDR的整个网络,实验室师兄有进行过该阶段的性能测试,可以参考http://blog.csdn.net/jxwxg/article/details/73603577;
(3)srsLTE开源了srsEPC,即核心网功能,且一如往常的代码简洁,配置简单,使用方便,到目前为止,既可以通过srsLTE搭建完整的LTE网络。
目前的srsLTE开源代码在Github上管理,链接为https://github.com/srsLTE/srsLTE,其代码主要分为三个模块,即srsUE、srseNB、srsEPC,另外还包括一些底层的库函数:
srsUE:实现了物理层到IP层的LTE SDR平台;
srseNB:全协议栈的LTE eNodeB SDR平台;
srsEPC:轻量级的LTE核心网实现平台,包括HSS、MME以及S/P-GW;
lib:一套模块化的通用库,包括PHY、MAC、RLC、NAS、S1AP以及GW各层。
下面简单介绍srsLTE整个模块的性能特征,主要包含以下四个部分:
srsLTE共有特征:
(1)支持Realease8(兼容一些Realease9的功能);
(2)支持FDD;
(3) 测试带宽:1.4MHz、3MHz、5MHz、10MHz、15MHz以及20MHz;
(4) 传输模式1(单天线),2(发射分集),3(CCD),4(闭环空间复用);
(5)采用指令集对Turbo编译码进行加速;
(6)命令行跟踪测试指标;
(7)详细的配置文件等。
srsUE主要特征:
(1)支持UE的小区搜索及同步的过程;
(2)软件USIM支持XOR以及Milenge两种鉴权算法;
(3)虚拟网卡tun_srsue建立网络连接;
(4)与商用基站以及SDR商用基站、核心网进行适配测试,如Amarisoft LTE10。
srseNB主要特征:
(1)MAC层采用轮询调度算法;
(2)支持周期性及非周期性的CQI反馈;
(3)标准的S1AP以及GTP-U接口;
(4)目前已经通过商用终端测试,如LG Nexus5、LG Nexus4、HuaWei P9/P9lite以及Huawei dongles:E3276\ E398等。
srsEPC是单一、轻量级的LTE 核心网实现,其包括下面三个部分:
(1)MME(MobilityManagement Entity),标准的S1AP以及GTP-U接口;
(2)S/P-GW,标准的连接虚拟网卡的SGi接口;
(3)HSS(HomeSubscriber Server),使用CSV文件格式进行用户数据配置。
射频通用设备支持USRPB210、USRP X300、bladeRF以及LimeSDR。
对比于前期的srsLTE安装(http://blog.csdn.net/jxwxg/article/details/73771212),目前srsLTE安装都包含在一个文件夹中,因此只需要借助cmake、make等工具进行编译,安装即可,以下简单介绍安装步骤:
srsLTE运行在Ubuntu系统上,之前在14.04以及17.04系统上均安装成功,所以Ubuntu系统的选择,可以是14.04及以上,计算机配置的话,最好能够i7 CPU,主频越高越好。系统的安装推荐使用U盘制作启动盘,然后进行安装即可,要注意安装的时候分区。下面以Ubuntu14.04来进行介绍。
系统安装好之后,需要安装常用工具,如git、vim等,可以使用Ubuntu系统的apt-get进行安装,如安装git,使用以下命令即可:
sudo apt-get update
sudo apt-get install git
当然,git安装完成之后,还需要进行配置,如配置用户及email等。
硬件设备选择USRP B210,因此需要在系统上安装UHD驱动,目前UHD版本3.10.0.0对于OAI以及srsLTE的支持比较稳定,UHD的安装教程可以参考http://blog.csdn.net/jipengwang/article/details/79451729。
在Ubuntu14.04系统上,执行以下命令即可:
sudo apt-get install cmake libfftw3-dev libpolarssl-dev libboost-program-options-dev libboost-thread-dev libconfig++-dev libsctp-dev
Ubuntu 17.04系统上,执行以下命令:
sudo apt-get install cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libboost-thread-dev libconfig++-dev libsctp-dev
另外,srs还提供了srsGUI库,可以用于在调试的时候,实时查看星座图及信号能量,其github链接为:https://github.com/srslte/srsgui,安装命令如下:
首先安装依赖库:
sudo apt-get install libboost-system-dev libboost-test-dev libboost-thread-dev libqwt-dev libqt4-dev
下载及安装命令如下:
git clone https://github.com/suttonpd/srsgui.git
cd srsGUI
mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig
从github上clone代码,之后进行编译安装即可,命令如下:
git clone https://github.com/srsLTE/srsLTE
mkdir build
cd build
cmake ../
make
make test
sudo make install
sudo ldconfig
srsLTE运行
srsLTE的运行参数均采用配置文件进行,即只需要在运行程序后面加上配置文件即可,配置参数在配置文件中进行,其中srsLTE对于UE、eNB、EPC均提供了对应的示例配置文件,其放置位置在对应的srsue、srsenb以及srsepc文件夹下,且命名方式为 *.example,如下图所示为srsenb下面的配置文件:
在运行时,可以将这些配置文件复制,并修改文件名,如将drb.conf.example赋值,并命名为drb.conf。
srseNB以及srsEPC可以运行在一台电脑上,也可以运行在两台不同的电脑上,但是需要保证两台机器之间的IP可达,并修改相关的配置文件;srsUE则需要运行在另一台电脑上。
执行sudo make install之后,就可以直接使用srsepc、srsenb以及srsue进行运行对应的模块,运行命令如下(假设目前位于srsLTE目录下):
(1)srsepc
cd srsepc/
sudo srsepc epc.conf
(2)srsenb
cd srsenb/
sudo srsenb enb.conf
(3)srsue
cd srsue
sudo srsue ue.conf
如上图所示为srsLTE运行界面,其中srseNB以及srsUE的GUI界面可以在配置文件中进行配置,并且运行eNB的电脑,虚拟网卡名称为srs_spgw_sgi,地址为172.16.0.1,运行UE的虚拟网卡名称为tun_srsue,地址与eNB侧同网段,如下两图所示:
另外,在eNB及UE的运行终端中,可以输入t来实时查看snr、bler等性能指标参数,如下面两图所示:
使用iperf进行灌包测试,以下测试为PRB=50,即带宽10MHz,首先进行下行灌包测试,之后进行上行灌包测试。
(1)下行
UE侧iperf命令为:
iperf –s –u –i 1
eNB侧iperf命令为:
iperf –c 172.16.0.4 –u –i 1 –b 30M –t 60
eNB侧iperf灌包从10M开始,然后是20M,之后是30M,从下图可以看出,下行峰值速率基本在22Mbits/sec左右。
(2)上行
eNB侧iperf命令为:
iperf –s –u –i 1
UE侧iperf命令为:
iperf –c 172.16.0.1 –u –i 1 –b 10M –t 60
UE侧灌包从10M开始,之后是15M,然后是20M,可以看到上行峰值速率在14.7Mbps左右。
根据上面的测试结果,还可以进行配置天线的增益来进行测试增益下的峰值速率,这里只是进行说明如何通过iperf进行速率的测试。
经过上面的介绍与演示,相信大家对于srsLTE的安装、运行以及测试有了一定的了解,之后有空会继续更新如何对配置文件进行修改以及探索srsLTE的更多功能。
[1] https://github.com/srsLTE/srsLTE
[2] http://www.softwareradiosystems.com/
[3] http://blog.csdn.net/jipengwang/article/details/79451729
[4] http://blog.csdn.net/jxwxg/article/details/73603577
[5] http://blog.csdn.net/jxwxg/article/details/53446841
[6] http://blog.csdn.net/jxwxg/article/details/73771212