- Introduction
- Download and Installation
- Basic Simulator Usage
- Small-Scale Evaluation
Our artifact consists of a simple simulator for dominant-paths vectoring protocols, both non-restarting and restarting versions, and the scripts for: (1) transforming Rocketfuel topologies into network data sets that serve as input to the simulator; and (2) generating plots with CCDFs for the number of dominant attributes and for the termination times of dominant-paths vectoring protocols from the data sets that are output by the simulator. The simulator is implemented in C++17 and is compiled with GCC 4.2.1. It requires the boost library. The scripts are written in Python 3.8. They require the networkx, numpy and matplotlib libraries.
In addition to the artifact, the present documentation contains: (1) a description of how the simulator is used; and (2) a workflow that produces a small-scale evaluation of dominant-paths vectoring protocols.
The repository containing the artifact is structured as follows.
-
RockerfuelTopologies: The Rocketfuel topologies as downloaded from the Rocketfuel Project;
-
Scripts: The scripts;
-
NetworkDataSets: The network data sets generated from the Rocketfuel topologies;
-
Simulator: The source code of the simulator;
-
OutputDataSets: The data sets output by the simulator and from which the plots presented in Section 6 of the paper are produced;
-
Plots: The plots presented in Section 6 of the paper.
Our artifact is packaged in a Docker image. We show how to download and install the artifact in your local machine.
-
Make sure you have Docker installed in your machine. (If you do not, then please refer to https://docs.docker.com/get-docker/.)
-
Download the artifact to your local machine:
git clone https://github.com/miferrei/rmoc-sigcomm2020-artifact.git
and then step into the directory containing the artifact:
cd rmoc-sigcomm2020-artifact
-
Build the Docker image:
sudo docker build --tag rmoc-sigcomm2020-artifact:1.0 .
This step will take about five minutes.
-
Create an interactive terminal with a local volume available in the Docker container:
sudo docker run -v $(pwd):/root --name rmoc -it rmoc-sigcomm2020-artifact bash
-
Later, to erase the artifact, first remove the Docker container and the local volume:
sudo docker rm -v rmoc
and then the Docker image:
sudo docker rmi rmoc-sigcomm2020-artifact:1.0
We show how to use the programs that simulate dominant-paths vectoring protocols.
(See Section 4 of the paper for the specification of dominant-paths vectoring protocols.)
The program Simulator/Main/SimulateNonRestartingProtocol.cpp simulates a non-restarting protocol operating on a given partial or total order on attributes in a given network. Specifically, it simulates (1): the network-wide announcement of a destination, for all possible destinations; and then (2) the failure of a link, for all possible link failures. All simulations foresee a given number of independent trials.
The simulator is invoked with the following command:
./Simulator/Main/SimulateNonRestartingProtocol -o ORDER -n NETWORK_DATA_SET -r R
where:
-
ORDER is the identifier of the partial or total order;
-
NETWORK_DATA_SET is a network data set;
-
R is the number of independent trials.
(See the next section of the documentation.)
-
ORDER is one the following identifiers:
(Partial orders)
- "ProductOrderHopsLengths" : The product order on pairs hops-length;
- "ProductOrderWidthHops" : The product order on pairs width-hop;
- "ProductOrderWidthLengths" : The product order on pairs width-length;
- "ProductOrderWidthHopsLengths" : The product order on triples width-hops-length;
(Total orders)
- "ShortestWidestOrder" : The shortest-widest order on pairs width-length;
- "WidestShortestOrder" : The widest-shortest order on pairs width-length.
(See Section 2 of the paper for the definition of the above partial and total orders.)
-
NETWORK_DATA_SET is a file of tab-separated values under directory NetworkDataSets/. This file has the following format:
V u1 u2 a1 a2 (a3) . . . . (.) . . . . (.) . . . . (.)
The first line represents the number
V
of nodes in the network. Every other line represents a link from nodeu1
to a nodeu2
with attribute(a1, a2)
or(a1, a2, a3)
. When the link attribute is(a1, a2)
:- If
(a1, a2)
is a pair hops-length, thena1
is '1' anda2
is a length; - If
(a1, a2)
is a pair width-hops, thena1
is a width anda2
is '1'; - If
(a1, a2)
is a pair width-length, thena1
is a width anda2
is a length.
When the link attribute is a triple width-hops-length
(a1, a2, a3)
:a1
is a width,a2
is '1' anda3
is a length.
- If
-
R is an integer between
0
and2^31-1
.
-
STABLE_STATE. A file of tab-separated values under directory OutputDataSets/. The file stores a matrix with
V
rows andV
columns where the entry at rows
and columnt
contains the elected attributes ats
to reacht
in stable state. -
TERMINATION_TIMES_ANNOUNCEMENT. A file of tab-separated values under directory OutputDataSets/. The file stores a matrix with
R
rows andV
columns where the entry at rowr
and columnt
contains the termination time following the network-wide announcement of destinationt
in ther
th trial. -
TERMINATION_TIMES_FAILURE. A file of tab-separated values under directory OutputDataSets/. Let
E
be the number of links in the network. The file stores a matrix withR
rows andE
columns where the entry at rowr
and columne
contains the termination time following the failure of linke
in ther
th trial.
The program Simulator/Main/SimulateRestartingProtocol.cpp simulates computation instances of a restarting protocol operating on a given isotone partial or total order on attributes in a given network. More concretely, it simulates the failure of a link, for all possible link failures. All these simulations foresee a given number of independent trials. (Since every computation instance of the restarting protocol pertaining to a given destination behaves as a network-wide announcement of this destination in the non-restarting protocol, the stable state and termination times of the protocol can be obtained with the simulator described in Section 3.1 of the documentation.)
(See Section 3.1 of the paper for the definition of isotonicity of a partial or total order on attributes.)
The simulator is invoked with the following command:
./Simulator/Main/SimulateRestartingProtocol -o ORDER -n NETWORK_DATA_SET -r R
where:
-
ORDER is the identifier of the isotone partial or total order;
-
NETWORK_DATA_SET is a network data set;
-
R is the number of independent trials of simulations following the failure of a link.
-
ORDER is as in Section 3.1.3 of the documentation, except for the identifier "ShortestWidestOrder" -- the shortest-widest order on pairs width-length, which this version of the protocol does not support.
-
NETWORK_DATA_SET is as in Section 3.1.3.
-
R is as in as in Section 3.1.3.
- TIMES_PROPAGATE_UNREACHABILITY. A file of tab-separated values under directory OutputDataSets/. The file stores a matrix with
R
rows andE
columns where the entry at rowr
and columne
contains the time to propagate unreachability following the failure of linke
in ther
th trail.
The evaluation of dominant-paths vectoring protocols presented in Section 6 of the paper focuses on the largest Rocketfuel topology, which is AS 1239. However, the time required to carry out simulations in this network is deemed too large for testing. Therefore, for the purpose of this review, we consider an evaluation based on a smaller Rocketfuel network, AS 3967, and on a fewer number of independent trials for each network event, 10. The results in AS 1239 and in AS 3967 are qualitatively the same.
We provide a workflow that: (1) generates the network data sets pertaining to AS 3967; (2) executes simulations of dominant-paths vectoring protocols; and (3) produces plots with CCDFs of the number of dominant attributes and the termination times from the data sets output by the simulator.
-
The workflow is invoked with the following command:
bash run-SmallScaleEvaluation.sh
Its execution time is approximately 1.5 hour.
- The plots produced can be found under directory Plots/, alongside those presented in Section 6 of the paper.
-
Miguel Alves Ferreira, with Instituto de Telecomunicações, Instituto Superior Técnico, Universidade de Lisboa;
-
João Luís Sobrinho, with Instituto de Telecomunicações, Instituto Superior Técnico, Universidade de Lisboa.