A quick primer on the Yggdrasil :

▶ End-to-end between nodes, always, without exception.
▶ New routing scheme based on a globally-agreed spanning tree.
▶ Adapts quickly to changes in network topology.
▶ Works on a range of platforms - including Windows!
▶ Works over existing or networks.
▶ Written in .
▶ Should be familiar to anyone who has used or is a part of .

All testers welcome!

· · Web · 0 · 5 · 9

@jankoekepan A globally agreed spanning tree ensures that every node can agree on their position in the network, has a worst-scenario path to other nodes and allows a node to route in almost any direction with only a tiny amount of knowledge about the network. It does indeed use greedy routing, so often shorter more optimal paths can be taken.

@jankoekepan Ahmed or Abdul in the UK or USA are not likely to know about those changes - their immediate peers, and a small selection of other nodes, will know about it through DHT advertisements. The rest of the network does not need to know about the nodes until a DHT lookup for one of those nodes takes place. Position on the spanning tree is determined relative to your own peers.

@jankoekepan See this current map of my own view of the network for a bit of an illustration - I know about nodes that are close to me, some that are further away, and I can infer that the root of the network and other nodes exist by extrapolating from coordinates.

@jankoekepan Your assumptions would be correct if source-routed but Yggdrasil does not use source-routing. The sender doesn't need to know the route, the sender needs to know the coordinates of the destination node in order to "send it in the right direction". The greedy routing promotes that if that route does disappear and the sender doesn't know about it, that some routing around will take place somewhere on the path close to the missing link, as a routing decision takes place at each hop.

@jankoekepan I'm not entirely sure what you refer to by aggressively populating data - you learn about some other nodes in the DHT so that you have a good selection of nodes to query when you want to look up the coordinates of a remote node. The routing between two sets of coordinates then happens best-effort through shortcuts, or in the worst case, it follows the path of the spanning tree. Take a look at and the white paper. 😀

@jankoekepan You’re going a little beyond my domain of expertise I think. If you fancy it, join the Matrix or IRC channel and discuss more with Arceliar - the routing scheme is his brainchild and he has a much deeper knowledge of it than I do. 😊 My contributions are largely around usability/platform support.

Sign in to participate in the conversation

Server run by the main developers of the project 🐘 It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!