View on GitHub

Fast Network Simulation Setup

Overview

Fast Network Simulation Setup (FNSS) is a toolchain allowing network researchers and engineers to simplify the process of setting up a network experiment scenario. It allows users to:

FNSS comprises a core library (written in Python) and a set of adapters. The core library provides all capabilities for generating the experiment scenario. The adapters allow users to export scenarios generated with the core library to ns-2, ns-3, Mininet, Omnet++, Autonetkit and jFed as well other simulators or emulators through the Python core library itself or the provided Java and C++ libraries.

Usage

To use FNSS you would normally use the following workflow.

  1. Create an experiment scenario (topology, traffic matrices, event schedules) using the Python core library.
  2. Export the created scenario in your target simulator/emulator.
    • If your target simulator/emulator is ns-2, Mininet, Autonetkit or a Python program, the core library include functions to export the scenario created in your target environment.
    • Otherwise, if you wish to run your experiments on ns-3 or a Java or C++ program, then export the scenario to XML files using the provided functions and use the Java, C++ or ns-3 library to import the scenario XML files into your target simulator/emulator.

Install

This section explains how to install the FNSS Python core library.

If you wish to use FNSS to deploy experiment scenarios in a C++ or a Java program or in the ns-3 simulator then you also need the relevant library, which you can download from the links further below.

Ubuntu (version 12.04+)

If you use Ubuntu, you can install the FNSS core library along with the Python interpreter and all required dependencies by running the following script:

$ wget https://github.com/fnss/fnss/raw/master/core/ubuntu_install.sh -O - | sh

You need superuser privileges to run this script. If you don't trust running this script, you can inspect its source code here.

Other operating systems

The easiest way to install the core Python library is to download it and install it from the Python Package Index. To do so, you must have Python (required version >= 2.6, preferred >= 2.7) installed on your machine and pip, which is a package manager for Python.

To install FNSS using pip, you just need to run the following command:

$ pip fnss

Depending on the configuration of your machine you may need to run pip as superuser. Running this command will download the latest version of the FNSS core library and install it on your machine together with all required dependencies.

At this stage you are ready to use the Python core library. To use the Java or C++ APIs or the ns-3 adapters, please download the specific components that you need from the links below.

Virtual Machine

You can also run FNSS within a virtual machine. This repository contains scripts and documentation to set up a virtual machine with FNSS and all dependencies.

Download

You can either browse the code from the FNSS GitHub repository or choose among the following download options:

Latest stable release (0.6.1)

Complete toolchain tar.gz zip
Core (Python) library tar.gz zip
C++ library tar.gz zip
Java library tar.gz zip
ns-3 library tar.gz zip

Development branch

You can download the latest version of the code from the development branch using Git. The code on the development branch is generally stable and can be used safely. Open a command shell, move to the directory where you want to download FNSS and type:

$ git clone https://github.com/fnss/fnss.git

Alternatively, you can get a compressed archive of the development branch:

Documentation and examples

Here you can find links to browse documentation and examples of the various components of the FNSS toolchain. Documentation and examples are also included in the component packages that can be downloaded from the links above.

Component Documentation Examples
Core (Python) library Browse Browse
C++ library Browse Browse
Java library Browse Browse
ns-3 library Browse Browse

Further information about FNSS architecture and the models it implements can be found in this paper:

L. Saino, C. Cocora, G. Pavlou, A Toolchain for Simplifying Network Simulation Setup, in Proceedings of the 6th International ICST Conference on Simulation Tools and Techniques (SIMUTOOLS '13), Cannes, France, March 2013 [PDF] [Slides]

You can also have a look at these slides that were used for a tutorial on FNSS given at the AIMS 2014 conference.

Citing

If you cite FNSS in your paper, please refer to the following publication:

L. Saino, C. Cocora, G. Pavlou, A Toolchain for Simplifying Network Simulation Setup, in Proceedings of the 6th International ICST Conference on Simulation Tools and Techniques (SIMUTOOLS '13), Cannes, France, March 2013

@inproceedings{fnss,
     author = {Saino, Lorenzo and Cocora, Cosmin and Pavlou, George},
     title = {A Toolchain for Simplifying Network Simulation Setup},
     booktitle = {Proceedings of the 6th International ICST Conference on Simulation Tools and Techniques},
     series = {SIMUTOOLS '13},
     year = {2013},
     location = {Cannes, France},
     numpages = {10},
     publisher = {ICST},
     address = {ICST, Brussels, Belgium, Belgium},
}

Contact

For any information please contact Lorenzo Saino.