Skip to content

jiechenmc/tcp-dash

Repository files navigation

# Getting Started

If the repo was not cloned with --recursive, you have to:

```bash
git submodule init
git submodule update
```

# Set Up Video Servers
1. Put the cert and key file in `./video-server` and name them `localhost.crt` and `localhost.key` respectively.
2. Put the video manifests in `./video-server/videos`
3. Run `cd dash.js && npm i && cd ..`
4. Run `sudo docker compose up --build -d`
- This will run a `HTTP/1.1` NGINX server on PORT `1443`
- This will run a `HTTP/2` NGINX server on PORT `2443`
- This will run a `HTTP/3` NGINX server on PORT `8443`
- This will run `dash.js` on PORTS `3000-3005` -- What ABR algorithm is on what port is described in `docker-compose.yml` and below.


# Set Up Client Script
1. Configure the script in `./client-test-script/main.js`
2. Run `node ./client-test-script/main.js prune`
- The prune option will wipe the db
- Use Node.js version 23+
3. This will spawn a browser that will collect metrics and store to `out.db`.

Note: You can access the dash.js instance directly on PORT 3000 without the client script, but that will not collect the metrics into `out.db`.

# Switching ABR Algorithms

We currently have 6 algorithms available in their respective branches. Do `git switch <branch_name>` inside the `dash.js` submodule and the dash.js instance will automatically reload with that ABR algorithm enabled.

The 6 available algorithms and their respective branches are detailed below:

BRANCH -> Algorithm
1. development -> ABR Dynamic
2. BOLA -> ABR Bola
3. FESTIVE -> ABR Festive
4. L2A -> ABR L2A
5. RB -> ABR RB
6. THROUGHPUT -> ABR Throughput

To simplify our experiment, we have created 6 submodules, with each referencing the branch listed above.

About

Study of TCP congestion control algorithms and their performance for video streaming

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors