NDN experimental testbed orchestrator


Release notes

Lurch is released in two versions:

  1. The first version of Lurch, works with unmodified NFD and ndn-cxx packages version 0.2.0 and requires the installation of ndn-virtual-repo and ndn-icp-download as separate packages. Hence, cache replacement policies, forwarding strategies, are the default ones imposed by NFD / ndn-cxx 0.2.0. Notice that ndn-icp-download installed separately deos not use path identifier (see here for more details on path identifier.
  2. The second version of Lurch, lurch-custom-0.1.0 works with a modified version of NFD and ndn-cxx packages, NDN-0.2.0-custom, implementing:
    • LRU cache replacement policy;
    • Interest control rate from here;
    • Interest forwarding strategy from here.


According to you needs:

  1. lurch-custom-0.1.0:
  2. lurch-0.1.0:



We tested Lurch + NFD and ndn-cxx in Ubutnu 12.04 LTS. NFD and ndn-cxx prerequistes must be satisfied on every machine in order to get NFD and ndn-cxx installed correctly (please refer to ndn-cxx and NFD pages for the complete set of NFD and ndn-cxx prerequistes). In addition to that, required packages for the machine running lurch are:

  • Python 2.7
All other machines running NFD and ndn-cxx would also need:
  • ifstat
  • systat
  • gawk


To install Lurch:

wget  http://systemx.enst.fr/archives/lurch-custom-0.1.0.tgz; 
tar xvzf lurch-custom-0.1.0.tgz;


wget  http://systemx.enst.fr/archives/lurch-0.1.0.tgz; 
tar xvzf lurch-0.1.0.tgz;

Before running lurch, you must at least set up the hosts file. Run lurch with:

cd lurch-custom-0.1.0/src;
python lurch.py


cd lurch-0.1.0/src;
python lurch.py

Notice that you can exploit lurch to send commands to every node specified in the hosts file using:

Lurch > exec command
This can be useful to install missing packages, update machines, etc..


You can download a simple example to build a 3 nodes topology here with one node running ndn-icp-download and one node running ndn-virtual-repo. Go to Run an experiment for a detailed step by step procedure to run an experiment.

Understanding Lurch

Lurch is an orchestrator for large scale and highly reconfigurable NDN experimental test-beds on top of the Grid’5000 platform (or more in general any platform, i.e., local lab, providing connectivity among servers involved in the test-bed). While manually executing large scale experiments (hundreds of nodes) we have to go step by step through the following steps:

  • build a customized virtual network topology;
  • build an NDN overlay network topology;
  • launch NDN services on end hosts (i.e. file transfer);
  • retrieve measures from the test-bed.
In order to accelerate the test-bed setup phase, we developed Lurch, a command prompt written in Python and Bash, that allows to configure a test in few minutes. Lurch uses four configuration files to describe the test to execute. In particular, these four files are used to describe the list of the Grid’5000’s reserved servers (or local servers), the virtual topology, the NDN overlay topology (i.e. FIB entries) and the test-bed’s dynamic workload. The experiment is configured and monitored by Lurch issuing passwordless commands on remote servers through ssh. The test execution process can be split in five different phases:
  • Virtual network topology construction: Lurch uses virtual interfaces based on tap IP tunnels as a link abstraction layer, and kernel token bucket shapers to create our substrate overlay network topology with customized link rates, in the grid. Moreover, link rate statistics are launched in the virtual network topology construction phase.
  • NDN network configuration: A NDN overlay network is built on top of the IP overlay topology. NFD is remotely launched on every node configuring NFD options (i.e. cache size) and name based routing is configured (through the configuration file) according to pre-computed forwarding tables(FIBs) to make content reachable to clients.
  • Content ”publication”: Objects are made available to users through virtual NDN repositories (ndn-virtual-repo replies junk objects at every request it receives) that are launched before the test execution.
  • Test execution: Users retreives fixed amount of named chunks from the network through a NDN application at the receiver. The content requests arrival process at the clients can be Poisson, CBR or fixed (i.e. download one file at the beginning of the test). When a content request is issued by a client, the content name can be chosen according to a Zipf, Geometric or discrete Weibull popularity or more complex distribution fit to data samples. Notice that, if unmodified version of NFD 0.2.0 is used, the User application ndn-icp-download need to be separately installed (notice that such application installed separately does not include the path identifier). Otherwise the application is included in the NDN-0.2.0-custom package (see "Optimal.."). Please refer to Release notes section for more details.
  • Test results collection: At the end of the test Lurch collects both NDN and Network layer logs and compresses them. Notice that the five operations can be executed in batches in order to obtain more stable results.