The Conference Room Tutorial

0. Video now available!

We recently uploaded a video of this tutorial, which you can watch here: http://omf.mytestbed.net/videos/tv-conf-room.mp4

1. Prerequisites

2. Goal

  • As detailed explanation on how to use these features are available in the basic tutorials, this page just shows the Experiment Description and some graphs obtained by running this experiment with different parameters

3. Scenario

  • The "Conference Room" scenario is based on the basic Sender/Receiver scenario of the "Hello World" tutorial.

  • Here we have:
    • One resource in a unique Receiver group
    • Multiple resources in different groups of Senders, which will send UDP Constant-Bit-Rate traffic to the Receiver
    • The Senders will start and stop sending their traffic sequentially
  • Different parameters of the experiment can be changed using Properties

4. The Experiment Description

The Experiment Description (ED) describing this experiment is (download it here: attachment:conf-room.rb):

 1 defProperty('hrnPrefix', "omf.nicta.node", "Prefix to use for the HRN of resources")
 2 defProperty('resources', "[1,2,3,4,5,8,9,10,11,12,13]", "List of IDs for the resources to use as senders")
 3 defProperty('receiver', "6", "ID for the resource to use as a receiver")
 4 defProperty('groupSize', 4, "Number of resources to put in each group of senders")
 5 defProperty('rate', 300, 'Bits per second sent from senders')
 6 defProperty('packetSize', 256, 'Byte size of packets sent from senders')
 7 defProperty('wifiType', "g", "The type of WIFI to use in this experiment")
 8 defProperty('channel', '6', "The WIFI channel to use in this experiment")
 9 defProperty('netid', "confroom", "The ESSID to use in this experiment")
10 defProperty('stepDuration', 60, "The duration of each step of this conf-room")
11 
12 # Define the Receiver
13 defGroup('Receiver', "#{property.hrnPrefix}#{property.receiver}") do |node|
14   node.addApplication("test:app:otr2") do |app|
15     app.setProperty('udp:local_host', '%net.w0.ip%')
16     app.setProperty('udp:local_port', 3000)
17     app.measure('udp_in', :samples => 1)
18   end
19   node.net.w0.mode = "master" 
20   node.net.w0.type = property.wifiType
21   node.net.w0.channel = property.channel
22   node.net.w0.essid = property.netid
23   node.net.w0.ip = "192.168.0.254" 
24 end
25 
26 # Define each Sender groups
27 groupList = []
28 res = eval(property.resources.value)
29 groupNumber = res.size >= property.groupSize ? (res.size.to_f / property.groupSize.value.to_f).ceil : 1
30 (1..groupNumber).each do |i|
31   list = []
32   (1..property.groupSize).each do |j| popped = res.pop ; list << popped if !popped.nil?  end
33   senderNames = list.collect do |id| "#{property.hrnPrefix}#{id}" end 
34   senders = senderNames.join(',')
35 
36   info "Group Sender #{i}: '#{senders}'" 
37   groupList << "Sender#{i}" 
38   defGroup("Sender#{i}", senders) do |node|
39     node.addApplication("test:app:otg2") do |app|
40       app.setProperty('udp:local_host', '%net.w0.ip%')
41       app.setProperty('udp:dst_host', '192.168.0.254')
42       app.setProperty('udp:dst_port', 3000)
43       app.setProperty('cbr:size', property.packetSize)
44       app.setProperty('cbr:rate', property.rate)
45       app.measure('udp_out', :samples => 1)
46     end
47     node.net.w0.mode = "managed" 
48     node.net.w0.type = property.wifiType
49     node.net.w0.channel = property.channel
50     node.net.w0.essid = property.netid
51     node.net.w0.ip = "192.168.0.%index%" 
52   end 
53 end
54 
55 onEvent(:ALL_UP_AND_INSTALLED) do |event|
56   wait 10
57   group('Receiver').startApplications
58   wait 10
59   (1..groupNumber).each do |i|
60     group("Sender#{i}").startApplications
61     wait property.stepDuration
62   end
63   (1..groupNumber).each do |i|
64     group("Sender#{i}").stopApplications
65     wait property.stepDuration
66   end
67   group('Receiver').stopApplications
68   Experiment.done
69 end
70 
71 addTab(:defaults)
72 addTab(:graph2) do |tab|
73   opts = { :postfix => %{Sender index for incoming UDP traffic = F(time)}, :updateEvery => 1 }
74   tab.addGraph("Incoming UDP", opts) do |g|
75     data = Hash.new
76     index = 1
77     mpIn = ms('udp_in')
78     mpIn.project(:oml_ts_server, :src_host, :seq_no).each do |sample|
79       time, src, seq = sample.tuple
80       if data[src].nil? 
81         data[src] = [index,[]] 
82         index += 1
83       end
84       data[src][1] << [time, data[src][0]] 
85     end
86     data.each do |src,value|
87       g.addLine(value[1], :label => "Node #{value[0]}") 
88     end
89   end
90 end

4. Running the experiment & viewing the Results

  • Please refer to the previous basic tutorials and the Getting Started page to find out:
    • how to run an experiment with OMF.
    • how to access and use your result database
    • how to define graphs to plot during your experiment runtime
    • how to access the EC's webpage during your experiment runtime
  • Here we assume that you have the above ED saved in the file named dynamic-properties.rb.
  • Run the experiment using the default values for all the properties:
    omf-5.3 exec conf-room.rb
    
  • While the experiment is running, the EC's web page should display a graph similar to this:
    • you can see the Sender groups (each with 4 resources) starting to send traffic to the receiver sequentially

  • Run the experiment using more Senders group with fewer resources in them, on channel 1 with a different rate 1024:
    omf-5.3 exec conf-room.rb -- --groupsize 2 --channel 1 --bit
    
  • While the experiment is running, the EC's web page should display a graph similar to this:
    • you can see the Sender groups (each with 2 resources) starting to send traffic to the receiver sequentially

7. What is Next?

Now you may want to read the following basic OMF tutorials. You do not need to follow them in the order suggested below.

And finally, a "Conference Room" scenario which combines all of the above features:


screenshot1.png (54.6 kB) Thierry Rakotoarivelo, 26/10/2010 03:46 pm

screenshot2.png (54.3 kB) Thierry Rakotoarivelo, 26/10/2010 04:05 pm

scenario.png (98.8 kB) Thierry Rakotoarivelo, 29/09/2011 02:54 pm