Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


This is a project to bring into reality the ideas designed in VBaaS (VNF Benchmarking-as-a-Service). The main purpose of this source code is a modular ad-hoc platform for testing VNFs and their respective infrastructure.

Gym is a reference implementation of the ongoing draft in the Benchmarking Methodology Working Group (BMWG) in Internet Engineering Task Force (IETF), named Methodology for VNF Benchmarking Automation.

If you want to cite this work, please use:

ROSA, R. V.; BERTOLDO, C.; ROTHENBERG, C. E. Take your vnf to the gym: A testing framework for automated nfv performance benchmarking. IEEE Communications Magazine, v. 55, n. 9, p. 110–117, 2017. ISSN 0163-6804.


author={R. V. {Rosa} and C. {Bertoldo} and C. E. {Rothenberg}},
journal={IEEE Communications Magazine},
title={Take Your VNF to the Gym: A Testing Framework for Automated NFV Performance Benchmarking},
keywords={program testing;virtualisation;VNF;automated NFV performance benchmarking;software entity;testing framework;vIMS scenario;network functions virtualization;Benchmark testing;Measurement;Monitoring;Software testing;Visualization;Network function virtualization},


This guide assumes you have an environment properly setup with:

  • Python 3
  • Setuptools
  • Python Pip3
  • Docker


All these packages can be installed using the command below. This command requires root privileges. It installs gym components in the bare metal and creates the raphaelvrosa/gym:0.1 docker image to be used by the test cases.

$ sudo ./

It will install all the packages and create the docker image that will be used in the test scenario.

It's also recommended to add your user to the docker group:

$ sudo usermod -a -G docker $USER

Then logout and log in back again.

To install Gym for development purposes, run:

$ sudo python3 develop

This will not actually install all the files in your system, but just link them to your development directory, simplifying the code/deploy/test cycle.

Docker Image

You can also find the gym docker image directly at:


In the folder gym/tests there exists a file that can trigger the execution of different gym test cases. To execute any test just type, for instance "sudo -H ./ start 0". And after run, to clean all the test data just run "sudo -H ./ stop".

There are 4 tests enabled by default in the file. Each one of the tests requires different capabilities, as described below. For instance, to be able to run tests 1, 2 and 3, you must install:

Besides, tests 1, 2 and 3 demand VNF images to be build. Thus:

$ cd gym/tests/utils
$ sudo ./

Important: Tests were performed on Ubuntu 18.04.

Test 0

Performs the execution of two agents just executing ping commands locally on the host machine.

Test 1

Uses the containernet platform to deploy agents and a dummy VNF, which just bypass the traffic among its ports. The agents perform the execution of ping/iperf3 traffic through the target VNF.

Notice: In the tests 1, 2 and 3, the flow of information consists in starting a player component and the containernet platform. When deployed a layout on player, it requires containernet to build the scenario to run the other gym components needed for the test. After the topology is deployed, player reaches manager to get the components status, and starts deploying the tasks. After all tasks are finished, player demands the scenario to be finished in the containernet platform and finally outputs the vnf-br to a json file.

Test 2

Uses the containernet platform to deploy agents and a dummy VNF, which just bypass the traffic among its ports. The agents perform the execution of ping/iperf3 traffic through the target VNF, while its container is monitored during the test.

If not yet created, before running Test 2, you need to create the (SUT) VNF bypass docker image, following:

$ cd gym/tests/utils
$ sudo ./

Test 3

Uses the containernet platform to deploy agents and a Suricata-IDS VNF. The agents perform the execution of tcpreplay traffic through the target VNF, while its container is monitored externally and the Suricata process is monitored internally in the VNF. The test consists in executing different pcap files using tcpreplay while the VNF suricata has loaded different rule sets. In the end all the metrics are saved into csv files into the gym/tests/csv folder, included the timeseries monitoring of the container, and the overall VNF-PP metrics according to the VNF-BD input parameters.

If not yet created, before running Test 3, you need to create the (SUT) Suricata IDS docker image and download pcap files, following:

$ cd gym/tests/utils
$ sudo ./

After that the Agent source of stimulus will be able to mount the /mnt/pcaps/ directory and replay the pcap files for Test 3. Thus, now the requirements are fulfilled for Test 3 execution.


Gym is released under Apache 2.0 license.


If you have any issues, please use GitHub's issue system to get in touch.


If you have any questions, please use the mailing-list at!forum/gym-discuss.


Your contributions are very welcome! Please fork the GitHub repository and create a pull request.

Lead Developer

Raphael Vicente Rosa

This project is part of INTRIG (Information & Networking Technologies Research & Innovation Group) at University of Campinas - UNICAMP, Brazil.

INTRIG is led by Prof. Dr. Christian Esteve Rothenberg.


This project was supported by Ericsson Innovation Center in Brazil.


Gym: A Testing Framework for Automated NFV Performance Benchmarking







No releases published


No packages published