This is an official Github repository for the EuroSys '23 paper "FlexPass: A Case for Flexible Credit-based Transport for Datacenter Networks". The repository includes our implementation of FlexPass on the ns-2 simulator.
We provide a pre-built docker image at ghcr.io/kaist-ina/ns2-flexpass
. Use the following command to set-up the docker image.
docker pull ghcr.io/kaist-ina/ns2-flexpass
-
We provide a python script named
runs_simulations.py
to automate simulations. Use following command to run all simulations.docker run --rm -it \ -v $(pwd)/result:/ns-allinone-2.35/ns-2.35/outputs \ ghcr.io/kaist-ina/ns2-flexpass \ python ./run_simulations.py
The result will be stored in
result
directory. -
We provide a python script named
generate_figure.py
to analyze results and generate figures from it.docker run --rm -it \ -v $(pwd)/result:/ns-allinone-2.35/ns-2.35/outputs \ ghcr.io/kaist-ina/ns2-flexpass \ python ./generate_figure.py
The CSV files and figures (in PNG) will be stored in the
result
directory.
-
Files in
xpass
:Core FlexPass and ExpressPass implementation.
-
Files in
workloads
:Example workload files for the simulation.
-
queue/broadcom-node.cc
andqueue/broadcom-node.h
:Implementation for a Broadcom ASIC switch model. These includes selective dropping for TLT, dynamic buffer management. This is the ns-2 backport from here.
Disclaimer: this module is purely based on authors' personal understanding of Broadcom ASIC. It does not reflect any official confirmation from either Microsoft or Broadcom.
-
Other files in
queue
:Implementation of queues that support ExpressPass and FlexPass.
-
tcp/tcp-xpass.cc
andtcp/tcp-xpass.h
:Layering (LY) implementation of ExpressPass.
This code repository is based on https://github.com/kaist-ina/ns2-xpass.