wiki:Tutorials/4G5G/srslte

Version 7 (modified by prasanthi, 22 months ago) ( diff )

srsRAN 5G network in COSMOS SB1

srsRAN is an open-source software radio suite for 4G/5G provided by SRS(Software Radio Systems). The srsRAN suite includes: srsUE - a full-stack SDR 4G/5G UE application srsENB - a full-stack SDR 4G/5G e(g)NodeB application srsEPC - a light-weight 4G core network implementation with MME, HSS and S/P-GW Source code for srsRAN can be found here and documentation can be found here

Description

This tutorial contains instructions for setting up a 4G/5G network in COSMOS SB1.

Prerequisites

In order to access the test bed, create a reservation and have it approved by the reservation service. Access to the resources is granted after the reservation is confirmed. Please follow the process shown on the COSMOS getting started page to get started.

Resources required

1 USRP-2974, 1 COSMOS node with SIM8200 modem. in COSMOS Weeks hall domain

Tutorial Setup

Follow the steps below to gain access to the Weeks hall console and set up nodes with appropriate images.

  1. If you don't have one already, sign up for a COSMOS account
  2. Create a resource reservation on sandbox 1
  3. Login into sandbox 1 console (console.sb1.cosmos-lab.org) with two SSH sessions.
  4. Make sure all the resources in the domain are turned off:
    omf tell -a offh -t system:topo:allres  
    
    For this tutorial we will be using a USRP-2974 sdr2-s1-lg1 and a COSMOS node srv1-in1. srv1-in1 has a Waveshare SIM8200 modem attached over USB.
  5. Load amarisoft-tutorial-cosmos.ndz on srv1-lg1
    omf load -i amarisoft-tutorial-cosmos.ndz -t srv1-lg1
    
    omf load -i srsran-22.04.ndz -t srv2-lg1
    
    omf load -i waveshare-sim8200.ndz -t sdr1-in3
    
  6. Turn all the required resources on and check the status
    omf tell -a on -t srv1-lg1,srv2-lg1,sdr1-in3
    
    omf stat -t system:topo:allres
    
  7. ssh to the nodes, use option -Y for using GUI.

Tutorial Execution

Run the Amarisoft MME

  • Upon logging into sdr2-s1-lg1, run uhd_find_devices to check the USRP.
    root@sdr2-s1-lg1:~# uhd_find_devices --args="resource=RIO0"
    [INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_106501; UHD_3.15.0.0-release
    --------------------------------------------------
    -- UHD Device 0
    --------------------------------------------------
    Device Address:
        serial: 318F215
        fpga: XG
        name:
        product: X310
        resource: RIO0
        type: x300
    
    
  • Run the MME
    root@sdr2-s1-lg1:~# cd /opt/amarisoft/ltemme-linux-2021-09-18
    root@sdr2-s1-lg1:/opt/amarisoft/ltemme-linux-2021-09-18# ./ltemme config/mme.cfg
    Core version 2021-09-18, Copyright (C) 2012-2021 Amarisoft
    This software is licensed to Rutgers University (The State University of New Jersey).
    License server: license.orbit-lab.org (0b-b4-46-dc-2f-83-58-cb)
    Support and software update available until 2022-08-18.
    
    (mme)
    
    

Run the srs gNodeb

SIM8200 UE

  • As the base station runs,SIM8200 modem on srv1-in1 communicates with the base station and registers to the network. You can see eNodeb trace similar to the one below.
    (enb) t
    Press [return] to stop the trace
    PRACH: cell=01 seq=20 ta=11 snr=16.0 dB
                   ----DL----------------------- --UL------------------------------------------------
    UE_ID  CL RNTI C cqi ri  mcs retx txok brate  snr puc1  mcs rxko rxok brate     #its phr  pl   ta
        1 001 003d 1   7  1  6.8    0    5   708 16.1 -1.0 10.0   12    7 2.55k  1/4.5/6   0  24 -0.3
        1 001 003d 1   9  1 13.8    1   23 6.46k 11.7  2.9 17.2   19   21 18.7k  1/4.1/6   5  24 -0.2
        1 001 003d 1   7  1 15.4    0    5   960 11.4 14.7  9.0    0    1   628  1/1.0/1   2  25 -0.4
        1 001 003d 1   7  1 11.0    0    4   312  7.2 -8.9 16.0    0    1   612  2/2.0/2   5  24 -0.1
        1 001 003d 1   7  1 11.8    0    4   336  9.2 11.4    -    0    0     0        -   5  24 -1.0
        1 001 003d 1   5  1 11.8    0    4   336 12.5 18.2 11.0    0    1   516  1/1.0/1   3  24 -0.4
        1 001 003d 1   8  1 11.8    0    4   372  4.3 16.8    -    0    0     0        -   3  24 -0.4
    
    
  • In the MME session you can check the eNodeb/gNodeb and registered ue. The modem has a SIM card with IMSI 310014000000017 as shown in the MME log below. IP address 192.168.2.2 has been allocated to the modem. In the trace below you can see the CN listed as EPC for LTE or 5GC for 5GNR SA network.
    (mme) enb
      PLMN    eNB_ID                        IP:Port #UEctx   TACs
    310014   0x1a2d0                127.0.1.1:47633      0    0x1
    (mme) ue
                SUPI           IMEISV  CN M-TMSI/5G-TMSI REG           TAC #BEARER IP_ADDR
     310014000000017 8642840402500300 EPC     0xa592c726   Y 310014.   0x1       2 192.168.2.2 192.168.4.2 2001:468:3000:1::
    (mme)
    
    
    (mme) gnb
      PLMN     RAN_ID                        IP:Port #UEctx     TACs
    310014    0x12345                127.0.1.1:38071      0     0x64
    (mme) ue
                SUPI           IMEISV  CN M-TMSI/5G-TMSI REG           TAC #BEARER IP_ADDR
     310014000000017 8642840402500300 5GC     0x525b2ca7   Y 310014.  0x64       2 192.168.4.2 2001:468:3000:1:: 192.168.2.2
    (mme)
    
    
  • On srv1-in1, you can see that the modem shows up as a wwan interface wwp0s20u3i5.
    root@srv1-in1:~# ifconfig -a
    CTRL: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.44.1.5  netmask 255.255.0.0  broadcast 10.44.255.255
            inet6 fe80::da50:e6ff:fed4:f80e  prefixlen 64  scopeid 0x20<link>
            ether d8:50:e6:d4:f8:0e  txqueuelen 1000  (Ethernet)
            RX packets 53  bytes 7687 (7.6 KB)
            RX errors 0  dropped 7  overruns 0  frame 0
            TX packets 39  bytes 5910 (5.9 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device interrupt 20  memory 0xf7d00000-f7d20000
    
    DATA1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet6 fe80::da50:e6ff:fed4:f60a  prefixlen 64  scopeid 0x20<link>
            ether d8:50:e6:d4:f6:0a  txqueuelen 1000  (Ethernet)
            RX packets 5  bytes 300 (300.0 B)
            RX errors 0  dropped 5  overruns 0  frame 0
            TX packets 11  bytes 1874 (1.8 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 148  bytes 10311 (10.3 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 148  bytes 10311 (10.3 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    wwp0s20u3i5: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST>  mtu 1500
            inet6 fe80::7cab:29ff:fe84:1b18  prefixlen 64  scopeid 0x20<link>
            ether 7e:ab:29:84:1b:18  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    
  • Set the IP address of the wwan interface to the once allocated by the MME (192.168.2.2 in this case)
    root@srv1-in1:~# ifconfig wwp0s20u3i5 192.168.2.2
    

Test

  • You can now communicate with the base station over the air. The data connection can be tested with ping or iperf as below.
    root@srv1-in1:~# ifconfig wwp0s20u3i5 192.168.2.2
    root@srv1-in1:~# ping 192.168.2.1
    PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
    64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=146 ms
    64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=25.0 ms
    64 bytes from 192.168.2.1: icmp_seq=3 ttl=64 time=23.9 ms
    64 bytes from 192.168.2.1: icmp_seq=4 ttl=64 time=21.9 ms
    64 bytes from 192.168.2.1: icmp_seq=5 ttl=64 time=39.9 ms
    64 bytes from 192.168.2.1: icmp_seq=6 ttl=64 time=37.9 ms
    64 bytes from 192.168.2.1: icmp_seq=7 ttl=64 time=35.9 ms
    ^C
    --- 192.168.2.1 ping statistics ---
    7 packets transmitted, 7 received, 0% packet loss, time 6010ms
    rtt min/avg/max/mdev = 21.920/47.296/146.430/41.032 ms
    
    
  • iperf testing
    root@sdr2-s1-lg1:~# iperf3 -s -i 1
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    
    
    root@srv1-in1:~# iperf3 -c 192.168.2.1 -b 10M -i 1 -t 60
    Connecting to host 192.168.2.1, port 5201
    [  4] local 192.168.2.2 port 34278 connected to 192.168.2.1 port 5201
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-1.00   sec   451 KBytes  3.70 Mbits/sec    0   45.2 KBytes
    [  4]   1.00-2.00   sec   469 KBytes  3.85 Mbits/sec    0   63.6 KBytes
    [  4]   2.00-3.00   sec   708 KBytes  5.80 Mbits/sec    0   84.8 KBytes
    [  4]   3.00-4.00   sec   635 KBytes  5.20 Mbits/sec    0    109 KBytes
    [  4]   4.00-5.00   sec   638 KBytes  5.22 Mbits/sec    0    129 KBytes
    [  4]   5.00-6.00   sec   798 KBytes  6.53 Mbits/sec    0    158 KBytes
    [  4]   6.00-7.00   sec   667 KBytes  5.47 Mbits/sec    0    198 KBytes
    [  4]   7.00-8.00   sec   643 KBytes  5.27 Mbits/sec    0    260 KBytes
    [  4]   8.00-9.00   sec   590 KBytes  4.83 Mbits/sec    0    315 KBytes
    [  4]   9.00-10.00  sec   761 KBytes  6.23 Mbits/sec    0    427 KBytes
    [  4]  10.00-11.00  sec   908 KBytes  7.44 Mbits/sec    0    581 KBytes
    
    
Note: See TracWiki for help on using the wiki.