24 - srsRAN安装部署(已支持5G NSA, 原srsLTE)

24 - srsRAN安装部署(已支持5G NSA, 原srsLTE )

  • 0.srsRAN概况
    • 硬件需求概览:
  • 1. 仅快速体验srsLTE with USRP B210
  • 2. srsRAN源码安装
    • 2.1 安装依赖
    • 2.2 安装srsGUI可视化界面(可选,推荐)
    • 2.3 根据您的RF硬件安装驱动/射频仿真
    • 2.4 安装srsRAN
  • 3 部署srsRAN+射频
    • 3.1 srs的BS+srs的UE
    • 3.2 special: 配置MIMO
    • 3.3 special: 配置5G NSA
      • 3.3.1 不带射频(用ZMQ)
      • 3.3.2 带射频
    • 3.4 special: 用商用手机连接
  • 4 部署srsRAN+仿真射频
    • 4.1 安装ZeroMQ
    • 4.2 special: 5G NSA

0.srsRAN概况

srsLTE在4G时代以其稳定、便捷部署、兼容usrp等特征,在SDR中评价优秀,尤其是其LTE UE基本是当时唯一能稳定长时间运行的软UE。

现在srsLTE已经更名为srsRAN,截止目前(2022.3.18)srsRAN已经支持5G NSA gNB、5G NSA UE、sidelink、LTE eNB、LTE UE,计划于2022年内发布5G SA gNB、5G SA UE。由于我对srs的印象极佳,最近也对比了一下srsRAN、OpenAir*********、Seg****,的代码,简单记一下部署srsRAN的过程。(依然十分顺利,没有OpenAir******那么多需要注意的)

硬件需求概览:

  • 树莓派4:可以带射频跑5M带宽,不带射频用zmq也可以(便宜+便携,而且这个内存大小OAI可能都无法完成编译)
  • Intel NUC8i7beh:20MHz 2x2MIMO,单小区。(经典皮肤,注意散热)
  • 实验室发的笔记本戴尔 Precision 3340 i7 万兆口 + USRP X310/N310:可以跑 160 MHz、2x2MIMO、多小区、载波聚合(史诗皮肤,不过实体清单上的学校现在不太好买USRP)

1. 仅快速体验srsLTE with USRP B210

就是以前的srsLTE啦,因为提供了package安装,安装命令精简为:

sudo add-apt-repository ppa:softwareradiosystems/srsran
sudo apt-get update
sudo apt-get install srsran -y

2. srsRAN源码安装

详见srs官网 https://www.srs.io/

2.1 安装依赖

Ubuntu1804:

sudo apt-get install build-essential cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev

Fedora:

dnf install cmake fftw3-devel mbedtls-devel lksctp-tools-devel libconfig-devel boost-devel

CentOS:

dnf install cmake fftw3-devel mbedtls-devel lksctp-tools-devel libconfig boost-devel

2.2 安装srsGUI可视化界面(可选,推荐)

用于显示星座图等

sudo apt-get install libboost-system-dev libboost-test-dev libboost-thread-dev libqwt-qt5-dev qtbase5-dev
git clone https://github.com/srsLTE/srsGUI.git
cd srsgui
mkdir build
cd build
cmake ../
make 

可用make test测试是否安装成功
启用的话在srs的配置文件中,[gui]的enable即可true

2.3 根据您的RF硬件安装驱动/射频仿真

比较基本,我就假设各位都装好了并且测试可用
UHD(推荐用3.15,跟OAI通用)https://github.com/EttusResearch/uhd
SoapySDR https://github.com/pothosware/SoapySDR
BladeRF https://github.com/Nuand/bladeRF

ZeroMQ射频仿真,类似于OAI的rfsimulator,区别于L2sim,详见第4章
https://github.com/zeromq

2.4 安装srsRAN

下载源码编译:

git clone https://github.com/srsRAN/srsRAN.git
cd srsRAN
mkdir build
cd build
cmake ../
make
make test

安装(推荐,方便)

sudo make install
srsran_install_configs.sh user

默认配置文件位置在~/.config/srsran

3 部署srsRAN+射频

3.1 srs的BS+srs的UE

依然是愉快的

#指定配置文件
sudo srsenb ~/.config/srsran/enb.conf 
#不指定,用默认配置
sudo srsenb 

#指定配置文件
sudo srsue ~/.config/srsran/ue.conf 
sudo srsue #默认配置

./srsRAN/build/lib/examples里可以找到配置文件示例,此外还有些很方便的SIB的配置(比如我做授时需要配置SIB9)sib.conf、空口资源配置(比如可以引入额外的AI算法)rr.conf、DRB承载的配置 drb.conf。至于连接核心网的一些配置、UE的SIM的配置、核心网的配置等,可以看我之前的博客。

  • 如果性能不足可以考虑禁用睿频、使用低延迟内核,可看之前的博客
for f in /sys/devices/system/cpu/cpu[0-9]*/cpufreq/scaling_governor ; do
  echo performance > $f
done

3.2 special: 配置MIMO

目前支持模式tm=2、3、4 (参TS38.213),在配置文件中:

[enb]
...
tm = 3  #传输模式
nof_ports = 2  #天线端口数

基站在tm=3和4时候配置UE上报Rank Indicator的周期可以在rr.confm_ri处配置,整数,是CQI报告周期的倍数。

3.3 special: 配置5G NSA

3.3.1 不带射频(用ZMQ)

ZMQ配置见第4章

  • 修改基站的配置文件
    enb.conf中,配置[rf]中的device_name和device_args,如
device_name = zmq
device_args = fail_on_disconnect=true,tx_port0=tcp://*:2000,rx_port0=tcp://localhost:2001,tx_port1=tcp://*:2100,rx_port1=tcp://localhost:2101,id=enb,base_srate=23.04e6

再配置RRC, rr.conf的末尾添加一个NR小区

nr_cell_list =
(
   {
    rf_port = 1;
    cell_id = 0x02;
    tac = 0x0007;
    pci = 500;
    root_seq_idx = 204;

    // TDD:
    //dl_arfcn = 634240;
    //band = 78;

    // FDD:
    dl_arfcn = 368500;
    band = 3;
  }
);
  • 运行BS
    跟之前一样sudo srsue或者指定上配置文件,会同时启动eNB和gNB。
    log里cc_idx 0 是LTE cell,1是NR cell。

  • 修改UE的配置文件
    [rf]里修改device_name和device_args,如

device_name = zmq
device_args = tx_port0=tcp://*:2001,rx_port0=tcp://localhost:2000,tx_port1=tcp://*:2101,rx_port1=tcp://localhost:2100,id=ue,base_srate=23.04e6

添加网络

[gw]
netns = ue1

配置搜索的频段、载波数,TDD FDD都支持

[rat.nr]
bands = 3,78
nof_carriers = 1

声明标准支持(默认是声明支持R8,NSA至少R15)

[rrc]
release = 15
  • 运行UE
    跟之前一样。log中出现RRC NR reconfiguration successful表示成功连上NSA。

  • 测试
    ping或者iperf,随意。
    上行注意需要指定接口ue1(按前几步[gw]中配置):

sudo ip netns exec ue1 iperf3 -c 172.16.0.1 -b 10M -i 1 -t 60

同样,按t可以trace,打log的速度可以在配置文件metrics_period_secs处修改。

3.3.2 带射频

配置文件修改类似3.3.1节,如

[rf]
device_args=type=x300,clock=external,sampling_rate=11.52e6,lo_freq_offset_hz=11.52e6
nr_cell_list =
(
   {
    rf_port = 1;
    cell_id = 0x02;
    tac = 0x0007;
    pci = 500;
    root_seq_idx = 204;

    // TDD:
    //dl_arfcn = 634240;
    //band = 78;

    // FDD:
    dl_arfcn = 368500;
    band = 3;
  }
);

3.4 special: 用商用手机连接

目前有点淦的是srsRAN只支持15KHz SCS,等更新吧。
目前OnePlus 5G Nord可以接入,问题不少有兴趣可参这里。

4 部署srsRAN+仿真射频

4.1 安装ZeroMQ

srsRAN没有自己的rfsim,用的ZMQ,目前只支持单UE单BS。
!注意4.1这一步对应2.3节,是应该在编译srsRAN之前就安装的,如果已经编译了srsRAN需要在装完ZMQ之后重新make一下srsRAN

  • package安装:
sudo apt-get install libzmq3-dev

或者用源码编译:

git clone https://github.com/zeromq/libzmq.git
cd libzmq
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
git clone https://github.com/zeromq/czmq.git
cd czmq
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
  • 对应2.4节
    在2.4节执行一下命令编译过程时↓
git clone https://github.com/srsRAN/srsRAN.git
cd srsRAN
mkdir build
cd build
cmake ../
make

注意要有以下log才是正确安装了ZMQ并且被srsRAN识别到了

...
-- FINDING ZEROMQ.
-- Checking for module 'ZeroMQ'
--   No package 'ZeroMQ' found
-- Found libZEROMQ: /usr/local/include, /usr/local/lib/libzmq.so
...
  • 设置ue的仿真网络:
sudo ip netns add ue1
sudo ip netns list

  • 启动核心网
    略,可以用srs的迷你epc,也可以用OAI的,可参考我以前的博客等。
    srsepc大概就:
sudo ./srsepc/src/srsepc

OAI的epc:https://blog.csdn.net/BUPTOctopus/article/details/81560514
OAI的5GC:等srsRAN支持SA了再说

  • 运行BS
    以eNB为例
./srsenb/src/srsenb --rf.device_name=zmq --rf.device_args="fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6"
  • 运行UE
sudo ./srsue/src/srsue --rf.device_name=zmq --rf.device_args="tx_port=tcp://*:2001,rx_port=tcp://localhost:2000,id=ue,base_srate=23.04e6" --gw.netns=ue1

  • 测试(下行)
    ping或者iperf,没什么特殊的
  • 测试(上行)
    从UE发包的话需要制定ue的接口,(4G的话)ping SPGW用172.16.0.1(按照您UEIPpool的设置)
sudo ip netns exec ue1 ping 172.16.0.1

关闭时候要先关UE再关BS最后记得sudo ip netns delete ue1,不然会出bug。

  • GNU-Radio
    支持,运行时先分别启动核心网、BS、UE,最后再开GRC Flowgraph

4.2 special: 5G NSA

in fact nothing special……


一些其他的工具:
①ubuntu下的读卡器工具 https://pcsclite.apdu.fr/
②win下的读卡器工具(我之前博客发过)
③libdw-dev和libdw:使用backward-cpp进行实际信息的回溯


一些srsRAN的用例:
①树莓派4用例
②载波聚合
③eMBMS
④NB-IoT
⑤C-V2X


你可能感兴趣的:(博三,SDR,移动通信,srsRAN,srsLTE,OAI)