/ascc

Primary LanguageC++

SRPT-based Congestion Control for Flows with Unknown Sizes

This repository contains the code necessary to reproduce the results presented in the "SRPT-based Congestion Control for Flows with Unknown Sizes" paper; specifically, Figures 4 and 5.

Depencencies

Building

  1. NS2-simulator

    cd ns2
    mkdir cmake-build-release
    cd cmake-build-release
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make
    cd ../..
  2. Auxiliary oracle-fct executable

    cd scripts/plot_generation
    mkdir cmake-build-release
    cd cmake-build-release
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make
    cd ../../../

Running simulations

Preparation:

export DEV_NS_DIR=$PWD/ns2
cd scripts # change to scripts dir

Running actual simulations:

python -m congestion_runner.run --scale final --control ascc\
    --buffer ascc --input web_search --slacks default --load 0.8 --alpha 2.0
# see the description of CLI arguments below

The simulation results would be available in the results folder.

Simulation CLI description

Below we provide a detailed description of the CLI arguments.

  • Algorithms:

    • PIAS: --buffer pias --control pias

    • aSCC: --buffer ascc --control ascc

    • pFabric: --buffer pfabric --control pfabric_clairvoyant

    • LAS: --buffer las --control pias

  • Inputs:

    • Web Search: --input web_search

    • Data Mining: --input data_mining

  • Parameter specification:

    • Load: --load 0.8
    • Alpha: --alpha 1.0
  • Other mandatory arguments:

    • --scale final --slacks default

Statistic extraction

Preparation

mkdir plots
export PLOT_PATH=$PWD/plots
cd scripts

Generating plot data in .csv format:

# use same --control --buffer --input and --alpha parameters as for 
# running simulations
python -m plot_generation.generate_plots --aspect load --value 0.8\
    --scale final --control ascc --buffer ascc --input web_search\
    --slacks default --alpha 2.0

The above command would create a .csv fail in the PLOT_PATH dir.

It is possible to generate csv for a range of parameters, which only requires to specify --value multiple times. Set --aspect to either load or alpha to control which parameter to vary