wiki:Tutorials/g0WmLTE/Tutorial1

Version 1 (modified by seskar, 14 years ago) ( diff )

WiMAX "Hello World" Tutorial

This tutorial presents a simple example of using WiMAX devices that are available in ORBIT. The tutorial assumes basic understanding of OMF so, if you are not familiar with it, you may want to read the short OMF System Overview to familiarize yourself with the testbed control framework.

Experimental Scenario

The experimental scenario is fairly simple: our goal is to measure RTT of basic WiMAX link (single hop).

Experiment Description

Configuring WiMAX inteface

We need to connect to the basestation; will use wimaxcu userspace utility for that.

defApplication('wimaxcu', 'wimaxcu') {|a|
   a.name = "wimaxcu" 
     a.version(0, 0, 1)
     a.path = "/usr/bin/wimaxcu" 
     a.defProperty('args', "Arguments for wimaxcu command", nil,  {:order => 1, 
:dynamic => false, :type => :string, :use_name => false

Assigning the WiMAX IP Address

We will use dhclient command on the node to assign the IP address to the WiMAX interface. The following code snippet is the dhclient command wrapper that is used for address assignement.

defApplication('dhclient', 'dhclient') {|a|
   a.name = "dhclient" 
     a.version(0, 0, 1)
     a.path = "/sbin/dhclient -q" 
     a.defProperty('interface', "DHCP client interface name", nil,  {:order => 1
, :dynamic => false, :type => :string, :use_name => false

Ping Application

Wrapper for ping application.

defApplication('pingtest_app', 'pingtest') do |a|
  a.path = "/usr/bin/pingtest.rb"
  a.version(0, 0, 1)
  a.shortDescription = "Wrapper around Ping -c"
  a.description = <<TEXT
This is a wrapper around the ping command.
This application is using OML4R part of OML v2.3 or v2.4
TEXT
  a.defProperty('ip', 'Ip address to ping', 'i', 
                {:type => :string, :dynamic => false})

  # List the Measurement Points and associated metrics that are available 
  # for this application
  #
  a.defMeasurement('pingtest') do |m|
    m.defMetric('ip',:string)
    m.defMetric('time',:string)
    m.defMetric('x',:string)
    m.defMetric('y',:string)
  end
end

Experiment Code

Specify the nodes involved in the experiment and declare the applications with parameters that they would be running

defGroup('tester', [1,1]) do |node|
  node.addApplication('wimaxcu') { |app|
    app.setProperty('args','connect network 51')
  }
  node.addApplication('dhclient') { |app|
    app.setProperty('interface',"wmx0")
  }
  node.addApplication("pingtest_app") { |a|
    a.setProperty('ip',"10.41.0.1")
    a.measure('pingtest')
  }
end

The actual experiment: boot the nodes. wait for 10 seconds for them to worm up and then

whenAllInstalled() {|node|
   info "Give machines some time to warm up" 
   wait 10
   allGroups.startApplications
   info "Colect measurements for 100 seconds" 
   wait 100
   info "Finish it." 
   Experiment.done
}

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.