Ouroboros Implementation Overview: Difference between revisions

From Ouroboros
Jump to navigation Jump to search
No edit summary
 
(28 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Library ==
{{under construction}}
 
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 =


The ouroboros library  
The ouroboros library  


=== Application end-to-end IPC functions ===
== Application end-to-end functions ==


These are the functions that are typically called by an application programmer to interact with the network.
These are the functions that are typically called by an application programmer to interact with the network.


==== Application flow allocation API ====
=== Application flow allocation API ===


==== Byte-Stream ====


==== Application flow management API ====
=== Application flow management API ===




==== Synchronous IPC API ====
=== Synchronous IPC API ===




==== Asynchronous IPC API ====
=== Asynchronous IPC API ===




=== Application end-to-end background tasks ===
== Application end-to-end background tasks ==


These functions are background tasks that are not directly visible to the application programmer.
These functions are background tasks that are not directly visible to the application programmer.


==== FRCT ====
=== FRCT ===


[[FRCT]], implements [[FRCP]]
[[FRCT]], implements [[FRCP]]


==== Encryption ====
=== Encryption ===




==== Authentication ====
=== Authentication ===


Not yet implemented.
Not yet implemented.


==== Integrity ====
=== Integrity ===


CRC
CRC


= IRMd =
= IPCPs =
== Common ==
This implements


==== Stream-based IPC ====
=== Enrollment ===


== IRMd ==
=== Connection Manager ===
 
== Unicast ==
 
== Broadcast ==


== IPCPs ==


=== Enrollment ===




=== Directory ===
== Directory ==




=== Flow allocator ===
== Flow allocator ==


[[FLAP]]
[[Ouroboros Flow Allocation Protocol]]


=== Packet Transfer ===
== Packet Transfer ==


[[ODTP]]
[[ODTP]]


= 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 ==
[[pyOuroboros]]
== Rust ==
A [[OuroboRs|rust interface]] is available.
= 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 ==
Main page: [[Rumba]]
== Ouroboros metrics ==
Main page: [[Ouroboros Metrics]]
= Ports =


== Roadmap ==
== netcat ==


The Ouroboros prototype is [[Prototype version history | far from complete]]. In order to come to some usable ''production'' version (Version 1.0), a lot more implementation is needed.
== ioq3 ==


== License ==
= Licenses =


The Ouroboros Library is Licensed under LGPL2.1. The IRMd and IPCPs are Licensed under GPL2.1. The tool are licensed under 3-clause BSD.
The Ouroboros Library is Licensed under LGPL2.1. The IRMd and IPCPs are Licensed under GPL2.1. Tools are licensed under 3-clause BSD.

Latest revision as of 22:48, 18 February 2024

Under contruction 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

FRCT, implements FRCP

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

ODTP

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

pyOuroboros

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.