aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2019-12-30 15:33:48 +0100
committerDimitri Staessens <dimitri@ouroboros.rocks>2019-12-30 15:33:48 +0100
commitcda1bb2ece15bad3f89ed4a82c4e18bf2981b76d (patch)
tree93c94d9ddced0b049d65645ea9680ae04d7f7798
parent1b76e8162deb2739a06f1692056051a1d4ba3ab0 (diff)
downloadwebsite-cda1bb2ece15bad3f89ed4a82c4e18bf2981b76d.tar.gz
website-cda1bb2ece15bad3f89ed4a82c4e18bf2981b76d.zip
Add intro to docs
-rw-r--r--content/en/docs/Intro/_index.md70
-rw-r--r--content/en/docs/Overview/_index.md24
-rw-r--r--content/en/docs/Overview/intro.jpgbin0 -> 45612 bytes
-rw-r--r--content/en/docs/Start/check.md46
4 files changed, 132 insertions, 8 deletions
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).
+
+{{<figure width="60%" src="/docs/overview/intro.jpg">}}
+
+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
--- /dev/null
+++ b/content/en/docs/Overview/intro.jpg
Binary files 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 <your local ip address>
+```
+
+Now you should be able to ping our server!
+
+```bash
+$ oping -n ouroboros.rocks.oping
+```