Egg packaging
[re6stnet.git] / README
1 ==========
2  re6stnet
3 ==========
4
5 ---------------------------------------------
6 Resilient, Scalable, IPv6 Network application
7 ---------------------------------------------
8
9 :Author: Nexedi <re6stnet@erp5.org>
10
11 Overview
12 ========
13
14 re6stnet creates a resilient, scalable, ipv6 network on top of an existing ipv4
15 network, by creating tunnels on the fly, and then routing targeted traffic
16 through these tunnels.
17
18 re6stnet can be used to :
19 - guarantee connectedness between computers connected to the
20 internet, for which there exists a working route ( in case the direct route
21 isn't available ).
22 - create very large networks
23 - give ipv6 addresses to machines with only ipv4 available
24
25
26 HOW IT WORKS
27 ============
28
29 A re6stnet networks consists of at least one server ( re6st-registry ) and many
30 clients or nodes ( re6stnet ). The server delivers certificates for secure
31 authentification in establishing tunnels, and - for now - store the complete
32 list of nodes running.
33 re6stnet detects and take into accounts nodes present on the local network.
34
35 Resilience
36 ----------
37 re6stnet can guarantee that if there exists a route between two machines,
38 traffic will be correctly routed between these two machines.
39 Since the destination of established connection are random, there can be no
40 guarantee that such a route exists given which tunnels are established, but
41 for big enough networks ( more than a hundred nodes ), the probability that
42 the network isn't connected is very low.
43
44 Scalability
45 -----------
46
47 Since each node has very few data about the network, re6stnet is easily
48 scalable to tens of thousand of nodes
49
50 Requirements
51 ============
52
53 - Python 2.7 or later
54
55 - OpenSSL binary and development libraries
56
57 - OpenVPN
58
59 - Babel ( http://www.pps.univ-paris-diderot.fr/~jch/software/babel/ )
60
61 Installation
62 ============
63
64 Let's explain how to install the egg
65
66 Commercial Support
67 ==================
68
69 Later....
70
71 .. The organisation of the code
72     re6stnet.py         Client : Init and main loop
73     re6st/plib.py             Launch server/client/routing processes
74     re6st/utils.py            Small functions to do useful jobs
75     re6st/db.py               Manage the peer database
76     re6st/tunnel.py           Manage the tunnels
77     re6st/upnpigd.py          Forward ports
78     re6st-conf.py       Get certificates from server
79     re6st-registry.py   Server : deliver certificates and distribute peers
80
81 .. XXX: write monkey-patch in __init__.py
82
83 Note: On certain version of python (e.g. 2.7.3~rc2-2.1 ) dns lookup is
84       performed for each request, and cause a delay in response.
85       To avoid this, one can either upgrade python, fix their resolv.conf or use
86       the fix at the end of this file.
87
88 --------------------------------------------------------------------------------
89 # Fix for librpcxml to avoid doing reverse dns on each request
90 # it was causing a 10s delay on each request when no reverse DNS was avalaible
91 import BaseHTTPServer
92
93
94 def not_insane_address_string(self):
95     host, port = self.client_address[:2]
96     return '%s (reverse DNS disabled)' % host  # used to call: socket.getfqdn(host)
97
98 BaseHTTPServer.BaseHTTPRequestHandler.address_string = not_insane_address_string
99
100 --------------------------------------------------------------------------------