/DCnet-simulator

Simulator to explore and compare various scheduling algorithms for DC-networks

Primary LanguageJava

This is the simulator that was used to benchmark the performance of footprint scheduling, Pfitzmann's algorithm, and the Herbivore implementation of Chaum's map-reservation algorithm.

Run make to compile the simulator. This requires Java 7 (or newer).

After that, run ./simulation.sh to start the interactive simulator. The folder scripts contains various benchmark scripts that run simulations automatically. In order to execute a script (e.g. the script scripts/benchmarks/activity), enter run scripts/benchmarks/activity in the interactive simulator or execute ./simulation.sh scripts/benchmarks/activity from the shell.

In order to save the results of a simulation, enter write in the interactive simulator once the simulation is finished. The results will be written to a .csv file in the folder benchmark-data. If this file is already present, the new results will be appended to the existing data.

The plots in the paper can be reproduced with the provided R script process.R. This requires the ggplot2 library. By default, all plots are commented out.

Browsing the predefined scripts gives a good overview of the available options for each simulation. Below is a quick guideline for running custom simulations:

For footprint scheduling: footprint S B P A C where S is the number of slots that can be reserved B is the number of bits per footprint P is a list containing the number of participants in the simulated networks A is the activity rate of all participants as a floating point value between 0 and 1 C is a boolean that determines whether the discussion should stop once the schedule converged. Note that this is only possible in a simulation, not in a real-life scenario where footprints are kept secret in general.

So, a simulation of footprint scheduling could look like this:
`footprint 16 8 [100 200 500 1000 2000 5000 10000] 0.01 false`

For Pfitzmann's algorithm: pfitzmann i P A where i is the number of available slots per participant (as discussed in Appendix A) P is a list containing the number of participants in the simulated networks A is the activity rate of all participants as a floating point value between 0 and 1

So, a simulation of Pfitzmann's algorithm could look like this:
`pfitzmann 32 [100 200 500 1000 2000 5000 10000] 0.01`

For the Chaum's map reservations: chaum P A where P is a list containing the number of participants in the simulated networks A is the activity rate of all participants as a floating point value between 0 and 1

So, this is how a simulation of Chaum's reservation map could look like:
`chaum [100 200 500 1000 2000 5000 10000] 0.01`