Downloads
- Paper (818.0 KB) [pdf]
- Virtual Machine (VM) images:   64-bit (2.5GB)   32-bit (2.0 GB) (username:
probnetkat
, password:probnetkat
) - Source: GitHub
Experimental Platform
We used a Dell R620 server (2x Intel Xeon E5-2650 v2 processors, 64GB RAM) running Ubuntu 14.04.1 (x86_64).Installation
There are two options for installing and testing ProbNetKAT:Virtual Machine (recommended):
- Download one of the VM images mentioned above.
- Start VirtualBox on your host machine.
- Import ProbNetKAT VM by selecting "File" -> "Import Appliance", and selecting the downloaded VM image.
- Allocate the VM as much RAM as possible (at least 2GB). A single processor should suffice (recommended: 2).
- You may need to turn on virtualization extensions in your BIOS to enable 64-bit virtualization.
- When the VM starts up, the
probnetkat
user should be automatically logged in. (username:probnetkat
, password:probnetkat
). - Open a terminal and follow
~/README.md
for instructions.
From source:
- Install OCaml and OPAM:
- Configure OPAM:
- Install dependencies:
- Checkout code
- Build
sudo apt-get install ocaml opam m4 build-essential pkg-config python-pip sudo pip install matplotlib
opam init -y opam switch 4.02.3 eval `opam config env`
opam pin add ocamlgraph 1.8.6 opam install core async oasis cstruct tcpip
git clone -b probnetkat https://github.com/frenetic-lang/frenetic
cd frenetic oasis setup make
Source code
The source code is available on GitHub in probnetkat branch of Frenetic. The relevant files are:lib/Frenetic_ProbNetKAT_Interpreter.ml
: Implements ProbNetKAT's denotational semantics.lib/Frenetic_ProbNetKAT_TE.ml
: A traffic engineering framework to translate topology, traffic matrices and routing schemes into ProbNetKAT programs. It also has ProbNetKAT queries to compute certain statistics.lib/Frenetic_ProbNetKAT_Routing.ml, lib/Routing_Frt.ml, lib/Routing_Mw.ml, lib/Routing_Raecke, lib/Routing_Rrt.ml, lib/Routing_Types.ml
: Implement routing algorithms and other helper functions for traffic engineering.
Replicating results
Running experiments
- We will run the traffic engineering experiments on 4-cycle and Abilene topologies. The input topologies (
4cycle.dot
andabilene.dot
) and traffic matrices (4cycle.dem
andabilene.dem
) are infrenetic/examples
directory. - The commands to run the experiments are in a bash script:
cd ~/frenetic sh ./run_popl_experiments.sh
- It may take up to 10 minutes to complete the experiments.
- Note that the script runs experiments with less iterations (for testing quickly) than those shown in the paper. You may change the number of iterations (variable
iter
) in the script to match those shown in the paper, but it will need longer time to run and more RAM. - If you get an
out of memory
error, you can either re-run the experiments after allocating more RAM, or decreasing the number of iterations. - The VMs also contain the original data and plots from the paper in
~/paper_data/
.
Visualizing results
- Once the above experiments are done, the results can be visualized using the scripts in
~/frenetic/plot/
:cd ~/frenetic/plot sh ./regenerate_plots.sh
- The graphs will be generated in corresponding directories in
~/frenetic/data/
- Figures corresponding to those in paper:
- Figure 1(b) :
evince ~/frenetic/data/4cycle_intro/Max\ Congestion-line.pdf
- Figure 1(c) :
evince ~/frenetic/data/4cycle_intro_break_1_2/Throughput-bar.pdf
- Figure 5(b) :
evince ~/frenetic/plot/heatmap.pdf
- Figure 5(c) :
evince ~/frenetic/data/abilene/Max\ Congestion-line.pdf
- Figure 5(d) :
evince ~/frenetic/data/abilene/Throughput-line.pdf
- Figure 5(e) :
evince ~/frenetic/data/abilene_fail_0.1/Max\ Congestion-line.pdf
- Figure 5(f) :
evince ~/frenetic/data/abilene_fail_0.1/Throughput-line.pdf
- Figure 5(g) :
evince ~/frenetic/data/abilene/Mean\ Latency-line.pdf
- Figure 5(h) :
evince ~/frenetic/data/4cycle_loop/Throughput-line.pdf
- Figure 1(b) :