Ouroboros Prototype
The Ouroboros prototype is a packet network implementation based on the networking model of the same name. It is developed in C for POSIX operating systems.
Software Architecture
Split in library
Library
IRMd
IPCPs
Requirements
Ouroboros builds on most POSIX compliant systems. Below you will find instructions for GNU/Linux, FreeBSD and OS X. On Windows 10, you can build Ouroboros using the Linux Subsystem for Windows .
Get Ouroboros
You can clone Ouroboros using the command line from its website or, if you prefer from Github or BitBucket.
$ git clone https://ouroboros.rocks/git/ouroboros
$ git clone git://ouroboros.rocks/ouroboros
$ git clone https://github.com/dstaesse/ouroboros
Optional repositories are pyOuroboros, a Python wrapper to write Ouroboros programs in Python, and ouroboros-metrics that contains an InfluxDB exporter.
Dependencies
To build Ouroboros, you need cmake, google protocol buffers installed in addition to a C compiler (gcc or clang) and make.
On GNU/Linux you will need either libgcrypt (≥ 1.7.0) or libssl if your glibc is older than version 2.25.
On OS X, you will need homebrew. Disable System Integrity Protection during the installation and/or removal of Ouroboros.
Optionally, you can also install libgcrypt, libssl (to enable encryption), fuse (to enable exporting internal metrics), and dnsutils (to enable use of a DynDNS server to be used as a naming directory for a UDP layer). Setting up a DNS server (e.g. bind) is out of scope of this installation guide.
Debian/Ubuntu Linux:
$ apt-get install git protobuf-c-compiler cmake
$ apt-get install libgcrypt20-dev libssl-dev libfuse-dev dnsutils cmake-curses-gui
If during the build process cmake complains that the Protobuf C compiler is required but not found, and you installed the protobuf-c-compiler package, you will also need this:
$ apt-get install libprotobuf-c-dev
Arch Linux
$ pacman -S git protobuf-c cmake
$ pacman -S libgcrypt openssl fuse dnsutils
FreeBSD 11/12
$ pkg install git protobuf-c cmake
$ pkg install libgcrypt openssl fusefs-libs bind-tools
Mac OS X 10/11/12
$ brew install git protobuf-c cmake
$ brew install libgcrypt openssl
Installation instructions
When installing from source, go to the cloned git repository or extract the tarball and enter the main directory. We recommend creating a build directory inside this directory. Run cmake providing the path to where you cloned the Ouroboros repository. Assuming you created the build directory inside the repository directory, the following commands build and install O7s:
$ mkdir build && cd build
$ cmake ..
$ sudo make install
Remove Ouroboros
To uninstall Ouroboros, simply execute the following command from your build directory:
$ sudo make uninstall
Configuration parameters
At compile time, there are a number of parameters that can be tweaked to increase performance or decrease memory consumption, for instance.
These parameters can be enabled by specifying them to cmake
$ cmake -D<option>=<value> ..
or interactively by running ccmake . in the build directory.
Parameter | Description | Values | Default |
---|---|---|---|
ACK_WHEEL_RESOLUTION | Minimum acknowledgment delay (ns), as a power to 2 | 18 | |
ACK_WHEEL_SLOTS | Number of slots in the acknowledgment wheel, must be a power of 2 | 256 | |
BOOTSTRAP_TIMEOUT | Timeout for an IPCP to bootstrap (ms) | 5000 | |
CMAKE_BUILD_TYPE | Build type |
|
Release |