= 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 [http://mytestbed.net/projects/omf/wiki/An_Introduction_to_OMF 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 = < :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 } }}}