diff options
author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2021-03-07 10:28:47 +0100 |
---|---|---|
committer | Dimitri Staessens <dimitri@ouroboros.rocks> | 2021-03-07 10:28:59 +0100 |
commit | 58b5eb7e017e1ab347963cd1aba857bf543caf36 (patch) | |
tree | f20c9e38bb79a1a53b03889acb26985e9745e4ad /content/en/docs/Overview | |
parent | e41e665f0c79ad5468f1175db8cd9b51b032b1e9 (diff) | |
download | website-58b5eb7e017e1ab347963cd1aba857bf543caf36.tar.gz website-58b5eb7e017e1ab347963cd1aba857bf543caf36.zip |
content: Add note on bind and register in overview
Diffstat (limited to 'content/en/docs/Overview')
-rw-r--r-- | content/en/docs/Overview/_index.md | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/content/en/docs/Overview/_index.md b/content/en/docs/Overview/_index.md index 00d0467..cd39aa9 100644 --- a/content/en/docs/Overview/_index.md +++ b/content/en/docs/Overview/_index.md @@ -45,10 +45,34 @@ Some of the main characteristics are: ECN](/docs/concepts/protocols/). This immutability can be enforced through authentication (not yet implemented). +* Ouroboros has _external_ and _dynamic_ server application + binding. Socket applications leave it to the application developer + to manage binding from within the program (typically a bind() call + to either a specific IP address or to all addresses (0.0.0.0), + leaving all configuration application (or library-) specific. When + shopping for network libraries, a typical questions are "can it bind + to multiple IP addresses?". + + Ouroboros makes all this management external to the program: server + applications only need to call flow_accept(). The _bind()_ primitive + allows a program (or running process) to be bound from the command + line to a certain (set of) service names and when a flow request + arrives for that service, Ouroboros acts as a broker that hands of + the flow to any program that is bound to that service. Binding is + N-to-M: multiple programs can be bound to the same service name, and + programs can be bound to multiple names. This binding is also + _dynamic_: it can be done while the program is running, and will not + disrupt existing flows. + + In addition, the _register()_ primitive allows external and dynamic + control over which network a service name is available over. Again, + while the service is running, and without disrupting existing flows. + * The Ouroboros end-to-end protocol performs flow control, error control and reliable transfer and is implemented as part of the _application library_. This includes sequence numbering, ordering, - sending and handling acknowledgments, managing flow control windows, ... + sending and handling acknowledgments, managing flow control windows, + ... * Ouroboros can establish an encrypted flow in a _single RTT_ (not including name-to-address resolution). The flow allocation API is a |