What routing algorithm Staex network uses?
Staex network topology is a directed graph. The edge goes from child node to parent node. Each node can be simultaneously a child and a parent.
The node state (e.g. its static IPv4 address, domain name, certificates) propagates from child to parent nodes, and the root of the topology — a node that does not have any parents but can reach any other node via edges — has a copy of each other node's state, i.e. knows everything about the network.
The routing uses Dijkstra algorithm that finds the shortest path between the source and destination nodes of a packet. If the path can not be found by the local node, the packet is sent to the parent node. This repeats until the root node is reached. If the root node can not find the path, then the packet is dropped.
We permit cycles in the graph, however, we encourage to stick to tree-like topologies to optimize node state propagation.
We also permit a node to have multiple parents. In this case only one parent is active at a time. When it goes offline, the child automatically switches to the next parent in the list. This allows the network to gracefully handle root node failures and restarts.
To summarize,
- we support any network topology that is a directed graph,
- we use shortest-path algorithm to find the best route for each packet,
- we have built-in support for root node failures that otherwise would be single point of failures.
Such flexibility allows us to support use cases where some nodes have Internet connectivity, but others do not. The nodes that do not have direct access to the Internet would be able to get it via Staex network. With this multi-hop architecture it is possible to setup networks in hard-to-reach locations: forests, mountains, and even between two islands if there is enough traffic that hosts Staex nodes that work as relays.