This project contains the code used to obtain the results from the paper:
Griner, Chen, and Chen Avin. "Integrated Topology and Traffic Engineering for Reconfigurable Datacenter Networks." arXiv preprint arXiv:2402.09115 (2024).
It's propose is to allow replication of the results found in the paper and further study into topology engineering of dynamic networks.
You can create a new conda environment and install the required libraries using the environment.yml
file.
Open your terminal or command prompt and run the following command:
conda env create -f environment.yml
Or use the requirements.txt
to install all dependencies.
This project also requires a julia package called BirkhoffDecomposition in order to implement Birkhoff-von-Neumann (BvN) decomposition.
After installing juliacall. You could run the flowing code, that will install the package into the julia environment.
import juliacall
jl = juliacall.newmodule("SomeName")
jl.seval("import Pkg")
jl.seval("Pkg.add(\"BirkhoffDecomposition\")")
To recreate all the results found in the paper with our parameters In main.py run
recreate_paper_results()
The generated results will contain the DCT for each of our three systems ("BvN-sys", "RR-sys", "COMP-sys") as well as more general statistics regrading the traffic matrix and the "pivot" algorithm.
More generally it is possible to run our experiments with different parameters.
For example to test our systems with different traffic model parameters (large_ratio
and large_load_ratio
), a network with 32 nodes (n
), and a reconfiguration
rate (rd
) of 0.02 seconds you may run
from src.testing_functions import *
directory = "dir_to_save_results"
run_test_of_total_flow_number_change(directory, large_ratio=0.01, large_load_ratio=0.8, n=32, rd=0.02)
Running the rest of the code in main.py
will
generate and save paper figures equivalent to figures 4,5 and 6.
It is possible to test each system separately with a single traffic matrix. Please refer to documentation.
The folder test_res contains 5 .json
files.
Each having the data for the results of the tests used in the paper.
A full description of their fields can be found in DATA_README
This uses an MIT license