Skip to content

tfenz/Programmable-WAN

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

On Efficient Oblivious Wavelength Assignments for Programmable Wide-Area Topologies

Overview

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.

Dependencies and Requirements

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.

Structure

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

Prerequisites

Conda

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

Gurobi

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.

Real-World Data

To tune our experiments interestingly, we use real world data for both - topologies and demands from SNDLib and TopologyZoo.

SNDLib Data

We use traffic and topology data from SNDLib, which we redistribute under the ZIB ACADEMIC LICENSE. The data is stored in the directory data/.

TopologyZoo 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:

  1. Download the whole dataset: Download
  2. Unzip the data
  3. Save the *.graphml files in the directory data/topologies/topology_zoo)

Install Dependencies

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

Run Tests

Navigate to source code root:

cd ./src

Configuration

We provide two predefined configurations which store multiple sets of parameters controlling the test flow.

  1. config_sndlib
  2. config_topology_zoo

Note: All config files must be stored in ./src/config/

Start

Run evaluation with:

python main.py [-c <config name>] [-l <dir>] [-o <dir>] [--debug]

Optional Parameters:

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

Example

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

Output

The results are stored in a csv file located in the defined out directory

Contact

Contact Me or visit University of Vienna | Communication Technologies for more infos.

This project is licensed under the MIT License.

About

Simulations for paper 'On Efficient Oblivious Wavelength Assignments for Programmable Wide-Area Topologies '

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages