1. INTRODUCTION qosplot is a tool that takes as input a set of text log files created by CRUDE [1] and produces as output the data and command files for gnuplot [2], to plot diagrams depicting the following QoS characteristics as they change in time: packet loss rate throughput delay delay variation distribution of delay distribution of delay variation qosplot also produces an HTML table with the summary of aggregated QoS characteristics (e.g., average and maximum delay, etc.) including packet reordering. QoS characteristics can be computed and plotted for all or for selected streams in input files, with specified time granularity, for the selected time range and with individual streams shifted in time or adjusted by multiplying factors. 2. HOW TO COMPILE cc qosplot.c -o qosplot -lm 3. HOW TO USE On the sending machine: crude -p 2000 -l crude.log On the receiving machine: rude -s rude.conf On any machine where crude.log is stored (normally the receiving machine): crude -d crude.log > crude.txt qosplot [ switches ... ] crude.txt ... gnuplot gnuplot.commands open index.html in your favourite web browser optional qosplot switches: --streams="f/s f/s1-s2 f1-f2/s f1-f2/s1-s3" Selects streams in input files whose QoS characteristics will be computed. Default is all streams in all input files. Streams are specified as a series of space separated words. Each word is in the form: a file number (starting from 0, refering to filenames on the command line from left to right), followed by a slash, followed by a stream ID (contained in input log files). A range of file numbers or a range of stream IDs can be given instead of a single value. --xStart=seconds Specifies the start time of the period where QoS characteristics will be computed refering to the time when the first packet in input files arrived. For example, if --xStart=5, then packets received within the first 5 seconds after the first packet will be skipped and only the following packets will be processed. Default is --xStart=0, that is processing starts with the first packet. --xStop=seconds Specifies the end time of the period where QoS characteristics will be computed refering to the time when the first packet in input files arrived. For example, if --xStop=15, then packets received later than 15 seconds after the first packet will be skipped and only the preceeding packets will be processed. Default is --xStop=10, that is processing ends 10 seconds after the first packet. --xStep=seconds Specifies time granularity for computing QoS characteristics. For example, if --xStep=0.01, then loss rate, throughput and other QoS characteristics will be computed for every 0.01 second. Default is --xStep=0.1. --xFactor{0-15}=n Specifies how each of the processed streams is to be shifted in time. For example, if --xFactor0=-10 and --xFactor1=-20 then transmission and reception time of packets of the first and second streams (as specified by --streams or the streams whose packets were received first and second if --streams is not specified) will be decremented by 10 and 20 seconds, respectively. Shifting of streams in time is done before the period specified by --xStart and --xStop options is applied. By default --xFactor=0 for all streams. --yFactor{0-15}=n Specifies how throughput of each of the processed streams is to be multiplied. For example, if yFactor0 is set to 1.2 and throughput of the first stream is computed as 10 Mb/s, it will be changed to 12 Mb/s. This option can be used to convert throughput from the IP layer to another layer (e.g., to the Ethernet link layer). By default, --yFactor=1 for all streams. -t Transmission: use transmission time rather than reception time (which is default) on x axis. -a Average: compute average delay rather than maximum delay (which is default) per each measurement interval as specified by --xStep. -d Debug: print debugging information about packet processing -s Silent: do not print informational messages about processing progress -l Line: print one line summary consisting of date and time of the beginning of measurememt and all fields from table.html file in one line. Usually used with -s switch. Suitable for processing a set of files produces during long measurement. Seconds and factors are specified as integer or floating point numbers. 4. FILES README This file qosplot.c Source code qosplot Executable for Linux on Intel processors. c Script to compile qosplot.c index.html HTML file which includes all diagrams produced by gnuplot gnuplot.commands2 Main command file for gnuplot, it is parameterized by gnuplot.command produced by qosplot. If you want to change appearance of resulting diagrams, edit this file. example Directory containing an example log file produced by CRUDE, data, command and summary files produced by qosplot and diagrams produced by gnuplot: crude.log example log file produced by CRUDE gnuplot.data example data file produced by qosplot gnuplot.commands example command file produced by qosplot, this file is actually very simple, it just calls gnuplot.commands2 file and passes some parameters to it table.html summary file produced by qosplot *.png, *.eps example diagrams of QoS characteristics plotted by gnuplot 5. EXAMPLES qosplot crude.txt Processes all streams in crude.txt and computes QoS characteristics for the range of 0-10 seconds with time granularity 0.1 second. qosplot --xStart=5 --xStop=15 --xFactor0=-20 --xFactor2=-40 --xStep=0.04 --streams="0/30 1/33-34" crude1.txt crude2.txt Processes stream 30 in file crude1.txt and streams 33 and 34 in file crude2.txt. Shifts stream 30 in file crude1.txt -20 seconds and shifts stream 34 in file crude2.txt -40 seconds. Computes QoS characteristics for the period of 5-15 seconds with time granularity 0.04 second. 6. AUTHORS qosplot - Sven Ubik , http://www.cesnet.cz/english/project/qosip [1] RUDE/CRUDE - Juha Laine, Sampo Saaristo, http://www.atm.tut.fi/rude/ [2] gnuplot - Thomas Williams, Colin Kelley et al., http://www.gnuplot.org Copyright 2001-2004 Cesnet. 7. MODIFICATION HISTORY Version 0.46, May 13, 2004 Added computing of packet reordering. Version 0.45, March 21, 2002 Added -s switch and -l switch. Version 0.44, February 12, 2002 Uses reception time by default on x axis instead of transmission time, -r switch was replaced by -t switch. Some cleanup of code and README file. Version 0.43, January 28, 2002 Added -a switch to compute average delay rather than maximum delay (which is default) per each measurement interval as specified by --xStep. Version 0.42, January 22, 2002 Three small bugs resolved, owing to the patch from Simon Lein Version 0.41, January 15, 2002 Delay diagram plots maximum delay for individual time steps (rather than average delay as in previous versions). IPDV diagram plots either maximum or minimum IPDV for individual time steps (rather than average IPDV as in previous versions). Minimum IPDV is indicated (instead of maximum), when its absolute value is higher than absolute value of maximum IPDV. Version 0.4, September 14, 2001: Resolved bug causing incorrect values of certain summary variables in table.html.