Changes between Initial Version and Version 1 of Documentation/OtherApps/DITG


Ignore:
Timestamp:
Oct 8, 2005, 6:19:20 PM (19 years ago)
Author:
Surya Satyavolu
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/OtherApps/DITG

    v1 v1  
     1[wiki:WikiStart Orbit] > [wiki:Documentation/OtherApps Other Applications] > Integrating D-ITG with ORBIT
     2
     3{{{
     4#!rst
     5==================
     6D-ITG Integration
     7==================
     8
     9This document covers the general details of integrating sample applications with the ORBIT tesbed setup. A specific example (D-ITG) is chosen as a candidate application and the steps are described in the document. The readers are referred to the ORBIT architecture document for the individual software component details.
     10
     11To summarize, nodeHandler is the experiment controller software that is used to choreograph the experiment. It is used to power on, initialize interfaces, launch the applications simultaneously on the nodes involved in the experiment, as well as create databases consistent with the measurements for that particular experiment.
     12
     13OML (ORBIT Measurement Library) is used to collect measurements at run-time from the nodes. It consists of an OML-client on the nodes and the collection server on the experiment controller machine that is used to collect the measurements sent by the clients and insert into appropriate columns of the database.
     14
     15Integrating a new application with this setup mainly consists of the following steps
     16
     17
     18
     19.. contents::
     20.. sectnum::
     21
     22-----
     23
     24
     25
     26
     27Integrating with measurement collection
     28========================================
     29In order to initiate measurement collection using OML, the following steps need to be taken
     30
     31Identifying the measurements reported by Iperf
     32------------------------------------------------
     33
     34The first step is to identify what are the measurements reported by the application and finding the right files in the source code corresponding to these measurement reports. For D-ITG, the statistics for UDP (and TCP?!) are throughput, packet loss, delay and jitter
     35
     36For ITG, this was traced to the file ITGDec/ITGDecod.cpp
     37
     38         
     39Create the application definition XML file
     40--------------------------------------------
     41
     42The application definition file for Iperf is defined to capture the outputs that the program reports. This file is later used to auto-generate OML library and headers for this application. The following application definition file has been written for D-ITG(using a subset of command line inputs)
     43
     44[wiki:Documentation/OtherApps/Iperf/ITGAppDefXML ITG Application Definition Schema]
     45
     46Verify that the XML file is syntactically correct by correct by checking if it opens correctly in an XML enabled browser (IE or Mozilla)
     47
     48Creating OML shared library and headers for Iperf
     49---------------------------------------------------
     50
     51After defining the application definition file as above, use the following command to submit the application definition file to a wrapper utility
     52
     53'''wget -q http://www.orbit-lab.org/oml/client_wrapper --post-file <app-def.xml>'''
     54
     55In response to the <app-def>.xml file, the OML application service returns a tar file containing:  oml_<app-def>.h  and liboml_<app-def>.a.
     56
     57Iperf is then compiled against this library.
     58
     59Include header files and function calls in source code
     60--------------------------------------------------------
     61
     62The statistics reports are generated by the application, ITGDec and hence we modify the file ITGDec/ITGDecod.cpp to include the following
     63
     64 ''#include oml_orbit_winlab_itg.h''
     65
     66  ''initialize_oml(&argc, argv, NULL)''
     67
     68   and add the function call as follows to report collected measurements
     69
     70  ''oml_receiverport((int)flow_no,(int)src_port, (int)dst_port, (float) throughput,  (float) jitter, (float)delay, (float)pkt_loss)''
     71
     72Note that the src port and dst port help to distinguish between two different flows at the receiver
     73
     74Modify Makefile and build application
     75---------------------------------------
     76
     77Linker options: -loml_client -lomltx
     78   
     79LDFLAGS = -L/usr/lib/ -Lpath_to/liboml_orbit_winlab_itg.a
     80
     81The oml client package with the required libraries can be obtained from the orbit repository (apt-get oml-client). It will install oml-client and oml_transport libraries in /usr/lib/
     82
     83Note that the OML client is already present on the nodes (so the second step can be ignored)
     84
     85Now, ITG can be rebuilt using the Makefile.
     86
     87Miscellaneous
     88---------------
     89Note that the application will need the following environment variables to be set
     90
     91'''LD_LIBRARY_PATH = /usr/lib/'''
     92'''OML_NAME=<node-id>'''
     93'''OML_CONFIG=<OML configuration file>'''
     94
     95All these variables are set automatically when the experiment is run using the nodeHandler.
     96
     97
     98
     99Integrating with Nodehandler – Launching the application
     100==========================================================
     101
     102This section includes the details of how to integrate ITG with the experiment controller (nodeHandler) so that it can be launched on all the nodes involved in the experiment.
     103
     104Create application definitions for ITG sender and receiver
     105------------------------------------------------------------
     106The following two sample files for Iperf sender and receiver show the details of how to create definitions for any application. The definition mainly contains the command line options that can be set during launching the application as well as the output statistics reported by the application
     107
     108ITG Sender
     109--------------
     110[wiki:Documentation/OtherApps/ITG/ITGSender ITG Sender Application Script]
     111
     112
     113ITG Receiver
     114-----------------
     115[wiki:Documentation/OtherApps/ITG/ITGReceiver ITG Receiver Application Script]
     116
     117
     118Create prototypes using previously defined applications
     119----------------------------------------------------------
     120Using the previously defined ITG client and server application definitions, the next step is to create prototypes that use these applications. Each of these will use ITG as the underlying application; however their properties can be customized as shown below 
     121
     122ITG CBR Sender
     123------------------
     124[wiki:Documentation/OtherApps/ITG/ITGCBRSender ITG CBR Sender Prototype Script]
     125
     126ITG CBR Receiver
     127--------------------
     128[wiki:Documentation/OtherApps/ITG/ITGCBRReceiver ITG CBR Receiver Prototype Script]
     129
     130ITG CBR Decoder
     131--------------------
     132[wiki:Documentation/OtherApps/ITG/ITGCBRDecoder ITG CBR Decoder Prototype Script]
     133
     134
     135Write experiment script using the previously defined application and prototype definitions
     136---------------------------------------------------------------------------------------------
     137The final step is to write the actual experiment script as shown below
     138
     139Experiment Script
     140-------------------
     141[wiki:Documentation/OtherApps/Iperf/ExperimentScript Experiment Script]
     142
     143Parameters and statistics supported
     144=======================================
     145Sender Side
     146--------------
     147 * Measurement type (one-way delay or RTT
     148 * Receiver port
     149 * Protocol type (TCP or UDP)
     150 * TTL
     151 * Duration of traffic generation
     152
     153Traffic Generation Parameters
     154------------------------------
     155 * Constant interarrival b/w packets
     156 * Exponential distribution
     157 * Poisson distribution
     158
     159Packet Size Options
     160------------------------------
     161 * Constant Payload Size
     162 * Exponential distribution
     163 * Poisson distribution
     164
     165Application Level Options
     166------------------------------
     167Usage: To select VoIP use ./ITGSend –a <recvIP> -i <codec> -h <transport>
     168 * VoIP (different codec-types:G.711.1, G.711.2, G.723.1, G.729.2, G.729.3)
     169 * Control (RTP or CRTP)
     170
     171 
     172Receiver Side
     173--------------
     174 * Log file to store measurements
     175
     176Decoder
     177----------
     178The decoder basically extracts the log file and reports information to OML server. It takes the following options
     179
     180 * Jitter report interval
     181 * Throughput report interval
     182 * Packet loss report interval
     183 * Delay report interval
     184 * Log file used by receiver
     185
     186Statistics Reported
     187-----------------------
     188Note that the delay measurements depend on the synchronization between the two nodes (resolution of NTP, for now)
     189 * Throughput (UDP and TCP)
     190 * Average Jitter (UDP and TCP)
     191 * Packet loss (UDP and TCP)
     192 * Average One- way delay (UDP and TCP)
     193 * RSSI (UDP)
     194 * Phy Rate (UDP)
     195
     196
     197
     198 
     199}}}