Orbit Management, Control & Measurement Framework (OMF) Max Ott NICTA
Max Ott © NICTA Introduction Experiments are primarily about collecting measurements … Lots of them. How to collect them efficiently in a distributed environment like ORBIT? How to collect them centrally & in real- time –to allow dynamic steering of experiments –to minimize collection overhead after end of experiment Introduction
Max Ott © NICTA Common Data Model OMF - User View Experimental Platform(s) Results Experiment Description Control Measure Deploy & Configure
Max Ott © NICTA defGroup('sources') do |node| node.prototype("test:proto:sender2", 'destinationHost' => node('recv0').net.w0.ip ) end... Defining the Experiment
Max Ott © NICTA defPrototype("test:proto:sender2") do |p| p.defProperty('destinationHost', 'Host to send packets to')... p.addApplication("test:app:otg") do |otg| otg.bindProperty('dsthostname', 'destinationHost')... otg.measure('senderport', :samples => 10) do |m| m.addMetric(“pkt_size”).filter(“avg”) end Defining What SHOULD Be Collected
Max Ott © NICTA defApplication('test:app:otg', 'otg') do |a| a.version(1, 1, 2) a.shortDescription "Programmable traffic generator"... a.defMP("senderport") do |m| m.defMetric('pkt_seqno', 'long', 'Sequence nu..') m.defMetric('pkt_size', 'long', 'Size of packet in bytes')... do Defining What CAN Be Collected
Max Ott © NICTA Automatic Database Schema sqlite>.schema CREATE TABLE sources_otg_senderport ( oml_sender_id INTEGER, oml_seq INTEGER, oml_ts REAL, pkt_size_avg INTEGER, pkt_size_min INTEGER, pkt_size_max INTEGER);
Max Ott © NICTA Analyze function nsf(dbServer, dbUser, dbPW, database); % Part where we retrieve data from the database; mysql('open',dbServer, dbUser, dbPW); mysql('use', database); output = struct('time',[],'thr_all',[],'node',[]); [output.time, output.thr_all, output.node] = mysql('select timestamp, throughput, node_id from group2'); [thru1_4, time1_4, thru3_1, time3_1] = sort_mysql(output); % Finally, the plotting part subplot(2,1,1); plot(time1_4, thru1_4, '-*'); title('Throughput On Obstructed Link'); xlabel('Time (sec)'); ylabel('Throuhput (bps)'); grid on; subplot(2,1,2); plot(time3_1, thru3_1, '-*'); title('Throughput On Monitor Node'); xlabel('Time (sec)'); ylabel('Throuhput (bps)'); grid on;
Max Ott © NICTA Conclusions OML is a generic, scalable and flexible framework for the collection of measurements Reduces the burden of experimenter –Easy to collect data –Supports real-time filtering to reduce collection size Reduces the burden of application developer –Simple API to report measurement In daily use Usable OUTSIDE Orbit