Files
openairinterface5g/doc/NR_SA_Tutorial_OAI_multi_UE.md
Robert Schmidt 8107939f08 Change OAI license to CSSL v1.0 (and others)
- all RAN code, CI code, configuration files, dockerfiles, in CSSL v1.0
- all deployment code (openshift, charts, ancillary files like shell
  scripts), in MIT
- documentation in CC-BY-4.0
- exceptions might apply and are listed in NOTICE
- there is a new LICENSES folder with all licenses
- CONTRIBUTIONS.md has been updated accordingly

For automated changes based on OAI PL v1.1:

    perl -i~ -0pe 's/\/\*.*Licensed to the OpenAirInterface.*openairinterface.org\n#?/\/*\n * SPDX-License-Identifier: LicenseRef-CSSL-1.0\n/s' **/*.{c,h,cpp}
    perl -i~ -0pe 's/\/\*.*Licensed to the OpenAirInterface.*openairinterface.org\n#?/\/*\n * SPDX-License-Identifier: LicenseRef-CSSL-1.0\n/s' **/*.ts
    perl -i~ -0pe 's/<!--.*Licensed to the OpenAirInterface.*openairinterface.org\n.*-->/<!-- SPDX-License-Identifier: LicenseRef-CSSL-1.0 -->/s' **/*.xml

The rest (cmake, files with missing license, cmake) manually.
2026-03-27 16:36:37 +01:00

3.9 KiB

OAI 5G NR SA tutorial to deploy multiple OAI nrUE

Table of Contents

[[TOC]]

Scenario

This tutorial is about how to configure and run multiple OAI nrUE in the same end-to-end OAI 5G setup with RFsimulator.

Pre-requisites

This tutorial is assuming that OAI CN5G and OAI RAN are already deployed. To learn how to deploy and run a basic setup with OAI nrUE, please refer to NR_SA_Tutorial_OAI_nrUE.md.

Also, it is suggested to get some knowledge on how the channel simulation with OAI RFsimulator works. Please refer to the following documentation to learn about the relevant topics discussed:

Run multiple UEs in RFsimulator

Multiple nrUEs with namespaces

Important notes:

  • This should be run on the same host as the OAI gNB
  • Use the script multi_ue.sh to make namespaces for multiple UEs.
  • For each UE, a namespace shall be created, each one has a different address that will be used as rfsim server address
  • Each UE shall have a different IMSI, which shall be present in the relevant tables of the MySQL database
  • Each UE shall run a telnet server on a different port, with command line option --telnetsrv.listenport
  1. For the first UE, create the namespace ue1 (-c1), then execute shell inside (-o1, "open"):

    sudo ./multi-ue.sh -c1
    sudo ./multi-ue.sh -o1
    
  2. After entering the bash environment, run the following command to deploy your first UE

    sudo ./nr-uesoftmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/ue.conf -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --uicc0.imsi 001010000000001 --rfsimulator.[0].options chanmod --rfsimulator.[0].serveraddr 10.201.1.100 --telnetsrv --telnetsrv.listenport 9095
    
  3. For the second UE, create the namespace ue2 (-c2), then execute shell inside (-o2, "open"):

    sudo ./multi-ue.sh -c2
    sudo ./multi-ue.sh -o2
    
  4. After entering the bash environment, run the following command to deploy your second UE:

    sudo ./nr-uesoftmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/ue.conf -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --uicc0.imsi 001010000000002 --rfsimulator.[0].options chanmod --rfsimulator.[0].serveraddr 10.202.1.100 --telnetsrv --telnetsrv.listenport 9096
    

in the command above, please note that the IMSI and the telnet port changed.

Running Multiple UEs with Docker

  1. Make sure OAI nrUE image is pulled:

    docker pull oaisoftwarealliance/oai-nr-ue:latest
    
  2. Configure your setup by editing the Docker compose file e.g. in docker-compose.yaml.

  3. Deploy the UEs, e.g. for 3 UEs:

    docker compose up -d oai-nr-ue{1,2,3}
    
  4. Check the logs to ensure each UE has gotten an IP address, e.g.:

    docker logs oai-nr-ue1
    

    or

    docker exec -it oai-nr-ue1 ip a show oaitun_ue1
    
  5. Test the connectivity of each UE to the core network:

    docker exec -it oai-nr-ue1 ping -c1 192.168.70.135
    
  6. After testing, undeploy the UEs to allow them time to deregister, and then bring down the rest of the network:

    docker compose stop oai-nr-ue{1,2,3}
    docker compose down -v
    

Further reading

For more details and scenarios, refer to the following files: