net2o - reinventing the Internet
net2o is the attempt to reinvent the Internet.
- The internet bases on assumptions 20-30 years old
- These assumptions are wrong today
- Much of it followed the "good enough" principle
- There's a huge pile of accumulated cruft
- Fixing this mess one-by-one is the wrong attempt
What needs to be fixed?
- IP: Use switch-based simple routing, don't route every packet
- TCP: Most data just needs to be obtained reliable, the order doesn't matter. And TCP's flow control is broken (delay minimized is the way to go).
- Encryption everywhere: This is no longer an expensive operation (and for symmetric encryption, fast hardware implementation is feasible)
- P2P instead of client-server
- A new API (render layer, markup language, scripting) - the browser is there for serious applications now.
Rendering is done with OpenGL ES, GUI layer is MINOΣ 2.
net2o has been inspired by Open Network Forth from Heinz Schnitter.
What third party technology do we use
- ed25519 from Dan Bernstein (in the donna version from floodberry)
- Keccak (original reference
- (wurstkessel from myself - now replaced by Keccak)
How to build it
You need: A Linux machine; with some luck, you get it to run on Mac OS X, as well.
You want to have the following packets installed: git automake autoconf make gcc libtool libltdl7 (libtool-ltdl on RedHat/Centos)
Get the do file (latest revision), put it into your net2o folder, and let it run. You need fossil (and git) as SCM, get the latest from the fossil homepage. You don't need to cut'n'paste the whole script, just do the fossil clone+open, then you get your own do script. This script will ask for your root password to install Gforth and the two libraries mentioned above. After completion, you can run a test:
gforth-fast server-test.fs & gforth-fast client-test.fs localhost >timing
gnuplot -p -e 'load "doc/timing.plt";'
The documentation is work in progress. The seven layers of net2o are not equal to the ISO-OSI layers, but this layering provides a familiar starting point:
- Physical layer - this is not part of net2o itself.
- Flow Control
- Distributed Data