From 27546f60da1e55e831a2c9efffbb795dde64128e Mon Sep 17 00:00:00 2001
From: luis_pereira87 <lpereira@allbesmart.pt>
Date: Tue, 20 Dec 2022 10:41:36 +0000
Subject: [PATCH] Tutorials: split tutorials in three files, OAI_CN5G, COTS_UE
 and OAI_nrUE

---
 ..._Tutorial.md => NR_SA_Tutorial_COTS_UE.md} | 124 +------
 doc/NR_SA_Tutorial_OAI_CN5G.md                |  90 +++++
 doc/NR_SA_Tutorial_OAI_nrUE.md                | 206 +++++++++++
 .../docker-compose-basic-nrf.yaml             | 345 ------------------
 doc/tutorial_resources/oai-cn5g/Dockerfile    |  15 +
 .../oai-cn5g/conf/oai-amf.conf                | 146 ++++++++
 .../oai-cn5g/conf/oai-ausf.conf               |  62 ++++
 .../oai-cn5g/conf/oai-nrf.conf                |  39 ++
 .../oai-cn5g/conf/oai-smf.conf                | 131 +++++++
 .../oai-cn5g/conf/oai-spgwu-tiny.conf         | 138 +++++++
 .../oai-cn5g/conf/oai-udm.conf                |  63 ++++
 .../oai-cn5g/conf/oai-udr.conf                |  66 ++++
 doc/tutorial_resources/oai-cn5g/conf/sip.conf |   6 +
 .../oai-cn5g/conf/users.conf                  |  27 ++
 .../{ => oai-cn5g/database}/oai_db.sql        |  10 +-
 .../oai-cn5g/docker-compose.yml               | 145 ++++++++
 .../healthscripts/mysql-healthcheck.sh        |  46 +++
 ...gnb.sa.band77.fr1.273PRB.2x2.usrpn300.conf |   2 +-
 ...gnb.sa.band78.fr1.106PRB.2x2.usrpn300.conf |   3 +-
 .../gnb.sa.band78.fr1.106PRB.usrpb210.conf    |   1 +
 ...gnb.sa.band78.fr1.162PRB.2x2.usrpn300.conf |   2 +-
 21 files changed, 1203 insertions(+), 464 deletions(-)
 rename doc/{NR_SA_CN5G_gNB_USRP_COTS_UE_Tutorial.md => NR_SA_Tutorial_COTS_UE.md} (58%)
 create mode 100644 doc/NR_SA_Tutorial_OAI_CN5G.md
 create mode 100644 doc/NR_SA_Tutorial_OAI_nrUE.md
 delete mode 100644 doc/tutorial_resources/docker-compose-basic-nrf.yaml
 create mode 100644 doc/tutorial_resources/oai-cn5g/Dockerfile
 create mode 100644 doc/tutorial_resources/oai-cn5g/conf/oai-amf.conf
 create mode 100644 doc/tutorial_resources/oai-cn5g/conf/oai-ausf.conf
 create mode 100644 doc/tutorial_resources/oai-cn5g/conf/oai-nrf.conf
 create mode 100644 doc/tutorial_resources/oai-cn5g/conf/oai-smf.conf
 create mode 100644 doc/tutorial_resources/oai-cn5g/conf/oai-spgwu-tiny.conf
 create mode 100644 doc/tutorial_resources/oai-cn5g/conf/oai-udm.conf
 create mode 100644 doc/tutorial_resources/oai-cn5g/conf/oai-udr.conf
 create mode 100644 doc/tutorial_resources/oai-cn5g/conf/sip.conf
 create mode 100644 doc/tutorial_resources/oai-cn5g/conf/users.conf
 rename doc/tutorial_resources/{ => oai-cn5g/database}/oai_db.sql (75%)
 create mode 100644 doc/tutorial_resources/oai-cn5g/docker-compose.yml
 create mode 100755 doc/tutorial_resources/oai-cn5g/healthscripts/mysql-healthcheck.sh

diff --git a/doc/NR_SA_CN5G_gNB_USRP_COTS_UE_Tutorial.md b/doc/NR_SA_Tutorial_COTS_UE.md
similarity index 58%
rename from doc/NR_SA_CN5G_gNB_USRP_COTS_UE_Tutorial.md
rename to doc/NR_SA_Tutorial_COTS_UE.md
index 7f860cff0aa..3d9781a7dbb 100644
--- a/doc/NR_SA_CN5G_gNB_USRP_COTS_UE_Tutorial.md
+++ b/doc/NR_SA_Tutorial_COTS_UE.md
@@ -7,7 +7,7 @@
       </a>
     </td>
     <td style="border-collapse: collapse; border: none; vertical-align: center;">
-      <b><font size = "5">OAI 5G SA tutorial</font></b>
+      <b><font size = "5">OAI 5G NR SA tutorial with COTS UE</font></b>
     </td>
   </tr>
 </table>
@@ -17,11 +17,11 @@
 [[_TOC_]]
 
 #  1. Scenario
-In this tutorial we describe how to configure and run a 5G end-to-end setup with OAI CN5G, OAI gNB, OAI nrUE and COTS UE.
+In this tutorial we describe how to configure and run a 5G end-to-end setup with OAI CN5G, OAI gNB and COTS UE.
 
 Minimum hardware requirements:
 - Laptop/Desktop/Server for OAI CN5G and OAI gNB
-    - Operating System: [Ubuntu 22.04.1 LTS](https://releases.ubuntu.com/22.04.1/ubuntu-22.04.1-desktop-amd64.iso)
+    - Operating System: [Ubuntu 22.04 LTS](https://releases.ubuntu.com/22.04/ubuntu-22.04.1-desktop-amd64.iso)
     - CPU: 8 cores x86_64 @ 3.5 GHz
     - RAM: 32 GB
 - Laptop for UE
@@ -40,63 +40,11 @@ Minimum hardware requirements:
 
 ## 2.1 OAI CN5G pre-requisites
 
-```bash
-sudo apt install -y git net-tools putty
-
-sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
-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 apt update
-sudo apt install -y docker docker-ce
-
-# Add your username to the docker group, otherwise you will have to run in sudo mode.
-sudo usermod -a -G docker $(whoami)
-reboot
-
-# https://docs.docker.com/compose/install/
-sudo curl -L "https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-sudo chmod +x /usr/local/bin/docker-compose
-```
+Please install and configure OAI CN5G as described here:
+[OAI CN5G](NR_SA_Tutorial_OAI_CN5G.md)
 
-## 2.2 OAI CN5G Setup
-
-```bash
-# Git oai-cn5g-fed repository
-git clone https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed.git ~/oai-cn5g-fed
-
-# Pull docker images
-docker pull oaisoftwarealliance/oai-amf:develop
-docker pull oaisoftwarealliance/oai-nrf:develop
-docker pull oaisoftwarealliance/oai-smf:develop
-docker pull oaisoftwarealliance/oai-udr:develop
-docker pull oaisoftwarealliance/oai-udm:develop
-docker pull oaisoftwarealliance/oai-ausf:develop
-docker pull oaisoftwarealliance/oai-spgwu-tiny:develop
-docker pull oaisoftwarealliance/trf-gen-cn5g:latest
-
-# Tag docker images
-docker image tag oaisoftwarealliance/oai-amf:develop oai-amf:develop
-docker image tag oaisoftwarealliance/oai-nrf:develop oai-nrf:develop
-docker image tag oaisoftwarealliance/oai-smf:develop oai-smf:develop
-docker image tag oaisoftwarealliance/oai-udr:develop oai-udr:develop
-docker image tag oaisoftwarealliance/oai-udm:develop oai-udm:develop
-docker image tag oaisoftwarealliance/oai-ausf:develop oai-ausf:develop
-docker image tag oaisoftwarealliance/oai-spgwu-tiny:develop oai-spgwu-tiny:develop
-docker image tag oaisoftwarealliance/trf-gen-cn5g:latest trf-gen-cn5g:latest
-```
-
-## 2.3 OAI CN5G Configuration files
-Download and copy configuration files:
-- Copy [docker-compose-basic-nrf.yaml](tutorial_resources/docker-compose-basic-nrf.yaml) to `~/oai-cn5g-fed/docker-compose`
-```bash
-wget -O ~/oai-cn5g-fed/docker-compose/docker-compose-basic-nrf.yaml https://gitlab.eurecom.fr/oai/openairinterface5g/-/raw/develop/doc/tutorial_resources/docker-compose-basic-nrf.yaml?inline=false
-```
-- Copy [oai_db.sql](tutorial_resources/oai_db.sql) to `~/oai-cn5g-fed/docker-compose/database`
-```bash
-wget -O ~/oai-cn5g-fed/docker-compose/database/oai_db.sql https://gitlab.eurecom.fr/oai/openairinterface5g/-/raw/develop/doc/tutorial_resources/oai_db.sql?inline=false
-```
 
-## 2.4  SIM Card
+## 2.2  SIM Card
 Program SIM Card with [Open Cells Project](https://open-cells.com/) application [uicc-v2.6](https://open-cells.com/d5138782a8739209ec5760865b1e53b0/uicc-v2.6.tgz).
 
 ```bash
@@ -114,7 +62,7 @@ sudo apt install -y libboost-all-dev libusb-1.0-0-dev doxygen python3-docutils p
 
 git clone https://github.com/EttusResearch/uhd.git ~/uhd
 cd ~/uhd
-git checkout v4.3.0.0
+git checkout v4.4.0.0
 cd host
 mkdir build
 cd build
@@ -135,16 +83,14 @@ cd ~/openairinterface5g
 git checkout develop
 
 # Install OAI dependencies
-cd ~/openairinterface5g
-source oaienv
-cd cmake_targets
+cd ~/openairinterface5g/cmake_targets
 ./build_oai -I
 
 # Build OAI gNB
 cd ~/openairinterface5g
 source oaienv
 cd cmake_targets
-./build_oai -w USRP --ninja --nrUE --gNB --build-lib "telnetsrv nrscope" -c
+./build_oai -w USRP --ninja --gNB --build-lib "nrscope" -c
 ```
 
 # 4. Run OAI CN5G and OAI gNB
@@ -152,8 +98,8 @@ cd cmake_targets
 ## 4.1 Run OAI CN5G
 
 ```bash
-cd ~/oai-cn5g-fed/docker-compose
-python3 core-network.py --type start-basic --scenario 1
+cd ~/oai-cn5g
+docker compose up -d
 ```
 
 ## 4.2 Run OAI gNB
@@ -181,14 +127,6 @@ cd cmake_targets/ran_build/build
 sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.fr1.273PRB.2x2.usrpn300.conf --sa --usrp-tx-thread-config 1 -E --continuous-tx
 ```
 
-### RFsimulator
-```bash
-cd ~/openairinterface5g
-source oaienv
-cd cmake_targets/ran_build/build
-sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --rfsim --sa
-```
-
 # 5. Run UE
 ## 5.1 Testing with Quectel RM500Q
 
@@ -196,9 +134,6 @@ sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band
 With [PuTTY](https://the.earth.li/~sgtatham/putty/latest/w64/putty.exe), send the following AT commands to the module using a serial interface (ex: COM2) at 115200 bps:
 ```bash
 # MUST be sent at least once everytime there is a firmware upgrade!
-AT+QMBNCFG="Select","ROW_Commercial"
-AT+QMBNCFG="AutoSel",0
-AT+CFUN=1,1
 AT+CGDCONT=1,"IP","oai"
 AT+CGDCONT=2
 AT+CGDCONT=3
@@ -233,40 +168,6 @@ iperf -s -u -i 1 -B 12.1.1.2
 docker exec -it oai-ext-dn iperf -u -t 86400 -i 1 -fk -B 192.168.70.135 -b 100M -c 12.1.1.2
 ```
 
-## 5.2 Testing with OAI nrUE
-### 5.2.1 Testing with OAI nrUE with USRP B210
-Important notes:
-- This should be run in a second Ubuntu 20.04 host, other than gNB
-- It only applies when running OAI gNB with USRP B210
-- OAI gNB must run with the following flag: `--gNBs.[0].min_rxtxtime 6`
-
-Run OAI nrUE
-```bash
-cd ~/openairinterface5g
-source oaienv
-cd cmake_targets/ran_build/build
-sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --ue-fo-compensation --sa -E --uicc0.imsi 001010000000001 --uicc0.nssai_sd 1
-```
-
-### 5.2.2 Testing with OAI nrUE with RFsimulator
-Important notes:
-- This should be run on the same host as the OAI gNB
-- It only applies when running OAI gNB with RFsimulator
-
-Run OAI nrUE with RFsimulator
-```bash
-cd ~/openairinterface5g
-source oaienv
-cd cmake_targets/ran_build/build
-sudo RFSIMULATOR=127.0.0.1 ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --sa --uicc0.imsi 001010000000001 --uicc0.nssai_sd 1
-```
-
-### 5.2.3 Ping test
-- UE host
-```bash
-ping 192.168.70.135 -I oaitun_ue1
-```
-
 # 6. Advanced configurations (optional)
 
 ## 6.1 USRP N300 and X300 Ethernet Tuning
@@ -292,8 +193,7 @@ sudo ethtool -G enp1s0f0 tx 4096 rx 4096
 ```
 
 ## 6.2 Real-time performance workarounds
-- Enable Performance Mode in Ubuntu 22:
-  - Settings/Power/Power Mode: Performance
+- Enable Performance Mode `sudo cpupower idle-set -D 0`
 - If you get real-time problems on heavy UL traffic, reduce the maximum UL MCS using an additional command-line switch: `--MACRLCs.[0].ul_max_mcs 14`.
 
 ## 6.3 Uplink issues related with noise on the DC carriers
diff --git a/doc/NR_SA_Tutorial_OAI_CN5G.md b/doc/NR_SA_Tutorial_OAI_CN5G.md
new file mode 100644
index 00000000000..cee4c904cfa
--- /dev/null
+++ b/doc/NR_SA_Tutorial_OAI_CN5G.md
@@ -0,0 +1,90 @@
+<table style="border-collapse: collapse; border: none;">
+  <tr style="border-collapse: collapse; border: none;">
+    <td style="border-collapse: collapse; border: none;">
+      <a href="http://www.openairinterface.org/">
+         <img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
+         </img>
+      </a>
+    </td>
+    <td style="border-collapse: collapse; border: none; vertical-align: center;">
+      <b><font size = "5">OAI 5G NR SA tutorial: setting up OAI CN5G</font></b>
+    </td>
+  </tr>
+</table>
+
+**Table of Contents**
+
+[[_TOC_]]
+
+#  1. Scenario
+In this tutorial we describe how to configure and run a 5G end-to-end setup with OAI CN5G, OAI gNB and COTS UE.
+
+Minimum hardware requirements:
+- Laptop/Desktop/Server for OAI CN5G and OAI gNB
+    - Operating System: [Ubuntu 22.04 LTS](https://releases.ubuntu.com/22.04/ubuntu-22.04.1-desktop-amd64.iso)
+    - CPU: 8 cores x86_64 @ 3.5 GHz
+    - RAM: 32 GB
+
+# 2. OAI CN5G
+
+## 2.1 OAI CN5G pre-requisites
+
+```bash
+sudo apt install -y git net-tools putty
+
+sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
+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 apt update
+sudo apt install -y docker docker-ce
+
+# Add your username to the docker group, otherwise you will have to run in sudo mode.
+sudo usermod -a -G docker $(whoami)
+reboot
+```
+
+## 2.2 OAI CN5G configuration files
+Download and copy configuration files:
+```bash
+wget -O ~/oai-cn5g.zip https://gitlab.eurecom.fr/oai/openairinterface5g/-/archive/develop/openairinterface5g-develop.zip?path=doc/tutorial_resources/oai-cn5g
+unzip ~/oai-cn5g.zip
+mv ~/openairinterface5g-develop-doc-tutorial_resources-oai-cn5g/doc/tutorial_resources/oai-cn5g ~/oai-cn5g
+rm -r ~/openairinterface5g-develop-doc-tutorial_resources-oai-cn5g ~/oai-cn5g.zip
+```
+
+## 2.3 Pull OAI CN5G docker images
+
+```bash
+docker pull mysql:8.0
+docker pull oaisoftwarealliance/oai-amf:develop
+docker pull oaisoftwarealliance/oai-nrf:develop
+docker pull oaisoftwarealliance/oai-smf:develop
+docker pull oaisoftwarealliance/oai-udr:develop
+docker pull oaisoftwarealliance/oai-udm:develop
+docker pull oaisoftwarealliance/oai-ausf:develop
+docker pull oaisoftwarealliance/oai-spgwu-tiny:develop
+docker pull oaisoftwarealliance/trf-gen-cn5g:latest
+docker build --target ims --tag asterisk-ims:latest --file ~/oai-cn5g/Dockerfile .
+```
+
+# 3. Run OAI CN5G
+## 3.1 Start OAI CN5G
+```bash
+cd ~/oai-cn5g
+docker compose up -d
+```
+
+## 3.2 Stop OAI CN5G
+```bash
+cd ~/oai-cn5g
+docker compose down
+```
+
+# 4. Run 5G NR SA end-to-end setup with OAI gNB
+## 4.1 Testing with COTS UE
+Please check this link:
+[Testing with OAI gNB and COTS UE](NR_SA_Tutorial_COTS_UE.md)
+
+## 4.2 Testing with OAI nrUE
+Please check this link:
+[Testing with OAI gNB and OAI nrUE](NR_SA_Tutorial_OAI_nrUE.md)
\ No newline at end of file
diff --git a/doc/NR_SA_Tutorial_OAI_nrUE.md b/doc/NR_SA_Tutorial_OAI_nrUE.md
new file mode 100644
index 00000000000..86aede9f238
--- /dev/null
+++ b/doc/NR_SA_Tutorial_OAI_nrUE.md
@@ -0,0 +1,206 @@
+<table style="border-collapse: collapse; border: none;">
+  <tr style="border-collapse: collapse; border: none;">
+    <td style="border-collapse: collapse; border: none;">
+      <a href="http://www.openairinterface.org/">
+         <img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
+         </img>
+      </a>
+    </td>
+    <td style="border-collapse: collapse; border: none; vertical-align: center;">
+      <b><font size = "5">OAI 5G NR SA tutorial with OAI nrUE</font></b>
+    </td>
+  </tr>
+</table>
+
+**Table of Contents**
+
+[[_TOC_]]
+
+#  1. Scenario
+In this tutorial we describe how to configure and run a 5G end-to-end setup with OAI CN5G, OAI gNB and OAI nrUE.
+
+Minimum hardware requirements:
+- Laptop/Desktop/Server for OAI CN5G and OAI gNB
+    - Operating System: [Ubuntu 22.04 LTS](https://releases.ubuntu.com/22.04/ubuntu-22.04.1-desktop-amd64.iso)
+    - CPU: 8 cores x86_64 @ 3.5 GHz
+    - RAM: 32 GB
+- Laptop for UE
+    - Operating System: [Ubuntu 22.04 LTS](https://releases.ubuntu.com/22.04/ubuntu-22.04.1-desktop-amd64.iso)
+    - CPU: 8 cores x86_64 @ 3.5 GHz
+    - RAM: 8 GB
+- [USRP B210](https://www.ettus.com/all-products/ub210-kit/), [USRP N300](https://www.ettus.com/all-products/USRP-N300/) or [USRP X300](https://www.ettus.com/all-products/x300-kit/)
+    - Please identify the network interface(s) on which the USRP is connected and update the gNB configuration file
+
+
+# 2. OAI CN5G
+
+## 2.1 OAI CN5G pre-requisites
+
+Please install and configure OAI CN5G as described here:
+[OAI CN5G](NR_SA_Tutorial_OAI_CN5G.md)
+
+
+# 3. OAI gNB and OAI nrUE
+
+## 3.1 OAI gNB and OAI nrUE pre-requisites
+
+### Build UHD from source
+```bash
+sudo apt install -y libboost-all-dev libusb-1.0-0-dev doxygen python3-docutils python3-mako python3-numpy python3-requests python3-ruamel.yaml python3-setuptools cmake build-essential
+
+git clone https://github.com/EttusResearch/uhd.git ~/uhd
+cd ~/uhd
+git checkout v4.4.0.0
+cd host
+mkdir build
+cd build
+cmake ../
+make -j $(nproc)
+make test # This step is optional
+sudo make install
+sudo ldconfig
+sudo uhd_images_downloader
+```
+
+## 3.2 Build OAI gNB and OAI nrUE
+
+```bash
+# Get openairinterface5g source code
+git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git ~/openairinterface5g
+cd ~/openairinterface5g
+git checkout develop
+
+# Install OAI dependencies
+cd ~/openairinterface5g/cmake_targets
+./build_oai -I
+
+# Build OAI gNB
+cd ~/openairinterface5g
+source oaienv
+cd cmake_targets
+./build_oai -w USRP --ninja --nrUE --gNB --build-lib "telnetsrv nrscope" -c
+```
+
+# 4. Run OAI CN5G and OAI gNB
+
+## 4.1 Run OAI CN5G
+
+```bash
+cd ~/oai-cn5g
+docker compose up -d
+```
+
+## 4.2 Run OAI gNB
+
+### USRP B210
+```bash
+cd ~/openairinterface5g
+source oaienv
+cd cmake_targets/ran_build/build
+sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --sa -E --continuous-tx
+```
+### USRP N300
+```bash
+cd ~/openairinterface5g
+source oaienv
+cd cmake_targets/ran_build/build
+sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.fr1.273PRB.2x2.usrpn300.conf --gNBs.[0].min_rxtxtime 6 --sa --usrp-tx-thread-config 1
+```
+
+### USRP X300
+```bash
+cd ~/openairinterface5g
+source oaienv
+cd cmake_targets/ran_build/build
+sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.fr1.273PRB.2x2.usrpn300.conf --gNBs.[0].min_rxtxtime 6 --sa --usrp-tx-thread-config 1 -E --continuous-tx
+```
+
+### RFsimulator
+```bash
+cd ~/openairinterface5g
+source oaienv
+cd cmake_targets/ran_build/build
+sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --rfsim --sa
+```
+
+# 5. OAI UE
+
+## 5.1  SIM Card
+Edit openair3/UICC/usim_interface.c
+```bash
+#define UICC_PARAMS_DESC {\
+    {"imsi",             "USIM IMSI\n",          0,         strptr:&(uicc->imsiStr),              defstrval:"001010000000001",           TYPE_STRING,    0 },\
+    {"nmc_size"          "number of digits in NMC", 0,      iptr:&(uicc->nmc_size),               defintval:2,         TYPE_INT,       0 },\
+    {"key",              "USIM Ki\n",            0,         strptr:&(uicc->keyStr),               defstrval:"fec86ba6eb707ed08905757b1bb44b8f", TYPE_STRING,    0 },\
+    {"opc",              "USIM OPc\n",           0,         strptr:&(uicc->opcStr),               defstrval:"c42449363bbad02b66d16bc975d77cc1", TYPE_STRING,    0 },\
+    {"amf",              "USIM amf\n",           0,         strptr:&(uicc->amfStr),               defstrval:"8000",    TYPE_STRING,    0 },\
+    {"sqn",              "USIM sqn\n",           0,         strptr:&(uicc->sqnStr),               defstrval:"000000",  TYPE_STRING,    0 },\
+    {"dnn",              "UE dnn (apn)\n",       0,         strptr:&(uicc->dnnStr),               defstrval:"oai",     TYPE_STRING,    0 },\
+    {"nssai_sst",        "UE nssai\n",           0,         iptr:&(uicc->nssai_sst),              defintval:1,    TYPE_INT,    0 }, \
+    {"nssai_sd",         "UE nssai\n",           0,         iptr:&(uicc->nssai_sd),               defintval:0xffffff,    TYPE_INT,    0 }, \
+};
+```
+
+## 5.2 Testing OAI nrUE with USRP B210
+
+Important notes:
+- This should be run in a second Ubuntu 22.04 host, other than gNB
+- It only applies when running OAI gNB with USRP B210
+
+Run OAI nrUE
+```bash
+cd ~/openairinterface5g
+source oaienv
+cd cmake_targets/ran_build/build
+sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --nokrnmod --ue-fo-compensation --sa -E --uicc0.imsi 001010000000001
+```
+
+## 5.2 Testing OAI nrUE with RFsimulator
+Important notes:
+- This should be run on the same host as the OAI gNB
+- It only applies when running OAI gNB with RFsimulator
+
+Run OAI nrUE with RFsimulator
+```bash
+cd ~/openairinterface5g
+source oaienv
+cd cmake_targets/ran_build/build
+sudo RFSIMULATOR=127.0.0.1 ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --nokrnmod --rfsim --sa --uicc0.imsi 001010000000001
+```
+
+### 5.2.1 Ping test
+- UE host
+```bash
+ping 192.168.70.135 -I oaitun_ue1
+```
+
+# 6. Advanced configurations (optional)
+
+## 6.1 USRP N300 and X300 Ethernet Tuning
+
+Please also refer to the official [USRP Host Performance Tuning Tips and Tricks](https://kb.ettus.com/USRP_Host_Performance_Tuning_Tips_and_Tricks) tuning guide.
+
+The following steps are recommended. Please change the network interface(s) as required. Also, you should have 10Gbps interface(s): if you use two cables, you should have the XG firmware. Refer to the [N300 Getting Started Guide](https://kb.ettus.com/USRP_N300/N310/N320/N321_Getting_Started_Guide) for more information.
+
+* Use an MTU of 9000: how to change this depends on the network management tool. In the case of Network Manager, this can be done from the GUI.
+* Increase the kernel socket buffer (also done by the USRP driver in OAI)
+* Increase Ethernet Ring Buffers: `sudo ethtool -G <ifname> rx 4096 tx 4096`
+* Disable hyper-threading in the BIOS (This step is optional)
+* Optional: Disable KPTI Protections for Spectre/Meltdown for more performance. **This is a security risk.** Add `mitigations=off nosmt` in your grub config and update grub. (This step is optional)
+
+Example code to run:
+```
+for ((i=0;i<$(nproc);i++)); do sudo cpufreq-set -c $i -r -g performance; done
+sudo sysctl -w net.core.wmem_max=62500000
+sudo sysctl -w net.core.rmem_max=62500000
+sudo sysctl -w net.core.wmem_default=62500000
+sudo sysctl -w net.core.rmem_default=62500000
+sudo ethtool -G enp1s0f0 tx 4096 rx 4096
+```
+
+## 6.2 Real-time performance workarounds
+- Enable Performance Mode `sudo cpupower idle-set -D 0`
+- If you get real-time problems on heavy UL traffic, reduce the maximum UL MCS using an additional command-line switch: `--MACRLCs.[0].ul_max_mcs 14`.
+
+## 6.3 Uplink issues related with noise on the DC carriers
+- There is noise on the DC carriers on N300 and especially the X300 in UL. To avoid their use or shift them away from the center to use more UL spectrum, use the `--tune-offset <Hz>` command line switch, where `<Hz>` is ideally half the bandwidth, or possibly less.
diff --git a/doc/tutorial_resources/docker-compose-basic-nrf.yaml b/doc/tutorial_resources/docker-compose-basic-nrf.yaml
deleted file mode 100644
index 7c2287a3c4a..00000000000
--- a/doc/tutorial_resources/docker-compose-basic-nrf.yaml
+++ /dev/null
@@ -1,345 +0,0 @@
-version: '3.8'
-services:
-    mysql:
-        container_name: "mysql"
-        image: mysql:5.7
-        volumes:
-            - ./database/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
-            - ./healthscripts/mysql-healthcheck2.sh:/tmp/mysql-healthcheck.sh
-        environment:
-            - TZ=Europe/Paris
-            - MYSQL_DATABASE=oai_db
-            - MYSQL_USER=test
-            - MYSQL_PASSWORD=test
-            - MYSQL_ROOT_PASSWORD=linux
-        healthcheck:
-            test: /bin/bash -c "/tmp/mysql-healthcheck.sh"
-            interval: 10s
-            timeout: 5s
-            retries: 5
-        networks:
-            public_net:
-                ipv4_address: 192.168.70.131
-    oai-udr:
-        container_name: "oai-udr"
-        image: oai-udr:develop
-        environment:
-            - TZ=Europe/Paris
-            - INSTANCE=0
-            - PID_DIRECTORY=/var/run
-            - UDR_NAME=OAI_UDR
-            - UDR_INTERFACE_NAME_FOR_NUDR=eth0
-            - UDR_INTERFACE_PORT_FOR_NUDR=80
-            - UDR_INTERFACE_HTTP2_PORT_FOR_NUDR=8080
-            - USE_HTTP2=no
-            - UDR_API_VERSION=v1
-            - MYSQL_IPV4_ADDRESS=192.168.70.131
-            - MYSQL_USER=test
-            - MYSQL_PASS=test
-            - DB_CONNECTION_TIMEOUT=300 # Reset the connection to the DB after expiring the timeout (in second) currently can't be changed
-            - MYSQL_DB=oai_db
-            - WAIT_MYSQL=120
-            - USE_FQDN_DNS=yes
-            - REGISTER_NRF=yes
-            - NRF_IPV4_ADDRESS=192.168.70.130
-            - NRF_PORT=80
-            - NRF_API_VERSION=v1
-            - NRF_FQDN=oai-nrf
-        depends_on:
-            - mysql
-            - oai-nrf
-        networks:
-            public_net:
-                ipv4_address: 192.168.70.136
-    oai-udm:
-        container_name: "oai-udm"
-        image: oai-udm:develop
-        environment:
-            - TZ=Europe/Paris
-            - INSTANCE=0
-            - PID_DIRECTORY=/var/run
-            - UDM_NAME=OAI_UDM
-            - SBI_IF_NAME=eth0
-            - SBI_PORT=80
-            - SBI_HTTP2_PORT=8080
-            - USE_HTTP2=no
-            - UDM_VERSION_NB=v1
-            - USE_FQDN_DNS=yes
-            - UDR_IP_ADDRESS=192.168.70.136
-            - UDR_PORT=80
-            - UDR_VERSION_NB=v1
-            - UDR_FQDN=oai-udr
-            - REGISTER_NRF=yes
-            - NRF_IPV4_ADDRESS=192.168.70.130
-            - NRF_PORT=80
-            - NRF_API_VERSION=v1
-            - NRF_FQDN=oai-nrf
-        depends_on:
-            - oai-udr
-        networks:
-            public_net:
-                ipv4_address: 192.168.70.137
-    oai-ausf:
-        container_name: "oai-ausf"
-        image: oai-ausf:develop
-        environment:
-            - TZ=Europe/Paris
-            - INSTANCE_ID=0
-            - PID_DIR=/var/run
-            - AUSF_NAME=OAI_AUSF
-            - SBI_IF_NAME=eth0
-            - SBI_PORT=80
-            - USE_HTTP2=no
-            - SBI_HTTP2_PORT=8080
-            - USE_FQDN_DNS=yes
-            - UDM_IP_ADDRESS=192.168.70.137
-            - UDM_PORT=80
-            - UDM_VERSION_NB=v1
-            - UDM_FQDN=oai-udm
-            - REGISTER_NRF=yes
-            - NRF_IPV4_ADDRESS=192.168.70.130
-            - NRF_PORT=80
-            - NRF_API_VERSION=v1
-            - NRF_FQDN=oai-nrf
-        depends_on:
-            - oai-udm
-        networks:
-            public_net:
-                ipv4_address: 192.168.70.138
-    oai-nrf:
-        container_name: "oai-nrf"
-        image: oai-nrf:develop
-        environment:
-            - TZ=Europe/Paris
-            - NRF_INTERFACE_NAME_FOR_SBI=eth0
-            - NRF_INTERFACE_PORT_FOR_SBI=80
-            - NRF_INTERFACE_HTTP2_PORT_FOR_SBI=8080
-            - NRF_API_VERSION=v1
-            - INSTANCE=0
-            - PID_DIRECTORY=/var/run
-        networks:
-            public_net:
-                ipv4_address: 192.168.70.130
-    oai-amf:
-        container_name: "oai-amf"
-        image: oai-amf:develop
-        environment:
-            - TZ=Europe/paris
-            - INSTANCE=0
-            - PID_DIRECTORY=/var/run
-            - MCC=001
-            - MNC=01
-            - REGION_ID=128
-            - AMF_SET_ID=1
-            - SERVED_GUAMI_MCC_0=001
-            - SERVED_GUAMI_MNC_0=01
-            - SERVED_GUAMI_REGION_ID_0=128
-            - SERVED_GUAMI_AMF_SET_ID_0=1
-            - SERVED_GUAMI_MCC_1=460
-            - SERVED_GUAMI_MNC_1=11
-            - SERVED_GUAMI_REGION_ID_1=10
-            - SERVED_GUAMI_AMF_SET_ID_1=1
-            - PLMN_SUPPORT_MCC=001
-            - PLMN_SUPPORT_MNC=01
-            - PLMN_SUPPORT_TAC=0x0001
-            - SST_0=1
-            - SD_0=0x1
-            - SST_1=1
-            - SD_1=0x2
-            - SST_2=1
-            - SD_2=0x3
-            - AMF_INTERFACE_NAME_FOR_NGAP=eth0
-            - AMF_INTERFACE_NAME_FOR_N11=eth0
-            - SMF_INSTANCE_ID_0=1
-            - SMF_FQDN_0=oai-smf
-            - SMF_IPV4_ADDR_0=192.168.70.133
-            - SMF_HTTP_VERSION_0=v1
-            - SELECTED_0=true
-            - SMF_INSTANCE_ID_1=2
-            - SMF_FQDN_1=oai-smf
-            - SMF_IPV4_ADDR_1=0.0.0.0
-            - SMF_HTTP_VERSION_1=v1
-            - SELECTED_1=false
-            - MYSQL_SERVER=192.168.70.131
-            - MYSQL_USER=root
-            - MYSQL_PASS=linux
-            - MYSQL_DB=oai_db
-            - OPERATOR_KEY=1006020f0a478bf6b699f15c062e42b3
-            - NRF_IPV4_ADDRESS=192.168.70.130
-            - NRF_PORT=80
-            - EXTERNAL_NRF=no
-            - NF_REGISTRATION=yes
-            - SMF_SELECTION=yes
-            - USE_FQDN_DNS=yes
-            - EXTERNAL_AUSF=yes
-            - EXTERNAL_UDM=no
-            - EXTERNAL_NSSF=no
-            - USE_HTTP2=no
-            - NRF_API_VERSION=v1
-            - NRF_FQDN=oai-nrf
-            - AUSF_IPV4_ADDRESS=192.168.70.138
-            - AUSF_PORT=80
-            - AUSF_API_VERSION=v1
-            - AUSF_FQDN=oai-ausf
-            - UDM_IPV4_ADDRESS=192.168.70.137
-            - UDM_PORT=80
-            - UDM_API_VERSION=v2
-            - UDM_FQDN=oai-udm
-            - INT_ALGO_LIST=["NIA1", "NIA2"]
-            - CIPH_ALGO_LIST=["NEA0", "NEA2"]
-        depends_on:
-            - mysql
-            - oai-nrf
-            - oai-ausf
-        networks:
-            public_net:
-                ipv4_address: 192.168.70.132
-    oai-smf:
-        container_name: "oai-smf"
-        image: oai-smf:develop
-        environment:
-            - TZ=Europe/Paris
-            - INSTANCE=0
-            - PID_DIRECTORY=/var/run
-            - SMF_INTERFACE_NAME_FOR_N4=eth0
-            - SMF_INTERFACE_NAME_FOR_SBI=eth0
-            - SMF_INTERFACE_PORT_FOR_SBI=80
-            - SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
-            - SMF_API_VERSION=v1
-            - DEFAULT_DNS_IPV4_ADDRESS=8.8.8.8
-            - DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4
-            - AMF_IPV4_ADDRESS=192.168.70.132
-            - AMF_PORT=80
-            - AMF_API_VERSION=v1
-            - AMF_FQDN=oai-amf
-            - UDM_IPV4_ADDRESS=192.168.70.137
-            - UDM_PORT=80
-            - UDM_API_VERSION=v2
-            - UDM_FQDN=oai-udm
-            - UPF_IPV4_ADDRESS=192.168.70.134
-            - UPF_FQDN_0=oai-spgwu
-            - NRF_IPV4_ADDRESS=192.168.70.130
-            - NRF_PORT=80
-            - NRF_API_VERSION=v1
-            - USE_LOCAL_SUBSCRIPTION_INFO=yes  #Set to yes if SMF uses local subscription information instead of from an UDM
-            - USE_NETWORK_INSTANCE=no  #Set yes if network instance is to be used for given UPF
-            - NRF_FQDN=oai-nrf
-            - REGISTER_NRF=yes
-            - DISCOVER_UPF=yes
-            - USE_FQDN_DNS=yes
-            - HTTP_VERSION=1        # Default: 1
-            - UE_MTU=1500
-            - DNN_NI0=oai
-            - TYPE0=IPv4
-            - DNN_RANGE0=12.1.1.2 - 12.1.1.253
-            - NSSAI_SST0=1
-            - NSSAI_SD0=0x1
-            - SESSION_AMBR_UL0=10000Mbps
-            - SESSION_AMBR_DL0=10000Mbps
-            - DNN_NI1=oai2
-            - TYPE1=IPv4
-            - DNN_RANGE1=12.1.2.2 - 12.1.2.253
-            - NSSAI_SST1=1
-            - NSSAI_SD1=0x2
-            - SESSION_AMBR_UL1=10000Mbps
-            - SESSION_AMBR_DL1=10000Mbps
-            - DNN_NI2=oai3
-            - TYPE2=IPv4
-            - DNN_RANGE2=12.1.3.2 - 12.1.3.253
-            - NSSAI_SST2=1
-            - NSSAI_SD2=0x3
-            - SESSION_AMBR_UL2=10000Mbps
-            - SESSION_AMBR_DL2=10000Mbps
-            - DNN_NI3=ims
-            - TYPE3=IPv4v6
-            - DNN_RANGE3=14.1.1.2 - 14.1.1.253
-            - DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1  # only needed when ims is being used
-            - ENABLE_USAGE_REPORTING=no # Set yes if UE USAGE REPORTING is to be done at UPF
-        depends_on:
-            - oai-nrf
-            - oai-amf
-        networks:
-            public_net:
-                ipv4_address: 192.168.70.133
-    oai-spgwu:
-        container_name: "oai-spgwu"
-        image: oai-spgwu-tiny:develop
-        environment:
-            - TZ=Europe/Paris
-            - PID_DIRECTORY=/var/run
-            - SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0
-            - SGW_INTERFACE_NAME_FOR_SX=eth0
-            - PGW_INTERFACE_NAME_FOR_SGI=eth0
-            - NETWORK_UE_NAT_OPTION=yes
-            - NETWORK_UE_IP=12.1.1.0/24
-            - SPGWC0_IP_ADDRESS=192.168.70.133
-            - BYPASS_UL_PFCP_RULES=no
-            - MCC=001
-            - MNC=01
-            - MNC03=001
-            - TAC=1
-            - GW_ID=1
-            - THREAD_S1U_PRIO=80
-            - S1U_THREADS=8
-            - THREAD_SX_PRIO=81
-            - SX_THREADS=1
-            - THREAD_SGI_PRIO=80
-            - SGI_THREADS=8
-            - REALM=openairinterface.org
-            - ENABLE_5G_FEATURES=yes
-            - REGISTER_NRF=yes
-            - USE_FQDN_NRF=yes
-            - UPF_FQDN_5G=oai-spgwu
-            - NRF_IPV4_ADDRESS=192.168.70.130
-            - NRF_PORT=80
-            - NRF_API_VERSION=v1
-            - NRF_FQDN=oai-nrf
-            - NSSAI_SST_0=1
-            - NSSAI_SD_0=0x1
-            - DNN_0=oai
-            - NSSAI_SST_1=1
-            - NSSAI_SD_1=0x2
-            - DNN_1=oai2
-            - NSSAI_SST_2=1
-            - NSSAI_SD_2=0x3
-            - DNN_2=oai3
-        depends_on:
-            - oai-nrf
-            - oai-smf
-        cap_add:
-            - NET_ADMIN
-            - SYS_ADMIN
-        cap_drop:
-            - ALL
-        privileged: true
-        networks:
-            public_net:
-                ipv4_address: 192.168.70.134
-    oai-ext-dn:
-        image: trf-gen-cn5g:latest
-        privileged: true
-        container_name: oai-ext-dn
-        entrypoint: /bin/bash -c \
-              "ip route add 12.1.1.0/24 via 192.168.70.134 dev eth0; sleep infinity"
-        depends_on:
-            - oai-spgwu
-        healthcheck:
-            test: /bin/bash -c "ip r | grep 12.1.1"
-            interval: 10s
-            timeout: 5s
-            retries: 5
-        networks:
-            public_net:
-                ipv4_address: 192.168.70.135
-networks:
-    # public_net:
-    #     external:
-    #         name: demo-oai-public-net
-    public_net:
-        driver: bridge
-        name: demo-oai-public-net
-        ipam:
-            config:
-                - subnet: 192.168.70.128/26
-        driver_opts:
-            com.docker.network.bridge.name: "demo-oai"
diff --git a/doc/tutorial_resources/oai-cn5g/Dockerfile b/doc/tutorial_resources/oai-cn5g/Dockerfile
new file mode 100644
index 00000000000..9aeba34d028
--- /dev/null
+++ b/doc/tutorial_resources/oai-cn5g/Dockerfile
@@ -0,0 +1,15 @@
+ARG BASE_IMAGE=ubuntu:jammy
+
+FROM $BASE_IMAGE as ims
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update && \
+    DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
+    DEBIAN_FRONTEND=noninteractive apt-get install --yes \
+      psmisc \
+      git \
+      asterisk \
+  && rm -rf /var/lib/apt/lists/*
+
+ENTRYPOINT ["asterisk", "-fp"]
diff --git a/doc/tutorial_resources/oai-cn5g/conf/oai-amf.conf b/doc/tutorial_resources/oai-cn5g/conf/oai-amf.conf
new file mode 100644
index 00000000000..628899eb7dd
--- /dev/null
+++ b/doc/tutorial_resources/oai-cn5g/conf/oai-amf.conf
@@ -0,0 +1,146 @@
+################################################################################
+# Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The OpenAirInterface Software Alliance licenses this file to You under
+# the OAI Public License, Version 1.1  (the "License"); you may not use this file
+# except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.openairinterface.org/?page_id=698
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#-------------------------------------------------------------------------------
+# For more information about the OpenAirInterface (OAI) Software Alliance:
+#      contact@openairinterface.org
+################################################################################
+
+AMF = 
+{
+  INSTANCE_ID = 0;            # 0 is the default
+  PID_DIRECTORY = "/var/run";   # /var/run is the default
+  
+  AMF_NAME = "OAI-AMF";
+  
+  RELATIVE_CAPACITY = 30;
+  # Display statistics about whole system (in seconds)
+  STATISTICS_TIMER_INTERVAL = 20;  # YOUR CONFIG HERE
+  
+  CORE_CONFIGURATION:
+  {
+    EMERGENCY_SUPPORT = "false";
+  };
+  
+  GUAMI: 
+  {
+    MCC = "001"; MNC = "01"; RegionID = "128"; AMFSetID = "1"; AMFPointer = "1" # YOUR GUAMI CONFIG HERE
+  }
+  
+  SERVED_GUAMI_LIST = (
+    {MCC = "001"; MNC = "01"; RegionID = "128"; AMFSetID = "1"; AMFPointer = "0"} #48bits <MCC><MNC><RegionID><AMFSetID><AMFPointer>
+  );
+    
+  PLMN_SUPPORT_LIST = (
+  {
+    MCC = "001"; MNC = "01"; TAC = 0x0001;  # YOUR PLMN CONFIG HERE
+    SLICE_SUPPORT_LIST = (
+      {SST = 1,SD= "0xFFFFFF"}         #SST, SD value can be decimal or hexadecimal
+     )
+  }
+  ); # At the moment only one PLMN configuration is supported 
+  
+  INTERFACES:
+  {
+    # AMF binded interface for N1/N2 interface (NGAP) 
+    NGAP_AMF: 
+    {
+      INTERFACE_NAME = "eth0";  # YOUR NETWORK CONFIG HERE
+      IPV4_ADDRESS   = "read";
+      PORT           = 38412;                            # YOUR NETWORK CONFIG HERE
+      PPID           = 60;                               # YOUR NETWORK CONFIG HERE
+    };  
+   
+    # AMF binded interface for SBI (N11 (SMF)/N12 (AUSF), etc.)
+    SBI:
+    {
+      INTERFACE_NAME = "eth0"; # YOUR NETWORK CONFIG HERE
+      IPV4_ADDRESS   = "read"; 
+      PORT           = 80;                             # YOUR NETWORK CONFIG HERE
+      API_VERSION    = "v1";                           # YOUR AMF API VERSION CONFIG HERE
+      HTTP2_PORT     = 8080;                           # YOUR NETWORK CONFIG HERE      
+      
+      SMF_INSTANCES_POOL = (
+        {SMF_INSTANCE_ID = 1; IPV4_ADDRESS = "192.168.70.133"; PORT = "80"; HTTP2_PORT = 8080, VERSION = "v1"; FQDN = "oai-smf", SELECTED = "true"} # YOUR SMF CONFIG HERE
+      );
+    };
+     
+    NRF :
+    {
+      IPV4_ADDRESS = "192.168.70.130";  # YOUR NRF CONFIG HERE
+      PORT         = 80;            # YOUR NRF CONFIG HERE (default: 80)
+      API_VERSION  = "v1";   # YOUR NRF API VERSION FOR SBI CONFIG HERE
+      FQDN         = "oai-nrf"           # YOUR NRF FQDN CONFIG HERE
+    };
+    
+    AUSF :
+    {
+      IPV4_ADDRESS = "192.168.70.138";  # YOUR AUSF CONFIG HERE
+      PORT         = 80;            # YOUR AUSF CONFIG HERE (default: 80)
+      API_VERSION  = "v1";   # YOUR AUSF API VERSION FOR SBI CONFIG HERE
+      FQDN         = "oai-ausf"           # YOUR AUSF FQDN CONFIG HERE
+    };
+
+    NSSF :
+    {
+      IPV4_ADDRESS = "192.168.70.138";  # YOUR NSSF CONFIG HERE
+      PORT         = 80;            # YOUR NSSF CONFIG HERE (default: 80)
+      API_VERSION  = "v2";   # YOUR NSSF API VERSION FOR SBI CONFIG HERE
+      FQDN         = "oai-nssf"           # YOUR NSSF FQDN CONFIG HERE
+    };
+  };  
+
+  SUPPORT_FEATURES: 
+  {
+     # STRING, {"yes", "no"}, 
+     NF_REGISTRATION = "yes";  # Set to yes if AMF resgisters to an NRF
+     NRF_SELECTION   = "no";   # Set to yes to enable NRF discovery and selection
+     SMF_SELECTION   = "no";   # Set to yes to enable SMF discovery and selection
+     EXTERNAL_NRF    = "no";   # Set to yes if AMF works with an external NRF
+     EXTERNAL_NSSF   = "no";
+     EXTERNAL_AUSF   = "yes";  # Set to yes if AMF works with an external AUSF
+     EXTERNAL_UDM    = "no";   # Set to yes if AMF works with an external UDM
+     USE_FQDN_DNS    = "no";   # Set to yes if AMF relies on a DNS to resolve NRF/SMF/UDM/AUSF's FQDN
+     USE_HTTP2       = "no";   # Set to yes to enable HTTP2 for AMF server
+}
+  
+  AUTHENTICATION:
+  { #NOT USED because authentication requests go via AUSF
+    ## MySQL mandatory options
+    MYSQL_server = "mysql"; # MySQL Server address
+    MYSQL_user   = "root";   # Database server login
+    MYSQL_pass   = "linux";   # Database server password
+    MYSQL_db     = "oai_db";     # Your database name
+    
+    ## OP
+    RANDOM = "true";
+  };
+  
+  NAS:
+  {
+    ORDERED_SUPPORTED_INTEGRITY_ALGORITHM_LIST = [ "NIA1" , "NIA1" , "NIA2" ];  #Default [ "NIA0" , "NIA1" , "NIA2" ];
+    ORDERED_SUPPORTED_CIPHERING_ALGORITHM_LIST = [ "NEA0" , "NEA1" , "NEA2" ]; #Default [ "NEA0" , "NEA1" , "NEA2" ];
+  };
+  
+};
+
+
+MODULES =
+{
+  NGAP_MESSAGE = (
+    {MSG_NAME = "NGSetupRequest"; ProcedureCode = 21; TypeOfMessage = "initialMessage"}
+  );
+};
diff --git a/doc/tutorial_resources/oai-cn5g/conf/oai-ausf.conf b/doc/tutorial_resources/oai-cn5g/conf/oai-ausf.conf
new file mode 100644
index 00000000000..b5c83445505
--- /dev/null
+++ b/doc/tutorial_resources/oai-cn5g/conf/oai-ausf.conf
@@ -0,0 +1,62 @@
+################################################################################
+# Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The OpenAirInterface Software Alliance licenses this file to You under
+# the OAI Public License, Version 1.1  (the "License"); you may not use this file
+# except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.openairinterface.org/?page_id=698
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#-------------------------------------------------------------------------------
+# For more information about the OpenAirInterface (OAI) Software Alliance:
+#      contact@openairinterface.org
+################################################################################
+
+AUSF =
+{
+  INSTANCE_ID = 0;
+  PID_DIRECTORY = "/var/run";
+  AUSF_NAME = "OAI_AUSF";
+
+  INTERFACES:{
+    # AUSF binded interface for SBI interface (e.g., communication with AMF, UDM)
+    SBI:{
+	INTERFACE_NAME = "eth0";      # YOUR NETWORK CONFIG HERE
+        IPV4_ADDRESS   = "read";
+        PORT           = 80;           # YOUR NETWORK CONFIG HERE (default: 80)
+        API_VERSION    = "v1";  # YOUR API VERSION FOR UDM CONFIG HERE
+        HTTP2_PORT     = 8080;     # YOUR NETWORK CONFIG HERE
+    };
+  };
+
+  # SUPPORT FEATURES
+  SUPPORT_FEATURES:{
+    # STRING, {"yes", "no"}, 
+    USE_FQDN_DNS = "no";    # Set to yes if AUSF will relying on a DNS to resolve UDM's FQDN
+    USE_HTTP2    = "no";                 # Set to yes to enable HTTP2 for AMF server
+    REGISTER_NRF = "no";    # Set to 'yes' if AUSF resgisters to an NRF
+  }
+
+  # UDM Information
+  UDM:{
+    IPV4_ADDRESS   = "192.168.70.137";  # YOUR NETWORK CONFIG HERE
+    PORT           = 80;          # YOUR NETWORK CONFIG HERE  (default: 80)
+    API_VERSION    = "v1";  # YOUR API VERSION FOR UDM CONFIG HERE
+    FQDN           = "oai-udm"         # YOUR UDM FQDN CONFIG HERE
+  };
+
+  NRF :
+  {
+    IPV4_ADDRESS = "192.168.70.130";  # YOUR NRF CONFIG HERE
+    PORT         = 80;            # YOUR NRF CONFIG HERE (default: 80)
+    API_VERSION  = "v1";   # YOUR NRF API VERSION HERE
+    FQDN = "oai-nrf";
+  };
+};
\ No newline at end of file
diff --git a/doc/tutorial_resources/oai-cn5g/conf/oai-nrf.conf b/doc/tutorial_resources/oai-cn5g/conf/oai-nrf.conf
new file mode 100644
index 00000000000..80dd6fbcefc
--- /dev/null
+++ b/doc/tutorial_resources/oai-cn5g/conf/oai-nrf.conf
@@ -0,0 +1,39 @@
+################################################################################
+# Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The OpenAirInterface Software Alliance licenses this file to You under
+# the OAI Public License, Version 1.1  (the "License"); you may not use this file
+# except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.openairinterface.org/?page_id=698
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#-------------------------------------------------------------------------------
+# For more information about the OpenAirInterface (OAI) Software Alliance:
+#      contact@openairinterface.org
+################################################################################
+
+NRF =
+{
+    INSTANCE      = 0;         # 0 is the default
+    PID_DIRECTORY = "/var/run";  # /var/run is the default
+
+
+    SBI_INTERFACE :
+    {
+        # NRF binded interface for SBI interface (e.g., communication with other NFs e.g., AMF, SMF, UDM)
+        INTERFACE_NAME = "eth0";     # YOUR NETWORK CONFIG HERE
+        IPV4_ADDRESS   = "read";
+        PORT           = 80;       # YOUR NETWORK CONFIG HERE (default: 80)
+        HTTP2_PORT     = 8080; # YOUR NETWORK CONFIG HERE
+        API_VERSION    = "v1";                # YOUR NRF API VERSION CONFIG HERE
+    };                 
+   
+};
+
diff --git a/doc/tutorial_resources/oai-cn5g/conf/oai-smf.conf b/doc/tutorial_resources/oai-cn5g/conf/oai-smf.conf
new file mode 100644
index 00000000000..f39a5c875d9
--- /dev/null
+++ b/doc/tutorial_resources/oai-cn5g/conf/oai-smf.conf
@@ -0,0 +1,131 @@
+################################################################################
+# Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The OpenAirInterface Software Alliance licenses this file to You under
+# the OAI Public License, Version 1.1  (the "License"); you may not use this file
+# except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.openairinterface.org/?page_id=698
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#-------------------------------------------------------------------------------
+# For more information about the OpenAirInterface (OAI) Software Alliance:
+#      contact@openairinterface.org
+################################################################################
+
+SMF =
+{
+    FQDN          = "oai-smf";
+    INSTANCE      = 1;         # 0 is the default
+    PID_DIRECTORY = "/var/run";  # /var/run is the default
+
+    INTERFACES :
+    {
+        N4 :
+        {
+            # SMF binded interface for N4 communication (UPF)
+            INTERFACE_NAME = "eth0"; # YOUR NETWORK CONFIG HERE
+            IPV4_ADDRESS   = "read";                        
+         };
+
+        SBI :
+        {
+            # SMF binded interface for SBI interface (e.g., communication with AMF, UDM)
+            INTERFACE_NAME = "eth0";     # YOUR NETWORK CONFIG HERE
+            IPV4_ADDRESS   = "read";
+            PORT           = 80;       # YOUR NETWORK CONFIG HERE (default: 80)
+            HTTP2_PORT     = 8080; # YOUR NETWORK CONFIG HERE
+            API_VERSION    = "v1";                # YOUR SMF API VERSION CONFIG HERE
+         };                 
+
+    };
+
+    # DNN configurations with pool of UE assigned IP addresses
+    # Do not make IP pools overlap
+    # first IPv4 address X.Y.Z.1 is reserved for GTP network device on UPF
+    DNN_LIST = (
+       # PDU_SESSION_TYPE choice in {IPv4, IPv6, IPv4v6}
+      {DNN_NI = "oai"; PDU_SESSION_TYPE = "IPv4"; IPV4_RANGE = "12.1.1.2 - 12.1.1.254"; IPV6_PREFIX = "2001:1:2::/64"},
+      {DNN_NI = "openairinterface"; PDU_SESSION_TYPE = "IPv4v6"; IPV4_RANGE = "12.1.2.2 - 12.1.2.254"; IPV6_PREFIX = "2001:1:2::/64"},
+      {DNN_NI = "ims"; PDU_SESSION_TYPE = "IPv4v6"; IPV4_RANGE = "12.2.1.1 - 12.2.1.254"; IPV6_PREFIX = "2001:1:2::/64"}
+    );
+
+    # DNS address communicated to UEs
+    DEFAULT_DNS_IPV4_ADDRESS     = "8.8.8.8";      # YOUR DNS CONFIG HERE
+    DEFAULT_DNS_SEC_IPV4_ADDRESS = "4.4.4.4";  # YOUR DNS CONFIG HERE
+    DEFAULT_DNS_IPV6_ADDRESS     = "2001:4860:4860::8888";            # YOUR DNS CONFIG HERE
+    DEFAULT_DNS_SEC_IPV6_ADDRESS = "2001:4860:4860::8844";            # YOUR DNS CONFIG HERE
+
+    DEFAULT_CSCF_IPV4_ADDRESS = "192.168.70.139"; #not defined at the moment 
+    DEFAULT_CSCF_IPV6_ADDRESS = "fe80::7915:f408:1787:db8b";
+    
+    #Default UE MTU
+    UE_MTU = 1500;
+    
+    # SUPPORT FEATURES
+    SUPPORT_FEATURES: 
+    {
+      # STRING, {"yes", "no"}, 
+      REGISTER_NRF = "yes";  # Set to yes if SMF resgisters to an NRF
+      DISCOVER_UPF = "yes";  # Set to yes to enable UPF discovery and selection
+      FORCE_PUSH_PROTOCOL_CONFIGURATION_OPTIONS = "no"; # Non standard feature, normally should be set to "no", 
+                                                        # but you may need to set to yes for UE that do not explicitly request a PDN address through NAS signalling
+      USE_LOCAL_SUBSCRIPTION_INFO = "yes";  # Set to yes if SMF uses local subscription information instead of from an UDM
+      USE_FQDN_DNS = "no";                  # Set to yes if AMF/UDM/NRF/UPF will relying on a DNS to resolve FQDN
+      HTTP_VERSION = 1;                    # Default: 1
+      USE_NETWORK_INSTANCE = "no"   # Set yes if network instance is to be used for given UPF
+      DISCOVER_PCF = "no";
+      USE_LOCAL_PCC_RULES = "yes";
+      INCLUDE_DL_PDR_IN_PFCP_SESSION_ESTAB  = "no";
+      ENABLE_REL15_SUPPORT = "no";
+    }  
+  
+    AMF :
+    {
+      IPV4_ADDRESS = "192.168.70.132";  # YOUR AMF CONFIG HERE
+      PORT         = 80;            # YOUR AMF CONFIG HERE (default: 80)
+      API_VERSION  = "v1";   # YOUR AMF API VERSION FOR SBI CONFIG HERE
+      FQDN         = "oai-amf"           # YOUR AMF FQDN CONFIG HERE
+    };
+    
+    UDM :
+    {
+      IPV4_ADDRESS = "192.168.70.137";  # YOUR UDM CONFIG HERE
+      PORT         = 80;            # YOUR UDM CONFIG HERE (default: 80)
+      API_VERSION  = "v1";   # YOUR UDM API VERSION FOR SBI CONFIG HERE
+      FQDN         = "oai-udm"           # YOUR UDM FQDN CONFIG HERE
+    };    
+
+    NRF :
+    {
+      IPV4_ADDRESS = "192.168.70.130";  # YOUR NRF CONFIG HERE
+      PORT         = 80;            # YOUR NRF CONFIG HERE (default: 80)
+      API_VERSION  = "v1";   # YOUR NRF API VERSION FOR SBI CONFIG HERE
+      FQDN         = "oai-nrf"           # YOUR NRF FQDN CONFIG HERE
+    };
+        
+    UPF_LIST = (
+         {IPV4_ADDRESS = "192.168.70.134" ; FQDN = "oai-spgwu-tiny"; NWI_LIST = ({DOMAIN_ACCESS  = "access.oai.org", DOMAIN_CORE = "core.oai.org"})}
+    );                                                               # NWI_LIST IS OPTIONAL PARAMETER   
+    # Not in use because information is getting fetched from UDR
+    LOCAL_CONFIGURATION :
+    {
+      SESSION_MANAGEMENT_SUBSCRIPTION_LIST = (
+         { NSSAI_SST = 1; NSSAI_SD = "0xFFFFFF", DNN = "oai", DEFAULT_SESSION_TYPE = "IPv4", DEFAULT_SSC_MODE = 1,
+           QOS_PROFILE_5QI = 1, QOS_PROFILE_PRIORITY_LEVEL = 1, QOS_PROFILE_ARP_PRIORITY_LEVEL = 15, QOS_PROFILE_ARP_PREEMPTCAP = "NOT_PREEMPT",
+           QOS_PROFILE_ARP_PREEMPTVULN = "NOT_PREEMPTABLE", SESSION_AMBR_UL = "10000Mbps", SESSION_AMBR_DL = "10000Mbps"},
+         { NSSAI_SST = 1; NSSAI_SD = "0xFFFFFF", DNN = "openairinterface", DEFAULT_SESSION_TYPE = "IPv4v6", DEFAULT_SSC_MODE = 1,
+           QOS_PROFILE_5QI = 1, QOS_PROFILE_PRIORITY_LEVEL = 1, QOS_PROFILE_ARP_PRIORITY_LEVEL = 15, QOS_PROFILE_ARP_PREEMPTCAP = "NOT_PREEMPT",
+           QOS_PROFILE_ARP_PREEMPTVULN = "NOT_PREEMPTABLE", SESSION_AMBR_UL = "10000Mbps", SESSION_AMBR_DL = "10000Mbps"},
+         { NSSAI_SST = 1; NSSAI_SD = "0xFFFFFF", DNN = "ims", DEFAULT_SESSION_TYPE = "IPv4v6", DEFAULT_SSC_MODE = 1,
+           QOS_PROFILE_5QI = 1, QOS_PROFILE_PRIORITY_LEVEL = 1, QOS_PROFILE_ARP_PRIORITY_LEVEL = 15, QOS_PROFILE_ARP_PREEMPTCAP = "NOT_PREEMPT",
+           QOS_PROFILE_ARP_PREEMPTVULN = "NOT_PREEMPTABLE", SESSION_AMBR_UL = "330Mbps", SESSION_AMBR_DL = "330Mbps"}
+        );
+    };     
+};
diff --git a/doc/tutorial_resources/oai-cn5g/conf/oai-spgwu-tiny.conf b/doc/tutorial_resources/oai-cn5g/conf/oai-spgwu-tiny.conf
new file mode 100644
index 00000000000..2b2078231e1
--- /dev/null
+++ b/doc/tutorial_resources/oai-cn5g/conf/oai-spgwu-tiny.conf
@@ -0,0 +1,138 @@
+################################################################################
+# Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The OpenAirInterface Software Alliance licenses this file to You under
+# the OAI Public License, Version 1.1  (the "License"); you may not use this file
+# except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.openairinterface.org/?page_id=698
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#-------------------------------------------------------------------------------
+# For more information about the OpenAirInterface (OAI) Software Alliance:
+#      contact@openairinterface.org
+################################################################################
+SPGW-U =
+{
+    FQDN = "gw1.spgw.node.epc.mnc01.mcc001.3gpp.org"; # FQDN for 4G
+    INSTANCE                       = 0;            # 0 is the default
+    PID_DIRECTORY                  = "/var/run";     # /var/run is the default
+
+    #ITTI_TASKS :
+    #{
+        #ITTI_TIMER_SCHED_PARAMS :
+        #{
+            #CPU_ID       = 1;
+            #SCHED_POLICY = "SCHED_FIFO"; # Values in { SCHED_OTHER, SCHED_IDLE, SCHED_BATCH, SCHED_FIFO, SCHED_RR }
+            #SCHED_PRIORITY = 85;
+        #};
+        #S1U_SCHED_PARAMS :
+        #{
+            #CPU_ID       = 1;
+            #SCHED_POLICY = "SCHED_FIFO"; # Values in { SCHED_OTHER, SCHED_IDLE, SCHED_BATCH, SCHED_FIFO, SCHED_RR }
+            #SCHED_PRIORITY = 84;
+        #};
+        #SX_SCHED_PARAMS :
+        #{
+            #CPU_ID       = 1;
+            #SCHED_POLICY = "SCHED_FIFO"; # Values in { SCHED_OTHER, SCHED_IDLE, SCHED_BATCH, SCHED_FIFO, SCHED_RR }
+            #SCHED_PRIORITY = 84;
+        #};
+        #ASYNC_CMD_SCHED_PARAMS :
+        #{
+            #CPU_ID       = 1;
+            #SCHED_POLICY = "SCHED_FIFO"; # Values in { SCHED_OTHER, SCHED_IDLE, SCHED_BATCH, SCHED_FIFO, SCHED_RR }
+            #SCHED_PRIORITY = 84;
+        #};
+    #};
+
+    INTERFACES :
+    {
+        S1U_S12_S4_UP :
+        {
+            # S-GW binded interface for S1-U (N3) communication (GTPV1-U) can be ethernet interface, virtual ethernet interface, we don't advise wireless interfaces
+            INTERFACE_NAME         = "eth0";  # STRING, interface name, YOUR NETWORK CONFIG HERE
+            IPV4_ADDRESS           = "read";                                    # STRING, CIDR or "read to let app read interface configured IP address
+            #PORT                   = 2152;                                     # Default is 2152
+            SCHED_PARAMS :
+            {
+                #CPU_ID       = 2;
+                SCHED_POLICY = "SCHED_FIFO"; # Values in { SCHED_OTHER, SCHED_IDLE, SCHED_BATCH, SCHED_FIFO, SCHED_RR }
+                SCHED_PRIORITY = 98;
+                POOL_SIZE = 1; # NUM THREADS
+            };
+        };
+        SX :
+        {
+            # S/P-GW binded interface for SX (N4) communication
+            INTERFACE_NAME         = "eth0"; # STRING, interface name
+            IPV4_ADDRESS           = "read";                        # STRING, CIDR or "read" to let app read interface configured IP address
+            #PORT                   = 8805;                         # Default is 8805
+            SCHED_PARAMS :
+            {
+                #CPU_ID       = 1;
+                SCHED_POLICY = "SCHED_FIFO"; # Values in { SCHED_OTHER, SCHED_IDLE, SCHED_BATCH, SCHED_FIFO, SCHED_RR }
+                SCHED_PRIORITY = 88;
+                POOL_SIZE = 1; # NUM THREADS
+            };
+        };
+        SGI :
+        {
+           # No config to set, the software will set the SGi (N6) interface to the interface used for the default route.
+            INTERFACE_NAME         = "eth0"; # STRING, interface name or "default_gateway"
+            IPV4_ADDRESS           = "read";                         # STRING, CIDR or "read" to let app read interface configured IP address
+            SCHED_PARAMS :
+            {
+                #CPU_ID       = 3;
+                SCHED_POLICY = "SCHED_FIFO"; # Values in { SCHED_OTHER, SCHED_IDLE, SCHED_BATCH, SCHED_FIFO, SCHED_RR }
+                SCHED_PRIORITY = 99;
+                POOL_SIZE = 1; # NUM THREADS
+            };
+        };
+    };
+
+    SNAT = "yes"; # SNAT Values in {yes, no}
+    PDN_NETWORK_LIST  = (
+                      {NETWORK_IPV4 = "12.1.0.0/16";}  # 1 ITEM SUPPORTED ONLY
+                    );
+    # SMF LIST
+    SPGW-C_LIST = (
+         {IPV4_ADDRESS="192.168.70.133" ;}
+    );
+
+    NON_STANDART_FEATURES :
+    {
+        BYPASS_UL_PFCP_RULES = "no"; # 'no' for standard features, yes for enhancing UL throughput
+    };
+
+    SUPPORT_5G_FEATURES:  
+    {
+       # STRING, {"yes", "no"},
+       ENABLE_5G_FEATURES = "yes" # Set to 'yes' to support 5G Features
+       REGISTER_NRF = "yes";  # Set to 'yes' if UPF resgisters to an NRF
+       USE_FQDN_NRF = "no"; # Set to 'yes' if UPF relies on a DNS/FQDN service to resolve NRF's FQDN
+       UPF_FQDN_5G  = "oai-spgwu-tiny";  #Set FQDN of UPF
+
+       NRF :
+       {
+          IPV4_ADDRESS = "192.168.70.130";  # YOUR NRF CONFIG HERE
+          PORT         = 80;            # YOUR NRF CONFIG HERE (default: 80)
+          HTTP_VERSION = 1;   #Set HTTP version for NRF (1 or 2)Default 1
+          API_VERSION  = "v1";   # YOUR NRF API VERSION HERE
+          FQDN = "oai-nrf";
+       };
+
+       # Additional info to be sent to NRF for supporting Network Slicing 
+       UPF_INFO = (
+          { NSSAI_SST = 1; NSSAI_SD = "0xFFFFFF";  DNN_LIST = ({DNN = "oai";}); },
+          { NSSAI_SST = 1; NSSAI_SD = "0xFFFFFF";  DNN_LIST = ({DNN = "openairinterface";}); },
+          { NSSAI_SST = 1; NSSAI_SD = "0xFFFFFF";  DNN_LIST = ({DNN = "ims";}); }
+       );
+    }
+};
\ No newline at end of file
diff --git a/doc/tutorial_resources/oai-cn5g/conf/oai-udm.conf b/doc/tutorial_resources/oai-cn5g/conf/oai-udm.conf
new file mode 100644
index 00000000000..7654346a06e
--- /dev/null
+++ b/doc/tutorial_resources/oai-cn5g/conf/oai-udm.conf
@@ -0,0 +1,63 @@
+################################################################################
+# Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The OpenAirInterface Software Alliance licenses this file to You under
+# the OAI Public License, Version 1.1  (the "License"); you may not use this file
+# except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.openairinterface.org/?page_id=698
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#-------------------------------------------------------------------------------
+# For more information about the OpenAirInterface (OAI) Software Alliance:
+#      contact@openairinterface.org
+################################################################################
+
+UDM =
+{
+  INSTANCE_ID = 0;
+  PID_DIRECTORY = "/var/run";
+
+  UDM_NAME = "OAI_UDM";
+
+  INTERFACES:{
+    # UDM binded interface for SBI interface (e.g., communication with UDR, AUSF)
+    SBI:{
+        INTERFACE_NAME = "eth0";       # YOUR NETWORK CONFIG HERE
+        IPV4_ADDRESS   = "read";
+        PORT           = 80;            # YOUR NETWORK CONFIG HERE (default: 80)
+        PPID           = 60;
+        API_VERSION    = "v1"; 
+        HTTP2_PORT     = 8080;     # YOUR NETWORK CONFIG HERE
+    };
+  };
+
+  # SUPPORT FEATURES
+  SUPPORT_FEATURES: {
+    # STRING, {"yes", "no"}, 
+    USE_FQDN_DNS = "no";    # Set to yes if UDM will relying on a DNS to resolve UDR's FQDN
+    USE_HTTP2    = "no";       # Set to yes to enable HTTP2 for AUSF server
+    REGISTER_NRF = "no";    # Set to 'yes' if UDM resgisters to an NRF
+  }  
+    
+  UDR:{
+    IPV4_ADDRESS   = "192.168.70.136";   # YOUR NETWORK CONFIG HERE
+    PORT           = 80;           # YOUR NETWORK CONFIG HERE (default: 80)
+    API_VERSION    = "v1";   # YOUR API VERSION FOR UDR CONFIG HERE
+    FQDN           = "oai-udr"          # YOUR UDR FQDN CONFIG HERE
+  };
+  
+  NRF :
+  {
+    IPV4_ADDRESS = "192.168.70.130";  # YOUR NRF CONFIG HERE
+    PORT         = 80;            # YOUR NRF CONFIG HERE (default: 80)
+    API_VERSION  = "v1";   # YOUR NRF API VERSION HERE
+    FQDN         = "oai-nrf";          # YOUR NRF FQDN HERE
+  };
+};
\ No newline at end of file
diff --git a/doc/tutorial_resources/oai-cn5g/conf/oai-udr.conf b/doc/tutorial_resources/oai-cn5g/conf/oai-udr.conf
new file mode 100644
index 00000000000..ba88f99f7f8
--- /dev/null
+++ b/doc/tutorial_resources/oai-cn5g/conf/oai-udr.conf
@@ -0,0 +1,66 @@
+################################################################################
+# Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The OpenAirInterface Software Alliance licenses this file to You under
+# the OAI Public License, Version 1.1  (the "License"); you may not use this file
+# except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.openairinterface.org/?page_id=698
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#-------------------------------------------------------------------------------
+# For more information about the OpenAirInterface (OAI) Software Alliance:
+#      contact@openairinterface.org
+################################################################################
+UDR = 
+{
+  INSTANCE_ID = 0;            # 0 is the default
+  PID_DIRECTORY = "/var/run";   # /var/run is the default
+  UDR_NAME = "OAI_UDR";
+
+
+  SUPPORT_FEATURES:{
+    USE_FQDN_DNS = "no";    # Set to yes if UDR will relying on a DNS to resolve UDM's FQDN
+    REGISTER_NRF = "no";    # Set to yes if UDR resgisters to an NRF
+    USE_HTTP2    = "no";       # Set to yes to enable HTTP2 for UDR server
+    DATABASE     = "MySQL";             # Set to 'MySQL'/'Cassandra' to use MySQL/Cassandra
+  }; 
+
+  INTERFACES:
+  {
+    # NUDR Interface (SBI) 
+    NUDR: 
+    {
+      INTERFACE_NAME = "eth0";  
+      IPV4_ADDRESS   = "read";
+      PORT           = 80;         # Default value: 80
+      HTTP2_PORT     = 8080;   
+      API_VERSION    = "v1";                   
+    };
+  };
+
+  NRF:
+  {
+    IPV4_ADDRESS = "192.168.70.130";  
+    PORT         = 80;            # Default value: 80
+    API_VERSION  = "v1";   
+    FQDN         = "oai-nrf";
+  };
+   
+  MYSQL:
+  {
+    # MySQL options
+    MYSQL_SERVER = "mysql";
+    MYSQL_USER   = "root";        
+    MYSQL_PASS   = "linux";        
+    MYSQL_DB     = "oai_db";          
+    DB_CONNECTION_TIMEOUT = 300;           # Reset the connection to the DB after expiring the timeout (in second)
+  };
+};
+
diff --git a/doc/tutorial_resources/oai-cn5g/conf/sip.conf b/doc/tutorial_resources/oai-cn5g/conf/sip.conf
new file mode 100644
index 00000000000..8a3f9f6b92f
--- /dev/null
+++ b/doc/tutorial_resources/oai-cn5g/conf/sip.conf
@@ -0,0 +1,6 @@
+[general]
+language=fr
+tcpenable=yes
+tcpbindaddr=0.0.0.0
+tcpbindport=5060
+srvlookup=yes
diff --git a/doc/tutorial_resources/oai-cn5g/conf/users.conf b/doc/tutorial_resources/oai-cn5g/conf/users.conf
new file mode 100644
index 00000000000..e029274846e
--- /dev/null
+++ b/doc/tutorial_resources/oai-cn5g/conf/users.conf
@@ -0,0 +1,27 @@
+[001010000000001]
+fullname = user1
+hassip = yes
+context = users
+host = dynamic
+transport=udp
+
+[001010000000002]
+fullname = user2
+hassip = yes
+context = users
+host = dynamic
+transport=udp
+
+[001010000000003]
+fullname = user3
+hassip = yes
+context = users
+host = dynamic
+transport=udp
+
+[001010000000004]
+fullname = user4
+hassip = yes
+context = users
+host = dynamic
+transport=udp
diff --git a/doc/tutorial_resources/oai_db.sql b/doc/tutorial_resources/oai-cn5g/database/oai_db.sql
similarity index 75%
rename from doc/tutorial_resources/oai_db.sql
rename to doc/tutorial_resources/oai-cn5g/database/oai_db.sql
index 0f6d5ae01cf..d312db93c3b 100644
--- a/doc/tutorial_resources/oai_db.sql
+++ b/doc/tutorial_resources/oai-cn5g/database/oai_db.sql
@@ -156,6 +156,8 @@ INSERT INTO `AuthenticationSubscription` (`ueid`, `authenticationMethod`, `encPe
     ('001010000000002', '5G_AKA', 'fec86ba6eb707ed08905757b1bb44b8f', 'fec86ba6eb707ed08905757b1bb44b8f', '{\"sqn\": \"000000000000\", \"sqnScheme\": \"NON_TIME_BASED\", \"lastIndexes\": {\"ausf\": 0}}', '8000', 'milenage', 'C42449363BBAD02B66D16BC975D77CC1', NULL, NULL, NULL, NULL, '001010000000002');
 INSERT INTO `AuthenticationSubscription` (`ueid`, `authenticationMethod`, `encPermanentKey`, `protectionParameterId`, `sequenceNumber`, `authenticationManagementField`, `algorithmId`, `encOpcKey`, `encTopcKey`, `vectorGenerationInHss`, `n5gcAuthMethod`, `rgAuthenticationInd`, `supi`) VALUES
     ('001010000000003', '5G_AKA', 'fec86ba6eb707ed08905757b1bb44b8f', 'fec86ba6eb707ed08905757b1bb44b8f', '{\"sqn\": \"000000000000\", \"sqnScheme\": \"NON_TIME_BASED\", \"lastIndexes\": {\"ausf\": 0}}', '8000', 'milenage', 'C42449363BBAD02B66D16BC975D77CC1', NULL, NULL, NULL, NULL, '001010000000003');
+INSERT INTO `AuthenticationSubscription` (`ueid`, `authenticationMethod`, `encPermanentKey`, `protectionParameterId`, `sequenceNumber`, `authenticationManagementField`, `algorithmId`, `encOpcKey`, `encTopcKey`, `vectorGenerationInHss`, `n5gcAuthMethod`, `rgAuthenticationInd`, `supi`) VALUES
+    ('001010000000004', '5G_AKA', 'fec86ba6eb707ed08905757b1bb44b8f', 'fec86ba6eb707ed08905757b1bb44b8f', '{\"sqn\": \"000000000000\", \"sqnScheme\": \"NON_TIME_BASED\", \"lastIndexes\": {\"ausf\": 0}}', '8000', 'milenage', 'C42449363BBAD02B66D16BC975D77CC1', NULL, NULL, NULL, NULL, '001010000000004');
 
 -- --------------------------------------------------------
 
@@ -209,11 +211,13 @@ CREATE TABLE `SessionManagementSubscriptionData` (
 --
 
 INSERT INTO `SessionManagementSubscriptionData` (`ueid`, `servingPlmnid`, `singleNssai`, `dnnConfigurations`) VALUES
-    ('001010000000001', '00101', '{\"sst\": 1, \"sd\": \"1\"}','{\"oai\":{\"pduSessionTypes\":{ \"defaultSessionType\": \"IPV4\"},\"sscModes\": {\"defaultSscMode\": \"SSC_MODE_1\"},\"5gQosProfile\": {\"5qi\": 6,\"arp\":{\"priorityLevel\": 1,\"preemptCap\": \"NOT_PREEMPT\",\"preemptVuln\":\"NOT_PREEMPTABLE\"},\"priorityLevel\":1},\"sessionAmbr\":{\"uplink\":\"10000Mbps\", \"downlink\":\"10000Mbps\"},\"staticIpAddress\":[{\"ipv4Addr\": \"12.1.1.2\"}]}}');
+('001010000000001', '00101', '{\"sst\": 1, \"sd\": \"0xFFFFFF\"}','{\"oai\":{\"pduSessionTypes\":{ \"defaultSessionType\": \"IPV4\"},\"sscModes\": {\"defaultSscMode\": \"SSC_MODE_1\"},\"5gQosProfile\": {\"5qi\": 6,\"arp\":{\"priorityLevel\": 15,\"preemptCap\": \"NOT_PREEMPT\",\"preemptVuln\":\"PREEMPTABLE\"},\"priorityLevel\":1},\"sessionAmbr\":{\"uplink\":\"1000Mbps\", \"downlink\":\"1000Mbps\"},\"staticIpAddress\":[{\"ipv4Addr\": \"12.1.1.99\"}]},\"ims\":{\"pduSessionTypes\":{ \"defaultSessionType\": \"IPV4V6\"},\"sscModes\": {\"defaultSscMode\": \"SSC_MODE_1\"},\"5gQosProfile\": {\"5qi\": 2,\"arp\":{\"priorityLevel\": 15,\"preemptCap\": \"NOT_PREEMPT\",\"preemptVuln\":\"PREEMPTABLE\"},\"priorityLevel\":1},\"sessionAmbr\":{\"uplink\":\"1000Mbps\", \"downlink\":\"1000Mbps\"}}}');
+INSERT INTO `SessionManagementSubscriptionData` (`ueid`, `servingPlmnid`, `singleNssai`, `dnnConfigurations`) VALUES
+('001010000000002', '00101', '{\"sst\": 1, \"sd\": \"0xFFFFFF\"}','{\"oai\":{\"pduSessionTypes\":{ \"defaultSessionType\": \"IPV4\"},\"sscModes\": {\"defaultSscMode\": \"SSC_MODE_1\"},\"5gQosProfile\": {\"5qi\": 6,\"arp\":{\"priorityLevel\": 15,\"preemptCap\": \"NOT_PREEMPT\",\"preemptVuln\":\"PREEMPTABLE\"},\"priorityLevel\":1},\"sessionAmbr\":{\"uplink\":\"1000Mbps\", \"downlink\":\"1000Mbps\"},\"staticIpAddress\":[{\"ipv4Addr\": \"12.1.1.100\"}]},\"ims\":{\"pduSessionTypes\":{ \"defaultSessionType\": \"IPV4V6\"},\"sscModes\": {\"defaultSscMode\": \"SSC_MODE_1\"},\"5gQosProfile\": {\"5qi\": 2,\"arp\":{\"priorityLevel\": 15,\"preemptCap\": \"NOT_PREEMPT\",\"preemptVuln\":\"PREEMPTABLE\"},\"priorityLevel\":1},\"sessionAmbr\":{\"uplink\":\"1000Mbps\", \"downlink\":\"1000Mbps\"}}}');
 INSERT INTO `SessionManagementSubscriptionData` (`ueid`, `servingPlmnid`, `singleNssai`, `dnnConfigurations`) VALUES
-    ('001010000000002', '00101', '{\"sst\": 1, \"sd\": \"1\"}','{\"oai\":{\"pduSessionTypes\":{ \"defaultSessionType\": \"IPV4\"},\"sscModes\": {\"defaultSscMode\": \"SSC_MODE_1\"},\"5gQosProfile\": {\"5qi\": 6,\"arp\":{\"priorityLevel\": 1,\"preemptCap\": \"NOT_PREEMPT\",\"preemptVuln\":\"NOT_PREEMPTABLE\"},\"priorityLevel\":1},\"sessionAmbr\":{\"uplink\":\"10000Mbps\", \"downlink\":\"10000Mbps\"},\"staticIpAddress\":[{\"ipv4Addr\": \"12.1.1.3\"}]}}');
+('001010000000003', '00101', '{\"sst\": 1, \"sd\": \"0xFFFFFF\"}','{\"oai\":{\"pduSessionTypes\":{ \"defaultSessionType\": \"IPV4\"},\"sscModes\": {\"defaultSscMode\": \"SSC_MODE_1\"},\"5gQosProfile\": {\"5qi\": 6,\"arp\":{\"priorityLevel\": 15,\"preemptCap\": \"NOT_PREEMPT\",\"preemptVuln\":\"PREEMPTABLE\"},\"priorityLevel\":1},\"sessionAmbr\":{\"uplink\":\"1000Mbps\", \"downlink\":\"1000Mbps\"},\"staticIpAddress\":[{\"ipv4Addr\": \"12.1.1.101\"}]},\"ims\":{\"pduSessionTypes\":{ \"defaultSessionType\": \"IPV4V6\"},\"sscModes\": {\"defaultSscMode\": \"SSC_MODE_1\"},\"5gQosProfile\": {\"5qi\": 2,\"arp\":{\"priorityLevel\": 15,\"preemptCap\": \"NOT_PREEMPT\",\"preemptVuln\":\"PREEMPTABLE\"},\"priorityLevel\":1},\"sessionAmbr\":{\"uplink\":\"1000Mbps\", \"downlink\":\"1000Mbps\"}}}');
 INSERT INTO `SessionManagementSubscriptionData` (`ueid`, `servingPlmnid`, `singleNssai`, `dnnConfigurations`) VALUES
-    ('001010000000003', '00101', '{\"sst\": 1, \"sd\": \"1\"}','{\"oai\":{\"pduSessionTypes\":{ \"defaultSessionType\": \"IPV4\"},\"sscModes\": {\"defaultSscMode\": \"SSC_MODE_1\"},\"5gQosProfile\": {\"5qi\": 6,\"arp\":{\"priorityLevel\": 1,\"preemptCap\": \"NOT_PREEMPT\",\"preemptVuln\":\"NOT_PREEMPTABLE\"},\"priorityLevel\":1},\"sessionAmbr\":{\"uplink\":\"10000Mbps\", \"downlink\":\"10000Mbps\"},\"staticIpAddress\":[{\"ipv4Addr\": \"12.1.1.4\"}]}}');
+('001010000000004', '00101', '{\"sst\": 1, \"sd\": \"0xFFFFFF\"}','{\"oai\":{\"pduSessionTypes\":{ \"defaultSessionType\": \"IPV4\"},\"sscModes\": {\"defaultSscMode\": \"SSC_MODE_1\"},\"5gQosProfile\": {\"5qi\": 6,\"arp\":{\"priorityLevel\": 15,\"preemptCap\": \"NOT_PREEMPT\",\"preemptVuln\":\"PREEMPTABLE\"},\"priorityLevel\":1},\"sessionAmbr\":{\"uplink\":\"1000Mbps\", \"downlink\":\"1000Mbps\"},\"staticIpAddress\":[{\"ipv4Addr\": \"12.1.1.102\"}]},\"ims\":{\"pduSessionTypes\":{ \"defaultSessionType\": \"IPV4V6\"},\"sscModes\": {\"defaultSscMode\": \"SSC_MODE_1\"},\"5gQosProfile\": {\"5qi\": 2,\"arp\":{\"priorityLevel\": 15,\"preemptCap\": \"NOT_PREEMPT\",\"preemptVuln\":\"PREEMPTABLE\"},\"priorityLevel\":1},\"sessionAmbr\":{\"uplink\":\"1000Mbps\", \"downlink\":\"1000Mbps\"}}}');
 
 -- --------------------------------------------------------
 
diff --git a/doc/tutorial_resources/oai-cn5g/docker-compose.yml b/doc/tutorial_resources/oai-cn5g/docker-compose.yml
new file mode 100644
index 00000000000..b00a6b3c94c
--- /dev/null
+++ b/doc/tutorial_resources/oai-cn5g/docker-compose.yml
@@ -0,0 +1,145 @@
+version: '3.8'
+services:
+    mysql:
+        container_name: "mysql"
+        image: mysql:8.0
+        volumes:
+            - ./database/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
+            - ./healthscripts/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
+        environment:
+            - TZ=Europe/Paris
+            - MYSQL_DATABASE=oai_db
+            - MYSQL_USER=test
+            - MYSQL_PASSWORD=test
+            - MYSQL_ROOT_PASSWORD=linux
+        healthcheck:
+            test: /bin/bash -c "/tmp/mysql-healthcheck.sh"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+        networks:
+            public_net:
+                ipv4_address: 192.168.70.131
+    ims:
+        container_name: "asterisk-ims"
+        image: asterisk-ims:latest
+        volumes:
+            - ./conf/sip.conf:/etc/asterisk/sip.conf
+            - ./conf/users.conf:/etc/asterisk/users.conf
+        healthcheck:
+            test: /bin/bash -c "pgrep asterisk"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+        networks:
+            public_net:
+                ipv4_address: 192.168.70.139
+    oai-udr:
+        container_name: "oai-udr"
+        image: oaisoftwarealliance/oai-udr:develop
+        entrypoint: ["/openair-udr/bin/oai_udr", "-c", "/openair-udr/etc/udr.conf", "-o"]
+        depends_on:
+            - mysql
+            - oai-nrf
+        volumes:
+            - ./conf/oai-udr.conf:/openair-udr/etc/udr.conf
+        networks:
+            public_net:
+                ipv4_address: 192.168.70.136
+    oai-udm:
+        container_name: "oai-udm"
+        image: oaisoftwarealliance/oai-udm:develop
+        entrypoint: ["/openair-udm/bin/oai_udm", "-c", "/openair-udm/etc/udm.conf", "-o"]
+        depends_on:
+            - oai-nrf
+        volumes:
+            - ./conf/oai-udm.conf:/openair-udm/etc/udm.conf
+        networks:
+            public_net:
+                ipv4_address: 192.168.70.137
+    oai-ausf:
+        container_name: "oai-ausf"
+        image: oaisoftwarealliance/oai-ausf:develop
+        entrypoint: ["/openair-ausf/bin/oai_ausf", "-c", "/openair-ausf/etc/ausf.conf", "-o"]
+        depends_on:
+            - oai-nrf
+        volumes:
+            - ./conf/oai-ausf.conf:/openair-ausf/etc/ausf.conf
+        networks:
+            public_net:
+                ipv4_address: 192.168.70.138
+    oai-nrf:
+        container_name: "oai-nrf"
+        image: oaisoftwarealliance/oai-nrf:develop
+        entrypoint: ["/openair-nrf/bin/oai_nrf", "-c", "/openair-nrf/etc/nrf.conf", "-o"]
+        volumes:
+            - ./conf/oai-nrf.conf:/openair-nrf/etc/nrf.conf
+        networks:
+            public_net:
+                ipv4_address: 192.168.70.130
+    oai-amf:
+        container_name: "oai-amf"
+        image: oaisoftwarealliance/oai-amf:develop
+        entrypoint: ["/openair-amf/bin/oai_amf", "-c", "/openair-amf/etc/amf.conf", "-o"]
+        depends_on:
+            - oai-nrf
+        volumes:
+            - ./conf/oai-amf.conf:/openair-amf/etc/amf.conf
+        networks:
+            public_net:
+                ipv4_address: 192.168.70.132
+    oai-smf:
+        container_name: "oai-smf"
+        image: oaisoftwarealliance/oai-smf:develop
+        entrypoint: ["/openair-smf/bin/oai_smf", "-c", "/openair-smf/etc/smf.conf", "-o"]
+        depends_on:
+            - oai-nrf
+        volumes:
+            - ./conf/oai-smf.conf:/openair-smf/etc/smf.conf
+        networks:
+            public_net:
+                ipv4_address: 192.168.70.133
+    oai-spgwu-tiny:
+        container_name: "oai-spgwu-tiny"
+        image: oaisoftwarealliance/oai-spgwu-tiny:develop
+        #for ims we need to execute below command once the container is running
+        # iptables -t nat -A POSTROUTING -o eth0 -s 12.2.1.0/24 -j SNAT --to 192.168.70.134
+        entrypoint: ["/openair-spgwu-tiny/bin/oai_spgwu", "-c", "/openair-spgwu-tiny/etc/spgw_u.conf","-o"]
+        depends_on:
+            - oai-nrf
+        volumes:
+            - ./conf/oai-spgwu-tiny.conf:/openair-spgwu-tiny/etc/spgw_u.conf
+        cap_add:
+            - NET_ADMIN
+            - SYS_ADMIN
+        cap_drop:
+            - ALL
+        privileged: true
+        networks:
+            public_net:
+                ipv4_address: 192.168.70.134
+    oai-ext-dn:
+        image: oaisoftwarealliance/trf-gen-cn5g:latest
+        privileged: true
+        container_name: oai-ext-dn
+        entrypoint: /bin/bash -c \
+              "ip route add 12.1.0.0/16 via 192.168.70.134 dev eth0; sleep infinity"
+        depends_on:
+            - oai-spgwu-tiny
+        healthcheck:
+            test: /bin/bash -c "ip r | grep 12.1.1"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+        networks:
+            public_net:
+                ipv4_address: 192.168.70.135
+networks:
+    public_net:
+        driver: bridge
+        name: demo-oai-public-net
+        ipam:
+            config:
+                - subnet: 192.168.70.128/26
+        driver_opts:
+            com.docker.network.bridge.name: "demo-oai"
diff --git a/doc/tutorial_resources/oai-cn5g/healthscripts/mysql-healthcheck.sh b/doc/tutorial_resources/oai-cn5g/healthscripts/mysql-healthcheck.sh
new file mode 100755
index 00000000000..6fa1728f2a2
--- /dev/null
+++ b/doc/tutorial_resources/oai-cn5g/healthscripts/mysql-healthcheck.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+set -eo pipefail
+
+if [ "$MYSQL_ROOT_PASSWORD" ] && [ -z "$MYSQL_USER" ] && [ -z "$MYSQL_PASSWORD" ]; then
+	echo >&2 'Healthcheck error: cannot determine root password (and MYSQL_USER and MYSQL_PASSWORD were not set)'
+	exit 0
+fi
+
+host="$(hostname --ip-address || echo '127.0.0.1')"
+user="${MYSQL_USER:-root}"
+export MYSQL_PWD="${MYSQL_PASSWORD:-$MYSQL_ROOT_PASSWORD}"
+
+args=(
+	# force mysql to not use the local "mysqld.sock" (test "external" connectivity)
+	-h"$host"
+	-u"$user"
+	--silent
+)
+
+STATUS=0
+if command -v mysqladmin &> /dev/null; then
+	if mysqladmin "${args[@]}" ping > /dev/null; then
+		database_check=$(mysql -u$user -D oai_db --silent -e "SELECT * FROM AuthenticationSubscription;")
+		if [[ -z $database_check ]]; then
+			echo "Healthcheck error: oai_db not populated"
+			STATUS=1
+		fi
+		STATUS=0
+	else
+		echo "Healthcheck error: Mysql port inactive"
+		STATUS=1
+	fi
+else
+	if select="$(echo 'SELECT 1' | mysql "${args[@]}")" && [ "$select" = '1' ]; then
+		database_check=$(mysql -u$user -D oai_db --silent -e "SELECT * FROM AuthenticationSubscription;")
+		if [[ -z $database_check ]]; then
+			echo "Healthcheck error: oai_db not populated"
+			STATUS=1
+		fi
+		STATUS=0
+	else
+		echo "Healthcheck error: Mysql port inactive"
+		STATUS=1
+	fi
+fi
+exit $STATUS
diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.fr1.273PRB.2x2.usrpn300.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.fr1.273PRB.2x2.usrpn300.conf
index edcf7986e0b..bcbbe101ca5 100644
--- a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.fr1.273PRB.2x2.usrpn300.conf
+++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.fr1.273PRB.2x2.usrpn300.conf
@@ -10,7 +10,7 @@ gNBs = (
 
   // Tracking area code, 0x0000 and 0xfffe are reserved values
   tracking_area_code = 1;
-  plmn_list = ({ mcc = 001; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1; sd = 0x1; }); });
+  plmn_list = ({ mcc = 001; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1; }); });
 
   nr_cellid = 12345678L;
 
diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.2x2.usrpn300.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.2x2.usrpn300.conf
index eb7c27149cd..32a6c8b65f9 100644
--- a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.2x2.usrpn300.conf
+++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.2x2.usrpn300.conf
@@ -11,7 +11,7 @@ gNBs =
 
     // Tracking area code, 0x0000 and 0xfffe are reserved values
     tracking_area_code  =  1;
-    plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }) });
+    plmn_list = ({ mcc = 001; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1; }) });
 
     nr_cellid = 12345678L;
 
@@ -21,7 +21,6 @@ gNBs =
     pusch_AntennaPorts                                        = 2;
     do_CSIRS                                                  = 1;
     do_SRS                                                    = 1;
-    ul_prbblacklist                                           = "51,52,53,54"
 
     servingCellConfigCommon = (
     {
diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
index 36614b0e9ca..7d5d49fe874 100644
--- a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
@@ -187,6 +187,7 @@ MACRLCs = (
   pusch_TargetSNRx10          = 150;
   pucch_TargetSNRx10          = 200;
   ulsch_max_frame_inactivity  = 0;
+  ul_max_mcs                  = 28;
 }
 );
 
diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.162PRB.2x2.usrpn300.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.162PRB.2x2.usrpn300.conf
index 17959af775d..ff29e1f5723 100644
--- a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.162PRB.2x2.usrpn300.conf
+++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.162PRB.2x2.usrpn300.conf
@@ -11,7 +11,7 @@ gNBs =
 
     // Tracking area code, 0x0000 and 0xfffe are reserved values
     tracking_area_code  =  1;
-    plmn_list = ({ mcc = 001; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1; sd = 1; }) });
+    plmn_list = ({ mcc = 001; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1; }) });
 
     nr_cellid = 12345678L;
 
-- 
GitLab