Netsukuku


Netsukuku is an experimental peer-to-peer routing system, developed by the in 2005, created to build up a distributed network, anonymous and censorship-free, fully independent but not necessarily separated from the Internet, without the support of any server, ISP and no central authority.
Netsukuku is designed to handle up to 2128 nodes without any servers or central systems, with minimal CPU and memory resources. This mesh network can be built using existing network infrastructure components such as Wi-Fi.
The project has been in slow development since 2005, never abandoning a beta state. It has also never been tested on large scale.

Operation

As of December 2011, the latest theoretical work on Netsukuku could be found in the author's master thesis . The following description takes into account only the basic concepts of the theory.
Netsukuku uses a custom routing protocol called QSPN that strives to be efficient and not taxing on the computational capabilities of each node. The current version of the protocol is QSPNv2. It adopts a hierarchical structure. 256 nodes are grouped inside a gnode, 256 gnodes are grouped in a single ggnode, 256 ggnodes are grouped in a single gggnode, and so on. This offers a set of advantages . The protocol relies on the fact that the nodes are not mobile, and that the network structure does not change quickly, as several minutes may be required before a change in the network is propagated. However, a node that joins the network is immediately able to communicate using the routes of its neighbours. When a node joins the mesh network, Netsukuku automatically suits and all other nodes come to know the fastest and most efficient routes to communicate with the newcomer. The nodes have no more privileges or restrictions than other nodes.
The domain name system is replaced by a decentralised and distributed system called ANDNA. The ANDNA database is included in the Netsukuku system, so each node includes such database that occupies at most 355 kilobytes of memory.
Simplifying, ANDNA works as follows: to resolve a symbolic name the host applies a function Hash on behalf. The Hash function returns an address that the host contacts asking for the resolution generated by the hash. The contacted node receives a request, searches in its ANDNA database for the address associated with the name and returns to the applicant host. Recording is in a similar way. For example, let's suppose that the node X should record the address FreakNet.andna, X calculates the hash name and obtains the address 11.22.33.44 associated with node Y. The node X contacts Y requiring registration for 11.22.33.44 hash as its own. Y stores the request in its database and any request for resolution of 11.22.33.44 hash, will answer with the X address.
The protocol is obviously more complex as the system provides a public/private key to authenticate the hosts and prevent unauthorized changes to ANDNA database. Furthermore, the protocol provides redundancy database to make the protocol resistant to any failures and also provides for the migration of the database if the network topology changes. The protocol does not provide for the possibility of revoking a symbolic name, this after a certain period of inactivity is simply deleted from the database. The protocol also prevents a single host to record an excessive number of symbolic names in order to prevent spammers to store a high number of terms commonly used or to perform actions of cybersquatting.

Related items