wiki:Tutorials/oMF/tut2

Version 15 (modified by seskar, 11 years ago) ( diff )

Exercise 2: Measuring Performance of a MobilityFirst Router

Objective

In this exercise, we will try to drive synthetic traffic through the router and measure key performance characteristics such as throughput and forwarding latency. Since MobilityFirst presents a hop-by-hop block data transport, we can vary the unit size of the data block and observe it's impact on the performance. We will also try to visualize the performance results using OMF's result service by installing an OML-enabled monitor on the routers.

Deploy the Network

This tutorial assumes that a 4 nodes topology has been already established in one of the Orbit sandboxes or the grid:

Host (GUID 101) ---- MFR1 (GUID 1) ---- MFR2 (GUID 2) ---- Host2 (GUID 102)

We will assume the network described and initialized in Exercise 1 is up and functional. Here also we will use mfping to send packets between the hosts. In addition to the deployment specified in exercise 1, we install OML-enabled statistics monitor for MobilityFirst routers.

The entire script is available as part of the tutorial package as orbit/tutorial/scripts/exercise2.rb

The key extensions over previous script are briefly discussed below.

Setting up the 'OML enabled Monitor on Routers Application'

The following snippet from the script shows the code added to set up the OML enabled Monitor on Routers Application and its arguments:

defApplication("mf_click_monitor", "mf_click_monitor") do |app|
    app.shortDescription = "OML enabld statistics monitor for MobilityFirst Routers"
    app.path = "/usr/local/bin/mf_click_mon"
    app.defProperty('ctrl_port', 'Port for Click control socket', nil,{:type => :string, :mandatory => true, :order => 1})
    app.defProperty('self-id', 'OML ID', nil,{:type => :string, :mandatory => true, :order => 2})
    app.defProperty('oml-config-file', 'OML configuration file', "--oml-config",{:type => :string,:mandatory=> true})
    app.defProperty('oml-domain', 'OML domain name', "--oml-domain",{:type => :string,:mandatory=> true})
end

self_id = "MonitorID"
oml_config_file = "/usr/local/src/mobilityfirst/eval/orbit/tutorial/conf/click-oml-config.xml"
oml_domain = "#{Experiment.ID}"

defGroup("router_monitors", "router_universe") {|node|
  node.addApplication('mf_click_monitor') {|app|
    app.setProperty('ctrl_port', router_control_port)
    app.setProperty('self-id', self_id)
    app.setProperty('oml-config-file', oml_config_file)
    app.setProperty('oml-domain', oml_domain)
  }
}

As seen above, the OML enabled monitor will work with the MobilityFirst router that will enable us to track and visualize the forwarding performance of MFRs. In order report statistics to the OML server, the monitor periodically queries the monitor through the control port (ctrl_port in our script)

Running the Benchmark Application

To generate the traffic that will be reported by the routers, we will use the same mfping application as in the previous exercise.

First of all, you will need to start the experiment via the OMF script. Download the script to the orbit console:

    wget www.winlab.rutgers.edu/~bronzino/downloads/orbit/exercise2.rb

Once the file has been downloaded, execute it with the following command:

    omf exec exercise2.rb

The following snippet shows how the exercise runs. As indicated above first we will run mfping between the hosts as described in exercise 1:

Visualizing the Performance Data

Method 1: OMF framework supports a result service that allows experimenters to query data stored using the OML measurement framework. The query is performed over the web and requires that you know the hostname and port where the result service runs, and the experiment ID associated with this experiment - this is obtained from the output following the execution of the control script. It should look something like this :

Experiment ID: default_slice-2014-10-15t02.12.19.869-04.00

The result service supports either dumping of the entire database or a SQL-like querying option to selectively retrieve required measurement data. The below HTTP request shows an example query to retrieve the reported statistics from the OML enabled monitor for MobilityFirst Routers. In order to see the results the following web page should be retrieved using any browser. The following URL should be typed in the browser:

http://oml.orbit-lab.org:5054/result/dumpDatabase?expID=default_slice-2014-10-15t02.12.19.869-04.00

In this case the hostname is "oml.orbit-lab.org" and the port number is "5054".

Note that the URL used in wget, in particular the arguments, may require to be encoded to unambiguously represent special characters when using the HTTP protocol.

This data can also be downloaded using "wget" command and easily visualized using a tool such as gnuplot. You can find a helper script in the tutorial package that plots they key performance data downloaded.

Method 2: Alternatively, the performance data may be visualized using omf-web, OMF's web-based visualization service. It also works in concert with the result service referenced in Method 1, and makes available a variety of graph widgets to visualize live-experiment data logged using OML. Detailed documentation on the installation and usage of omf-web can be found on the omf-web github site.

Since this is installed on all ORBIT domains, we only need to concern ourselves with defining the widget configuration required to bring up the live graphs for the performance data we are logging. In order to bring up the visualization, we only need to start the basic omf-web service with the configuration file arguments.

Note: See TracWiki for help on using the wiki.