-
Notifications
You must be signed in to change notification settings - Fork 4
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
Optimize Routing Table Module #2
Comments
Different routing tableshttps://github.com/libp2p/go-libp2p-kbucket is not optimized because it is not using a xor trie (e.g https://github.com/libp2p/go-libp2p-xor, https://github.com/guillaumemichel/py-binary-trie). The basic routing table should make use of a XOR trie. We may also be willing to create a We may want to port the Another idea that has been discussed is to implement a Each RT implementation may require its own issue (but not all of them are required before production). RefreshFor now, no refresh mechanism has been implemented for the routing table(s). The refresh mechanism has to be implemented for all production RTs (multiple RTs can use the same refresh mechanism). See https://github.com/libp2p/go-libp2p-kad-dht/tree/master/rtrefresh for reference. https://github.com/libp2p/go-libp2p-kbucket/blob/master/bucket_prefixmap.go is required for IPFS DHT refresh. Unfortunately :( IPFS DHT Routing TableIn the IPFS DHT Routing Table, we want to make sure that peers are sent a FIND_NODE RPC, and not simply a ping during the refresh. (see libp2p/go-libp2p-kad-dht#810) We also want the peers to be sent a FIND_PEER RPC to make sure they are actually DHT Servers (and not misconfigured nodes) and they are able to answer Kademlia requests (see libp2p/go-libp2p-kad-dht#820) |
Note that there are multiple possible refresh mechanisms routing tables:
|
Last item was libp2p/go-libp2p-kad-dht#936 |
ETA: 2023-08-31
Description
Currently most of the DHT Routing Table logic is contained in the repository https://github.com/libp2p/go-libp2p-kbucket. However, having this part of the implementation in a repository distinct from https://github.com/libp2p/go-libp2p-kad-dht is impractical, because of dependency reasons. IMO all code directly concerning the DHT implementation should live in a single repository.
The Minimal Working Modular DHT contains a minimal Routing Table example, without all implementation details and features that are currently available in the https://github.com/libp2p/go-libp2p-kbucket repository (e.g diversity filter). The goal of this subproject is to filter the features of https://github.com/libp2p/go-libp2p-kbucket that are actually useful and migrate them to the refactored DHT implementation. In addition, it would be great to have unit tests thoroughly testing the Routing Table implementation, making sure that the behavior is exactly as expected.
References
Children:
The text was updated successfully, but these errors were encountered: