Executing Iperf Tests Over 5G Simulated Networks

This tutorial guides you through executing Iperf3 tests inside the Plaza6G 5G simulated environment. Iperf is widely used to measure bandwidth, latency, jitter, and packet loss in IP networks.


Overview

Iperf tests require two systems: an Iperf server and an Iperf client. In the Plaza6G testbed, the DNN VM will act as the server while the UE VM acts as the client.

Prerequisites

In the Plaza6G dashboard, deploy an experiment using the 5G Network Simulation template.

Select any available 5G Core flavor: Open5GS, Free5GC, or OpenAirInterface. Ensure that your experiment includes:

  • A DNN VM (to run Iperf server)

Step 1. Access the VMs

After deployment, access both the DNN and UE VMs via SSH or the built-in console:

Step 2. Install Iperf3

On both VMs, install the iperf3 package:

sudo apt update
sudo apt install -y iperf3

Step 3. Start the Iperf Server (on the DNN VM)

Run:

iperf3 -s

The DNN is now waiting for incoming test traffic from the UE client.

Step 4. Execute the Iperf Client (on the UE VM)

4.1 Retrieve the UE 5G IP Address

The Iperf client must bind to the UE's 5G interface uesimtun0:

ip -4 addr show uesimtun0 | awk "/inet/ {print \$2}" | cut -d/ -f1

Example output:

10.60.0.4

4.2 Launch the Iperf Client

Iperf tests can run using TCP or UDP, and in either uplink or downlink direction.

TCP Uplink:

iperf3 -c <DNN_IP_address> -B <UE_5G_IP_address> -t <window_time>

TCP Downlink:

iperf3 -c <DNN_IP_address> -B <UE_5G_IP_address> -t <window_time> -R

  • DNN_IP_address: IP address of the DNN VM
  • UE_5G_IP_address: 5G interface of UE
  • window_time: test duration (seconds)

UDP Uplink:

iperf3 -c <DNN_IP_address> -B <UE_5G_IP_address> -u -t <window_time> -b <Max_theoretical_bandwidth>Mbps

UDP Downlink:

iperf3 -c <DNN_IP_address> -B <UE_5G_IP_address> -u -t <window_time> -b <Max_theoretical_bandwidth>Mbps -R

  • Max_theoretical_bandwidth: intended test bitrate (Mbps)

Note: The full experiment is documented on protocols.io:

https://dx.doi.org/10.17504/protocols.io.dm6gpm6pjg5p/v1