An experiment is created by a “batchexp” from a GUI interface whether it is a batch or interactive experiment. The experiment flow is as follows.
The test nodes are rebooted and the new experiment images are loaded onto the test nodes (see node bootup for details). The experimenter’s home directory is mounted. VLAN and delay nodes for experiments are also set up.
Experiment information/control flow between entities
1. Starting an Experiment
1.1 File list:
File
name |
Type |
Location |
Function |
beginexp.php3 |
Php |
/usr/testbed/www |
Web interface for experiment start
process |
Webbatchexp |
Perl |
/usr/testbed/libexec |
Just a dummy file |
Mkexpdir |
perl |
/usr/testbed/libexec |
Create exp directories |
parse-ns |
perl |
/usr/testbed/libexec |
Parse-ns files, check Tcl syntax |
assign_wrapper |
perl |
/usr/testbed/libexec |
Mapping virtual topology to physical
nodes |
nalloc |
Perl |
/usr/testbed/bin |
Allocate free nodes to exp as reserved |
assign |
C |
/usr/testbed/libexec |
Execute assign algorithm |
Batchexp |
Perl |
/usr/testbed/bin |
|
Startexp |
Perl |
/usr/testbed/bin |
Call “tbswap in” |
tbswap |
perl |
/usr/testbed/bin |
Swap in the experiment, maintain
exp-state change, call “assign_wrapper” |
os_setup |
Perl |
/usr/testbed/bin |
Setup a new OS in nodes |
libdb.pm |
Perl lib |
/usr/testbed/lib |
All database-query support |
Libtestbed.pm |
Perl lib |
/usr/testbed/lib |
Define relations and access directories
about testbed |
Snmpit |
Perl |
/usr/testbed/bin |
Create Vlans through SNMP |
Snmpit_lib |
Perl lib |
/usr/testbed/lib |
SNMP routines for all Cisco or Intel
switches. |
nfree |
perl |
/usr/testbed/bin |
Free nodes from the experiment |
Stated |
Perl |
/usr/testbed/sbin |
A daemon to monitor state change and
update database |
os_load |
Perl |
/usr/testbed/bin |
Load an OS in the node |
os_select |
Perl |
/usr/testbed/bin |
Set imageid on node |
node_reboot |
Perl |
/usr/testbed/bin |
Manual reboot with power controller |
stated.log |
log |
/usr/testbed/log |
Output of stated daemon |
1.2 Database Tables used
Table name |
Major fields |
Usage |
Comments |
users |
uid |
Find user email |
|
experiments |
pid,eid |
find the experiment information |
|
reserved |
|
Find nodes in the experiment; mark nodes reserved for this eid |
|
nodes |
node_id node_type def_boot_osid |
Find os_info, pxe_boot_path |
Nodes are going to reboot with
def_boot_osid. |
node_types |
|
|
|
delays |
|
Add exp delays |
|
interfaces |
ip_addr |
Remove ip and ip alias |
|
Interface_types |
|
|
|
os_info |
os_id |
Get the detail information about image |
|
portmap |
|
|
|
vlans |
|
|
Used by assign |
virt_nodes |
|
|
Used by assign |
virt_lans |
|
|
Used by assign |
virt_vtypes |
|
|
Used by assign |
virt_routes |
|
|
Used by assign |
virt_agents |
|
|
|
virt_trafgen |
|
|
|
virt_node_desires |
|
|
|
wires |
|
For Vlan port information |
Connection between interfaces and
switches |
Switch_stackes |
|
SNMP-related search |
We have only 1 switch in each stack |
Event_objecttypes |
|
|
|
1.3 Flow chart
2. Terminating an Experiment
2.1 Relating file list:
File
name |
Type |
Location |
Function |
endexp.php3 |
Php |
/usr/testbed/www |
Web interface for experiment termination
process |
webendexp |
Perl |
/usr/testbed/libexec |
Just a dummy file |
endexp |
Perl |
/usr/testbed/bin |
Send email to experiment head, and Call tbswap out and tbend |
tbswap |
perl |
/usr/testbed/bin |
Swap out the experiment, maintain
exp-state change |
tbend |
Perl |
/usr/testbed/bin |
Clear virtual nodes… |
libdb.pm |
Perl lib |
/usr/testbed/lib |
All database-query support |
Libtestbed.pm |
Perl lib |
/usr/testbed/lib |
|
Snmpit |
Perl |
/usr/testbed/bin |
Removing Vlans through Snmp |
Snmpit_lib |
Perl lib |
/usr/testbed/lib |
Snmp routines for all cisco or intel
switches. |
nfree |
perl |
/usr/testbed/bin |
Free nodes from the experiment |
reload_daemon |
Perl |
/usr/testbed/sbin |
|
stated |
Perl |
/usr/testbed/sbin |
A daemon to monitor state change and
update database |
os_load |
Perl |
/usr/testbed/bin |
Load an OS in the node |
os_select |
|
|
Set imageid on node |
Node_reboot |
|
|
Manual reboot with power controller |
reloadlog |
log |
/usr/testbed/log |
Output of reload_daemon |
stated.log |
log |
/usr/testbed/log |
Output of stated daemon |
2.2 Related Database items:
Table name |
Major fields |
Usage |
Comments |
users |
uid |
Find user email |
|
experiments |
pid,eid |
find the experiment information |
|
reserved |
|
Find nodes in the experiment; put nodes reserved for reloading experiment….. |
|
nodes |
node_id node_type def_boot_osid |
Find os_info, pxe_boot_path |
Nodes are going to reboot with
def_boot_osid. |
delays |
|
Remove all delays |
|
vlans |
|
Remove all vlans |
|
interfaces |
Ip_addr |
Remove ip and ip alias |
|
os_info |
|
|
|
Scheduled_reloads |
|
Info queried by reload_daemon |
If empty, nodes will be loaded with
def_osid |
wires |
|
For Vlan port information |
|
Switch_stackes |
|
SNMP-related search |
We have only 1 switch in each stack |
2.3 Procedure Flow chart
3. Analysis:
The experiment start-up process is designed
in a very complicated way. To reuse Emulab program for Orbit, we need to remove
the “assign” process and implement a new interface. It requires some work.. It has been found that the assign process is being called
by the “tbswap in” call. Most essential routines and functions are enclosed in
the “assign_wrapper” program. It is tightly coupled with the usage of many
tables in the database. To replace this “assign” module with our Orbit “assign”
procedure, we need to first clarify the goals of “assign” program:
l
Map virtual nodes
to physical nodes.
l
Reserve those
nodes in reserved table of database
l
Setting up delays
and VLANs in database
l
Establish VLAN
through SNMP
It is better to separate the last three
parts to independent modules. For this purpose, we can ignore the
virtual-related tables from the database. The input to the new program should
be a set of parameters regarding to the physical topology of testbed nodes,
such as location and status, number of available interfaces.
The experiment termination process is
relatively simple and could be re-used by orbit without many modifications.