Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
What is supported:

* Automatic creation of an experiment of any number of nodes

* Running experiments on the real PlanetLab or a 'fake' PlanetLab inside
  of Emulab - or both in the same experiment

* Automatic tcpdumps of emulab-side traffic

* Automatic collection of log files at the end of an experiment

* Easy starting/restarting of stubs and monitors

What is not supported:

* Automatic tcpdump on the real PlanetLab (planned)

* Running test clients (ie. 'iperf -c') for you (planned)

* Asking for specific planetlab nodes (planned)

* Specifying point to point traffic shaping for the Elab initial conditions
  and for fake planetlabs. This should be taken care of by whatever
  mechanisms are used to fetch wanetmon data

Running an experiment with the auto-pelab scripts:

1) Create a tarball of the version of the pelab software (monitor, stub, etc.)
   that you'd like to test:
     Go to your testbed source tree
     Run 'cvs up'!!!
34 35
     Run 'gmake' in pelab/stub, pelab/magent, pelab/libnetmon and pelab/iperfd
       (on a DevBox machine)
36 37 38 39 40
     From the root of your source tree, run:
         tar czvf /proj/tbres/my-pelab.tar.gz pelab
     Of course, don't name it 'my-plab.tar.gz'! You can put this file in
       a subdirectory if you want, but it must be somewhere in
41 42 43 44
     Or you can use the pelab/make-tarball script to create the tarball:
	 cd pelab; ./make-tarball /proj/tbres/my-pelab.tar.gz
     It is a little more selective about what goes in the tarball.

45 46 47 48 49 50 51 52 53 54 55 56 57 58
     Put the path to your tarball in the pelab_tar variable in auto-pelab.ns 

2) Read the user-settable options at the top of auto-pelab.ns and change them
   to your preferences.
3) Use auto-pelab.ns to create an experiment

4) Once it has swapped in, and you're ready to start an experiment, run the
   'start-experiment' script on ops. It will
     Restart monitors and stubs
     Reset ALL link shaping to the defaults from the NS file
     Clean logfiles
     Restart iperf servers on all 'elab-*' nodes

Mike Hibler's avatar
Mike Hibler committed
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
   start-experiment has a few useful options for passing additional
   arguments to the stubs and monitors, e.g.
	start-experiment -s '-d' pid eid
   would turn on debugging in the stubs
	start-experiment -m '-d' pid eid
   would do the same for the monitors (assuming it has a '-d' option).

   If you are monitoring real planetlab nodes instead of the emulated
   nodes, run start-experiment with '-p'.

4a) If you modified something in the pelab (e.g., the stub) and need to
   deploy it to the nodes, first recreate the tarball as in step 1,
   and then
	install-tarball pid eid
   this triggers a program agent on all the nodes telling it to update
   the tarballs and RPMs.  You will need to run start-experiment again
   after this to restart stubs/monitors.

77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
5) Log into the 'elab-*' node or nodes, and run your experiment (ie. one run
   of iperf). Make sure to run them with ''.

6) When your're done with your experiment, run 'stop-experiment' on ops. It
    Stop the stubs, monitors, and iperf servers
    Collect logfiles from all of the nodes in the experiment, including
      stub/monitor logs, tcpdumps, delay agent logs, and so on
    Run tcptrace on all tcpdump logs to produce xplot graphs
    Put all of these things in a zip file for you in the experiment's log
      directory (/proj/PID/exp/EID/logs)

7) If you want to look at the logs, unzip the .zip file somewhere, and see
   the description of the files it contains below

Important places:

* Logfiles from the monitors, stubs, etc. can all be found in /local/logs
  on the node while the experiment runs. You can tail the .out or .err
  files to see the stdout and stderr of these processes

* Inside the archive zip file you will find:
  elab-*/ - Logifles from the emulator hosts (more detail below)
  even-sched.log - Log of all events (including dummynet control events) sent
      during the experiment
  plab-*/ - Logfiles from the FAKE plabnetlab nodes
  planet-*/ - Logifles from the REAL planetlab nodes
  tbsdelay*/ - Logs from the delay nodes, including tcpdump traces