TEACUP-DASH-0.2 README (5 APRIL 2017) ===================================== Introduction ------------ This is a README for using DASH traffic generator under TEACUP testbed. The DASH traffic generator patch is generated relative to TEACUP revision 3b0862 on the default branch on Sourceforge for running DASH experiments using dash.js version 2.4.1. This README provides a brief overview on how to apply the patch and setup DASH experiments. It ONLY discusses the most commonly used config options. For more details on how to use setup DASH experiments and the design of TEACUP DASH traffic generators, please refer to the technical report: http://caia.swin.edu.au/reports/161216A/CAIA-TR-161216A.pdf For more details on how to setup experiments and the design of TEACUP please refer to the technical report: http://caia.swin.edu.au/reports/150529A/CAIA-TR-150529A.pdf For more details on how to analyse the data collected during experiments please refer to the technical report: http://caia.swin.edu.au/reports/150529B/CAIA-TR-150529B.pdf There also is a technical report that provides a command reference for all tasks TEACUP provides: http://caia.swin.edu.au/reports/150529C/CAIA-TR-150529C.pdf Background ---------- Required packages: DASH clients: Xorg, Chromium, Firefox This patch is tested to work with Chromium version 46.0.2490.86 and Firefox version 47.0.1 DASH servers: No additional packages are required. Sample DASH dataset can be downloaded from http://www-itec.uni-klu.ac.at/ftp/datasets/DASHDataset2014/BigBuckBunny/ DASH player: dash.js player source code can be placed on either the control host or any experiment host. Source code can be downloaded from https://github.com/Dash-Industry-Forum/dash.js/ This patch is tested to work with dash.js version 2.4.1 (https://github.com/Dash-Industry-Forum/dash.js/tree/v2.4.1) Applying the patch ------------------ 1. Download TEACUP revision 3b0862 from sourceforge repository > hg clone -r 3b0862 http://hg.code.sf.net/p/teacup/code teacup-code 2. Extract the patch into TEACUP directory > tar -xvf teacup-dash-patch-0.2.tgz -C teacup-code 3. Apply patch > cd teacup-code > patch -p1 < teacup-dash-patch-0.2/teacup-dash-0.2.patch Using DASH traffic generator ---------------------------- The DASH traffic generator, like other TEACUP traffic generators, allows users to specify the DASH client and servers using IP addresses or hostnames. Users can specify the video chunk sizes and corresponding MPDs for different parameter permutations. Users should supply the DASH client, server, server port, video chunk size, MPD and dash.js player path, to start_dash_streaming_dashjs, otherwise TEACUP will abort. Make sure the following TPCONF variables are set in config.py, for example: # Video chunk size and MPD pair TPCONF_chunksize_mpd = [ ('10','BigBuckBunny_10s.mpd'), ] TPCONF_parameter_list = { # Vary name V_ variable file name values extra vars [...omitted...] 'chunksize_mpd' : (['V_chunksize','V_mpd'], ['chunksize','mpd'], TPCONF_chunksize_mpd, {}), } TPCONF_variable_defaults = { # V_ variable value [...omitted...] 'V_chunksize' : TPCONF_chunksize_mpd[0][0], 'V_mpd' : TPCONF_chunksize_mpd[0][1], } # Actual parameters to iterate across TPCONF_vary_parameters = ['chunksize_mpd',] # Generating DASH streaming traffic traffic_dash_streaming = [ ( '0.0', '1', " start_http_server, server='newtcp33', port='8000', docroot='/data/dash_dataset' "), ( '0.1', '2', " start_dash_streaming_dashjs, client='newtcp20', serv='newtcp33', serv_port='8000', browser='firefox', chunk_size=V_chunksize, mpd=V_mpd, player_path='136.186.229.181:8080/dashjs-v2.4.1/samples/dash-if-reference-player', duration=V_duration " ), ] TPCONF_traffic_gens = traffic_dash_streaming Analysing DASH traffic ---------------------- No changes have been made to TEACUP analysis fabric tasks. Users can use the existing fabric tasks to analyse DASH traffic. Eg. Analysing cwnd, spprtt, tcprtt, throughput, ACK sequence number: > fab analyse_all:test_id=,out_dir="./results",pdf_dir="./pdfs",source_filter="S_172.16.11.73_8000" > fab analyse_ackseq:test_id=,out_dir="./results",pdf_dir="./pdfs",source_filter="D_172.16.11.73_8000" COPYRIGHT --------- Copyright (c) 2017 Internet For Things (I4T) Research Laboratory, Swinburne University of Technology. All rights reserved. Author: Jonathan Kua (jtkua@swin.edu.au) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.