Prototype Version History

From Ouroboros
Jump to navigation Jump to search

Ouroboros is still in an early proof-of-concept prototype phase. Versions 0.x.y have no forward nor backward compatibility. We bump minor version with API or protocol changes. Within a minor version, different patch levels should be compatible (no guarantees).

Once the functionality has reached a minimal critical mass, and a sufficient degree of software stability has been achieved, a version 1.0.0 will be released with the intention to maintain backwards compatibility from that point. This is still many (man)years off.

This page summarizes the progress and the plans for the next prototype (minor) version. For a summary of the current implementation state, see our status page.

0.22 (Current development branch)

  • Added flow authentication and the Flow Allocation Protocol Header in the irmd.
  • Added UDP/IPv6 support.
  • Moved encryption control from qosspec to naming system.
  • Refactored and simplified enrolment and connection manager.
  • Complete rewrite of the DHT for the unicast layer.
  • Improved MacOS X/BSD compatibility.
  • Added woodpecker CI workflow, deprecated appveyor.
  • Improved test coverage.
  • Improved systemd service and pkgconfig installation logic.

0.21 (Current version)

  • Fixed timeout overflow on 32-bit systems and improved logging.
  • Improved FUSE output and management packets.
  • Refactored CACEP to CEP and improved flow deallocation and race handling.
  • Added a build option to use pid as address and improved configfile parsing.
  • Fixed build without OpenSSL and improved FreeBSD and OSX compatibility.

0.20

  • Improved flow allocation, monitoring, and event handling.
  • Refactored application and IPCP initialization.
  • Improved logging, configuration, and the build system.
  • Improved compatibility with Raspbian and FreeBSD.

0.19

  • Improved buffer allocation and flow monitoring.
  • Improved flow liveness and RIB statistics.
  • Improved error handling and memory management.
  • Improved the build system and compatibility.

0.18

  • Improved congestion window scaling and RIB initialization.
  • Added a Rendez-Vous mechanism for flow control.
  • Improved retransmission logic and timerwheel processing.
  • Added flow liveness monitoring and metrics to RIB.
  • Improved delayed ACKs, Linux RTT estimator, and flow monitoring.
  • Refactored main functions and improved logging and memory management.

0.17

  • Added an equal-cost multipath routing policy.
  • Improved LFA and ECMP algorithms.
  • Stabilized FRCP under packet loss.
  • Added support for GCC 10.
  • Improved threadpool and deadlock fixes.

0.16

  • Removed support for SWIG.
  • Improved encryption and key derivation.
  • Added per-message encryption with OpenSSL.
  • Improved libgcrypt initialization.
  • Added tests for shm_rbuff.
  • Improved blocking writes and buffer sizing.
  • Improved flow allocator priority.

0.15

  • Refactored UDP IPCP and flow management.
  • Added an initial RTT estimator to FRCT.
  • Improved build, documentation, and copyright.
  • Added a flow_join operation for broadcast.
  • Managed shm_flow_set from IRMd.

0.14

  • Improved reading of tx queue length and server name handling.
  • Added the IFF_NO_PI flag to ovpn.
  • Added broadcast IPCP.
  • Improved ECN and memory allocator APIs.

0.13

  • Added the First Fragment (FFGM) bit to FRCT and ECN support.
  • Revised the du buff API and added broadcast IPCP.
  • Updated documentation and copyright.
  • Refactored UDP IPCP and added an RTT estimator to FRCT.
  • Fixed strict aliasing warning and improved SWIG and encryption support.
  • Added per-message encryption with OpenSSL and improved libgcrypt initialization.

0.12

  • Changed SDU to packet throughout the codebase.
  • Improved error checking and renamed port_id to flow_id.
  • Added multithreading to the Ethernet IPCP.
  • Simplified routing algorithm selection.
  • Defined QoS specs in header and fixed padding in rdrbuff.
  • Improved DHT slack timer and Qdisc bypass configuration.
  • Disabled CRC by default and initialized libgcrypt before use.
  • Improved build and configuration for netmap, Qdisc, and raw socket API.
  • Added a non-blocking socket in the Ethernet IPCP.
  • Improved test coverage and error handling.

0.11

  • Improved help information, error handling, and memory management.
  • Made UNIX socket buffer size configurable.
  • Improved DHT and link-state handling.
  • Added event types to fqueue and improved memset and time utility macros.
  • Added support for raw QoS, priority, and timestamp options.
  • Enhanced flow down handling and sequence number checks.
  • Improved shutdown and cleanup logic for IPCPs and IRMd.

0.10

  • Revised lookup tracking and the Data Transfer component in DHT.
  • Improved flow statistics and locking in `ipcpd`.
  • Fixed cleanup and memory management in DT and graph components.
  • Replaced fork/execv with posix_spawn in `irmd`.
  • Fixed FUSE access for non-root users and buffer sizes.
  • Added non-blocking and timeout support for UNIX sockets.
  • Improved validity checks and length fields in eth-dix.
  • Increased the read buffer in the ocbr server and simplified reg/unreg API.

0.9

  • Made the hash algorithm configurable in `ipcpd`.
  • Set the CC-BY 4.0 license on man pages.
  • Fixed DHT lookup and state handling.
  • Improved timerwheel and tool checks.
  • Improved the build system and install options.

0.8

  • Added a version header and patchlevel to versioning.
  • Updated copyright and documentation.
  • Integrated raptor FPGA device support.
  • Improved DHT state handling and bucket updates.
  • Deprecated the term "shim" in favor of "layer".
  • Improved kernel module integration for raptor.
  • Fixed various bugs and formatting issues.

0.7

  • Removed protocol buffers from flow allocator, link state, shim-udp, and shim-eth-llc.
  • Refactored application process and instance naming.
  • Refactored shared memory buffer implementations.
  • Improved the build system for OS X and other platforms.
  • Improved error handling and fixed bugs in `irmd` and `ipcpd`.
  • Added support for debug builds with sanitizer.
  • Improved FRCT implementation and network endianness.
  • Refactored the echo tool and CBR tool.
  • Improved DHT join retries and link-state database.
  • Improved build and portability.

0.6

  • Improved documentation throughout the project.
  • Deprecated `ouroboros_init` and `ourboros_fini`.
  • Re-enabled multi-block support.
  • Improved flow cleanup and shutdown order.
  • Added an option to print the version in `irmd`.
  • Added a multiplier to scale scheduler threads.
  • Improved DHT with deadlock fixes and debugging.
  • Improved lockless and lock-based data structures.
  • Fixed major bugs and improved static analysis.
  • Improved the build system and bugreport URL.

0.5

  • Added a threadpool manager for improved concurrency.
  • Added retry and asynchronous handling for DHT, and improved lookup and debugging.
  • Added Loop-Free Alternates routing and refcount to graph edges.
  • Improved thread management and enabled thread cancellation in IPCPs.
  • Added FUSE support for exporting RIB internals.
  • Improved DHT, PFF, and scheduler policies.
  • Added a systemd unit on install.
  • Added per-instance FRCT lock and configuration command.
  • Fixed major bugs and improved static analysis.
  • Revised the build system and improved portability.

0.4

  • Added a secure random generator to `lib`.
  • Added full-fledged QoS support.
  • Hardcoded shim hash algorithms.
  • Improved threadpool management and multithreading.
  • Refactored the flow manager into DT and FA.
  • Added capability reporting in `ipcpd`.
  • Added netmap support for LLC shim.
  • Implemented a lockless version of the rbuff.
  • Improved error handling and shutdown procedures.
  • Fixed major bugs and memory leaks.

0.3

  • Stabilized and fixed bugs in flow allocation and deallocation.
  • Added a threadpool for the main loop in `ipcpd`.
  • Enabled name querying in IPCPs.
  • Fixed memory leaks across `ipcpd`, `tools`, and `lib`.
  • Added an API for accepting flows with QoS.
  • Improved locking and log messages.
  • Refactored fast path and flow interfaces.
  • Added northbound ringbuffers.
  • Added Python wrappers.
  • Improved graceful shutdown and cleanup in `irmd`.

0.2

  • Added full multi-block support in `shm_du_map`.
  • Introduced robust locking in shared memory and crash recovery.
  • Removed `du_buff` and PCI.
  • Changed IRM API and replaced pid with api.
  • Improved cleanup of flows in `irmd`.
  • Added wildcarding of DIF names.
  • Added a shim over IEEE 802.2 over IEEE 802.3.
  • Implemented IPCP over local memory.
  • Enabled blocking write in shim-udp.
  • Added a tool for bandwidth testing (cbr).

0.1

  • Initial build infrastructure and licensing (GPLv2, CONTRIBUTORS, LICENSE).
  • Added core CMake and build system, required C89 compliance.
  • Introduced core data structures: du_buff, bitmap, list, logging infrastructure.
  • Implemented initial IRM, IPCP, DIF allocator, and CDAP APIs.
  • Added shared memory and ring buffer implementations.
  • Developed flow allocation, deallocation, and fast path logic.
  • Introduced shim-udp and IPCP daemon, with DNS and registration support.
  • Added locking, threading, and concurrency improvements across modules.
  • Implemented flow control, QoS cube definitions, and registration to DNS.
  • Added initial tools: echo application, irm tool, and test infrastructure.
  • Performed extensive bugfixing, memory leak cleanup, and code refactoring.