Ouroboros Implementation Overview: Difference between revisions
No edit summary |
No edit summary |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{under construction}} | {{under construction}} | ||
This page provides an overview of the current implementation status of the O7s prototype. It follows the directory structure of the repository and for each item explains what is currently implemented, stability of the current implementation, what is planned and the direction we would like to move towards. Some big items, the most prominent one being management of namespaces (ownership and scalability of service names) have yet | The Ouroboros prototype is far from complete. In order to come to a usable [[Prototype Version History| production version]], a lot more implementation is needed. We have a [https://tree.taiga.io/project/dstaesse-ouroboros/kanban kanban board] tracking to-do items. | ||
This page provides an overview of the current implementation status of the O7s prototype. It follows the directory structure of the repository and for each item explains what is currently implemented, stability of the current implementation, what is planned and the direction we would like to move towards. Some big items, the most prominent one being management of namespaces (ownership and scalability of service names) have not started yet. | |||
Ironically, this page is currently even less complete than the prototype. Bear with me. | |||
= Library = | = Library = | ||
Line 108: | Line 111: | ||
== Rust == | == Rust == | ||
A [ | A [[OuroboRs|rust interface]] is available. | ||
= Other tools = | = Other tools = | ||
== Logging == | |||
The Ouroboros log format:</br> | |||
Example: | |||
==06773== irmd(II): Created IPCP 6794. | |||
==06794== ipcpd/ipcp(II): Bootstrapping... | |||
==06794== ipcpd/ipcp(II): Finished bootstrapping: 0. | |||
==06773== irmd(II): Bootstrapped IPCP 6794 in layer local-layer. | |||
With <code>==<process number>== <O7s component>(<log level>): <log message></code> | |||
* II = info | |||
* DB = Debug | |||
* WW = Warning | |||
* EE = Error | |||
A parsable format for observation is still to be implemented. | |||
Logging to syslog is interesting, since the format is more standard. | |||
== Rumba orchestration framework == | == Rumba orchestration framework == |
Latest revision as of 22:48, 18 February 2024
This page is under construction
The Ouroboros prototype is far from complete. In order to come to a usable production version, a lot more implementation is needed. We have a kanban board tracking to-do items.
This page provides an overview of the current implementation status of the O7s prototype. It follows the directory structure of the repository and for each item explains what is currently implemented, stability of the current implementation, what is planned and the direction we would like to move towards. Some big items, the most prominent one being management of namespaces (ownership and scalability of service names) have not started yet.
Ironically, this page is currently even less complete than the prototype. Bear with me.
Library
The ouroboros library
Application end-to-end functions
These are the functions that are typically called by an application programmer to interact with the network.
Application flow allocation API
Byte-Stream
Application flow management API
Synchronous IPC API
Asynchronous IPC API
Application end-to-end background tasks
These functions are background tasks that are not directly visible to the application programmer.
FRCT
Encryption
Authentication
Not yet implemented.
Integrity
CRC
IRMd
IPCPs
Common
This implements
Enrollment
Connection Manager
Unicast
Broadcast
Directory
Flow allocator
Ouroboros Flow Allocation Protocol
Packet Transfer
Tools
irm
Main page: Ouroboros Command Line Interface
oecho
oping
operf
ocbr
ovpn
Programming language support
The prototype itself is written in C for performance, but bindings for other languages are available or planned
Golang
Planned
Python 3
Rust
A rust interface is available.
Other tools
Logging
The Ouroboros log format:
Example:
==06773== irmd(II): Created IPCP 6794. ==06794== ipcpd/ipcp(II): Bootstrapping... ==06794== ipcpd/ipcp(II): Finished bootstrapping: 0. ==06773== irmd(II): Bootstrapped IPCP 6794 in layer local-layer.
With ==<process number>== <O7s component>(<log level>): <log message>
- II = info
- DB = Debug
- WW = Warning
- EE = Error
A parsable format for observation is still to be implemented. Logging to syslog is interesting, since the format is more standard.
Rumba orchestration framework
Main page: Rumba
Ouroboros metrics
Main page: Ouroboros Metrics
Ports
netcat
ioq3
Licenses
The Ouroboros Library is Licensed under LGPL2.1. The IRMd and IPCPs are Licensed under GPL2.1. Tools are licensed under 3-clause BSD.