==========
 re6stnet
==========

---------------------------------------------
Resilient, Scalable, IPv6 Network application
---------------------------------------------

:Author: Nexedi <re6stnet@erp5.org>

Overview
========

re6stnet creates a resilient, scalable, ipv6 network on top of an existing ipv4
network, by creating tunnels on the fly, and then routing targeted traffic
through these tunnels.

re6stnet can be used to :

- guarantee connectedness between computers connected to the
  internet, for which there exists a working route ( in case the direct route
  isn't available ).
- create very large networks
- give ipv6 addresses to machines with only ipv4 available


HOW IT WORKS
============

A re6stnet networks consists of at least one server ( re6st-registry ) and many
clients or nodes ( re6stnet ). The server delivers certificates for secure
authentification in establishing tunnels, and - for now - store the complete
list of nodes running.
re6stnet detects and take into accounts nodes present on the local network.

Resilience
----------
re6stnet can guarantee that if there exists a route between two machines,
traffic will be correctly routed between these two machines.
Since the destination of established connection are random, there can be no
guarantee that such a route exists given which tunnels are established, but
for big enough networks ( more than a hundred nodes ), the probability that
the network isn't connected is very low.

Scalability
-----------

Since each node has very few data about the network, re6stnet is easily
scalable to tens of thousand of nodes

Requirements
============

- Python 2.7 or later

- OpenSSL binary and development libraries

- OpenVPN

- Babel ( http://www.pps.univ-paris-diderot.fr/~jch/software/babel/ )

Installation
============

Let's explain how to install the egg

Commercial Support
==================

Later....

.. The organisation of the code
    re6stnet.py         Client : Init and main loop
    re6st/plib.py             Launch server/client/routing processes
    re6st/utils.py            Small functions to do useful jobs
    re6st/db.py               Manage the peer database
    re6st/tunnel.py           Manage the tunnels
    re6st/upnpigd.py          Forward ports
    re6st-conf.py       Get certificates from server
    re6st-registry.py   Server : deliver certificates and distribute peers