wiki:Tutorials/oMF/tut2

Version 22 (modified by wontoniii, 10 years ago) ( diff )

Exercise 2: Measuring Performance of a MobilityFirst Router

Design/Setup

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.

Pre-requisites

  • Experimenters are expected to have basic networking knowledge and familiarity with Linux OS and some of its tools (command line tools, ssh, etc.).
  • An ORBIT user account.
  • Some familiarity with the MobilityFirst terminology.

Deploy the Network

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

No image "MFTurorialNetwork.png" attached to Tutorials/oMF

If not coming from exercise 1 follow these instructions on how to setup the topology. Running exercise 1 at least once before moving to exercise 2 is advised to understand the steps and software components involved.

Setting up the 'OML enabled Monitor on Routers Application'

At this point, the network topology described and initialized in Exercise 1 is supposed to be ready and functional. In order to produce synthetic traffic, we will use mfping to send packets between the end hosts. In order to perform more advanced network measurements, other applications are also available, such as a modified version of the commonly used application iperf. As per the goal of the exercise, we will use an OML-enabled statistics monitor for MobilityFirst routers in order to collect usage statistics on the nodes.

The key extensions over exercise 1's script are briefly discussed below. 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 and it will enable us to track and visualize the forwarding performance of the MFRs in real time. In order to report statistics to the ORBIT's OML server, the monitor periodically queries the router through a socket control port (ctrl_port in our script). Using the conveniency of OML we can define different characteristics of the stream of measurements going to the OML server. This is done using an XML configuration file; in our case the following configuration file has been preloaded on the nodes:

<omlc id='click_mon'>
  <collect url='tcp:oml.orbit-lab.org:3003'>
    <stream name='packet_stats' mp='packet_stats' samples='1'>
    </stream>
    <stream name='routing_stats' mp='routing_stats' samples='1'>
    </stream>
    <stream name='link_stats' mp='link_stats' samples='1'>
    </stream>
  </collect>
</omlc>

After running the experiment which should be able to retrieve statistics on a per sample base divided among different groups, based on the analyzed layer (i.e. network layer, link layer, physical layer).

Execute

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 an OMF script. Download the script to the orbit console copying and pasting the following command in your terminal:

    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

Once your experiment is showing you the following line:

    INFO exp: Request from Experiment Script: Wait for 10000s....

you can proceed running the ping application. If coming from exercise 1, you will only need to repeat the same procedure. For conveniency, the detailed steps on how to run the application follow.

Visualizing the Performance Data

Method 1: the 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 experiment ID associated with your 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 based 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 requested using any browser. The following URL should be typed in the browser replacing 'experimentID' with the ID associated with your experiment:

http://oml.orbit-lab.org:5054/result/dumpDatabase?expID=experimentID

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

Method 2: Alternatively, the performance data may be visualized using a tool called omf-web, an OMF 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. Documentation on the installation and usage of omf-web can be found on the omf-web github site.

Finish

Once the application has successfully completed its task, follow these steps to complete the experiments:

  • Kill the mfping server using Ctrl-C on the corresponding node.
  • On the grid's console running the experiment script, interrupt the experiment using the Ctrl-C key combination.

This will stop all the applications and will conclude the experiment.

References

For more information regarding the MobilityFirst project, visit the project page: http://mobilityfirst.winlab.rutgers.edu/

For more information regarding the prototype design and updated status, visit the wiki page: https://mobilityfirst.orbit-lab.org/

Note: See TracWiki for help on using the wiki.