This repository contains the necessary artifacts to reproduce the findings of the NOSSDAV 2023 paper submission "Cross that boundary: Investigating the feasibility of cross-layer information sharing for enhancing ABR decision logic over QUIC" by Herbots and Verstraete et al.
The instructions below are to reproduce our findings using the Vegvisir QUIC-HTTP/3 testing framework.
cross-layer-implementation
contains our adjusted quic-go
and GoDASH
implementationstc-netem-shaper
contains the network simulation script to be used as the shaper in Vegvisirpaper-utilities
contains utility scripts for Vegvisir and for preparing datasetspaper-logs
contains the logs, metrics and graphs produced by the test setup that were used in the paper
godashcl-{ABR algorithm}-{dataset}-{segment size}__tc-netem-cl-paper__quic-go
ABR algorithm
matches with the paper algorithm names bba2, bba2-cl and bba2-cl-doubledataset
is either bbb for "Big Buck Bunny", ed for "Elephants Dream" or ofm for "Of Forests and Men"segment size
is either 2s, 4s or 6sclient
, shaper
and server
containing logs pertaining to that respective entity Setting up the testing framework
root
root
vegvisir
foldervenv
apt install python-is-python3 python3.10-venv
pip install numpy matplotlib
root
and clone this repository git clone https://github.com/EDM-Research/cross-that-boundary-mmsys23-nossdav.git paper
paper/cross-layer-implementation
and create a Docker image using the provided Dockerfile: docker build -t godashcl .
paper/tc-netem-shaper
and create a Docker image using the provided Dockerfile: docker build -t tc-netem-cl .
root/paper/paper-utilities/vegvisir-scripts/
to root/vegvisir/vegvisir/environments
, overwrite existing filesroot/paper/paper-utilities/segmentGraph.py
to root/vegvisir/util/
root/vegvisir/util/
and clone the ITU-p1203 standalone implementation: git clone https://github.com/itu-p1203/itu-p1203.git
itu-p1203
folder and install the implementation with pip install .
root/paper/paper-utilities/vegvisir-configurations/
to root/vegvisir
/etc/sysctl.conf
and reload the configuration with sudo sysctl --system
Preparing the dataset
This paper makes use of the MPEG-DASH dataset provided by Lederer et al.
root/
and create an empty folder called datasets
, then navigate into root/datasets/
BigBuckBunny
, OfForestAndMen
and ElephantsDream
wget --recursive --no-parent --reject="*index.html*" -nc -l 20 --continue {URL}
):
BigBuckBunny
, OfForestAndMen
and ElephantsDream
(e.g., BigBuckBunny/2sec/...
, BigBuckBunny/4sec/...
and BigBuckBunny/6sec/...
)root/paper/paper-utilities
Convert_to_BBA2.py
script
python Convert_to_BBA2.py /full/path/to/simple.mpd
produces MPDs compatible with our BBA2, BBA2-CL and BBA2-CLDouble ABR algorithmspython Convert_to_BBA2.py root/datasets/BigBuckBunny/2sec/BigBuckBunny_2s_simple_2014_05_09.mpd
root/datasets
and execute pwd
to retrieve the full path to this folder, copy this in your clipboardroot/vegvisir/paper_experiment_full.json
and paste the copied path in the settings > www_dir
JSON key (bottom of file) Run the experiment
root/vegvisir
, make sure the virtual environment is enabledpython -m vegvisir run paper_experiment_full.json
root/vegvisir/logs/cross_layer_paper/{datetime of run}
paper-logs
explained in the section above.Convenience script
Checking every testcase folder individually is cumbersome and it makes comparing results difficult. As such we have provided a small convenience HTML page that autoloads the graphs produced by the above experiment and displays them on a grid.
Note: This script only displays graphs for the above mentioned datasets. If you want to display other datasets/test setups, please change the script accordingly.
root/paper/paper-utilities/visualize_ouput.html
file to root/vegvisir/logs/
root/vegvisir/logs/
and perform python -m http.server