MARATHON (MAnagement of Radio Access neTwork slicing witH multi-applicatiON concurrency)

A quick Tutorial how to compile and start the MARATHON VNFs and Radio Slice Management Function experiment over the WINS_5G testbed using HyDRA

MARATHON description

The MARATHON experiment designed and developed a Radio Slicing Management Function (RSMF) that extends the WINS_5G platform with radio slicing management capabilities.
It was conceived to investigate the practical implementation and management of network slicing in 5G systems.

The implementation of the MARATHON experiment consists of five Virtual Network Functions (VNFs) and four USRPs, as illustrated the figure. The VNFs are implemented using Linux Virtual Machines (VM).

Marathon architecture


Universitat Politecnica de Catalunya (UPC)


The MARATHON VNFs are available at GitHub:


The build script creates all the following VNFD and NS files:

  1. marathon_hydra_server_vnfd.tar.gz
  2. marathon_vbs_vnfd.tar.gz
  3. marathon_vue1_vnfd.tar.gz
  4. marathon_vue2_vnfd.tar.gz
  5. marathon_vue3_vnfd.tar.gz
  6. marathon_ns.tar.gz

File 6 (marathon_ns.tar.gz) is the basic experiment consisting of a 1 Base Station, 1 Hydra Server and 3 User Equipments.

To execute the build script (in case you make modifications) just type:



The osm script is a simple utilitaria to easen the task of installing, uninstalling, creating, and deleting VNFDs and NSDs.
Type the following command to get a detailed usage of it:

./osm l

To run the experiment type:

./osm i

The IP addresses configured at are:





If the assigned VM IPs are different you must kill the rsmf process, change the IPs and run again with:

sudo python


  • Connect to "marathon_vbs" (Virtual BS VNF), "marathon_vue1" (Virtual UE#1 VNF), "marathon_vue2" (Virtual UE#2 VNF) and "marathon_vue3" (Virtual UE#3 VNF) VMs using ssh.
  • In "marathon_vbs" open a browser (Firefox is already installed) and type (with the vbs_ip):

The RSMF main page should appear in the browser, and you can start configuring Slices.

  • From "marathon_vbs" ping the tap interfaces of "marathon_vue1" with IPs, and "marathon_vue2" with IPs, and "marathon_vue3" with IPs




  • From "marathon_vue1" ping the tap0 interface of "vbs", IP
  • From "marathon_vue2" or "marathon_vue3" ping the tap1 interface of "vbs", IP


Execution problems

Access each VM and kill the python process.

  • In machine "hydra-server" execute (replace by the ip of iris2):
python ~/gr-hydra/grc_blocks/app/ --ansibleIPPort
  • In machine "marathon_vbs" execute (replace by the IP of iris2):
python ~/gr-hydra/grc_blocks/app/ --ansibleIP
  • In machine "marathon_vue1" execute:
python ~/gr-hydra/grc_blocks/app/
  • In machine "marathon_vue2" and "marathon_vue3" execute:
python ~/gr-hydra/grc_blocks/app/

Connectivity problems

If all processes run correctly, but there is no ping connectivity, a tuning of the gain (mul & mul2) is required. This is due to the USRPs assigned are not always the same, and they have different locations.
A guide to do this can be requested to the Iris Testbed Manager (