README.rst 4.08 KB
Newer Older
Guillaume Bury's avatar
Guillaume Bury committed
1 2 3
==========
 re6stnet
==========
4

Guillaume Bury's avatar
Guillaume Bury committed
5 6 7
---------------------------------------------
Resilient, Scalable, IPv6 Network application
---------------------------------------------
8

9
:Contact: Julien Muchembled <jm@nexedi.com>
10

Guillaume Bury's avatar
Guillaume Bury committed
11 12
Overview
========
13

Guillaume Bury's avatar
Guillaume Bury committed
14 15 16
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.
17

Julien Muchembled's avatar
Julien Muchembled committed
18
re6stnet can be used to:
19

Guillaume Bury's avatar
Guillaume Bury committed
20
- guarantee connectedness between computers connected to the
Julien Muchembled's avatar
Julien Muchembled committed
21 22 23
  internet, for which there exists a working route (in case the direct route
  isn't available).
- create large networks
Guillaume Bury's avatar
Guillaume Bury committed
24
- give ipv6 addresses to machines with only ipv4 available
25

Julien Muchembled's avatar
Julien Muchembled committed
26
Building an ipv4 network is also supported if one has software that does not
Julien Muchembled's avatar
Julien Muchembled committed
27 28
support ipv6.

29 30
How to pronounce `re6st`? Like `resist`.

Guillaume Bury's avatar
Guillaume Bury committed
31 32
HOW IT WORKS
============
33

Julien Muchembled's avatar
Julien Muchembled committed
34 35
A re6stnet network consists of at least one server (re6st-registry) and many
nodes (re6stnet). The server is only used to deliver certificates for secure
Julien Muchembled's avatar
Julien Muchembled committed
36
authentication of peers, and to bootstrap new nodes.
Julien Muchembled's avatar
Julien Muchembled committed
37
re6stnet can detect and take into account nodes present on the local network.
38

Guillaume Bury's avatar
Guillaume Bury committed
39 40
Resilience
----------
Julien Muchembled's avatar
Julien Muchembled committed
41
re6stnet guarantees that if there exists a route between two machines,
Guillaume Bury's avatar
Guillaume Bury committed
42
traffic will be correctly routed between these two machines.
Julien Muchembled's avatar
Julien Muchembled committed
43
Even if the registry node is down, the probability that the network is not
Julien Muchembled's avatar
Julien Muchembled committed
44
connected is very low for big enough networks (more than a hundred nodes).
45

Guillaume Bury's avatar
Guillaume Bury committed
46 47
Scalability
-----------
48

Julien Muchembled's avatar
Julien Muchembled committed
49 50
Since nodes don't need to know the whole graph of the network, re6stnet is
easily scalable to tens of thousand of nodes.
51

Guillaume Bury's avatar
Guillaume Bury committed
52 53
Requirements
============
54

55
- Python 2.7
Guillaume Bury's avatar
Guillaume Bury committed
56
- OpenSSL binary and development libraries
Killian Lufau's avatar
Killian Lufau committed
57
- OpenVPN >= 2.4
58
- Babel_ (with Nexedi patches)
59
- geoip2: `python library`_ and `country lite database`_ (optional)
Julien Muchembled's avatar
Julien Muchembled committed
60
- python-miniupnpc for UPnP support (optional)
61
- for the demo: miniupnpd_, Graphviz, Screen_, Nemu_, MultiPing_, psutil_
62

Julien Muchembled's avatar
Julien Muchembled committed
63 64
See also `setup.py` for Python dependencies.

Julien Muchembled's avatar
Julien Muchembled committed
65 66
.. _Babel: https://lab.nexedi.com/nexedi/babeld
.. _Nemu: https://github.com/thetincho/nemu
Julien Muchembled's avatar
Julien Muchembled committed
67
.. _miniupnpd: http://miniupnp.free.fr/
68
.. _MultiPing: https://github.com/romana/multi-ping
69
.. _psutil: https://pypi.org/project/psutil/
Julien Muchembled's avatar
Julien Muchembled committed
70
.. _Screen: http://savannah.gnu.org/projects/screen
71 72
.. _python library: https://pypi.org/project/geoip2/
.. _country lite database: https://dev.maxmind.com/geoip/geoip2/geolite2/
73

Guillaume Bury's avatar
Guillaume Bury committed
74 75
Installation
============
76

77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
Packages (preferred method)
---------------------------

We are providing a `re6st-node` package for many distributions.
In order to install it, go to

  https://build.opensuse.org/package/show/home:VIFIBnexedi/Re6stnet

and find your distribution on the build result at the right of the page.
Once you have your distribution name <DISTRIB_NAME>, the repository to add is

  http://download.opensuse.org/repositories/home:/VIFIBnexedi/<DISTRIB_NAME>

For example (as root):

* Ubuntu 16.04::

   echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu_16.04 ./" >/etc/apt/sources.list.d/re6stnet.list
   wget -qO - https://download.opensuse.org/repositories/home:/VIFIBnexedi/xUbuntu_16.04/Release.key |apt-key add -

* Debian 9::

   echo "deb http://download.opensuse.org/repositories/home:/VIFIBnexedi/Debian_9.0 ./" >/etc/apt/sources.list.d/re6stnet.list
   wget -qO - https://download.opensuse.org/repositories/home:/VIFIBnexedi/Debian_9.0/Release.key |apt-key add -

Then::

  apt update
  apt install re6st-node

| The packaging is maintained at
Julien Muchembled's avatar
Julien Muchembled committed
108
|   https://lab.nexedi.com/nexedi/slapos.package/tree/master/obs/re6st
109 110 111

Python egg
----------
112

Julien Muchembled's avatar
Julien Muchembled committed
113
| re6stnet is also distributed as a Python egg:
114
|   https://pypi.org/project/re6stnet/
115

Jean-Paul Smets's avatar
Jean-Paul Smets committed
116 117 118 119
References
==========

| Building a resilient overlay network : Re6stnet
Jean-Paul Smets's avatar
Jean-Paul Smets committed
120
|   http://www.j-io.org/P-ViFiB-Resilient.Overlay.Network/Base_download
Jean-Paul Smets's avatar
Jean-Paul Smets committed
121 122
| GrandeNet - The Internet on Steroids
|   https://www.nexedi.com/blog/NXD-Document.Blog.Grandenet.Internet.On.Steroids
Jean-Paul Smets's avatar
Jean-Paul Smets committed
123 124
| Grandenet success case
|  https://www.nexedi.com/success/erp5-GKR.Success.Case
Jean-Paul Smets's avatar
Jean-Paul Smets committed
125 126
| n-Order Re6st - Achieving Resiliency and Scaliblity
|  https://www.nexedi.com/blog/NXD-Document.Blog.N.Order.Res6st.Resiliency.And.Scalability
Jean-Paul Smets's avatar
Jean-Paul Smets committed
127

Julien Muchembled's avatar
Julien Muchembled committed
128 129
Usage
=====
130

Julien Muchembled's avatar
Julien Muchembled committed
131
See ``re6stnet``\ (8) man page.