| 1 | ############################################## |
|---|
| 2 | # This script defines the experiment |
|---|
| 3 | # that has one sender and one receiver |
|---|
| 4 | # Sender, Receiver - 802.11a channel 36 |
|---|
| 5 | # UDP flow at varying offer load |
|---|
| 6 | ############################################################ |
|---|
| 7 | |
|---|
| 8 | require 'net/http' |
|---|
| 9 | require 'uri' |
|---|
| 10 | |
|---|
| 11 | Experiment.name = "rateudp" |
|---|
| 12 | Experiment.project = "orbit:tutorial" |
|---|
| 13 | |
|---|
| 14 | rates = [8000, 9000, 10000, 11000, 12000] |
|---|
| 15 | |
|---|
| 16 | Experiment.defProperty('offerload', 500, 'offered load of flow') |
|---|
| 17 | Experiment.defProperty('packetsize',1024, 'size of flow') |
|---|
| 18 | |
|---|
| 19 | # |
|---|
| 20 | # Define nodes used in experiment |
|---|
| 21 | # |
|---|
| 22 | ########################################### |
|---|
| 23 | # Sender definition and configuration |
|---|
| 24 | ########################################### |
|---|
| 25 | defNodes('sender', [1,2]) {|node| |
|---|
| 26 | node.image = nil # assume the right image to be on disk |
|---|
| 27 | # use prototype "sender" |
|---|
| 28 | # and set it's property "destinationHost" to |
|---|
| 29 | # the receiver node |
|---|
| 30 | # and bind the remaining properties to the |
|---|
| 31 | # experiment property space |
|---|
| 32 | node.prototype("test:proto:sender", { |
|---|
| 33 | 'destinationHost' => '192.168.1.1', |
|---|
| 34 | 'packetSize' => prop.packetsize, |
|---|
| 35 | 'rate' => prop.offerload, |
|---|
| 36 | 'protocol'=> 'udp' |
|---|
| 37 | }) |
|---|
| 38 | node.net.w0.ip = "%192.168.%x.%y" |
|---|
| 39 | node.net.w0.mode = "Master" |
|---|
| 40 | node.net.w0.type = 'b' |
|---|
| 41 | node.net.w0.essid = "helloworld" |
|---|
| 42 | node.net.w0.channel = 1 |
|---|
| 43 | node.net.w0.rate= '11M' |
|---|
| 44 | } |
|---|
| 45 | ########################################### |
|---|
| 46 | # Receiver definition and configuration |
|---|
| 47 | ########################################### |
|---|
| 48 | |
|---|
| 49 | defNodes('receiver', [1,1]) {|node| |
|---|
| 50 | node.net.w0.ip = "%192.168.%x.%y" |
|---|
| 51 | node.image = nil # assume the right image to be on disk |
|---|
| 52 | node.prototype("test:proto:receiver" , { |
|---|
| 53 | 'protocol' => 'udp_libmac', |
|---|
| 54 | 'hostname' => '192.168.1.1' |
|---|
| 55 | }) |
|---|
| 56 | node.net.w0.mode = "Managed" |
|---|
| 57 | node.net.w0.type = 'b' |
|---|
| 58 | node.net.w0.essid = "helloworld" |
|---|
| 59 | } |
|---|
| 60 | |
|---|
| 61 | ########################################### |
|---|
| 62 | # When nodeAgents have reported "OK" to |
|---|
| 63 | # the nodeHandler start the application |
|---|
| 64 | ########################################### |
|---|
| 65 | whenAllInstalled() {|node| |
|---|
| 66 | |
|---|
| 67 | nodes('receiver').startApplications |
|---|
| 68 | nodes('sender').startApplications |
|---|
| 69 | |
|---|
| 70 | rates.each {|rate_level| |
|---|
| 71 | wait 20 |
|---|
| 72 | prop.packetsize= 52 |
|---|
| 73 | prop.offerload =50 |
|---|
| 74 | wait 30 |
|---|
| 75 | prop.packetsize= 1024 |
|---|
| 76 | prop.offerload= rate_level |
|---|
| 77 | } |
|---|
| 78 | |
|---|
| 79 | allNodes.stopApplications |
|---|
| 80 | |
|---|
| 81 | Experiment.done |
|---|
| 82 | |
|---|
| 83 | } |
|---|