| 199 | === Experiment Descriptions === |
| 200 | |
| 201 | An experiment description is currently given in a slightly extended version of the ns2 dialect that is used for an Emulab experiment description. Specifically, the `tb-set-node-testbed` command has been added. Its syntax is: |
| 202 | |
| 203 | {{{ |
| 204 | tb-set-node-testbed node_reference testbed_name |
| 205 | }}} |
| 206 | |
| 207 | The `node_reference` is the tcl variable containing the node and the `testbed_string` is a name meaningful to the `fedd` creating the experiment. The experiment creation interface has a mechanism that a requester can use to supply translations from testbed names to the URIs needed to contact that testbed's `fedd` for access. |
| 208 | |
| 209 | In addition, `fedd` understands the `tb-set-default-failure-action` command. This sets the default failure action for nodes in the experiment to one of '''fatal''', '''nonfatal''', or '''ignore'''. Those values have the same meaning as in standard Emulabs. Nodes that do not have their failure mode reset by the `tb-set-node-failure-action` command will user the explicit default. If no default is set, '''fatal''' is used. |
| 210 | |
| 211 | === Example Federated Experiment Creation === |
| 212 | |
| 213 | TO give an intuition for how `fedd` works, we present a sample experiment description and show how it would be turned into a federated experiment. The experiment description is: |
| 214 | |
| 215 | {{{ |
| 216 | # simple DETER topology for playing with SEER |
| 217 | |
| 218 | set ns [new Simulator] |
| 219 | source tb_compat.tcl |
| 220 | |
| 221 | set a [$ns node] |
| 222 | set b [$ns node] |
| 223 | set c [$ns node] |
| 224 | set d [$ns node] |
| 225 | set e [$ns node] |
| 226 | |
| 227 | set deter_os "FC6-STD" |
| 228 | set deter_hw "pc" |
| 229 | set ucb_os "FC6-SMB" |
| 230 | set ucb_hw "bvx2200" |
| 231 | |
| 232 | tb-set-node-os $a $deter_os |
| 233 | tb-set-node-testbed $a "deter" |
| 234 | tb-set-hardware $a $deter_hw |
| 235 | |
| 236 | |
| 237 | tb-set-node-os $b $deter_os |
| 238 | tb-set-node-testbed $b "deter" |
| 239 | tb-set-hardware $b $deter_hw |
| 240 | |
| 241 | tb-set-node-os $c $ucb_os |
| 242 | tb-set-node-testbed $c "ucb" |
| 243 | tb-set-hardware $c $ucb_hw |
| 244 | |
| 245 | tb-set-node-os $d $ucb_os |
| 246 | tb-set-node-testbed $d "ucb" |
| 247 | tb-set-hardware $d $ucb_hw |
| 248 | |
| 249 | tb-set-node-os $e $ucb_os |
| 250 | tb-set-node-testbed $e "ucb" |
| 251 | tb-set-hardware $e $ucb_hw |
| 252 | |
| 253 | |
| 254 | set link0 [ $ns duplex-link $a $b 100Mb 0ms DropTail] |
| 255 | set link1 [ $ns duplex-link $c $b 100Mb 0ms DropTail] |
| 256 | set lan0 [ $ns make-lan "$c $d $e" 100Mb 0ms ] |
| 257 | |
| 258 | $ns rtproto Static |
| 259 | $ns run |
| 260 | }}} |
| 261 | |
| 262 | |