aboutsummaryrefslogtreecommitdiff
path: root/content/docs/protocols.md
diff options
context:
space:
mode:
authorDimitri Staessens <[email protected]>2019-10-06 21:10:46 +0200
committerDimitri Staessens <[email protected]>2019-10-06 21:10:46 +0200
commit568553394d0a8b34668a75c9839a0f1f426469b2 (patch)
tree175c08844f05611b059ba6900fb6519dbbc735d2 /content/docs/protocols.md
parentd5d6f70371958eec0679831abd283498ff2731e5 (diff)
downloadwebsite-568553394d0a8b34668a75c9839a0f1f426469b2.tar.gz
website-568553394d0a8b34668a75c9839a0f1f426469b2.zip
theme: Switch to docsy theme
Diffstat (limited to 'content/docs/protocols.md')
-rw-r--r--content/docs/protocols.md116
1 files changed, 0 insertions, 116 deletions
diff --git a/content/docs/protocols.md b/content/docs/protocols.md
deleted file mode 100644
index 571ba98..0000000
--- a/content/docs/protocols.md
+++ /dev/null
@@ -1,116 +0,0 @@
----
-title: "Ouroboros packet network protocols"
-author: "Dimitri Staessens"
-description: "protocols"
-date: 2019-09-06
-#type: page
-draft: false
----
-
-# Network protocol
-
-As Ouroboros tries to preserve privacy as much as possible, it has an
-*absolutely minimal network protocol*:
-
-```
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + Destination Address +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Time-to-Live | QoS | ECN | EID |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | EID |
- +-+-+-+-+-+-+-+-+
-```
-
-The 5 fields in the Ouroboros network protocol are:
-
-* Destination address: This specifies the address to forward the
- packet to. The width of this field is configurable based on various
- preferences and the size of the envisioned network. The Ouroboros
- default is 64 bits. Note that there is _no source address_, this is
- agreed upon during _flow allocation_.
-
-* Time-to-Live: Similar to IPv4 and IPv6 (where this field is called
- Hop Limit), this ensures that packets don't get forwarded forever in
- the network, for instance due to (transient) loops in the forwarding
- path. The Ouroboros default for the width is one octet (byte).
-
-* QoS: Ouroboros supports Quality of Service via a number of methods
- (out of scope for this page), and this field is used to prioritize
- scheduling of the packets when forwarding. For instance, if the
- network gets congested and queues start filling up, higher priority
- packets (e.g. a voice call) get scheduled more often than lower
- priority packets (e.g. a file download). By default this field takes
- one octet.
-
-* ECN: This field specifies Explicit Congestion Notification (ECN),
- with similar intent as the ECN bits in the Type-of-Service field in
- IPv4 / Traffic Class field in IPv6. The Ouroboros ECN field is by
- default one octet wide, and its value is set to an increasing value
- as packets are queued deeper and deeper in a congested routers'
- forwarding queues. Ouroboros enforces Forward ECN (FECN).
-
-* EID: The Endpoint Identifier (EID) field specified the endpoint for
- which to deliver the packet. The width of this field is configurable
- (the figure shows 16 bits). The values of this field is chosen by
- the endpoints, usually at _flow allocation_. It can be thought of as
- similar to an ephemeral port. However, in Ouroboros there is no
- hardcoded or standardized mapping of an EID to an application.
-
-# Transport protocol
-
-Packet switched networks use transport protocols on top of their
-network protocol in order to deal with lost or corrupted packets.
-
-The Ouroboros Transport protocol (called the _Flow and Retransmission
-Control Protocol_, FRCP) has only 4 fields:
-
-```
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Flags | Window |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Sequence Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Acknowledgment Number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-```
-
-* Flags: There are 7 flags defined for FRCP.
-
- - DATA: Indicates that the packet is carrying data (allows for 0
- length data).
-
- - DRF : Data Run Flag, indicates that there are no unacknowledged
- packets in flight for this connection.
-
- - ACK : Indicates that this packet carries an acknowledgment.
- - FC : Indicates that this packet updates the flow control window.
- - RDVZ: Rendez-vous, this is used to break a zero-window deadlock
- that can arise when an update to the flow control window
- gets lost. RDVZ packets must be ACK'd.
- - FFGM: First Fragment, this packet contains the first fragment of
- a fragmented payload.
- - MFGM: More Fragments, this packet is not the last fragment of a
- fragmented payload.
-
-* Window: This updates the flow control window.
-
-* Sequence Number: This is a monotonically increasing sequence number
- used to (re)order the packets at the receiver.
-
-* Acknowledgment Number: This is set by the receiver to indicate the
- highest sequence number that was received in
- order.
-
----
-Changelog:
-
-2019 09 05: Initial version.<br>
-2019 09 06: Added section on transport protocol. \ No newline at end of file