== Run an Labwiki on an InstaGENI Test Bed == This page provides steps to run an Labwiki on an InstaGENI testbed with five nodes.[[BR]] You can use the GEC16-Tutorial VM to run the experiment as it has the OMF commands pre-installed on them.[[BR]] '''1. Create a 5 node topology.[[BR]]''' '''Note:''' This rspec is for 5 nodes on the bbninstageni Aggregate manager[[BR]] For other managers, you can use url=https://boss.instageni.gpolab.bbn.com/image_metadata.php?uuid=2a721653-a868-11e2-921f-029e26f15299 [[BR]] For the same manager, you can use id=urn:publicid:IDN+instageni.gpolab.bbn.com+image+emulab-net:GIMIomf (given below)[[BR]] [[Image(insta_topo.png)]] === Request RSpec for a five node topology === {{{ }}} The postboot script is attached here. It is automatically executed when you submit your request Rspec. There is no need for any modifictaions. [[BR]] {{{ !/bin/bash cd /local read -r slice :string, :dynamic => false}) a.defProperty('count', 'Number of times to ping', '-c', {:type => :integer, :dynamic => false}) a.defProperty('interval', 'Interval between pings in s', '-i', {:type => :integer, :dynamic => false}) a.defMeasurement('myping', '', :stream_name => 'pingmonitor_myping') do |m| #a.defMeasurement('myping', '') do |m| m.defMetric('dest_addr',:string) m.defMetric('ttl',:int) m.defMetric('rtt',:float) m.defMetric('rtt_unit',:string) end end defGroup('Source1', property.source1) do |node| node.addApplication("ping_app") do |app| app.setProperty('dest_addr', property.sinkaddr11) app.setProperty('count', 30) app.setProperty('interval', 1) app.measure('myping', :samples => 1) end node.addApplication("ping_app") do |app| app.setProperty('dest_addr', property.sinkaddr12) app.setProperty('count', 30) app.setProperty('interval', 1) app.measure('myping', :samples => 1) end end defGroup('Source2', property.source2) do |node| node.addApplication("ping_app") do |app| app.setProperty('dest_addr', property.sinkaddr21) app.setProperty('count', 30) app.setProperty('interval', 1) app.measure('myping', :samples => 1) end node.addApplication("ping_app") do |app| app.setProperty('dest_addr', property.sinkaddr22) app.setProperty('count', 30) app.setProperty('interval', 1) app.measure('myping', :samples => 1) end node.addApplication("ping_app") do |app| app.setProperty('dest_addr', property.sinkaddr23) app.setProperty('count', 30) app.setProperty('interval', 1) app.measure('myping', :samples => 1) end end defGroup('Source3', property.source3) do |node| node.addApplication("ping_app") do |app| app.setProperty('dest_addr', property.sinkaddr31) app.setProperty('count', 30) app.setProperty('interval', 1) app.measure('myping', :samples => 1) end node.addApplication("ping_app") do |app| app.setProperty('dest_addr', property.sinkaddr32) app.setProperty('count', 30) app.setProperty('interval', 1) app.measure('myping', :samples => 1) end node.addApplication("ping_app") do |app| app.setProperty('dest_addr', property.sinkaddr33) app.setProperty('count', 30) app.setProperty('interval', 1) app.measure('myping', :samples => 1) end node.addApplication("ping_app") do |app| app.setProperty('dest_addr', property.sinkaddr34) app.setProperty('count', 30) app.setProperty('interval', 1) app.measure('myping', :samples => 1) end end defGroup('Source4', property.source4) do |node| node.addApplication("ping_app") do |app| app.setProperty('dest_addr', property.sinkaddr41) app.setProperty('count', 30) app.setProperty('interval', 1) app.measure('myping', :samples => 1) end node.addApplication("ping_app") do |app| app.setProperty('dest_addr', property.sinkaddr42) app.setProperty('count', 30) app.setProperty('interval', 1) app.measure('myping', :samples => 1) end end defGroup('Source5', property.source5) do |node| node.addApplication("ping_app") do |app| app.setProperty('dest_addr', property.sinkaddr51) app.setProperty('count', 30) app.setProperty('interval', 1) app.measure('myping', :samples => 1) end end #defGroup('Sink2', property.sink2) do |node| #end #defGroup('Sink3', property.sink3) do |node| #end #defGroup('Sink4', property.sink4) do |node| #end #defGroup('Sink5', property.sink5) do |node| #end onEvent(:ALL_UP_AND_INSTALLED) do |event| info "Starting the ping" allGroups.startApplications wait 30 info "Stopping the ping" allGroups.stopApplications Experiment.done end defGraph 'RTT' do |g| g.ms('myping').select(:oml_seq, :dest_addr, :rtt)#.where(:dest_addr => "192.168.5.12") g.caption "RTT of received packets." g.type 'line_chart3' g.mapping :x_axis => :oml_seq, :y_axis => :rtt, :group_by => :dest_addr # g.group_by(:dest_addr) g.xaxis :legend => 'oml_seq' g.yaxis :legend => 'rtt', :ticks => {:format => 's'} end }}} '''3. Run the experiment using the following command''' Execute the following command in your tutorial VM. Please install the latest version of Labwiki and OMF-Web before you proceed. {{{ cd labwiki ruby1.9.3 -I lib -I $HOME/omf_web/lib/ lib/labwiki.rb --lw-config etc/labwiki/exogeni_with_irods.yaml start $HOME= path where omf_web is installed. For example ruby1.9.3 -I lib -I /home/dbhat/omf_web/lib/ lib/labwiki.rb --lw-config etc/labwiki/exogeni_with_irods.yaml start }}} In your browser, open Labwiki. [[BR]] Type in your slice name exactly as it is in the GENI Portal. Type in any experiment name you like.[[BR]] Set graph to "true".[[BR]] [[Image(insta_labwiki1.png)]] Click on "Start Experiment"[[BR]] Shown below is a screen shot of the ping-all experiment. [[Image(insta_labwiki2.png)]]