We introduce the Ouroboros prototype, a user-space system for synchronous and asynchronous inter-process communication (IPC). Ouroboros simplifies creating networked applications by providing a single abstraction that unifies IPC and networking APIs. Ouroboros provides a powerful networking subsystem that allows building secure overlay networks on top of UDP/IP and Ethernet. To increase scale and scope, overlays can be added on top of previously created overlays. Management of applications running on top of Ouroboros, such as making a server application available on a certain overlay, can be done on-the-fly and with great ease.
This lecture will explain the basic principles underlying the overall design and inner workings of Ouroboros, combining concepts from operating systems (IPC and microkernels) and networking (packet switching) to achieve a minimal, elegant yet powerful IPC and network system. The key objective of Ouroboros is, above all, simplicity.
From an administrator's perspective, the three step process to connect processes (register / bind / allocate or bind / register / allocate) greatly simplifies the way one manages server applications.
From a programmer's perspective, the library provides a very simple API (allocate/accept/deallocate, read/write) on top of a naming system that abstracts away the details how IPC is achieved, making writing distributed applications effortless. Asynchronous I/O is done by a scalable event system modeled on BSD's kqueue. The system is configured using a single call based on the well-known ioctl/fcntl calls and configurations for integrating TLS-like security are being implemented.
As it is a lot more than just a library, the Ouroboros network subsystem integrates a fully distributed packet-switched network that can be bootstrapped on top of a UDP network or on top of Ethernet if a suitable interface is found on the system (raw sockets on Linux, BPF on FreeBSD and OSX, or netmap if installed).
Finally, we will end with some future directions in research and steps that are needed to bring the Ouroboros implementation beyond its current prototype state.
Ouroboros is under active development at Ghent University - imec and written in C for POSIX-compliant operating systems. It is Free Open Source Software and available under the LGPL (library) / GPL license (network subsystem) at ouroboros.ilabt.imec.be
Speakers: Dimitri Staessens Sander Vrijders