# Débuter l'expérimentation sur les ressources sans fil 5G avec SophiaNode

Damien Saucez

<figure><img src="image_1.png" /></figure>

## To cite this version:

Damien Saucez. Débuter l'expérimentation sur les ressources sans fil 5G avec SophiaNode. École d'été SLICES-FR 2025, Jul 2025, Lyon, France. . hal-05477327

HAL Id: hal-05477327

https://inria.hal.science/hal-05477327v1

Submitted on 26 Jan 2026

HAL is a multi-disciplinary open access archive for the deposit and dissemination of scientific research documents, whether they are published or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d'enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

<figure><img src="image_2.png" /></figure>

Distributed under a Creative Commons CC BY 4.0 - Attribution - International License
<figure><img src="image_3.png" /></figure>

README.md

<figure><img src="image_4.png" /></figure>

calendar

SAUCEZ Damien authored 6 months ago

<figure><img src="image_5.png" /></figure>

README.md 12.61 KiB

SLICES-RI French Summer School 2025

<figure><img src="image_6.png" /></figure>

Objectives

* Understand how to create, execute, and publish a 5G experiment from zero.

* Open question: analyse message exchanged in a 5G network to undersatnd the roles of the different 5G functions and how they are linked.
<figure><img src="image_7.png" /></figure>

AUSF Authentication Server Function

AMF Access and Mobility Management Function

AF Application Function

DN Data Networks

SMF Session Management Function

UDM Unified Data Management

NEF Network Exposure Function

NSSF Network Slice Selection Function

NRF Network Repository Function

PCF Policy Control Function

UPF User Plane Function

(R)AN (Radio) Access Network

## Demos

* Experiment with Hardware USRP Radio Units and a bare metal server

* O-RAN with LITEON FR2 RU

## Prerequisites

* You have a browser and Internet access

* You have basic knowledge of bash

**Important:** It is NOT POSSIBLE yet to run this experiment directly from your own machine. It is mandatory to use the shell we provide.

## Building an experiment from A to Z

The post-5G blueprint is designed to simplify the definition and execution of custom experiments involving 5G technologies, as extensively described in [doc.slices-ri.eu](https://doc.slices-ri.eu).

It mostly relies on two files:

* `deploy.sh`, which orchestrates the experiment.

* `xp.sh`, which contains the actual experiment script.

Launching an experiment using the `post5g experiment launch` command triggers the `deploy.sh` script, which provisions the environment and executes `xp.sh` on the deployment node.

To lower the barrier to entry, SLICES-RI provides a graphical interface that generates both the configuration files and the `deploy.sh` script. Nonetheless, users retain full flexibility to define custom deployment and experimentation workflows.

This hands-on session provides a step-by-step guide for writing your own scripts.

Given the possible lack of prior 5G knowledge, the experiment will focus on deploying a 5G Core and RAN, attaching a UE, generating traffic, and detaching it. You will then analyze captured traffic traces to study the interactions between 5G network functions.
# Step 1 - Access the SLICES-RI infrastructure and register to the Post 5G beta program

TL;DR:

* register to the post5g-beta project https://portal.slices-ri.eu/invite/post5g-beta?
key=OL9PXXTnYKEvCuUS

Details:

The entrypoint of SLICES is the SLICES-RI portal, it allows you to manage your account, access to the documentation, the blueprints, the services offered by SLICES.

Post-5G experiments are carried out within the SLICES framework, where resources are structured into *projects* and *experiments*. Each experiment is associated with a project. For testing purposes, we created the *Post-5G beta* project that you can register to via https://portal.slices-ri.eu/invite/post5g-beta?
key=OL9PXXTnYKEvCuUS and log in using your Slices account.

NOTE: The Post-5G beta program is part of an open data community initiative. By joining, all your actions, code, and data within the program will be shared openly with other members and the general public.

# Step 2 - setup the post-5G environment

* Visit https://post-5g-web.slices-ri.eu and follow *pos Webshell*

* We strongly recommend to create start a tmux session

* Execute `slices auth login` in this shell

* `slices project use slices-fr-school-2025`

* In the shell, copy this repo and move to it:

git clone https://gitlab.inria.fr/slices-ri/summerschool-2025-france.git
cd summerschool-2025-france

# Step 3 - Acquire and provision resources

Because of time constraints, in this hands-on we rely on virtual radio networks but baremetal machines and radio networks can be used too (see https://doc.slices-ri.eu/BlueprintServices/beyond5G/my_first_xp.html).

As in any cloud service, VM are created following a flavor and deployed in some area. The supported flavors so far are listed below.

<table><thead><tr><td>Name</td><td>vCPUs</td><td>Memory(MB)</td><td>Storage(GB)</td></tr></thead><tbody><tr><td>nano</td><td>2</td><td>4096</td><td>20</td></tr><tr><td>micro</td><td>2</td><td>8192</td><td>20</td></tr><tr><td>small</td><td>2</td><td>8192</td><td>20</td></tr><tr><td>medium</td><td>4</td><td>16384</td><td>40</td></tr><tr><td>large</td><td>4</td><td>16384</td><td>40</td></tr><tr><td>xlarge</td><td>8</td><td>32768</td><td>80</td></tr><tr><td>2xlarge</td><td>16</td><td>65536</td><td>160</td></tr><tr><td>3xlarge</td><td>32</td><td>131072</td><td>320</td></tr></tbody></table>
you can list them by running the following command in the shell:

```
pos2 flavor list
```

For this hands-on we will use the cluster 111 available in the SophiaNode data center in Sophia Antipolis. Each area is a single node PROXMOX cluster offering 512 CPUs, 2.2TB of memory, and 3.6TB of storage.

**NOTE:** Under normal load, the creation of a VM takes approximately 180 seconds. Given the number of attendees deploying simultaneously, this process may take slightly longer.

```bash
area=111
info=$(pos2 k8s create --area_id $area --flavor_name small)
info=$(tr \' \" <<< $info)
status=$(jq -r .status <<< $info)
echo $status
```

If you see `ok` on the screen, the cluster has been created successfully. You can then retrieve the kubeconfig file to interact with your private k8s cluster.

```bash
controller=$(jq -r .hosts[0].name <<< $info)
worker=$(jq -r .hosts[1].name <<< $info)
id=${worker%%%-*}
id=${id^^}
echo "Cluster ID: $id"

mkdir -p ~/.kube
pos2 k8s kubeconfig $id --save-to-file ~/.kube/config
```

You should see the cluster in `pos`, either using the command `pos nodes list` or `pos2 vm list $id`.

If they are present, you can pass them to the control of POS for the next 90 minutes:

```
pos allocation allocate $worker --duration 90
pos node bootstrap $worker
```

This will tell `pos` that you want to use `pos` to interact with them for the next 90 minutes. The bootstrap command ensures that SSH key and dependencies are properly setup on these machines for seamless integration with `pos`.

At this stage, machines are ready to be used in an experiment.

**Note:** You can list and create reservation with the GUI at https://duckburg.net.cit.tum.de/calendar.

## Step 4 - Run the experiment script

There are no particular constraints for `.sh`. The script simply needs to be executable on the machine used to launch the experiment.

In this example, we will deploy an OAI 5G core networks as well as an OAI gNB in the cluster. Then connect a virtual radio network and run a virtual UE on it. We will generate 8 packets from the UE to `8.8.8.8` using four ICMP probes with the `ping` command. As we are interested in the traffic exchanged between 5G functions, we activae traffic capture on each functions in the core. OAI configuration files are provided in `xp/oai-5g-core/oai-5g-basic/values.yaml`. Given the limited time of this session, we provide the `.sh` to you.
Let's run the experiment

```bash
export NAMESPACE=andouillette-slice
cd xp
bash xp.sh
cd -
```

**Note:** You can monitor the cluster with `kubectl`. For example, assuming that the namespace is set in the environment variable `NAMESPACE`, running `kubectl -n $NAMESPACE get all` will show all the resources in the namespace. Or to see the logs of the AMF:

```bash
AMF_POD=$(kubectl get pods --namespace $NAMESPACE -l "app.kubernetes.io"
kubectl logs -f $AMF_POD -n $NAMESPACE -c amf
```

At this stage the experiment is finished, now we have to retrieve the results from `worker` to save them outside of the node before it is destroyed. In this case, the `pcap` files are in the OpenEBS volume of the cluster (i.e., `/var/openebs/local/<PVCID>`).

```bash
cat <<EOF | pos command launch $worker -i -
#!/usr/bin/bash
pos_upload -r /var/openebs/local/$(kubectl get pvc/cn5g-pvc -n $NAMESPACE -c amf) EOF
```

The effect of this command is to upload the directory in the `pos` experiment directory of the `worker` node.

For the experiment that we just ran, you can determine the subdirectory by running:

```bash
POS_RESULTS=/srv/testbed/results/
ALLOC_ID=$( pos allocations show $worker | jq -r .id )
XP_DIR=$POS_RESULTS/$(pos allocations show $ALLOC_ID | jq -r .result folder)
```

In this subdirectory, you will see, among others the directories `worker`, in which you will find the directory that contains the `pcap` files we just uploaded. In the `worker` directory you will also find files with the postfix

* `.status`

* `.stdout`

* `.stderr`

that contain the output and status of the execution of the different commands we executed on the machine.

## Step 5 - Results publication in the MRS

Data and meta-data are key to reproducible research. To that aim SLICES provides the *Metadata Registry System (MRS)* that offers a portal to manage and advertise data based on their metadata. SLICES also provides the *Data Management Infrastructure (DMI)* that is use to publish datasets and make the link with the MRS. Below we will publish with artifacts to the MRS/DMI.

First, we have to package our artefacts that are stored in the POS results directory.

```bash
tar -czf dataset.tar.gz $XP_DIR
```