dofp-plus
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.2%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: cd-athena
- License: other
- Language: C
- Default Branch: master
- Size: 250 MB
Statistics
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
DoFP+ ABR Algorithm README
Description
This is a fork of LSQUIC where we implemented DoFP+ ABR algorithm in QUIC and HTTP/3.
Requirements
To build LSQUIC, you need CMake, zlib, Gurobi and BoringSSL. The example program uses libevent to provide the event loop.
Building BoringSSL
BoringSSL is not packaged; you have to build it yourself. The process is
straightforward. You will need go installed.
- Clone BoringSSL by issuing the following command:
git clone https://boringssl.googlesource.com/boringssl
cd boringssl
You may need to install pre-requisites like zlib and libevent.
- Use specific BoringSSL version
git checkout 31bad2514d21f6207f3925ba56754611c462a873
- Compile the library
cmake . && make
Remember where BoringSSL sources are:
BORINGSSL=$PWD
If you want to turn on optimizations, do
cmake -DCMAKE_BUILD_TYPE=Release . && make
If you want to build as a library, (necessary to build lsquic itself as as shared library) do:
cmake -DBUILD_SHARED_LIBS=1 . && make
Building LSQUIC Library
LSQUIC's http_client, http_server, and the tests link BoringSSL
libraries statically. Following previous section, you can build LSQUIC
as follows:
- Get the source code
git clone https://github.com/cd-athena/DoFP-Plus.git
cd DoFP-Plus
- Compile the library
Statically:
```
$BORINGSSL is the top-level BoringSSL directory from the previous step
cmake -DBORINGSSL_DIR=$BORINGSSL . make ```
- Create SSL certificate at the server side
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
- Install ITU-T P.1203 codec extension
Follow the instruction in IT-T P.1203's extension
Modify the following line in ./bin/http_client_dofp_python.c with the path of ITU-T P.1203's extension
snprintf(command, max_command_length, "python3 /home/minh/Documents/itu-p1203-codecextension/calculate.py -m 0 %s > %s\n", JSON_FILENAME, JSON_OUT_FILENAME);
Modify the parameters related to ITU-T P.1203's extension
static const float FPS = 24.0;
static const char DEVICE[] = "pc";
static const char DISPLAYSIZE[] = "3840x2160";
static const unsigned VIEWINGDISTANCE = 150U;
- Modify video's information
The current version of DoFP+ does not support reading the MPD file. Therefore, you need to update some video's information in ```
define N_REP 7 /* Number of available media representations (quality levels) */
define NMAXSEG 75 /* Max number of segments to be downloaded */
static char *segpaths[NREP] = {"tos1h264/107/segment1.m4s", "tos1h264/240/segment1.m4s", "tos1h264/346/segment1.m4s", "tos1h264/715/segment1.m4s", "tos1h264/1347/segment1.m4s", "tos1h264/2426/segment1.m4s", "tos1h264/4121/segment1.m4s"}; static const int segbitrates[NREP] = {107, 240, 346, 715, 1347, 2426, 4121}; // [kbps] static char *segres[NREP] = {"256x114", "426x190", "640x286", "854x382", "1280x572", "1920x858", "2560x1142"}; static const char FPPATH[] = "tos1h264/"; static const char SPPATH[] = "/segment"; static const char EXT[] = ".m4s"; static const char WEIGHTSFILENAME[] = "tos1h264/weights.txt"; ```
Run experiments
- Server
./bin/http_server_dofp -c www.optimized-abr.com,cert.pem,key.pem -s <server_ip>:<port>
- Client
./bin/http_client_dofp_python -H www.optimized-abr.com -s <server_ip>:<port> -p tos1_h264/107/segment_1.m4s -M GET -K -r 250 -w 1 -J 0
where:
-M HTTP method (e.g., GET)
-K Discard server response
-r Total number of requests to send
-w Number of concurrent requests per single connection
-J ABR algorithms (0: DoFP+, 4: Throughput-based, 5: BOLA, 6: SARA, 7: BBA-0)
- Results The results are reported at the client machine. There are four files as follows
- metricsabr<-J value>.csv --> This file comprises the log of download every segments.
- metricsabr<-J value>_out.csv --> This file provides some metrics of the streaming session.
- itu-p1203abr<-J value>.json --> This file comprises the information of every downloaded segment. It is used for calculating QoE by ITU-T P.1203's extension.
- itu-p1203abr<-J value>_out.json --> This files is the output of ITU-T P.1203's extension. The predicted overall QoE has the key
"O46".
Contributors
- Daniele Lorenzi - Christian Doppler Laboratory ATHENA, Alpen-Adria-Universitaet Klagenfurt - daniele.lorenzi@aau.at
- Minh Nguyen - Christian Doppler Laboratory ATHENA, Alpen-Adria-Universitaet Klagenfurt - minhnguyenkstn@gmail.com
Citation
``` @article{nguyen2022dofp+, title={DoFP+: An HTTP/3-Based Adaptive Bitrate Approach Using Retransmission Techniques}, author={Nguyen, Minh and Lorenzi, Daniele and Tashtarian, Farzad and Hellwagner, Hermann and Timmerer, Christian}, journal={IEEE Access}, volume={10}, pages={109565--109579}, year={2022}, publisher={IEEE} }
```
Owner
- Name: ATHENA Christian Doppler (CD) Laboratory
- Login: cd-athena
- Kind: organization
- Location: Klagenfurt, Austria
- Website: https://athena.itec.aau.at
- Repositories: 26
- Profile: https://github.com/cd-athena
Adaptive Streaming over HTTP and Emerging Networked Multimedia Services