wiki:FeddMultiSwapExample

Version 3 (modified by faber, 8 years ago) (diff)

--

Multi-Party Experiment Creation Example

This example walks through creating a multiparty experiment from a single experiment topology description. That description may have been created from a compostion program or created by hand. We describe the key elements of the experiment description and walk through the creation.

Experiment Description

The ns-2 description of our example is (topdl version is attached)

# SERVICE: project_export:deter/a::project=TIED
# SERVICE: project_export:deter/b::project=SAFER
# SERVICE: seer_master:deter/a:deter/a,deter/b
# SERVICE: local_seer_control:deter/a
# SERVICE: local_seer_control:deter/b
set ns [new Simulator]
source tb_compat.tcl

set a [$ns node]
set b [$ns node]
set c [$ns node]
set d [$ns node]
set e [$ns node]

set deter_os "Ubuntu1004-STD"
set seer_tar "/users/faber/seer-deploy/seer-u10-current.tgz"

tb-set-node-os $a $deter_os
tb-set-node-testbed $a "deter/a"
tb-set-node-tarfiles $a "/usr/local/" $seer_tar
tb-set-node-startcmd $a "sudo python /usr/local/seer/experiment-setup.py Basic"


tb-set-node-os $b $deter_os
tb-set-node-testbed $b "deter/a"
tb-set-node-tarfiles $b "/usr/local" $seer_tar
tb-set-node-startcmd $b "sudo python /usr/local/seer/experiment-setup.py Basic"


tb-set-node-os $c $deter_os
tb-set-node-testbed $c "deter/b"
tb-set-node-tarfiles $c "/usr/local" $seer_tar
tb-set-node-startcmd $c "sudo python /usr/local/seer/experiment-setup.py Basic"


tb-set-node-os $d $deter_os
tb-set-node-testbed $d "deter/b"
tb-set-node-tarfiles $d "/usr/local" $seer_tar
tb-set-node-startcmd $d "sudo python /usr/local/seer/experiment-setup.py Basic"


tb-set-node-os $e $deter_os
tb-set-node-testbed $e "deter/b"
tb-set-node-tarfiles $e "/usr/local" $seer_tar
tb-set-node-startcmd $e "sudo python /usr/local/seer/experiment-setup.py Basic"



set link0 [ $ns duplex-link $a $b 100Mb 0ms DropTail]
set link1 [ $ns duplex-link $c $b 100Mb 0ms DropTail]
set lan0 [ $ns make-lan "$c $d $e" 100Mb 0ms ]

$ns rtproto Static
$ns run

This is an experiment topology containing 5 computers connected mostly by links, but with a single LAN. The computers are named with the letters a-e, and allocated to 2 parties. The party names appear in the tb-set-node-testbed commands (and as testbed attributes in the topdl). Overall the topology looks like (generated by fedd_image.py --group testbed --file multi-swap-example.xml --out multi.png):

Basic image of the experiment

The individual topologies are configured using the SERVICE directives in the comments of the ns-2 description. They can also be given on the command line of fedd_create.py using --service. Currently that is the only way to specify them when starting a topdl experiment. The format of the line and the --service option are the same. Services in general are described elsewhere as well.

Briefly, the first two lines set the DETER project that will be used to configure each party's area. The deter/a area will be an experiment owned by the TIED project; deter/b will be configured by the SAFER project. The project_export service exports the user configuration and filesystem named by the project (project=TIED) attribute.

The next three lines configure the SEER experiment control system. The local_seer service will add a node named control to each experiment that is effictively invisible outside the party's area. Computers will treat that as a SEER controller, and experimenters can connect to it directly to see and manipulate their areas. The seer_master service adds a node named seer-master to the experiment that each area's controller will also connect to. Connecting to the seer-master controller allows thw whole experiment to be viewed and manipulated.

Attachments (3)

Download all attachments as: .zip