srsLTE系统安装教程

2018-03-12

srsLTE简介

srsLTE是由爱尔兰SoftwareRadioSystems (SRS)公司开发实现的免费开源LTE SDR平台,在AGPLv3 license许可下发布,并且在实现中使用了OpenLTE的相关功能。

SrsLTE的开源过程大致经历了三个阶段:

  • srsLTE包含全协议栈的UE(srsUE)以及一个物理层下行链路的收发链路,该阶段可以使用第三方(如OAI)的eNB以及EPC来搭建LTE SDR系统;
  • srsLTE开源了srseNB,即srs具备了全协议栈的eNB以及UE,没有EPC,因此需要使用第三方(如Amarisoft)的EPC,搭建LTE SDR的整个网络;
  • 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共有特征:

  • 支持Realease8(兼容一些Realease9的功能);
  • 支持FDD;
  • 测试带宽:1.4MHz、3MHz、5MHz、10MHz、15MHz以及20MHz;
  • 传输模式1(单天线),2(发射分集),3(CCD),4(闭环空间复用);
  • 采用指令集对Turbo编译码进行加速;
  • 命令行跟踪测试指标;
  • 详细的配置文件等。

SrsUE主要特征:

  • 支持UE的小区搜索及同步的过程;
  • 软件USIM支持XOR以及Milenge两种鉴权算法;
  • 虚拟网卡tun_srsue建立网络连接;
  • 与商用基站以及SDR商用基站、核心网进行适配测试,如Amarisoft LTE10。

SrseNB主要特征:

  • MAC层采用轮询调度算法;
  • 支持周期性及非周期性的CQI反馈;
  • 标准的S1AP以及GTP-U接口;
  • 目前已经通过商用终端测试,如LG Nexus5、LG Nexus4、HuaWei P9/P9lite以及Huawei dongles:E3276\ E398等。

SrsEPC是单一、轻量级的LTE 核心网实现,其包括下面三个部分:

  • MME(Mobility Management Entity),标准的S1AP以及GTP-U接口;
  • S/P-GW,标准的连接虚拟网卡的SGi接口;
  • HSS(Home Subscriber Server),使用CSV文件格式进行用户数据配置。

射频通用设备支持USRP B210、USRP X300、bladeRF以及LimeSDR。

srsLTE环境搭建

目前srsLTE安装包都包含在一个文件夹中,因此只需要借助cmake、make等工具进行编译,安装即可,以下简单介绍安装步骤:

系统安装

srsLTE运行在Ubuntu系统上,之前在14.04以及17.04系统上均安装成功,所以Ubuntu系统的选择,可以是14.04及以上,计算机配置的话,最好能够i7 CPU,主频越高越好。系统的安装推荐使用U盘制作启动盘,然后进行安装即可,要注意安装的时候分区。下面以Ubuntu 14.04来进行介绍。

常用工具安装

系统安装好之后,需要安装常用工具,如git、vim等,可以使用Ubuntu系统的apt-get进行安装,如安装git,使用以下命令即可:

sudo apt-get update
sudo apt-get install git

当然,git安装完成之后,还需要进行配置,如配置用户及email等。

UHD安装

硬件设备选择USRP B210,因此需要在系统上安装UHD驱动,目前UHD版本3.10.0.0对于OAI以及srsLTE的支持比较稳定,UHD的安装教程可以参考http://blog.csdn.net/jipengwang/article/details/79451729

srsLTE依赖库安装

在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

srsLTE编译安装

从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运行界面

如上图所示为srsLTE运行界面,其中srseNB以及srsUE的GUI界面可以在配置文件中进行配置,并且运行eNB的电脑,虚拟网卡名称为srs_spgw_sgi,地址为172.16.0.1,运行UE的虚拟网卡名称为tun_srsue,地址与eNB侧同网段,如下两图所示:

另外,在eNB及UE的运行终端中,可以输入t来实时查看snr、bler等性能指标参数,如下面两图所示:

srsLTE测试

ping命令测试

在运行eNB及UE的电脑上,分别对虚拟网卡tun_srsue以及srs_spgw_sgi进行ping命令测试,如下两图所示:

iperf测试

使用iperf进行灌包测试,以下测试为PRB=50,即带宽10MHz,首先进行下行灌包测试,之后进行上行灌包测试。

  • 下行

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左右。

  • 上行

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