| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a single-host testbed that gives each node its own Linux network +
mount namespace, wired together with veth pairs and per-layer bridges,
plus an nsenter executor that runs commands inside a node's namespace.
The per-node mount namespace mounts a private tmpfs over each of the
filesystem trees Ouroboros pins at compile time, so exactly one IRMd
owns each per node. This lets a single host place clients and servers
on distinct nodes and exercise real multi-hop forwarding.
Requires CAP_SYS_ADMIN (root / sudo), e.g. a privileged container.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Prepare the framework for the new testbed that runs multiple IRMds
using Linux namespaces. Adds capabilities on the Testbed base class:
- needs_install: build/install the prototype on the nodes
- single_irmd: one in-process IRMd, driven locally
- terminate_before_swapout: reap the prototype before swap_out tears
down the context it runs in
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
|
| |
|
|
|
|
|
| |
Build the enrollment order from a central node instead of an arbitrary
endpoint to improve enrollment speed.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
|
| |
|
|
|
|
|
| |
Now experiments can tune the link-state routing update and recalc
timers.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
|
| |
|
|
|
|
|
| |
Now tracks netem/htb qdisc state per IPCP instead of in a global
set. It places place netem on the bridge-side interface (host_ifname)
so HTB rate limiting keeps back-pressure (mixing htb and tc on the
same interface doesn't work).
|
| |
|
|
|
|
|
|
| |
Fix check_version() to use tag-level comparison instead of a
patch-range check, making it robust for dev/pre-release versions on
both rumba and PyOuroboros.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
|
| |
|
|
|
|
|
|
|
| |
Add Duplicate, Reorder and Corrupt classes modelling the corresponding
tc-netem impairments, and extend LinkQuality and EthDixLayer with
support for these new parameters alongside the existing delay, loss
and rate.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
|
| |
|
|
|
|
|
|
|
|
| |
Replace setup.py and MANIFEST.in with pyproject.toml. The version is
now derived from git tags via setuptools_scm, and added
.git_archival.txt and .gitattributes for git archive support. Remove
_version.py from version control as it is now auto-generated at build
time.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove IRATI and rlite prototype plugins, keeping only Ouroboros.
Delete .gitlab-ci.yml (only contained an irati test job and a
Sphinx pages job). Clean up all irati/rlite imports and references
from examples, documentation, and tools.
Qemu was tied heavily with rlite and irati. As it's less useful for
ouroboros it's removed rather than reworked.
Updated README.md and AUTHORS
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
|
| |
|
|
| |
Record if the body of the ExperimentManager ran without any errors.
|
| |
|
|
|
|
|
|
| |
Add some methods to the enum for nicer reporting when printing the help
documentation or when errors occur due to incorrect values on the
command line.
Signed-off-by: Thijs Paelman <thijs@ouroboros.rocks>
|
| |
|
|
|
|
|
|
| |
This fixes overlapping lines if an IPCP at rank N is registered at
multiple lower layers. Also updates the example to a network that is
feasible.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
|
| |
|
|
|
|
|
|
| |
Layers at the same rank will now be slightly offset. Increased
line width for adjacencies.
Added igraph and plotly packages to extra requirements.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
|
| |
|
|
|
|
|
| |
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 will update certificates on the ubuntu hosts.
|
| |
|
|
|
|
| |
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.
|
| |
|
|
|
| |
It can now take a list of node names. Also fixes sudo in ssh_support,
which I accidentally broke in the previous commit.
|
| |
|
|
|
|
|
|
| |
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>
|
| |
|
|
|
| |
This adds a file that explains how to run Rumba interactively, as it
may be bothersome to swap it out each time.
|
| | |
|
| |
|
|
|
|
| |
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 adds the scripts used in the IEEE Network paper.
|
| |
|
|
|
| |
In Python 3.7, async is a reserved keyword, which caused Rumba to fail
since we used async as a function parameter.
|
| |
|
|
|
| |
This will set the default project name to rumba for most testbeds,
since a dedicated group for rumba experiments has been setup.
|
| |
|
|
|
|
| |
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 will add a reference to the Rumba paper in the documentation and
direct new jFed users to the 'rumba' project.
|
| |\ |
|
| | |
| |
| |
| |
| | |
This will set a keepalive on the Transport object to prevent
disconnects by firewalls.
|
| |\| |
|
| | | |
|
| | | |
|
| |\| |
|
| | |
| |
| |
| | |
The URL of the jFed authority was mangled and thus not working.
|
| | |
| |
| |
| |
| | |
This adds a script to subtract two csv with bandwidth results from
each other. It can then be passed to bw_graph.py.
|
| |/
|
|
|
|
|
|
| |
Certain testbeds use a proxy to access the outside world. Due to
recent changes this was not working anymore. This takes a different
approach to re-enable this. It simply adds the lines to /etc/profile
after swap-in so that the proxy is added to every shell upon
execution.
|
| |
|
|
|
|
| |
The redirection syntax was not fully portable between shells.
Fixes #58
|
| |
|
|
|
|
|
| |
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.
|