IoF - Internet on FIRE

Project website - Fed4FIRE+ Open Call 5

View project on GitHub

IoF - Software

The software developed within the project to generate BGP topologies and the corresponding BIRD configurations, as well as the scripts used for controlling the experiments on the Fed4FIRE+ testbeds is Open Source and it is public on GitHub.

The repository includes all the instructions required to run the experiments, including the setup of the software on a Linux-based system (preferably Ubuntu 18.04, but we have used the scripts on macOS as well). If you are not working on a Unix system or wants to avoid installing the tools, we provide you with a pre-configured Virtual Machine with all the software pre-installed.

Modified BIRD daemon

In our experiments we run a customized version of the BIRD routing daemon. You are not required to download that, as this is automatically downloaded by our tools when configuring the nodes of the testbed. The source code is in any case available online on github (branch NoMiCe).

IoF Virtual Machine

You can download the Virtual Machine to reproduce our experiments from this link (size 5.3 GB): IoF VM. The machine is an Ubuntu 18.04 with all the software needed already installed and our repository already cloned. You can import the ova file in any recent virtualization platform (if you don’t have one, you can use VirtualBox).

The credentials to access the vm are:

USER: iof

PASS: iof

The jFed software is already installed, you can start it by opening a Terminal and typing jFed-Experimenter. The only step needed is the copy of the certificate and keys related to your iMinds Auhority account and, if you plan on reproducing big topologies, the configuration of your user on the omni_config file. All these steps are detailed in the README.md of the IoF repository. In short, you should have your public and your unencrypted private keys stored inside the virtual machine in ~/.ssh/iminds.pub and ~/.ssh/iminds.key, respectively.

Reproducing our specific simulations

NOTE: this section refers to the instructions in an appendix of a paper currently under review. The appendix can be downloaded here. As soon as possible, we will publish the complete paper under the Publications section.

As detailed in the Reproducing IoF appendix, all the configuration files to reproduce the simulations presented in the paper are already available in our repository in the experimentFiles directory. In the appendix, there are only the commands to reproduce a single simulation (Fabrikant Topology with 17 nodes). Below you will find the commands to reproduce all the topologies.

Fabrikant simulations

You will find all the Bird configuration directories on ~/src/iof-tools/experimentFiles/fabrikant/bird-config-files. As already detailed in the README.md file inside the experimentFiles folder, the folders names indicate the type of MRAI setting and the size of the gadget: 0_$MRAISETTING$_f$GADGETSIZE$n-dest. You can select the topology you want and substitute the copy command present on the Appendix with the topoogy directory you want to simulate. Depending on the size of the gadget, the parameters of the ./run-simulation.sh script have to be changed:

Gadget Size Command to use
5 ./run-experiment.sh -a 7 -n 5 -r 1
7 ./run-experiment.sh -a 9 -n 7 -r 1
9 ./run-experiment.sh -a 11 -n 9 -r 1
11 ./run-experiment.sh -a 13 -n 11 -r 1
13 ./run-experiment.sh -a 15 -n 13 -r 1
15 ./run-experiment.sh -a 17 -n 15 -r 1
17 ./run-experiment.sh -a 19 -n 17 -r 1

All the remaining parts (fetching, analyzing, plotting) are the same as those detailed in the Appendix. If you want to run more than a single topology on the same deployed physical nodes some steps are needed: after you have finished a simulation you must clean the network config and redeploy the new topology. You can find the detailed informations on how to do it on the repository’s README.md.

If you don’t want to use our pre generated Bird config files, you can use all our toolchain to reproduce the same topology graphs and configurations by yourself. A detailed description on how to use the toolchain is available inside the README.md.

Internet like simulations

You will find the Bird configuration directories on ~/src/iof-tools/experimentFiles/elmokashfi/bird-config-files.tgz. The deployment phase on the testbed is the same as the Fabrikant topologies, but you will need more physical resources. All our simulations have been run with a 4:1 ratio (4 AS on a single core), so you have to reserve at least 1000 cores. To reproduce exactly our simulations, you must generate the network change on the same Autonomous Systems as we did. Again, for details on how to manage this kind of operation inside the README.md. Below you will find the list of the AS generating the change and some simple scripts to automate the runs:

Autonomous Systems generating the change:

  1. AS1815
  2. AS871
  3. AS3786
  4. AS2624
  5. AS2919
  6. AS1127
  7. AS3257
  8. AS3462
  9. AS1403
  10. AS2218

These are the commands used to do 5 runs, breaking the AS3462:

ssh -F ssh-config nodeXX "sed -i -E 's/(#)(include  \"bgpSessionExp.*)/\2/' iof-bird-daemon/nodes-config/h_3461/bgp_h_*.conf"
./run-experiment.sh -a 3462 -r 5 -o RES-4K-30SEC-BROKEN3462 &&
ssh -F ssh-config nodeXX "sed -i -E 's/(^include  \"bgpSessionExp.*)/#\1/' iof-bird-daemon/nodes-config/h_3461/bgp_h_*.conf"

You will need to change nodeXX with the node where the AS3462 is running. You can easily concatenate a list of these commands to be able to simulate with different AS generating the network change, without having to redeploy the topology.