-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Private & Public DHTs #803
Comments
In terms of implementation, this should be very simple as we already have all the components. We need:
|
Is this going to be heavily tested and benchmarked before being implemented? This seems like a massive change that will probably break functionality for more than one system in ways that are unknown due to the relatively low test coverage across all repositories. |
Yes.
Well, we don't want undialable nodes to join the main DHT so, by default, nodes won't join as servers unless they can determine that they're publicly dialable. However, we also don't want to break VPNs, offline networks, test networks, etc. Adding a second private DHT is the solution that's least likely to break those. In terms of overhead, "private" DHTs should be tiny in most cases so queries should take no time (in most cases, all nodes will be directly connected anyways). |
Related: libp2p/go-libp2p-kad-dht#564 |
a lan/wan split DHT implementation is now merged into go-libp2p-kad-dht in libp2p/go-libp2p-kad-dht#570 |
This has been released. |
Followup from a discussion with @aschmahmann.
Proposal: Run a second private DHT, mounted on
/lan/dht/proto
, in parallel to the public DHT.With the next release of the DHT, DHT nodes will default to an "auto" mode that will only turn them into DHT servers when they learn that they are globally reachable. Unfortunately, as described in ipfs/kubo#6737, this will break offline/vpn/etc. DHTs.
The proposal is to run an additional DHT, on a separate protocol, with a special routing table filter that only admits nodes we believe are on our local network (e.g., nodes where the remote address is non-routable, nodes with the same public IP, etc.). All (or maybe just auto?) nodes with DHT support will act as servers in this local DHT and these two DHTs will be queried in parallel.
This will help in three ways:
The text was updated successfully, but these errors were encountered: