Ruvchain is a new and experimental compact routing scheme designed for mesh or even Internet-like networks. It is predominanently a shortest-path scheme, whereby the network will attempt to find the most direct path to the destination.
Compared to the structured and typically hierarchial routing schemes in use today on many networks, Ruvchain is strongly decentralised, largely self-arranging and mostly self-healing. The network topology is adaptive, aiming to make use of whichever links are available in order to provide full routability between all network participants. All nodes in Ruvchain with multiple peers act as routers and will forward traffic on behalf of other nodes.
Each node on the network is identified by a cryptographic public key and, in our current experimental implementation, stable IPv6 addresses are generated from this key. This allows all IPv6-supporting applications to operate over Ruvchain largely without modification. The address is fully mobile and stays with the node as it moves around the network.
Ruvchain’s design means that it is well suited towards truly ad-hoc wireless mesh networks which many other existing routing protocols struggle with.
The Internet as we know it today doesn’t conform to a well-defined topology. This has largely happened over time - as the Internet has grown, more and more networks have been “bolted together” with peering arrangements between service providers. The lack of defined topology gives us some unavoidable problems:
These problems have been somewhat mitigated (but not really solved) through centralisation - rather than your computers at home holding a copy of the global routing table, your service provider does so on your behalf. Your computers and network devices are configured just to “send traffic upstream” and to let your provider decide where it goes from there. This leaves you entirely at the mercy of your ISP who can redirect your traffic anywhere they like and to inspect, manipulate or intercept it.
ISP networks are also typically structured in design and often hierarchical in nature, and as a result, many existing routing protocols have been designed with this in mind. Some optimisations such as prefix aggregation are used to try and reduce the number of routing entries that a provider must send out into the world. These protocols are usually not suitable for use in a network where the topology is not well defined or changes frequently — a wireless mesh network, for example, therefore it has been very difficult in the past for communities to build their own wireless mesh infrastructure on an ad-hoc basis.
Ruvchain takes a very different approach to sharing routing knowledge. Rather than distributing address ranges as paths through centrally assigned autonomous systems, Ruvchain instead builds up a single distributed global network topology.
A spanning tree is used to provide synchronisation and to allow nodes to allocate themselves a set of tree coordinates, which are used to exchange and establish bootstrap and path setup messages. Nodes then exchange bloom filters which contain information about which keyspace neighbours are reachable through each node. Intermediate nodes then populate their routing tables with these paths, enabling nodes to forward packets closer to their destination public key.
In addition, nodes can pathfind using the spanning tree routing to establish a path that is likely shorter than the path through keyspace. The typically more direct source route will continue to be used for as long as it is available and will fall back to keyspace routing if the tree-routed path breaks.
Cryptographic signatures are used to secure protocol messages against tampering or forgery.
There are a number of benefits to a routing scheme such as this:
Ruvchain is currently an alpha project, early in development but actively maintained. Our expectation is that a future “beta” quality release should know enough to be compatible in the face of wire format changes, and reasonably feature complete. A “stable” 1.0 release, if it ever happens, would probably be feature complete, with no expectation of future wire format changes, and free of known critical bugs.
The true goal of this project is to test the scalability of the Ruvchain routing scheme and we are doing so with our overlay network implementation. We need as many participants to run and test the software as possible so that we can study the behaviour of the network as it grows. We’ve done our best to support as many platforms as possible and have a number of public peers that you can connect to in order to join the network, so please feel free to experiment. That said, we don’t recommend running mission critical or life-or-death workloads over Ruvchain yet — there may be failure modes that we don’t yet know about.
The project is likely to reach a number of possible outcomes:
The Ruvchain Network often attract comparisons with other projects attempting to create anonymous overlays, such as Tor, I2P, Lokinet and others. These projects are very different to Ruvchain, in part because they are attempting to provide anonymity, which Ruvchain does not, and in part because they are intentionally overlay-by-design rather than by convenience. Any anonymity or pseudonymity that can occur with the Ruvchain testbed network is purely coincidental and should not be relied upon.
Ruvchain is frequently compared with VPN projects such as Wireguard, Tailscale, Nebula and Zerotier. Although the Ruvchain Network can be used as a kind of point-to-point VPN if appropriately configured, it is not a primary goal of ours to provide VPN tunnelling.
We do not see Ruvchain as being in competition with these projects as they are attempting to solve a different set of problems.
The Ruvchain Network does not natively provide access to the public Internet or to other networks, although it can be achieved with proxies or other tunnelling solutions.