= Using AODV with the testbed = Currently, we support AODV-UU protocol 0.9.1 on kernel version 2.6.12. Using the application and prototype definition format, we can currently specify * the interface to run on * enable logging * enable route table logging == For Experimenters == * Step 1: In order to use AODV routing protocol in your experiment, make sure you use the baseline.ndz image on your nodes that has aodv installed. * Step 2: Use the following experiment script. This will launch both the traffic generator and AODV on the nodes. AODV currently logs locally to the node every N secs which is configurable. However, in the future, this will be OMLized to log into the database instead. '''AODV router prototype and app defs are installed on all consoles. So users should be able to use it from any console''' === Experiment script === {{{ ################################################## # AODV with OTG # Every node has two prototypes: sender/receiver and AODV # AODV rt table logs are reported every 4 secs on the nodes to # /var/log/aodv.rtlog # These will soon be OMLized to report to the database instead ################################################## Experiment.name = "tutorial-aodv" Experiment.project = "orbit:tutorial" # # Define nodes used in experiment # defNodes('sender', [1,2]) {|node| node.image = nil # assume the right image to be on disk node.prototype("test:proto:sender", { 'destinationHost' => '192.168.1.1', 'packetSize' => 1024, 'rate' => 300, 'protocol' => 'udp' }) node.net.w0.mode = "master" } defNodes('receiver', [1,1]) {|node| node.image = nil # assume the right image to be on disk node.prototype("test:proto:receiver" , { 'hostname' => '192.168.1.1', 'protocol' => 'udp_libmac' }) node.net.w0.mode = "managed" } defNodes('everyone',[[1,1],[1,2]]) {|node| node.image = nil node.prototype("test:proto:aodvrouter", { 'interface' => 'ath0', #Run aodvd on interface ath0 'log' => nil, #Enable logging 'routelog' => 4 #Enable routing table logging every 4 secs }) } allNodes.net.w0 { |w| w.type = 'b' w.essid = "helloworld" w.ip = "%192.168.%x.%y" } # # Now, start the application # whenAllInstalled() {|node| #First start AODV daemon on all nodes NodeSet['everyone'].startApplications wait 10 #Then start receiver and sender NodeSet['receiver'].startApplications wait 30 NodeSet['sender'].startApplications wait 180 Experiment.done } }}} == For Developers == The application definition and prototype definitions corresponding to AODV router are as follows == Application definition == {{{ # # Create an application representation from scratch # require 'handler/appDefinition' a = AppDefinition.create('test:app:aodvd') a.name = "aodvd" a.version(0, 0, 1) a.shortDescription = "AODV routing protocol" a.description = <