Skip to content
Snippets Groups Projects

Installation and deployment of 5G Core (5GC) of Open Air Interface (OAI)

Objectives

  • Install and configure the 5GC of OAI in a virtual machine Ubuntu 20.04 LTS (Focal Fossa)
  • Deploy 5GC Core
  • Inspec 5G Core Docker containers by means of command line instructions
  • Install and configure Portainer tool
  • Inspec 5G Core Docker containers by means of Portainer browser

Minimum hardware requirements for OAI UE, according to doc/NR_SA_Tutorial_COTS_UE.md · develop · oai / openairinterface5G · GitLab (eurecom.fr):

  • Ubuntu 20.04.5 LTS;
  • CPU: 4 cores x86_64;
  • 8 GB RAM.

Minimum hardware requirements for OAI 5GC and OAI gNB, according to doc/NR_SA_Tutorial_COTS_UE.md · develop · oai / openairinterface5G · GitLab (eurecom.fr):

  • Ubuntu 20.04.5 LTS;
  • CPU: 8 cores x86_64 3.5 GHz;
  • 32 GB RAM.

However, if you do not have such hardware specifications, you may use the one below for both devices (tested for us, you may face some lags, but it works):

  • Ubuntu 20.04.5 LTS;
  • CPU: 4 cores x86_64;
  • 4 GB RAM.

5GC Installation

ALT

In a Linux Terminal, follow the steps below:

Step 0: Setup your VM or Baremetal Machine, after install Useful Software:

sudo su

apt update -y

apt upgrade -y

apt install -y python3-pip git curl cmake tree golang vim net-tools build-essential nfs-common openssh-server

Step 1: Install dependencies

sudo apt-get install ca-certificates

sudo apt-get install curl

sudo apt-get install gnupg

sudo apt-get install lsb-release

Step 2: Enable packet forwarding

sudo sysctl net.ipv4.conf.all.forwarding=1

sudo iptables -P FORWARD ACCEPT

Step 3: Install docker and docker-compose

sudo rm /etc/apt/sources.list.d/docker.list*

sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo chmod a+r /etc/apt/keyrings/docker.gpg

sudo apt-get update

sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s-uname -m` -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

Step 4: Clone OpenAirInterface 5G Core repository

git clone https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed.git

cd oai-cn5g-fed

git checkout slicing-spring-of-code

OAI 5G RAN, RIC (FlexRIC) and OAI UE Installations

ALT

Objectives

  • Install the OAI 5G RAN (gNB)
  • Install the FlexRIC
  • Install OAI UE

To install OAI RAN 5G and OAI UE, go back for /home/

your user
and follow this tutorial.

Step 0: go back to /home/

your user
. In a Linux Terminal, type:

sudo su

cd /home/

your user

Step 1: Install dependencies

sudo add-apt-repository ppa:ettusresearch/uhd

sudo apt-get install libuhd-dev uhd-host -y

sudo apt-get install libuhd4.6.0 -y

sudo apt-get install ccache -y

sudo apt-get install net-tools

Step 2: Fix problem in the libuhd. When you run the commands below, if you get the error "cannot access archive", you can continue to the next step. sudo dpkg -i --force-overwrite /var/cache/apt/archives/libuhd4.6.0_4.6.0.0-0ubuntu1~focal1_amd64.deb

Step 3: Clone OpenAirInterface 5G RAN repository

git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git

cd /home/

your user
/openairinterface5g

git checkout slicing-spring-of-code

Step 4: Run the installation script

source oaienv

cd cmake_targets

sudo ./build_oai -I

sudo ./build_oai -I --install-optional-packages

sudo ./build_oai -w USRP --ninja --gNB --nrUE -C --build-lib "uescope nrscope telnetsrv"

To install RIC (FlexRIC), go back to /home/

your user
and follow this tutorial.

Step 0: go back to /home/

your user
. In a Linux Terminal, type:

sudo su

cd /home/

your user

Step 1: Install dependencies:

sudo apt-get install -y autotools-dev automake g++ make libpcre2-dev byacc cmake python3-dev libsctp-dev pcre2-utils bison

Step 2: Install swig:

cd /home/

your user

git clone https://github.com/swig/swig.git

cd swig

git checkout release-4.1

./autogen.sh

./configure --prefix=/usr/

make -j8

sudo make install

Step 3: Clone FlexRIC repository:

git clone https://gitlab.eurecom.fr/mosaic5g/flexric flexric

cd flexric/

git checkout slicing-spring-of-code

Step 4: Build FlexRIC:

mkdir build && cd build && cmake .. && make -j8

sudo make install

UE 1 Configurations

Objectives

  • Configure the OAI UE 1

Step 1: Creating a namespace:

sudo ip netns add oai-ue1

Step 2: Creating a pair of virtual interfaces (veth):

sudo ip link add veth0 type veth peer name veth1

Step 3: Moving one interface to the created namespace:

sudo ip link set veth1 netns oai-ue1

Step 4: Configuring an IP address for veth0 interface:

sudo ip addr add 192.168.1.1/24 dev veth0

Step 5: Configuring an IP address for veth1 interface within the namespace:

sudo ip netns exec oai-ue1 ip addr add 192.168.1.2/24 dev veth1

Step 6: Bringing up the veth0 interface:

sudo ip link set veth0 up

Step 7: Bringing up the veth1 interface within the namespace:

sudo ip netns exec oai-ue1 ip link set veth1 up

Step 8: Adding a route within the namespace:

sudo ip netns exec oai-ue1 ip route add 192.168.70.0/24 via 192.168.1.1 dev veth1

Step 9: Enabling packet forwarding within the namespace:

sudo ip netns exec oai-ue1 sysctl net.ipv4.conf.all.forwarding=1

Step 10: Setting default policy for packet forwarding within the namespace to ACCEPT::

sudo ip netns exec oai-ue1 iptables -P FORWARD ACCEPT

UE 2 Configurations

Objectives

  • Configure the OAI UE 2

Step 1: Creating a namespace:

sudo ip netns add oai-ue2

Step 2: Creating a pair of virtual interfaces (veth):

sudo ip link add veth1 type veth peer name veth2

Step 3: Moving one interface to the created namespace:

sudo ip link set veth2 netns oai-ue2

Step 4: Configuring an IP address for veth1 interface:

sudo ip addr add 192.168.1.1/24 dev veth1

Step 5: Configuring an IP address for veth1 interface within the namespace:

sudo ip netns exec oai-ue2 ip addr add 192.168.1.2/24 dev veth2

Step 6: Bringing up the veth1 interface:

sudo ip link set veth1 up

Step 7: Bringing up the veth1 interface within the namespace:

sudo ip netns exec oai-ue2 ip link set veth2 up

Step 8: Adding a route within the namespace:

sudo ip netns exec oai-ue2 ip route add 192.168.70.0/24 via 192.168.1.1 dev veth2

Step 9: Enabling packet forwarding within the namespace:

sudo ip netns exec oai-ue2 sysctl net.ipv4.conf.all.forwarding=1

Step 10: Setting default policy for packet forwarding within the namespace to ACCEPT::

sudo ip netns exec oai-ue2 iptables -P FORWARD ACCEPT

Step 11: Copy the UE file:

cp /home/

your user
/openairinterface5g/targets/PROJECTS/GENERIC-NR-5GC/CONF/ue.conf /home/
your user
/openairinterface5g/targets/PROJECTS/GENERIC-NR-5GC/CONF/ue2.conf

Deployments

Objectives

  • Deploy 5GC, 5G RAN, FlexRIC and OAI UE

Use a separate terminal for each of the following steps.

Step 1: Core deployment?

cd /home/

your user
/oai-cn5g-fed/docker-compose

docker compose -f docker-compose-slicing-basic-nrf.yaml up -d

Expected result:

After running the above command, nine containers are expected to be in the "Up (healthy)" state as shown in figure below.

ALT

Step 2: FlexRIC deployment:

cd flexric/

./build/examples/ric/nearRT-RIC

After running the above command the expect result is shown in figure below.

ALT

Step 3: gNB deployment:

Attention: You must have Core 5G up and running

Step 3.1: gNB deploy:

sudo su

cd /home/

your user
/openairinterface5g/cmake_targets/ran_build/build/

sudo RFSIMULATOR=server ./nr-softmodem --rfsim --sa -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --continuous-tx

Step 3.2: To check the connection of gNodeB to the Core, see AMF logs. Open a terminal and use the command below:

docker logs -f oai-amf

The expected return is shown in figure below, where gNodeB shows the connected status.

ALT

Step 4: UE 1 deployment:

sudo ip netns exec oai-ue1 bash

cd /home/

your user
/openairinterface5g/cmake_targets/ran_build/build/

sudo RFSIMULATOR=192.168.1.2 ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --sa --nokrnmod -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/ue.conf

Step 5: UE 2 deployment:

sudo ip netns exec oai-ue2 bash

cd /home/

your user
/openairinterface5g/cmake_targets/ran_build/build/

sudo RFSIMULATOR=192.168.1.2 ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --sa --nokrnmod -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/ue2.conf