The code has been the basis for computational evaluations within the publication 'On Efficient Oblivious Wavelength Assignments for Programmable Wide-Area Topologies'. This repository contains all implemented algorithms, traffic generators and topology data reader. Additionally, we provide the config containing the parameter sets used in the evaluations.
We implemented the proposed algorithms in Python (3.7.4) leveraging the library NetworkX (2.4).
To solve the ILP we used Gurobi (9.1.0).
We used conda (4.8.2) as a package manager - see the conda environment.yml for further details of packages used in this repository.
The host machine was running Ubuntu 18.04.5 LTS.
Dir | Description |
---|---|
data/ | real world traffic and topology data |
log/ | Default directory for log files |
out/ | Default directory for output (result csv files will be stored there) |
src/ | Source root containing main.py - which is used as entry point of the program. |
src/config/ | Config provider (defines parameter for evaluations) |
src/topology_programming/ | Algorithms to compute topology programming (= wavelengths assignment) in WANs |
src/topology_provider/ | Topology provider (reads/prepares available real-world topology data) |
src/traffic_engineering/ | Routing algorithms for reconfigurable WANs |
src/traffic_provider/ | Reads/prepares real world traffic data / generates synthetic traffic |
src/utility/ | Globally shared src |
We use conda as package manager and provide an environment.yml defining the conda environment used in the evaluations. For details go to: install conda
We used Gurobi to solve linear problems. To reproduce the results a licence is required (academic licences: info). Download and install the Gurobi Optimizer (9.1.0) from download.
To tune our experiments interestingly, we use real world data for both - topologies and demands from SNDLib and TopologyZoo.
We use traffic and topology data from SNDLib, which we redistribute under the ZIB ACADEMIC LICENSE. The data is stored in the directory data/.
Additionally, we use the topology data available from TopologyZoo.
Note: The data from topology zoo is NOT included in the repository and must be manually added:
- Download the whole dataset: Download
- Unzip the data
- Save the *.graphml files in the directory data/topologies/topology_zoo)
Create a conda environment and install all python dependencies with:
conda env create -f environment.yml
The created environment is named 'wan_ancs', activate with:
conda activate wan_ancs
Navigate to source code root:
cd ./src
We provide two predefined configurations which store multiple sets of parameters controlling the test flow.
- config_sndlib
- config_topology_zoo
Note: All config files must be stored in ./src/config/
Run evaluation with:
python main.py [-c <config name>] [-l <dir>] [-o <dir>] [--debug]
Arg | Description | Default |
---|---|---|
-c <config> | Defines the config file (as in ./config/<config name>.py) | config_sndlib |
-l <dir> | Defines the path to log dir | ./log/ |
-o <dir> | Defines the path to out dir | ./out/ |
--debug | Extends logging |
Start the evaluation using data from Topology Zoo (config defined in: ./src/config/config_topology_zoo.py) with:
python main.py -c config_topology_zoo
Start the evaluation using data from SNDLib data (config defined in: ./src/config/config_sndlib.py) with:
python main.py -c config_sndlib
The results are stored in a csv file located in the defined out directory
Contact Me or visit University of Vienna | Communication Technologies for more infos.
This project is licensed under the MIT License.