NDN experiment orchestrator

LURCH

Run an experiment

In order to run an NDN experiment with lurch, some input files need to be prepared first:

  • The list of hosts involved in the experiment is specified in hosts under lurch/src/host;
  • The list of parameters is specified in Myglobals.py under lurch/src/lurch/Myglobals.py;
  • The list of files used to describe the experiment ( topo.brite, routing.dist, workload.dist) are saved in a "test" folder;

After test's files are prepared, passwordless ssh access from the lurch node to all the other nodes involved in the experiment should be configured (otherwise password will be asked continuously). In lurch/manage_key folder, a configuration script can be found. The script requires the IP address of the lurch node (or hostname) and the list of hosts. Notice that the script configures passwordless ssh access for the root user; please modify the script according to your needs.

Once everityng is set up (i.e., test's files and passwordless access to hosts) Lurch can be started by launching the python executable:

Example: python lurch.py [-a] path_to_folder (optional) [-t|-m n_times]
         -a:         automatically generate the lurch.conf file, starting from 
		     the files stored in the target folder (workload.dist, 
		     topo.brite and routing.dist)
         -t:         start test
         -m n_times: equvalent to -t but execute the test multiple times (n_times 
                     must be an integer) 

There exist two different ways to run an NDN experiment using Lurch:

  • automatic: allows the user to launch an experiment and retrieve output files at the end. In lurch/src/ type
     python lurch.py -a path/to/experiment/folder -t
    		
  • interactive: allows the user to use an interactive console to setup and launch an experiment. In lurch/src/ type
    
    python lurch.py 
    		

    Using the interactive mode, from the lurch console, a set of commands can be executed. To execute a test from the command line:

    1. Generate the configuration file:
      
      Lurch > configure path/to/experiment/folder
      		  
    2. Setup the network:
      
      Lurch > setup
      		  
    3. Start the test:
      
      Lurch > start
      		  

Lurch commands

		
    General commands:                                 
        help,  h: this help                                      
        howto, ht: how-to     
        ls: bash ls command mapped in lurch in order to find config files, etc.
            For a complete help type ls --help
        clear: bash clear command to clean-up the terminal  
        configure, cfg [path to directory]: create the lurch.conf file
        configure, cfg -s: display the lurch.conf file
        quit, q, exit, e: quit lurch     
        
    NDN commands:    
        startndn, sndn: start nfd
        killndn, kndn: kill nfd 
        startrepo, srepo: start ndn repository(ies)
        killrepo, krepo: kill ndn repositori(ies)
        routendn, rndn: set ndn routing
        statndn, ndns: list nfd forwarding table
        ndninstall: install NDN on all nodes
        start: start test 
        startbulk x: execute x identical tests one after the other
        reset, rs: reset cache before restarting the test [hardcoded!]                 
        
    Network commands:
        ping, p: ping nodes                                
        list, l: list nodes                                         
        route, r: list routes                                     
        tunnel, t: list tunnels                                
        ifconf, i: list interfaces                              
        script, s: create scripts                             
        lcreate, cl: execute creation scripts           
        lremove, rl: execute removal scripts
        startstats: launch ipband commands to capture per link bandwidth stats
        killstats: kill ipband 
           
    Test commands:
        setup: prepare network and ndn to the test 
               (executes script, lcreate, startndn, startrepo, routendn)
        start: run the test
        getstats: collect statistics