A testbed-based AQM evaluation tool with realistic traffic
Created By Hrishikesh Athalye, Prathamesh Mone & Chetas Borse
What Is EvalAQM? • How It Works • Example Topology • Installation • Configuration File • Credits • Developers
EvalAQM is a realistic traffic based AQM evaluation suite. It aggregates a variety of traffic generators under a single application and helps test AQM mechanisms under realistic traffic. It features a dumbbell topology whose parameters can be changed with a configuration file to change network parameters on the fly. It can also aggregate results and generate graphs once the testing completes. The graphs generated using this tool as a part of AQM analysis can be found here - https://chetasborse.github.io/AQMEvaluationGraphs
- Topology Setup
The code uses NeST (Network Stack Tester) in order to generate the virtual network topology. The topology is a dumbbell topology compirising 2 routers and 6 source and destination nodes. The AQM is employed at the first router which is changed in every iteration of the experiment.
- Traffic Generation
EvalAQM has support for the following types of traffic - VoIP, Quake, HTTP, TCP, UDP and ABR streaming using DASH .
EvalAQM uses Flent under the hood which uses the following traffic generators in order to generate different kinds of traffic:
- VoIP - irtt
- Quake - D-ITG
- HTTP - HTTP Getter
- TCP - netperf
- UDP - iperf
- DASH - Dash.js Reference Client
Flent also aggregates results from these traffic generators and creates .flent.gz files. Upon completion of all tests our code uses gnuplot in order to re-plot the graphs and stores them in a folder called Graphs. It can optionally also generate bandwidth consumption graphs using data obtained from tcpdump.
To clone and run this application, you'll need Git installed on your computer. From your command line:
# Clone this repository
$ git clone --recursive git@github.com:hrishikeshathalye/EvalAQM.git
The project comes with a single install script to install all dependencies and the DASH dataset. The script can be run as follows. Once the script completes, the DASH dataset will be present inside a folder called bbb and all other dependencies will have been installed.
# Go into the repository
$ cd EvalAQM
# Install all dependencies
$ chmod +x setup.sh
$ sudo ./setup.sh
# Once the installation is complete the project can be run by using the following command:
$ sudo python testTopology.py
The configuration file has the structure shown below. The file can be modified in order to test for different combinations of bandwidth and delay.
[DEFAULT]
HtoRbandwidth = 100mbit (Host to Router Bandwidth, typically the non-bottleneck bandwidth)
HtoRdelay = 5ms (Host to Router Delay, typically the non-bottleneck delay)
RtoRbandwidth = 10mbit (Router to Router Bandwidth, typically the bottleneck bandwidth)
RtoRdelay = 40ms (Router to Router Bandwidth, typically the bottleneck delay)
Duration = 60 (Duration of the test in seconds)
AppArmorDisable = 0 (Whether to call a script to disable AppArmor for tcpdump, recommended for the first time run)
RtoRlimit = 400 (The buffer size at the first router in packets)
AQM = pfifo,codel,pie,cobalt,fq_codel,fq_pie,cake (The AQM mechanisms to test for, comma seperated)
This software uses the following open source packages: