8 | | defProperty('theSender', "outside-loadbaltest", "ID of sender node") |
9 | | defProperty('theReceiver', "inside-loadbaltest", "ID of receiver node") |
10 | | defProperty('theSwitch',"switch-loadbaltest", "ID of switch node") |
11 | | defProperty('left', "eth1", "Left Interface name") |
12 | | defProperty('right', "eth3", "Right Interface name") |
13 | | defProperty('setinterval','1.0',"Time between iperf") |
14 | | defProperty('serverip', "10.10.10.2","Server interface IP") |
15 | | defProperty('clientip', "10.10.10.1","Client interface IP") |
16 | | defProperty('setbandwidth', "100m", "Throughput of Sender") |
17 | | defApplication('trace') do |app| |
18 | | app.description = 'Packet capture' |
19 | | app.binary_path = "/usr/bin/trace-oml2" |
20 | | app.defProperty('filter', 'Filter expression BPFEXP', '-f', {:type => :string, :mnemonic => 'f'}) |
21 | | app.defProperty('interface', 'Interface to trace', '-i',{:type => :string, :mnemonic => 'i', :default => '"eth0"'}) |
| 8 | defProperty('slice', 'testloadbal3', "slice name") |
| 9 | defProperty('intervalcol',"1", "Interval to Tail") |
| 10 | defProperty('theSender', "outside", "ID of sender node") |
| 11 | defProperty('theReceiver', "inside", "ID of receiver node") |
| 12 | defProperty('theSwitch',"switch", "ID of switch node") |
| 13 | defProperty('pathfile', "/tmp/flowstats.out", "Path to file") |
36 | | end |
37 | | defApplication('iperf') do |app| |
38 | | app.description = "Iperf is a traffic generator and bandwidth measurement |
39 | | tool. It provides generators producing various forms of packet streams and port |
40 | | for sending these packets via various transports, such as TCP and UDP." |
41 | | app.binary_path = "/usr/bin/iperf_oml2" |
42 | | |
43 | | #app.defProperty('interval', 'pause n seconds between periodic bandwidth reports', '-i', |
44 | | # :type => :double, :unit => "seconds", :default => '1.') |
45 | | app.defProperty('len', 'set length read/write buffer to n (default 8 KB)', '-l', |
46 | | :type => :integer, :unit => "KiBytes") |
47 | | app.defProperty('print_mss', 'print TCP maximum segment size (MTU - TCP/IP header)', '-m', |
48 | | :type => :boolean) |
49 | | app.defProperty('output', 'output the report or error message to this specified file', '-o', |
50 | | :type => :string) |
51 | | app.defProperty('port', 'set server port to listen on/connect to to n (default 5001)', '-p', |
52 | | :type => :integer) |
53 | | app.defProperty('udp', 'use UDP rather than TCP', '-u', |
54 | | :type => :boolean, |
55 | | :order => 2) |
56 | | app.defProperty('window', 'TCP window size (socket buffer size)', '-w', |
57 | | :type => :integer, :unit => "Bytes") |
58 | | app.defProperty('bind', 'bind to <host>, an interface or multicast address', '-B', |
59 | | :type => :string) |
60 | | app.defProperty('compatibility', 'for use with older versions does not sent extra msgs', '-C', |
61 | | :type => :boolean) |
62 | | app.defProperty('mss', 'set TCP maximum segment size (MTU - 40 bytes)', '-M', |
63 | | :type => :integer, :unit => "Bytes") |
64 | | app.defProperty('nodelay', 'set TCP no delay, disabling Nagle\'s Algorithm', '-N', |
65 | | :type => :boolean) |
66 | | app.defProperty('IPv6Version', 'set the domain to IPv6', '-V', |
67 | | :type => :boolean) |
68 | | app.defProperty('reportexclude', 'exclude C(connection) D(data) M(multicast) S(settings) V(server) reports', '-x', |
69 | | :type => :string, :unit => "[CDMSV]") |
70 | | app.defProperty('reportstyle', 'C or c for CSV report, O or o for OML', '-y', |
71 | | :type => :string, :unit => "[CcOo]", :default => "o") # Use OML reporting by default |
72 | | |
73 | | app.defProperty('server', 'run in server mode', '-s', |
74 | | :type => :boolean) |
75 | | |
76 | | app.defProperty('bandwidth', 'set target bandwidth to n bits/sec (default 1 Mbit/sec)', '-b', |
77 | | :type => :string, :unit => "Mbps") |
78 | | app.defProperty('client', 'run in client mode, connecting to <host>', '-c', |
79 | | :type => :string, |
80 | | :order => 1) |
81 | | app.defProperty('dualtest', 'do a bidirectional test simultaneously', '-d', |
82 | | :type => :boolean) |
83 | | app.defProperty('num', 'number of bytes to transmit (instead of -t)', '-n', |
84 | | :type => :integer, :unit => "Bytes") |
85 | | app.defProperty('tradeoff', 'do a bidirectional test individually', '-r', |
86 | | :type => :boolean) |
87 | | app.defProperty('time', 'time in seconds to transmit for (default 10 secs)', '-t', |
88 | | :type => :integer, :unit => "seconds") |
89 | | app.defProperty('fileinput', 'input the data to be transmitted from a file', '-F', |
90 | | :type => :string) |
91 | | app.defProperty('stdin', 'input the data to be transmitted from stdin', '-I', |
92 | | :type => :boolean) |
93 | | app.defProperty('listenport', 'port to recieve bidirectional tests back on', '-L', |
94 | | :type => :integer) |
95 | | app.defProperty('parallel', 'number of parallel client threads to run', '-P', |
96 | | :type => :integer) |
97 | | app.defProperty('ttl', 'time-to-live, for multicast (default 1)', '-T', |
98 | | :type => :integer, |
99 | | :default => 1) |
100 | | app.defProperty('linux_congestion', 'set TCP congestion control algorithm (Linux only)', '-Z', |
101 | | :type => :boolean) |
102 | | |
103 | | app.defMeasurement("application"){ |m| |
104 | | m.defMetric('pid', :integer) |
105 | | m.defMetric('version', :string) |
106 | | m.defMetric('cmdline', :string) |
107 | | m.defMetric('starttime_s', :integer) |
108 | | m.defMetric('starttime_us', :integer) |
109 | | } |
110 | | |
111 | | app.defMeasurement("settings"){ |m| |
112 | | m.defMetric('pid', :integer) |
113 | | m.defMetric('server_mode', :integer) |
114 | | m.defMetric('bind_address', :string) |
115 | | m.defMetric('multicast', :integer) |
116 | | m.defMetric('multicast_ttl', :integer) |
117 | | m.defMetric('transport_protocol', :integer) |
118 | | m.defMetric('window_size', :integer) |
119 | | m.defMetric('buffer_size', :integer) |
120 | | } |
121 | | |
122 | | app.defMeasurement("connection"){ |m| |
123 | | m.defMetric('pid', :integer) |
124 | | m.defMetric('connection_id', :integer) |
125 | | m.defMetric('local_address', :string) |
126 | | m.defMetric('local_port', :integer) |
127 | | m.defMetric('remote_address', :string) |
128 | | m.defMetric('remote_port', :integer) |
129 | | } |
130 | | |
131 | | app.defMeasurement("transfer"){ |m| |
132 | | m.defMetric('pid', :integer) |
133 | | m.defMetric('connection_id', :integer) |
134 | | m.defMetric('begin_interval', :double) |
135 | | m.defMetric('end_interval', :double) |
136 | | m.defMetric('size', :uint64) |
137 | | } |
138 | | |
139 | | app.defMeasurement("losses"){ |m| |
140 | | m.defMetric('pid', :integer) |
141 | | m.defMetric('connection_id', :integer) |
142 | | m.defMetric('begin_interval', :double) |
143 | | m.defMetric('end_interval', :double) |
144 | | m.defMetric('total_datagrams', :integer) |
145 | | m.defMetric('lost_datagrams', :integer) |
146 | | } |
147 | | |
148 | | app.defMeasurement("jitter"){ |m| |
149 | | m.defMetric('pid', :integer) |
150 | | m.defMetric('connection_id', :integer) |
151 | | m.defMetric('begin_interval', :double) |
152 | | m.defMetric('end_interval', :double) |
153 | | m.defMetric('jitter', :double) |
154 | | } |
155 | | |
156 | | app.defMeasurement("packets"){ |m| |
157 | | m.defMetric('pid', :integer) |
158 | | m.defMetric('connection_id', :integer) |
159 | | m.defMetric('packet_id', :integer) |
160 | | m.defMetric('packet_size', :integer) |
161 | | m.defMetric('packet_time_s', :integer) |
162 | | m.defMetric('packet_time_us', :integer) |
163 | | m.defMetric('packet_sent_time_s', :integer) |
164 | | m.defMetric('packet_sent_time_us', :integer) |
165 | | } |
166 | | |
| 20 | defApplication('clean_iperf') do |app| |
| 21 | app.description = 'Some commands to ensure that we start with a clean slate' |
| 22 | app.binary_path = '/usr/bin/killall -s9 iperf; ' |
| 23 | app.quiet = true |
178 | | |
179 | | defGroup('Sender',property.theSender) do |node| |
180 | | node.addApplication("iperf") do |app| |
181 | | #app.setProperty('interval',property.setinterval) |
182 | | app.setProperty('client',property.serverip) |
183 | | app.setProperty('tradeoff',true) |
184 | | app.setProperty('parallel', 5) |
185 | | app.setProperty('time',30) |
186 | | app.setProperty('port',6001) |
187 | | #app.setProperty('bandwidth',property.setbandwidth) |
188 | | app.measure('transfer', :samples => 1) |
189 | | end |
190 | | |
191 | | end |
192 | | |
193 | | defGroup('Sender1',property.theSender) do |node| |
194 | | node.addApplication("iperf") do |app| |
195 | | #app.setProperty('interval',property.setinterval) |
196 | | app.setProperty('client',property.serverip) |
197 | | app.setProperty('tradeoff',true) |
198 | | app.setProperty('parallel', 2) |
199 | | app.setProperty('time',30) |
200 | | app.setProperty('port',6001) |
201 | | #app.setProperty('bandwidth',property.setbandwidth) |
202 | | app.measure('transfer', :samples => 1) |
203 | | end |
204 | | |
205 | | end |
206 | | defGroup('Monitor1', property.theSwitch) do |node| |
207 | | node.addApplication("trace") do |app| |
208 | | app.setProperty("interface", property.left) |
209 | | app.setProperty("filter", 'tcp') |
210 | | app.measure("tcp", :samples => 1) |
211 | | end |
212 | | end |
213 | | defGroup('Monitor', property.theSwitch) do |node| |
214 | | node.addApplication("trace") do |app| |
215 | | app.setProperty("interface", property.right) |
216 | | app.setProperty("filter", 'tcp') |
217 | | app.measure("tcp", :samples => 1) |
| 35 | defApplication('ofstats') do |app| |
| 36 | app.description = 'Simple Definition for the of-collect application' |
| 37 | # Define the path to the binary executable for this application |
| 38 | app.binary_path = '/usr/local/bin/ofcollect.rb' |
| 39 | app.defProperty('target', 'Address to output file', '-f', {:type => :string}) |
| 40 | app.defProperty("interval","Interval",'-i', {:type => :string}) |
| 41 | app.defMeasurement('wrapper_ofthroughput') do |m| |
| 42 | m.defMetric('pathtype', :string) |
| 43 | m.defMetric('throughput',:int64) |
| 44 | m.defMetric('avgperflow',:int64) |