| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
The draw_experiment(exp) function will draw a 3D representation of the
network. Depends on igraph and plotly packages.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
|
|
|
|
|
| |
Influxdbclient pypi now includes the proxy patch, there is no more
need to manually patch it.
|
|
|
|
|
|
| |
This fixes creating an experiment without influxDB defined (check for
None before iterating). Also fixes setting link rates to 1GbE, as this
requires link negotiation to be enabled.
|
|
|
|
|
|
|
| |
Apparently I didn't test my final change for this feature when I moved
it from the storyboard to the experiment. It didn't work, I tried to
put it in the testbed class, but that was a mess, so for now it's
moved to the prototype.
|
|
|
|
|
|
| |
This adds a couple of commands to start/stop metrics exporter, set
link rate on virtual wall, and updating the prototype from git, which
is useful in interactive mode.
|
| |
|
|
|
|
|
| |
In case of dumpsterfire, exp.terminate_prototype(force=True) will now
wipe the prototype Ouroboros completely.
|
|
|
|
|
| |
This allows specifying an InfluxDB server for the experiment. The
prototype will then install and configure the metrics exporter.
|
|
|
|
|
|
|
|
| |
This updates jfed support for some recent changes in the CLI. Since
the new CLI requires writing the jfed password to a text file, I added
an option to set it in the experiment description too. It will still
prompt if not set. There is also an option to enable/disable the
bastion server, as there has been some changes to its login.
|
|
|
|
|
| |
Registration CLI was revised to group name management under
"irm name".
|
|
|
|
|
|
|
| |
This adds parameters build_options and add_packages that allows
passing additional packages to install and a string of flags that can
be processed by the prototypes. In the case of the Ouroboros
prototype, it passes CMake build options.
|
|
|
|
|
|
|
| |
The normal was renamed unicast in the commands. Also updates the git
URL to the new website.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
|
|
|
|
|
|
| |
A connect IPCP command might fail in Ouroboros if the routing has not
converged yet. This will retry to connect the IPCP 3 times before
giving up.
|
|
|
|
|
|
| |
This will remove the distinction between mgmt and dt flows since Rumba
allows setting up connections between IPCP at a very high level
anyway.
|
|
|
|
|
| |
This adds a script to subtract two csv with bandwidth results from
each other. It can then be passed to bw_graph.py.
|
|
|
|
|
|
|
| |
This adds functions to terminate the prototype gracefully or
forcefully, and to reboot all nodes in the experiment. This is useful
when running the experiment interactively, so swapping out and back in
is not always required.
|
|
|
|
|
|
| |
This will register the name in a specific IPCP instead of the whole
layer, since this gives unexpected behaviour with the local testbed
otherwise.
|
|
|
|
|
|
| |
This fixes the layer names, since 'DIF X' was being passed instead of
just 'X'. It also adds a bash command to startup.sh so that it is
always executed as a bash script.
|
|
|
|
|
| |
This switches the register and bind operations in the ouroboros
prototype, to avoid a race condition when starting a server very fast.
|
| |
|
|
|
|
|
| |
In case the experiment is done with the Ouroboros prototype, the name
needs to be bound and registered on the node.
|
|
|
|
|
|
|
|
|
|
| |
This adds a function to export the bytes sent by flows in a certain
DIF. It is implemented within the storyboard, which calls an abstract
function in the Experiment class so that every prototype can implement
it in its own specific way. This commit adds the implementation for
Ouroboros. It exports it to a csv, with the first item the source
IPCP, the second the destination IPCP and then the bytes sent on the
flow.
|
|
|
|
|
| |
This allows the destroying of a DIF while the experiment is
running. This to ease the emulation of failures in the network.
|
|
|
|
|
| |
This reconnects the SSH connection in case the other side unilaterally
closed the connection. This often happens with the exogeni testbed.
|
| |
|
|
|
|
|
|
| |
This is necessary to enable scripts to use full-mesh or manual
enrollment strategies.
Fixes #54.
|
|
|
|
|
|
| |
Names were being registered layer-wide, which can give problems in the
local testbed. This changes it to register with the IPCPs in the node
instead.
|
|
|
|
|
| |
This updates the copyright on the license headers to that it is
extended to the current year.
|
|
|
|
|
| |
Fixes #45
Only implemented in IRATI, other prototypes warn and ignore.
|
|
|
|
|
| |
This adds docstrings for methods of in the testbeds, prototypes and
certain things in the model.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds support for a testbed based on Docker containers running on
the local host. Bridging the containers can be done using built-in
Linux bridging or using OpenVSwitch bridges.
A new resource 'executor' has been added to abstract away command
execution on nodes on the testbed. Executors have been created for
local command execution, docker exec based command execution and
SSH-based command execution. This has also been changed in the
prototypes to execute using the correct executor.
|
|
|
|
|
| |
To align with the ip command, we now use "dev" instead of "if_name" to
specify the interface for an eth-llc or eth-dix IPCP to use.
|
|
|
|
|
|
|
| |
This ameliorates the code by incorporating Marco's comments. It is now
possible to run the Ouroboros plugin with the fake testbed plugin as
non root. sudo is executed in case it was not done the last 15
minutes. The cleanup is also done properly.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds local Ouroboros support in case of a fake testbed (i.e. no
resources allocated). A next PR will abstract away the mode of
communication with the testbed, since the Docker plugin will also need
it.
This also adds another function to the model, terminate_prototype,
which should clean up the prototype gracefully, or can be skipped
depending on the testbed.
Currently the ouroboros plugin with the fake testbed needs to be run
as root. If there is a way to run the command as root in the
background and then clean it up properly, I would be happy to know
how.
|
|
|
|
|
| |
This enables exporting the flow statistics of the data transfer
component to the FUSE filesystem.
|
|
|
|
| |
This adds policy support for the Ouroboros plugin.
|
|
|
|
|
|
| |
This adds two extra parameters to the Experiment class, so that users
can specify their custom repositories and branches for testing new
features.
|
|
|
|
|
|
| |
Registration was being done before the bootstrapped IPCP was actually
reachable over the N-1 layer. This only does the registration once the
layer below is fully connected.
|
|\ |
|
| |
| |
| |
| |
| |
| | |
Autobind was happening for all IPCPs, regardless if they were normal
IPCPs or not. This fixes it so that it is only called for normal
IPCPs, which avoids warnings in the logs.
|
|/
|
|
|
|
|
| |
This measures the time for every public function of the Experiment
class and logs them.
Fixes #40
|
|
|
|
|
| |
The ouroboros CLI was recently updated to use more user-friendly
terminology.
|
|
|
|
|
| |
The ouroboros irm commands were updated to bind the ipcp instance to
the dif and ipcp names automatically.
|
|
|
|
|
| |
This uses a saner name for multiprocessing_utils and adds some
licenses where they were missing and adds Dimitri as author.
|
|
|
|
| |
This will install Ouroboros in parallel on the different nodes.
|
|
|
|
|
| |
The ouroboros install scripts were deprecated. This updates rumba to
install ouroboros using the cmake and make install commands.
|
|
|
|
|
| |
This lets the prototypes use a common function to install packages
through aptitude.
|
|
|
|
|
| |
This uses the zip function to run through the different lists in
bootstrap_prototype, since it is a more elegant solution.
|
|
|
|
|
|
|
| |
Enrollments were performed together before connection setup was
performed in lower rank DIFs, which caused IPCPs of N+1 DIFs to enroll
over DIFs that had no data transfer connectivity. Enrollment and
connection establishment are now performed per-DIF to solve this.
|
|
|
|
|
|
| |
This will let rumba continue if the experiment is already swapped in
in emulab, since it is not an error. It also adds the posibility to
swap the experiment out from Rumba.
|