From cda1bb2ece15bad3f89ed4a82c4e18bf2981b76d Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Mon, 30 Dec 2019 15:33:48 +0100 Subject: Add intro to docs --- content/en/docs/Intro/_index.md | 70 +++++++++++++++++++++++++++++++++++++ content/en/docs/Overview/_index.md | 24 ++++++++----- content/en/docs/Overview/intro.jpg | Bin 0 -> 45612 bytes content/en/docs/Start/check.md | 46 ++++++++++++++++++++++++ 4 files changed, 132 insertions(+), 8 deletions(-) create mode 100644 content/en/docs/Intro/_index.md create mode 100644 content/en/docs/Overview/intro.jpg create mode 100644 content/en/docs/Start/check.md diff --git a/content/en/docs/Intro/_index.md b/content/en/docs/Intro/_index.md new file mode 100644 index 0000000..b936175 --- /dev/null +++ b/content/en/docs/Intro/_index.md @@ -0,0 +1,70 @@ +--- +title: "Welcome to Ouroboros" +linkTitle: "Introduction" +author: "Dimitri Staessens" +date: 2019-12-30 +weight: 5 +description: > + Introduction. +--- + +``` +Simplicity is a great virtue but it requires hard work to achieve it and +education to appreciate it. +And to make matters worse: complexity sells better. + -- Edsger Dijkstra +``` + +This is the portal for the ouroboros networking prototype. Ouroboros +aims to make packet networks simpler, and as a result, more reliable, +secure and private. How? By introducing strong, well-defined +abstractions and hiding internal complexity. A bit like modern +programming languages abstract away details such as pointers. + +The main driver behind the ouroboros prototype is a good ol' personal +itch. I've started my academic research career on optical networking, +and moved up the stack towards software defined networks, learning the +fine details of Ethernet, IP, TCP and what not. But when I came into +contact with John Day and his Recursive InterNetwork Architecture +(RINA), it really struck home how unnecessarily complicated today's +networks are. The core abstractions that RINA moved towards simplify +things a lot. I was fortunate to have a PhD student that understood +the implications of these abstractions, and together we just went on +and digged deeper into the question of how we could make everything as +simple as possible. When something didn't fall into place or felt +awkward, we trace back to why it didn't fit, instead of plough forward +and make it fit. Ouroboros is the current state of affairs in this +quest. + +We often get the question "How is this better than IP"? To which the +only sensible answer that we can give right now is that ouroboros is +way more elegant. It has far fewer abstractions and every concept is +well-defined. It's funny (or maybe not) how many times when we start +explaining Ouroboros to someone, people immediately interrupt and +start explaining how they can do this or that with IP. We know, +they're right, but it's also completely besides our point. + +If you don't care about elegance, this prototype is not (yet) for +you. If you're fine with the quality of engineering in the Internet, +this prototype is not (yet) for you. But, if you're open to the idea +that the TCP/IP network stack is a huge gummed-up mess that's in need +for some serious redesign, do read on. If you are interested in +computer networks in general, if you are eager to learn something new +and exciting without the need to deploy it tomorrow to solve whatever +problem you have right now, and if you are willing to put in the time +and effort to understand how all of this works, by all means: ask +away! + +We're very open to constructive suggestions on how to further improve +the prototype and the documentation, in particular this website. We +know it's hard to understand in places. No matter how simple we made +the architecture, it's still a lot to explain, and writing efficient +and easy-to-understant documentation is a tough trade. So don't +hesitate to contact us with any questions you may have. Above all, +stay curious! + +``` +... for the challenge of simplification is so fascinating that, if +we do our job properly, we shall have the greatest fun in the world. + -- Edsger Dijkstra +``` \ No newline at end of file diff --git a/content/en/docs/Overview/_index.md b/content/en/docs/Overview/_index.md index b7c7036..33f6333 100644 --- a/content/en/docs/Overview/_index.md +++ b/content/en/docs/Overview/_index.md @@ -12,17 +12,25 @@ Under construction. {{% /pageinfo %}} Ouroboros is a (prototype) **distributed system** for packet network -communications. It consists of a C **library** that allows you to -write ouroboros-native programs and a bunch of **daemons** that allow -you to easily create your own (overlay) networks using ordinary PC -hardware (Linux, FreeBSD or MacOS X). +communications. It consists of a C **library** that allows you +to write ouroboros-native programs and the subsystem that consists of +a bunch of **daemons** that allow you to easily create your own +(overlay) networks using ordinary PC hardware (Linux, FreeBSD or MacOS +X). The **Ouroboros library** implements the **application API** (the Ouroboros alternative to POSIX sockets) and the **management API** -(the Ouroboros alternative to things like netlink sockets). All -**end-to-end transport functions** are implemented in the application -library, such as **reliability** (packet ordering, retransmission logic -etc) and transport **encryption**. +(the Ouroboros alternative to things like netlink sockets). + +{{
}} + +From an application perspective, all that's needed is to link your +application with Ouroboros and you can use the Ouroboros networking +primitives. + +All **end-to-end transport functions** are implemented in the +application library, such as **reliability** (packet ordering, +retransmission logic etc) and transport **encryption**. The Ouroboros daemons can be thought of as **software routers** that can be connected to each other. Each one has an address, diff --git a/content/en/docs/Overview/intro.jpg b/content/en/docs/Overview/intro.jpg new file mode 100644 index 0000000..0a159e0 Binary files /dev/null and b/content/en/docs/Overview/intro.jpg differ diff --git a/content/en/docs/Start/check.md b/content/en/docs/Start/check.md new file mode 100644 index 0000000..b601320 --- /dev/null +++ b/content/en/docs/Start/check.md @@ -0,0 +1,46 @@ +--- +title: "Check installation" +date: 2019-12-30 +weight: 40 +description: > + Check if ouroboros works. +draft: false +--- + +To check if everything is installed correctly, you can now jump into +the [/docs/Tutorials](tutorials) section, or you can try to ping this +webhost over ouroboros using the name _ouroboros.rocks.oping_ + +Our webserver is of course on an IP network, and ouroboros does not +control IP, but it can run over UDP. + +To be able to contact our server over ouroboros, you will need to do +some IP configuration: to tell the ouroboros UDP system that the +process "ouroboros.rocks.oping" is running on our webserver by adding +the line + +```bash +51.38.114.133 1bf2cb4fb361f67a59907ef7d2dc5290 +``` + +to your /etc/hosts file (it's the IP address of our server and the MD5 +hash of _ouroboros.rocks.oping_). + +Here are the steps to ping our server over ouroboros: + +Run the IRMd: + +```bash +$ sudo irmd & +``` +Then you will need find your (private) IP address and start an ouroboros UDP +daemon (ipcpd-udp) on that interface: +```bash +$ irm ipcp bootstrap type udp name udp layer udp ip +``` + +Now you should be able to ping our server! + +```bash +$ oping -n ouroboros.rocks.oping +``` -- cgit v1.2.3