aboutsummaryrefslogtreecommitdiff
path: root/content/docs/network_protocols.md
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2019-09-06 19:29:24 +0200
committerDimitri Staessens <dimitri@ouroboros.rocks>2019-09-06 19:29:24 +0200
commitb35ff765ffa55806e019e535a4fbbbe5b982d6b7 (patch)
tree767d6c2c3f99c20ae9afbfd9d0eec2a413cc3e67 /content/docs/network_protocols.md
parent55e7dcbd219271722b2d6a62acea6b362734f9fa (diff)
downloadwebsite-b35ff765ffa55806e019e535a4fbbbe5b982d6b7.tar.gz
website-b35ff765ffa55806e019e535a4fbbbe5b982d6b7.zip
content: Introduce FRCT header format
Diffstat (limited to 'content/docs/network_protocols.md')
-rw-r--r--content/docs/network_protocols.md135
1 files changed, 0 insertions, 135 deletions
diff --git a/content/docs/network_protocols.md b/content/docs/network_protocols.md
deleted file mode 100644
index d162945..0000000
--- a/content/docs/network_protocols.md
+++ /dev/null
@@ -1,135 +0,0 @@
----
-title: "Packet network protocols"
-author: "Dimitri Staessens"
-description: "what"
-date: 2019-09-05
-#type: page
-draft: false
----
-
-Packet switched networks move data between two applications using
-_protocols_, which specify where to move the data and how to do it.
-The Internet famously uses the Internet Protocol, IP (versions 4 and
-6, which are mutually incompatible, so in essence, there is not a
-single Internet, there are two!) as the network protocol that
-specifies how to move packets from point _A_ to point _B_. On top, it
-has the Transport Control Protocol (TCP) that takes care of things
-when IP packets get lost. TCP also does some other neat things, like
-making sure that a client does not send faster than a server can
-process, usually called _flow control_; and making sure that the
-network doesn't get overwhelmed by its users, usually called
-_congestion control_.
-
-The IPv4 protocol is specified in
-[RFC791](https://tools.ietf.org/html/rfc791), and its _header_ is
-shown here:
-
-```
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Version| IHL |Type of Service| Total Length |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Identification |Flags| Fragment Offset |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Time to Live | Protocol | Header Checksum |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Source Address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Destination Address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Options | Padding |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-```
-
-The IPv6 protocol is specified in
-[RFC2460](https://tools.ietf.org/html/rfc2460), and its header format
-is:
-
-```
- 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
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Version| Traffic Class | Flow Label |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Payload Length | Next Header | Hop Limit |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + +
- | |
- + Source Address +
- | |
- + +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + +
- | |
- + Destination Address +
- | |
- + +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-```
-
-For a detailed description of what all the fields in this protocol
-mean, we gladly refer you to the RFCs or the wikipedia pages (
-[IPv4](https://en.wikipedia.org/wiki/IPv4) and
-[IPv6](https://en.wikipedia.org/wiki/IPv6)). The most interesting
-fact about the jump from IPv4 to IPv6 is that the protocol got
-noticeably simpler.
-
-As Ouroboros tries to preserve privacy as much as possible, it has an
-*absolutely minimal network protocol* (it's also configurable, this is
-the 64 bit address, 16 bit EID version):
-
-```
- 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 fields 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.
-
-* 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).
-
-* ECN: This field specifies Explicit Congestion Notification (ECN),
- with similar intent as the ECN bits in the DSCP field in IPv4 / ToS
- field in IPv6. It has 8-bit width as a default, and gets set higher
- as packets are deeper and deeper in a forwarding queue. 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 values of this field is chosen by the endpoints at
- _flow allocation_. It can be thought of as an ephemeral port.
-
----
-Changelog:
-
-2019 09 05: Initial version. \ No newline at end of file