Prototype Version History
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.23 (Current development branch)
0.22 (Current version, November 7th 2025)
- Added flow authentication and the Flow Allocation Protocol header in the irmd
- Added UDP/IPv6 support
- Added protocol level debug logging
- Moved encryption control from qosspec to naming system
- Removed qosspec parameter from the broadcast API
- Refactored and simplified enrolment and connection manager
- Complete rewrite of the DHT for the unicast layer
- Refactored Ethernet IPCPs
- Deprecated appveyor in favor of codeberg/woodpecker CI
- Improved test coverage
- Improved systemd service and pkgconfig installation logic
- Improved ctest integration into build system
0.21
- Moved public key handling from library to IRMd
- Refactor of IRMd / registry implementation
0.20
- Improved configuration file handling
- Improved FUSE stability
- Log unique IDs to enrollment requests
- Print logo on startup when logging to std output
- Fix most common hangs on exit
0.19
- Pass the N-1 layer MPL at flow allocation
- Add flow liveness monitoring.
- Allow multiple directories in an IPCP
- Dropped support for raptor
- Use one UDP port for the IPCP over UDP/IPv4
0.18
- Use QoS cube for ECN marking
- Always use 64-bit endpoint IDs
- Add RIB statistics for flow allocator
- Add congestion avoidance policies
- Add flow control policies
- Add GCC 10 static analyzer build option
0.17
- Rename systemd service to ouroboros
- Add tests for LFA and ECMP routing
- Add Equal-Cost Multi-Path routing policy
0.16
- Removed support for SWIG bindings
- Add support for appveyor CI
- Add encryption support using OpenSSL
0.15
- Rename normal IPCP to unicast IPCP
- Add flow_join API for broadcast IPCP
0.14
- Add Explicit Congestion Notification field to DT
- Add broadcast IPCP
0.13
- Disable CRC32 by default
0.12
- Split error checking from FRCT
- Rename port_id to flow_id
- Rename SDU to packet
- Pass QoS spec at flow allocation
- Initial retransmission logic
- Support QoS specs for oping
- Use Endpoint ID's in fa protocol instead of fd
0.11
- Simplify reg/unreg API
- Support for partial packet reads
0.10
- Revise lookup tracking in DHT
- Update man pages to CC-BY 4.0
0.9
- Add patchlevels for future versions
- Add support for Raptor FPGA Layer-1 PoC
0.8
- Use "program" instead of "application process"
- Use "process" instead of "application process instance"
- Send timestamp in oping
- Use 3-clause BSD license for tools
0.7
- Use ELF sections to init/fini ouroboros
- Support for Loop-Free Alternates (LFA) routing
- Add RIB to expose metrics via FUSE
- Deprecate Common Distribution Application Protocol (CDAP)
- Simplify enroll API
- Deprecate Graph Adjancency Manager component
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.