GSoC2018: A Simulation Execution Manager for ns-3

From Nsnam
Revision as of 06:26, 1 June 2018 by DvdMgr (Talk | contribs) (Week 3 (May 28 - June 1))

Jump to: navigation, search

Return to GSoC 2018 Accepted Projects page.

Project overview

  • Project name: A Simulation Execution Manager for ns-3
  • Abstract: This GSoC project will develop a Python library to automatize the ns-3 simulation script execution and result management processes.
  • About me: I am a first-year PhD student at the University of Padova, Italy, working under the supervision of Prof. Michele Zorzi. My research interests include large scale IoT network simulation and medium access layer protocol design.

Project Timeline

Week 1 (May 14 - May 19)

Week 1 was used to set up the project and define the structure of the code that will be necessary to get to Milestone 1. For now, code is maintained in src/stats/utils.


  • Created a basic Python project using pipenv;
  • Defined an initial set of classes and functions to outline code structure (code available in the sem folder);
  • A detailed report can be found in the dev.txt file in the project repository.

Week 2 (May 21 - May 25)

Week 2 was dedicated to a first implementation of the database management structures.


  • Moved project to its own github repository, outside ns-3-dev;
  • Created documentation page, available at readthedocs;
  • Implemented database creation, management and insertion/querying of results.
  • Code available at the project repository, under tag gsoc-week2

Week 3 (May 28 - June 1)

Week 3 saw the implementation of simulation running facilities in SEM.


  • Interfaced with waf libraries, to programmatically get information about libraries and the script executable. Now waf isn't needed anymore to run simulations from the sem library;
  • Created an ns-3 git submodule to facilitate example execution;
  • Stdout and files created by ns-3 scripts are now saved in the database;
  • Added code to perform sequential simulations;
  • Added a simple ParallelRunner class that uses threads to spawn multiple simulations in parallel;
  • Extended the documentation;
  • Add a function that takes into account the contents of the database before running simulations to get a list of parameter combinations and desired repetitions for each.