Statistics
| Branch: | Revision:

iof-website / software.md @ master

History | View | Annotate | Download (6.31 KB)

1
---
2
layout: default
3
title: IoF - Internet on FIRE
4
---
5

    
6
<div id="home">
7
<h1>IoF - Software</h1>
8

    
9
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](https://github.com/internetonfire/iof-tools).
10

    
11
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).
12
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.
13

    
14
# Modified BIRD daemon
15

    
16
In our experiments we run a customized version of the BIRD routing daemon.
17
You are not required to download that, as this is automatically downloaded by our tools when configuring the nodes of the testbed.
18
The source code is in any case available online [on github](https://github.com/internetonfire/iof-bird/) (branch NoMiCe).
19

    
20
# IoF Virtual Machine
21
You can download the Virtual Machine to reproduce our experiments from this link (size 5.3 GB): [IoF VM](https://drive.google.com/open?id=1er9C3m2_6asA1knFneKprCcxnVD6Ofwv).
22
The machine is an Ubuntu 18.04 with all the software needed already installed and our repository already cloned. You 
23
can import the `ova` file in any recent virtualization platform (if you don't have one, you can use 
24
[VirtualBox](https://www.virtualbox.org)).
25

    
26
The credentials to access the vm are:
27

    
28
**USER**: iof
29

    
30
**PASS**: iof
31

    
32
The jFed software is already installed, you can start it by opening a Terminal and typing `jFed-Experimenter`. The only
33
step needed is the copy of the certificate and keys related to your [iMinds Auhority](https://authority.ilabt.iminds.be) 
34
account and, if you plan on reproducing big topologies, the configuration of your user on the omni_config file. All
35
these steps are detailed in the [README.md](https://github.com/internetonfire/iof-tools/#internet-on-fire-scripts-repo) of the IoF repository.
36
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.
37

    
38
## Reproducing our specific simulations
39

    
40
**NOTE:** this section refers to the instructions in an appendix of a paper currently under review.
41
The appendix can be downloaded [here](/docs/Reproducibility.pdf).
42
As soon as possible, we will publish the complete paper under the Publications section.
43

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

    
49
### Fabrikant simulations
50
You will find all the Bird configuration directories on `~/src/iof-tools/experimentFiles/fabrikant/bird-config-files`.
51
As already detailed in the [README.md](https://github.com/internetonfire/iof-tools/blob/master/experimentFiles/README.md#experiment-files) file inside the `experimentFiles` folder, the folders names indicate the type of
52
MRAI setting and the size of the gadget: `0_$MRAISETTING$_f$GADGETSIZE$n-dest`. You can select the topology you want and
53
substitute the *copy* command present on the Appendix with the topoogy directory you want to simulate. Depending on the
54
size of the gadget, the parameters of the `./run-simulation.sh` script have to be changed:
55

    
56

    
57
| Gadget Size | Command to use |
58
| :---------: | ---------------|
59
| 5 |  `./run-experiment.sh -a 7 -n 5 -r 1` |
60
| 7 |  `./run-experiment.sh -a 9 -n 7 -r 1` |
61
| 9 |  `./run-experiment.sh -a 11 -n 9 -r 1` |
62
| 11 | `./run-experiment.sh -a 13 -n 11 -r 1` |
63
| 13 | `./run-experiment.sh -a 15 -n 13 -r 1` |
64
| 15 | `./run-experiment.sh -a 17 -n 15 -r 1` |
65
| 17 | `./run-experiment.sh -a 19 -n 17 -r 1` |
66

    
67
All the remaining parts (fetching, analyzing, plotting) are the same as those detailed in the Appendix. If you want to
68
run more than a single topology on the same deployed physical nodes some steps are needed: after you have finished a simulation
69
you must clean the network config and redeploy the new topology.
70
You can find the detailed informations on how to do it 
71
on the repository's [README.md](https://github.com/internetonfire/iof-tools/#internet-on-fire-scripts-repo).
72

    
73

    
74
If you don't want to use our pre generated Bird config files, you can use all our toolchain to reproduce the same topology
75
graphs and configurations by yourself. A detailed description on how to use the toolchain is available inside the [README.md](https://github.com/internetonfire/iof-tools/#internet-on-fire-scripts-repo).
76

    
77
### Internet like simulations
78
You will find the Bird configuration directories on `~/src/iof-tools/experimentFiles/elmokashfi/bird-config-files.tgz`.
79
The deployment phase on the testbed is the same as the Fabrikant topologies, but you will need more physical resources.
80
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.
81
To reproduce exactly our simulations, you must generate the network change on the same Autonomous Systems as we did.
82
Again, for details on how to manage this kind of operation inside the [README.md](https://github.com/internetonfire/iof-tools/#internet-on-fire-scripts-repo).
83
Below you will find the list of the AS generating the change and some simple scripts to automate the runs:
84

    
85
Autonomous Systems generating the change:
86
1. AS1815
87
2. AS871
88
3. AS3786
89
4. AS2624
90
5. AS2919
91
6. AS1127
92
7. AS3257
93
8. AS3462
94
9. AS1403
95
10. AS2218
96

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

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

    
105
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 
106
simulate with different AS generating the network change, without having to redeploy the topology.
107
</div>