NXE: Network eXperiment Engine: software to automate networking experiments in real testbeds

Authors

This software is currently developed by Romaric Guillier, PhD student advised by Pascale Vicat-Blanc Primet. The NXE software has been transfered to the INRIA spinoff LYaTiss. For any information please contact:contact@lyatiss.com

Networking Experiment definition

A networking experiment is described with a scenario skeleton defined as a succession of dates at which an event occurs. The events corresponds to the starting point of an action (e.g. the start of a new bulk data transfer, of a new web session) combined with the parameters relevant to this action (e.g. distribution law of file sizes, inter waits) between a set of end-hosts, whose size depends on the kind of application we are trying to model (e.g. 2 for data transfers, many for parallel applications).
The end-hosts are organised in a networking abstract topology, that roughly defines sites (e.g. aggregation of end-hosts, as in a cluster), aggregation points between them (e.g. switches or routers) and networking links. The ``abstract'' term refers to the fact that an instantiation of the nodes over this topology is needed at run-time as in real testbeds, and resources allocation mechanisms might be used to accommodate multiple users.
The following figure shows the experiment workflow, and the various operations that are done at each stage of the execution of a protocol evaluation scenario. This workflow is a description of an evaluation process. NXE architecture
It is composed of a number of tasks which are connected in the form of a directed graph. These tasks have been broken up into elementary operations to explicit what is done precisely at each stage. The tasks were designed so that there is as little interaction as possible between successive tasks. The description of each stage of the workflow is as follows:

Description

Implementation

The actual implementation is made in Python and uses the python Expat XML library, the paramiko SSH2 library and the Gnuplot python bindings. The additional programs iperf and D-ITG are used to simulate the workloads. Bash scripts are used to wrap the calls to these programs on the end-hosts that are used in the scenarios.
The scenarios are described through XML files that provides a simple and hierarchical description of the topology, the general configuration and the interactions between the end-hosts. A document describing the XML format is available here
The XML input files are divided into three parts: NXE is an application that scripts the execution of a schedule based on a centralised relative timer, that is generated from the input scenario description. It assumes that the granularity of the scenario execution steps is coarse and in the same order of magnitude as a second. The timers used are much more finely grained (in the order of a few milliseconds), so the tool could be enhanced to be more precise, but currently it doesn't seem relevant to the general user-context. For scalability purposes, it launches a separate thread for every node involved in the scenario, and issues the commands at the appropriate time via an SSH remote command execution. Only one SSH connection is opened per node and it is kept during the whole life of the experiment. The commands are executed via different SSH channels over this single SSH connexion.
NXE has been developped on the Grid'5000 testbed

Publications

Acknowledgment

This work has been funded by the French ministry of Education and Research, INRIA, and CNRS, via ACI GRID's Grid'5000 project , ANR HIPCAL grant, the ANR IGTMD grant, IST EC-GIN project, INRIA GridNet-FJ grant, NEGST CNRS-JSP project.

Download

The version 1.0 is available
here under the CeCILL licence

Documentation

A document describing the XML format is available here

Links

NXE is used by HSTTS