-
-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IPFS overlay network #4110
Comments
cc @diasdavid |
Agreed 👍 routed overlay networks are a direction definitely worth exploring for libp2p. The overarching project is ipfs/notes#143 (packet switching & source-routed overlay), but it's useful to start experimenting already on top of the circuit relay. The open research problem here is how to do efficient, resilient, low-latency, high-churn source routing on a cryptographically defined (= flat) keyspace. A lot of the ideas and notes related to this are unforunately only in my head. Please feel free to pick my brain whenever, I'll also try to dump the most important things into issues. Things that are already pretty good but not yet spec'ed or implemented:
Let's move discussion either to libp2p/libp2p, or ipfs/notes#143 |
One more thing that looks pretty good but is waiting for someone to implement: Wireguard came up with a very strong datagram-based crypto handshake using the Noise framework, and just recently published a formal proof for it. Apart from the reference kernel-space implementation, there's various userland impls, one of them in go: https://git.zx2c4.com/wireguard-go/ It would be super nice to have this in go-libp2p, and later in js-libp2p too. |
As a start, I think routing some traffic over a few supernodes makes sense. We could even migrate connections between proxied and non-proxied states on a per-connection basis based on how much traffic we're routing over them. This would, effectively, allow us to keep connections open to many peers that we talk to occasionally without having to keep "real" connections to them. A full on packet-switching network would be great but a lot more work. |
Yes please 😸 |
I think you're going to/already did move this issue to libp2p, but I'm going to comment anyway: You could use Yggdrasil protocol (and code since it's in go) to achieve this task, as to avoid duplicated effort. |
There were no replies to the previous comment, but Yggdrasil has released their first version with API support.
|
Now that we're about to get p2p-circuit support, it would be nice to get an IPFS overlay network. Instead of connecting to all peers directly, nodes (even those not behind NATs) could connect to a subset of their peers through other IPFS nodes. This would:
latency(a, b) + latency(b, c) + ẟ < latency(a, c)
.The text was updated successfully, but these errors were encountered: