←back to thread

Yggdrasil Network

(yggdrasil-network.github.io)
322 points BSDobelix | 4 comments | | HN request time: 0.908s | source
Show context
foundry27 ◴[] No.42156968[source]
The first thing I tried to find on their website and their GitHub was a protocol specification, to be able to implement it independently from the reference implementation. I thought this would be straightforward since it’s advertised as a scheme/protocol, but such a spec isn’t referenced anywhere! Digging on my own I eventually found [1] on a side-branch of one of their other GitHub projects.

Kudos to the author: I think it actually covers a lot of what you’d need to know: crypto identities, message formats, wire protocols, peering and stream semantics, spanning tree updates and root selection, the DHT, forwarding logic, sessions, etc. A couple things are TODOs like how to verify and sign root updates, and there’s some ambiguity in the tiebreaker algorithm for next-hop selection.

It seems to be very tightly coupled to TCP as the transport layer though, since all packets need to be delivered reliably and in the order they were sent, and need to be capable of being fragmented into smaller packets for varying MTU sizes.

[1] https://github.com/yggdrasil-network/yggdrasil-specs/blob/ys...

replies(2): >>42157246 #>>42157427 #
colordrops ◴[] No.42157427[source]
Is coupling with TCP a problem? Does it do anything that goes against their goal of full decentralization?
replies(1): >>42157454 #
macawfish ◴[] No.42157454[source]
Makes it hard to do hole punching I think? At any rate, direct connections currently cannot be established between multi-hop peers, traffic gets routed through peers instead. I think this has something to do with the TCP choice.
replies(3): >>42158423 #>>42158464 #>>42159697 #
AyyEye ◴[] No.42159697[source]
> At any rate, direct connections currently cannot be established between multi-hop peers, traffic gets routed through peers instead. I think this has something to do with the TCP choice.

Yggdrasil is designed for physical links and multi-hop routing first and foremost. Internet peering is just a way to test/use/join the network until then.

replies(1): >>42162452 #
1. macawfish ◴[] No.42162452[source]
I'd love if my private nodes could peer directly so I wouldn't need to route all traffic through my budget VPs.
replies(3): >>42163237 #>>42164799 #>>42188665 #
2. wolletd ◴[] No.42163237[source]
If only there was some technology that would allow every peer to have its globally unique address, making direct connections only a matter of firewalls.

I don't know, something like IPv4, but with more addresses...

3. dinosaurdynasty ◴[] No.42164799[source]
Both tailscale (partially open source) and nebula (entirely open source, you have to host the "lighthouses" which assist in NAT punching yourself) do this. (Also tinc.)

Yggdrasil is basically researching a replacement for BGP, so hole punching isn't a priority. (There is a 3rd party project that does something like this for Yggdrasil, but nebula is probably the better fully open source option.)

4. AyyEye ◴[] No.42188665[source]
On ygg as long as the nodes are reachable they can peer. If your nodes are on LAN just turn on multicast peering it's fire and forget.