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 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.26 (Current development branch)
Main plan: TBD
0.25 (Current version)
- Replaced the Ethernet and UDP shim IPCPs with direct points of attachment (PoAs) for the unicast IPCP.
- Ethernet LLC support is dropped.
- Unicast routing now uses directed graphs, with separate link and forwarding flags per edge.
- Reworked the MB-ECN congestion controller with heartbeat-based collapse detection.
- Transmit rings now block on queueing delay to limit buffer bloat.
- Added NIST curve hybrid KEMs (SecP256r1MLKEM768, SecP384r1MLKEM1024).
- Replaced tomlc99 with tomlc17 for the IRMd configuration file.
0.24
- Reworked FRCP: SACK/D-SACK, RACK-TLP-based loss detection, nonce-authenticated RTT probing, fragmentation, stream service with FIN.
- Replaced the in_order QoS field with a service class (raw, message, stream).
- Added the oftp file transfer tool over a stream flow.
- Added periodic re-keying of encrypted flows (see Ouroboros_Tutorial_07.
- Renamed enc.conf to sec.conf and added the auth (required/optional) peer authentication policy, cacert issuer pinning.
- Reworked congestion avoidance (MB-ECN).
- Added CRC-8, CRC-16 and CRC-64/NVMe checksums.
0.23
- Added PQC support to the library, including ML-KEM, Hybrid ECDH-KEM key exchange and ML-DSA and SLH-DSA based authentication.
- IRMd now negotiates encryption strength between endpoints based on lowest-floor exchange.
- Replaced the rdrbuff with per-user and priviliged shared slab allocator pools for shared memory packet buffers.
- Added automatic key rotation for encrypted flows.
- Refactored the ring buffer implementation and removed the old rbuff_ll variant.
- IRMd now allows direct ring buffer connections between local processes, reducing overhead for same-machine IPC.
- Major refactoring of CMake modules, plus new targets for coverage reports and automatic version parsing from git tags.
0.22
- 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
- Add IPCP over Ethernet DIX
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
- Simplify PFT for 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
- Added a threadpool manager for improved concurrency
- Added Loop-Free Alternates (LFA) routing
- Add DHT as default directory policy
0.5
- Move FRCT logic from IPCP to application library
- Split connection establishment from flow allocation
- Split flow manager into flow allocator and data transfer
- Register hashes in a layer instead of cleartext name
- Add netmap support for LLC shim
- Initial lockless rbuff implementation
- Add generic thread pool management
- Revise flow allocation API
- Split authentication from CACEP
- Revise CACEP API
- Exchange application protocol information during CACEP
0.4
- Add support for syslog logging
- Revise RIB/CDAP as a btree structure
- Add B-tree implementation
- Add full-mesh policy for GAM
- Add Graph Adjacency Manager (GAM)
- Add flat address policy
- Add initial directory to normal IPCP
- Initial RIB/CDAP synchronization
- Add RIB/CDAP objects
- Add operf tool
0.3
- Move all shared memory (shm) mgmt to IRMd
- Use shared memory tx/rx ring buffer per flow
- Split off bind/unbind (map/unmap name to process) from reg/unreg
0.2
- Add shim DIF over LLC Ethernet
- Add CBR tool for performance testing
- Add IPCP over local memory
0.1
- Add full flow allocator to UDP shim
- Implementation of flow related ops
- Simple echo application
- Initial shim IPCP over UDP/IPv4
- Add RINA name helpers
- Initial library code
- Initial SDU/PDU buffer code
- Initial APIs for IRM/IPCP/CFAP/DIF allocator
- Initial CDAP header
- LICENSE and CONTRIBUTORS files
- Initial documenents and GPLv2 license