[[PageOutline]] '''[wiki:GENIExperimenter/Tutorials/SystematicExprCaseStudy A Tutorial on Systematic Experimental Design]''' {{{ #!html
Image Map
}}} Our goal is to setup a layer-3 virtual network with multiple virtual routers. Hence, the first step is to install the routing software. There are various options, such as [http://www.xorp.org `XORP`] and [http://www.quagga.net `Quagga`]. In this tutorial, we will install XORP to enable routing functionalities on nodes. Sometimes it may take a long time to install software on a node, so it is always good to start with one node to test out the whole installation process. The figure below provides an overview of the software installation to a VM. This process turns a generic VM into a software router. [[Image(GENIExperimenter/Tutorials/SystematicExprCaseStudy/InstallSoftware:softwareinstall-flow.png)]] = 1. Reserve a VM with Standard Image = Assume we have a slice created already. We want to reserve a XenVM running a standard Ubuntu image as the basis of the software router. == a. Create VM from an InstaGENI == Launch Flack for your slice, and reserve a virtual machine from one of the aggregates (e.g., InstaGENI aggregate at Clemson). [[Image(GENIExperimenter/Tutorials/SystematicExprCaseStudy/InstallSoftware:portal-slice.png)]] [[Image(GENIExperimenter/Tutorials/SystematicExprCaseStudy/InstallSoftware:flack-alloc-vm.png)]] {{{ #!html
Note Please go to HowToReserveVM for details on how to reserve a VM from an aggregate.
}}} == b. Select a Standard Image == Click [[Image(GENIExperimenter/Tutorials/SystematicExprCaseStudy/InstallSoftware:info.jpg)]] to edit the property of the VM. Select the disk image that is to be loaded to the VM. In this tutorial, we select '''Ubuntu 12.04 LTS'''. [[Image(GENIExperimenter/Tutorials/SystematicExprCaseStudy/InstallSoftware:flack-vm-property.png, 48%, nolink)]] Click [[Image(GENIExperimenter/Tutorials/SystematicExprCaseStudy/InstallSoftware:apply.png)]] to save the change. == c. Reserve the VM == Click [[Image(GENIExperimenter/Tutorials/SystematicExprCaseStudy/InstallSoftware:flack-submit.png)]] to send the VM reservation request. == d. Login to the VM == Once the VM allocation is ready (i.e., the canvas turns into green in Flack), we are able to login to the node from a terminal using `ssh`. {{{ ssh username@hostname -p xxxxx }}} {{{ #!html
Note You can find information on how to login to GENI hosts from HOWTOLOGIN.
}}} = 2. Manual Installation = In this tutorial, we will install `XORP 1.8.5` on `Ubuntu 12.04`, and the installation takes the following steps: * Install Dependencies {{{ $sudo apt-get update $sudo apt-get install libssl-dev $sudo apt-get install ncurses-dev $sudo apt-get install libpcap-dev $sudo apt-get install g++ traceroute $sudo apt-get install scons }}} * Download XORP source files {{{ $cd ~/ $wget http://www.xorp.org/releases/current/xorp-1.8.5-src.tar.bz2 $tar jvxf xorp-1.8.5-src.tar.bz2 }}} * Compile and build `XORP` {{{ $cd xorp $scons $sudo scons install }}} * Verify the `XORP` installation (Optional) {{{ $scons check }}} The whole installation process without the last optional step will take about 40 minutes to complete. Running `scons check` will probably take another hour to complete. If everything goes smoothly, you should be able to find the directory `xorp` under path `/usr/local/`. {{{ #!html
Note If you try to install other version of XORP, please check the XORP Official Website for details on the dependencies and installation instructions.
}}} = 3. Create Custom Image = From the manual installation procedure, we learned that it is not efficient to login to every VM and then install `XORP`. An alternative way is to create a custom image of `Ubuntu 12.04 LTS` with `XORP` pre-installed, and save this custom image for future usage. We can create InstaGENI custom image via either Flack or Omni, details can be found at [http://groups.geni.net/geni/wiki/HowTo/ManageCustomImagesInstaGENI ManageCustomImageInstaGENI]. Here we use Flack to create InstaGENI custom image of `Ubuntu 12.04` that has `XORP` pre-installed. In Flack, for the same VM that we have just installed `xorp`, go to it's node property (i.e., clicking [[Image(GENIExperimenter/Tutorials/SystematicExprCaseStudy/InstallSoftware:info.jpg)]]), and click the button "Create Image". [[Image(GENIExperimenter/Tutorials/SystematicExprCaseStudy/InstallSoftware:flack-vm-customimage.png, 60%, nolink)]] In about 10 minutes, you will get an email that has image information similar to the following: {{{ Image URN: urn:publicid:IDN+instageni.clemson.edu+image+ch-geni-net:LabwikiWithXORP Image URL: https://www.instageni.clemson.edu/image_metadata.php?uuid=21a48773-f7cc-11e3-aa57-000000000000 }}} {{{ #!html
Note The custom image with XORP preinstalled with URL below is ready for use, if you want to skip Step 2 (Manual Installation).
}}} {{{ https://www.instageni.clemson.edu/image_metadata.php?uuid=21a48773-f7cc-11e3-aa57-000000000000 }}} If your are going to use the same slice in the next step, now it's time to release the VM resource. * Use Omni {{{ $ omni.py -a deletesliver }}} * Use Flack * Press the '''Delete''' button in the bottom of your canvas. * Select '''Delete at used manager''' and '''confirm''' your selection. = 4. Verify InstaGENI Custom Image = Now let's load the custom image created in Step 3. Create a new VM in Flack, and edit the node property. Instead of selecting an advertised image as we did in step 1.b, we will use the URL to the custom image we just created in step 3. Copy an paste the following URL to the URL field. {{{ https://www.instageni.clemson.edu/image_metadata.php?uuid=21a48773-f7cc-11e3-aa57-000000000000 }}} [[Image(GENIExperimenter/Tutorials/SystematicExprCaseStudy/InstallSoftware:flack-load-customimage.png, 60%, nolink)]] Apply the change, and submit the VM reservation request in Flack. Once the VM is ready to login, we can verify the XORP installation. {{{ xuanliu@xen:$ cd /usr/local/xorp/sbin xuanliu@xen:/usr/local/xorp/sbin$ ls bgp_xrl_shell_funcs.sh fea_xrl_shell_funcs.sh xorp_profiler xorpsh call_xrl rib_xrl_shell_funcs.sh xorp_rtrmgr }}} = 5. Cleanup the Slice = After verify the `XORP` installation, we can cleanup the slice for next step. * Use Omni {{{ $ omni.py -a deletesliver }}} * Use Flack * Press the '''Delete''' button in the bottom of your canvas. * Select '''Delete at used manager''' and '''confirm''' your selection. [wiki:GENIExperimenter/Tutorials/SystematicExprCaseStudy Overview] [wiki:GENIExperimenter/Tutorials/SystematicExprCaseStudy/SmallTopo Step II: Small Topology]