Current release version : 2.0.7 - updates for CADDY2
We kindly ask that should you mention goDASH or goDASHbed, or use our code, in your publication, that you would reference the following papers:
D. Raca, M. Manifacier, and J.J. Quinlan. goDASH - GO accelerated HAS framework for rapid prototyping. 12th International Conference on Quality of Multimedia Experience (QoMEX), Athlone, Ireland. 26th to 28th May, 2020 CORA
John O’Sullivan, D. Raca, and Jason J. Quinlan. Demo Paper: godash 2.0 - The Next Evolution of HAS Evaluation. 21st IEEE International Symposium On A World Of Wireless, Mobile And Multimedia Networks (IEEE WoWMoM 2020), Cork, Ireland. August 31 to September 03, 2020 CORA
With the release of version 2.0.5, we are also releasing amd64 docker containers for both goDASH or goDASHbed.
An arm64 version of goDASH is also available.
In the coming weeks/months/years we will also release a network build script, so as to permit a full evaluation of DASH algorithms and associated TCP and QUIC transport protocols within a Docker test framework.
GoDASHbed is a highly customizable framework for realistic large scale experimentation with two different types of supported traffic:
-- Video: HTTP Adaptive Streaming traffic with support for two transportation modes TCP and QUIC
-- VoIP: Realistic VoIP traffic generation (through D-ITG traffic generator[1])
In collaboration with godash, goDASHbed provides a framework for HAS video analysis.
Requirements:
To use the hypercorn webserver, you need to install trio, quart, quart_trio and hypercorn, type python3.10 -m pip install trio
in terminal, replacing python3.10
with the version of python3 you are using, and trio
with the git repo you want to install.
Version 2.0 of goDASHbed
is a major write of the code, and versions of goDASHbed
from version 2.0 onwards will only work with versions of godash
from version 2.0 onwards. If you are using a version 1 release of godash
, please use a version 1 release of goDASHbed
.
The easiest way to install goDASHbed is to use the install script available at the UCC Mobile and Internet System Lab MISL
After goDASHbed has been installed, follow these steps for all required dependencies
download dash content to <content_folder>
, using the get_your_movies.sh
bash script.
Then move the content to your system web folder
sudo mv <content_folder> /var/www/html
Then change the user permissions on this web folder
sudo adduser $USER www-data
sudo chown $USER:www-data -R /var/www
sudo chmod u=rwX,g=srX,o=rX -R /var/www
update the url lists in urls/mpdURL.py
and in urls/mpdURLquic.py
to reflect the content downloaded
/var/www/html/<folder> -> "http://www.godashbed.org/<folder>"
You may also need to update the configure.json
file in goDASHbed/config, and change url to point to the content downloaded
The clients will randomly choose one URL from the urls/mpdURL.py
or urls/mpdURLquic.py
file (depending on TCP/QUIC).
if using tcp with https - change http to https in the configure.json file
If you did not use the install script:
to use HTTPS in goDASHbed, you need to modify the following files:
goDASHbed/caddy-config/TesbedTCP/CaddyFilev2TCP
goDASHbed/caddy-config/TesbedTCP/CaddyFilev2QUIC
change the following line:
tls <godash folder location>/godash/http/certs/cert.pem <godash folder location>/godash/http/certs/key.pem
add the folder location that you downloaded goDASH to.
Easiest way to find this location, is to open the folder that you added godash
to, then open a terminal, type pwd
and the reply is the folder location. Add this output text into the CaddyfileCaddyFilev2TCP
and CaddyFilev2QUIC
replacing <godash folder location>
as shown above.
./goDASHbed --help
Flags for goDASHbed:
-h, --help Show this help message and exit
--bw-net, -b Bandwidth of bottleneck link - required parameter
--delay Delay in milliseconds of bottleneck link (default 40ms)
--numruns Number of times experiment will be repeated (default 1)
Based on number of trace files in the 'traces' folder
--voipclients Number of voip clients (default 0)
--videoclients Number of video clients (default 0)
--tm Transport mode (TCP - HTTP/HTTPS or QUIC - HTTPS)
--duration Duration of experiment (in seconds.) (default 0s)
--bwKPI Name of the column indicating throughput (default="DL_bitrate")
--debug Print output of goDASH to the log file (default 'on')
--terminalPrint Print output of goDASH to the terminal screen (default 'on')
--server Choice of Web server - WSGI (Caddy - TCP/QUIC) or ASGI (Hypercorn - TCP/QUIC)
--collaborative Run the evaluation in collaborative mode, and share content between the clients (based only on client requests)
--cli Turns on mininet command line interface and stops web-servers from running - permitting the user to run the server and clients via terminal windows directly in mininet (default 'off')
run godashbed on a 10Mbit link with 3 video clients for 40 seconds, with 1 VOIP client, with no debug or terminal print outs, once for each trace in the 'traces' folder, using TCP as the transport mode and the ASGI Hypercorn/QuartTrio Server, without collaborative streaming
sudo python3 ./goDashBed.py -b 10 --videoclients 3 --duration 40 --voipclients 1 --debug "off" --numruns 1 --tm "tcp" --terminalPrint "off" --server "ASGI" --collaborative "off" --cli "off"
run godashbed on a 10Mbit link with 3 video clients for 40 seconds, with 1 VOIP client, with debug or terminal print outs, once for each trace in the 'traces' folder, using QUIC as the transport mode and the WSGI Caddy Server, with collaborative streaming
sudo python3 ./goDashBed.py -b 10 --videoclients 3 --duration 40 --voipclients 1 --debug "on" --numruns 1 --tm "quic" --terminalPrint "on" --server "WSGI" --collaborative "on" --cli "off"