srsLTE安装、运行及测试

【转载】原创博客地址:http://blog.csdn.net/jipengwang/article/details/79451879

前言

       进入研究生阶段,就开始从事软件无线电(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简介

       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环境搭建

       对比于前期的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,使用以下命令即可:

[cpp]  view plain  copy
  1. sudo apt-get update  
  2. 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系统上,执行以下命令即可:

[cpp]  view plain  copy
  1. sudo apt-get install cmake libfftw3-dev libpolarssl-dev libboost-program-options-dev libboost-thread-dev libconfig++-dev libsctp-dev  

       Ubuntu 17.04系统上,执行以下命令:      

[cpp]  view plain  copy
  1. 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,安装命令如下:

首先安装依赖库:

[cpp]  view plain  copy
  1. sudo apt-get install libboost-system-dev libboost-test-dev libboost-thread-dev libqwt-dev libqt4-dev  
下载及安装命令如下:      
[cpp]  view plain  copy
  1. git clone https://github.com/suttonpd/srsgui.git  
  2. cd srsGUI  
  3. mkdir build  
  4. cd build  
  5. cmake ../  
  6. make  
  7. sudo make install  
  8. sudo ldconfig  

srsLTE编译安装

       从github上clone代码,之后进行编译安装即可,命令如下:

[cpp]  view plain  copy
  1. git clone https://github.com/srsLTE/srsLTE  
  2. mkdir build  
  3. cd build  
  4. cmake ../  
  5. make  
  6. make test  
  7. sudo make install  
  8. 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

[cpp]  view plain  copy
  1. cd srsepc/  
  2. sudo srsepc epc.conf  
       (2)srsenb

   cd srsenb/

[cpp]  view plain  copy
  1. sudo srsenb enb.conf  
       (3)srsue

   cd srsue

[cpp]  view plain  copy
  1. 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等性能指标参数,如下面两图所示:


srsLTE测试

ping命令测试

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



iperf测试

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

      (1)下行

       UE侧iperf命令为:

[cpp]  view plain  copy
  1. iperf –s –u –i 1  
       eNB侧iperf命令为:   
[cpp]  view plain  copy
  1. 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命令为:   

[cpp]  view plain  copy
  1. 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


猜你喜欢

转载自blog.csdn.net/xrh003/article/details/79461114