diff options
author | Sander Vrijders <[email protected]> | 2017-04-20 12:02:05 +0200 |
---|---|---|
committer | Sander Vrijders <[email protected]> | 2017-04-20 12:02:05 +0200 |
commit | 1eacb3dc82526d4c087bf325e53d305c08f85bfc (patch) | |
tree | 617803ae80bb0b657539a5c5ab032fbed3b70c39 | |
parent | 706d2e6216154f9e9e80ca6d9b1c32f1ba4c46ab (diff) | |
download | rumba-1eacb3dc82526d4c087bf325e53d305c08f85bfc.tar.gz rumba-1eacb3dc82526d4c087bf325e53d305c08f85bfc.zip |
Update README
This updates the README to describe the workflow of Rumba better.
-rw-r--r-- | README | 28 | ||||
-rw-r--r-- | README.md | 97 |
2 files changed, 97 insertions, 28 deletions
@@ -1,28 +0,0 @@ -# measurement-framework -Part of ARCFIRE 2020, WP3 work package. - -Workflow, both external and internal: - - (1) user defines the network graph, creating instances of model.Node - and model.DIF classes - - (2) user creates an instance of a Testbed class - - (3) user creates an instance of prototype.Experiment class, passing - the testbed instance and a list of Node instances - - at the endo of the base Experiment constructor, the - generate function is called to generate information about - per-node IPCPs, registrations and enrollment, ready to be - used by the plugins - - (4) user calls run() on the prototype.Experiment instance: - - First, run() calls Testbed.swap_in(), passing the - Experiment, and filling in the missing information - - - Second, run() calls a prototype-specific setup function, - to create the required IPCPs, perform registrations, - enrollments, etc. - - - Third, perform tests (TODO) - - - Fourth, run() calls Testbed.swap_out() diff --git a/README.md b/README.md new file mode 100644 index 0000000..c2c650d --- /dev/null +++ b/README.md @@ -0,0 +1,97 @@ +# Rumba: A framework to install, bootstrap a RINA network + +Rumba is part of ARCFIRE 2020, Work Package 3. It is a framework in +Python which allows user to write a Python script to define a RINA +network. The physical graph needed for this RINA network is then +calculated and realised on one of the supported testbeds. Next, one of +the supported RINA prototypes is installed. After installation, the +network is bootstrapped. For an example of such a Python script, have +a look at the examples/ folder. + +## Workflow, both external and internal: + + 1. user defines the network graph, creating instances of model.Node + and model.DIF classes + + 2. user creates an instance of a Testbed class + + 3. user creates an instance of prototype.Experiment class, passing + the testbed instance and a list of Node instances + + * At the end of the base Experiment constructor, the + generate function is called to generate information about + per-node IPCPs, registrations and enrollment, ready to be + used by the plugins + + 4. user calls run() on the prototype.Experiment instance: + + * First, run() calls Testbed.swap_in(), passing the + Experiment, and filling in the missing information + + * Second, run() calls a prototype-specific setup function, + to create the required IPCPs, perform registrations, + enrollments, etc. + + * Third, perform tests (TODO) + + * Fourth, run() calls Testbed.swap_out() + +## Installation + + Rumba can be found on the + [PyPi](https://pypi.python.org/pypi/Rumba) and can thus be + installed through pip, by using `pip install rumba`. However, to + install the latest version, after cloning the repository, a user + can also issue `python setup.py install`. + +## Supported prototypes + + * [IRATI](https://github.com/IRATI/stack) is an open source + implementation of the RINA architecture targeted at the OS/Linux + system, initially developed by the FP7-IRATI project. + + * [rlite](https://github.com/vmaffione/rlite) is a lightweight Free + and Open Source implementation of the Recursive InterNetwork + Architecture (RINA) for GNU/Linux operating systems. + + * Ouroboros is a user-space implementation of RINA with a focus on + portability. It is written in C89 and works on any POSIX.1-2008 + enabled system. + +## Supported testbeds + + * [QEMU](http://wiki.qemu-project.org/Main_Page) is a generic and + open source machine emulator and virtualizer. + + * [Emulab](https://www.emulab.net/) is a network testbed, giving + researchers a wide range of environments in which to develop, + debug, and evaluate their systems. + + * [jFed](http://jfed.iminds.be/) is a Java-based framework for + testbed federation. + + In order to use the jFed testbed, a user first needs to download + his/her key from + [https://authority.ilabt.iminds.be/](https://www.youtube.com/watch?v=dQw4w9WgXcQ/) + After logging in, click on *Download your certificate*. Save the + contents in a file (for example cert.pem). A jFed testbed instance + is defined as follows: + + tb = jfed.Testbed(exp_name = "rochefort10", + username = "ricksanchez", + cert_file = "/home/morty/cert.pem") + + Here the experiment name is rochefort10, the user's name is + ricksanchez, and the certificate can be found in + /home/morty/cert.pem. + + Before running the experiment it is wise to use an SSH agent to + avoid having to enter the passphrase for every login to a node by + the framework. (Apart from asking for the passphrase to login to + the nodes, the framework will always ask for the passphrase since + it is needed by the jFed CLI as well.) In order to start an SSH + agent and to add the certificate, simply perform the following + commands: + + eval `ssh-agent` + ssh-add /home/morty/cert.pem |