Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/djvergad/dash

An MPEG/DASH client-server module for simulating rate adaptation mechanisms over HTTP/TCP.
https://github.com/djvergad/dash

Last synced: about 12 hours ago
JSON representation

An MPEG/DASH client-server module for simulating rate adaptation mechanisms over HTTP/TCP.

Awesome Lists containing this project

README

        

dash
========

An MPEG/DASH client-server [ns3](https://www.nsnam.org/) module for simulating rate adaptation algorithms over HTTP/TCP.

This module was built for generating the simulation results in the following papers:

- Dimitrios J. Vergados, Angelos Michalas, Aggeliki Sgora, Dimitrios D. Vergados, and Periklis Chatzimisios. ["FDASH: A Fuzzy-Based MPEG/DASH Adaptation Algorithm."](https://www.researchgate.net/publication/288842567_FDASH_A_Fuzzy-Based_MPEGDASH_Adaptation_Algorithm) IEEE Systems Journal 10, no. 2 (2016): 859-868.
- Dimitrios J. Vergados, Angelos Michalas, Aggeliki Sgora, and Dimitrios D. Vergados. ["A fuzzy controller for rate adaptation in MPEG-DASH clients."](https://www.researchgate.net/publication/281967962_A_fuzzy_controller_for_rate_adaptation_in_MPEG-DASH_clients) In 2014 IEEE 25th Annual International Symposium on Personal, Indoor, and Mobile Radio Communication (PIMRC), pp. 2008-2012. IEEE, 2014.
- Dimitrios J. Vergados, Angelos Michalas, Aggeliki Sgora, and Dimitrios D. Vergados. ["A control-based algorithm for rate adaption in MPEG-DASH."](https://www.researchgate.net/publication/268196345_A_control-based_algorithm_for_rate_adaption_in_MPEG-DASH) In Information, Intelligence, Systems and Applications, IISA 2014, The 5th International Conference on, pp. 438-442. IEEE, 2014.

The DASH rate adaptation algorithms that are implemented are the following:

- **FDASH**, This is the algorithms that is proposed in the above papers
- **AAASH**, presented in: K. Miller, E. Quacchio, G. Gennari, and A. Wolisz, “Adaptation algorithm for adaptive streaming over HTTP,” in Proc. 19th Int. IEEE PV Workshop, 2012, pp. 173–178.
- **OSMF**, presented in: R. K. P. Mok, X. Luo, E. W. W. Chan, and R. K. C. Chang, “QDASH: A QoE-aware DASH system,” in Proc. 3rd MMSys Conf., New York, NY, USA, 2012, pp. 11–22.
- **SVAA**, presented in: G. Tian and Y. Liu, “Towards agile and smooth video adaptation in dynamic HTTP streaming,” in Proc. 8th Int. CoNEXT, New York, NY, USA, 2012, pp. 109–120. [Online].
- **RAAHS**, presented in: C. Liu, I. Bouazizi, and M. Gabbouj, “Rate adaptation for adaptive HTTP streaming,” in Proc. 2nd Annu. ACM Conf. MMSys, New York, NY, USA, 2011, pp. 169–174. [Online].
- **SFTM**, presented in: C. Liu, I. Bouazizi, M. M. Hannuksela, and M. Gabbouj, “Rate adaptation for dynamic adaptive streaming over HTTP in content distribution network,” Signal Process., Image Commun., vol. 27, no. 4, pp. 288–311, Apr. 2012.

Installation instructions
----

1. Install ns3 on you system, using the instructions like from here: .
2. Download the module into the `contrib` directory, with the following commands:

```bash
cd ns-3-dev/
cd contrib/
git clone https://github.com/djvergad/dash.git
```

A new directory named `dash` should be created in the `src` directory

3. Re-configure ns3 and enable examples. From the `ns-3-dev` directory, type:

For ns3 version 3.36 and above type

```bash
./ns3 configure --enable-examples
```

For versions 3.35 and below type:

```bash
./waf configure --enable-examples
```

4. Now the setup is complete. Validate by running an example:

For ns3 version 3.36 and above type

```bash
./ns3 run 'dash-example --users=3 --algorithms=ns3::FdashClient --linkRate=1000Kbps --bufferSpace=10000000'
```

For versions 3.35 and below type:

```bash
./waf --run 'contrib/dash/examples/dash-example --users=3 --algorithms="ns3::FdashClient" --linkRate=1000Kbps --bufferSpace=10000000'
```

There should be output similar to the following:

```text
0.829568 Node: 0 newBitRate: 89000 oldBitRate: 45000 estBitRate: 205177 interTime: 0 T: 1.4284 dT: 0 del: +0.0ns
0.84288 Node: 1 newBitRate: 89000 oldBitRate: 45000 estBitRate: 197645 interTime: 0 T: 1.42024 dT: 0 del: +0.0ns
0.849848 Node: 2 newBitRate: 89000 oldBitRate: 45000 estBitRate: 185404 interTime: 0 T: 1.41842 dT: 0 del: +0.0ns
1.40569 Node: 0 newBitRate: 131000 oldBitRate: 89000 estBitRate: 276525 interTime: 0 T: 2.85228 dT: 1.42388 del: +0.0ns
1.45575 Node: 1 newBitRate: 131000 oldBitRate: 89000 estBitRate: 261727 interTime: 0 T: 2.80737 dT: 1.38713 del: +0.0ns
1.51679 Node: 2 newBitRate: 89000 oldBitRate: 89000 estBitRate: 246766 interTime: 0 T: 2.75148 dT: 1.33306 del: +0.0ns
...
95.931 Node: 0 newBitRate: 396000 oldBitRate: 396000 estBitRate: 427899 interTime: 0 T: 38.3269 dT: 0.175848 del: +0.0ns
96.5143 Node: 1 newBitRate: 263000 oldBitRate: 263000 estBitRate: 282589 interTime: 0 T: 37.7488 dT: 0.139504 del: +0.0ns
96.9279 Node: 2 newBitRate: 178000 oldBitRate: 178000 estBitRate: 197848 interTime: 0 T: 37.3404 dT: 0.12356 del: +0.0ns
97.7929 Node: 0 newBitRate: 396000 oldBitRate: 396000 estBitRate: 424918 interTime: 0 T: 38.4651 dT: 0.138144 del: +0.0ns
98.2967 Node: 1 newBitRate: 263000 oldBitRate: 263000 estBitRate: 275899 interTime: 0 T: 37.9664 dT: 0.217576 del: +0.0ns
98.6872 Node: 2 newBitRate: 178000 oldBitRate: 178000 estBitRate: 200443 interTime: 0 T: 37.581 dT: 0.240664 del: +0.0ns
99.5082 Node: 0 newBitRate: 396000 oldBitRate: 396000 estBitRate: 426879 interTime: 0 T: 38.7498 dT: 0.284736 del: +0.0ns
ns3::FdashClient-Node: 0 InterruptionTime: 0 interruptions: 0 avgRate: 248101 minRate: 89000 AvgDt: 38.4632 changes: 7
ns3::FdashClient-Node: 1 InterruptionTime: 0 interruptions: 0 avgRate: 175772 minRate: 89000 AvgDt: 37.577 changes: 5
ns3::FdashClient-Node: 2 InterruptionTime: 0 interruptions: 0 avgRate: 120478 minRate: 89000 AvgDt: 36.4311 changes: 3
```