Skip to content

hrishikeshathalye/EvalAQM

Repository files navigation


EvalAQM
EvalAQM

A testbed-based AQM evaluation tool with realistic traffic

What Is EvalAQM?How It WorksExample TopologyInstallationConfiguration FileCreditsDevelopers

About

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

Working

  1. 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.

  1. 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:

  1. VoIP - irtt
  2. Quake - D-ITG
  3. HTTP - HTTP Getter
  4. TCP - netperf
  5. UDP - iperf
  6. 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.

Topology

Topology

Installation

To clone and run this application, you'll need Git installed on your computer. From your command line:

# Clone this repository
$ git clone --recursive [email protected]: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

Configuration File

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)

Credits

This software uses the following open source packages:

Developers