kademlia
This is a Go implementation of a vanilla Kademlia DHT. The implementation is based off of a combination of the original Kademlia whitepaper and the xlattice design specification. It does not attempt to conform to BEP-5, or any other BitTorrent-specific design.
This project has not been heavily battle-tested, and I would not recommend using it in any production environment at this time.
Implementation characteristics
- uses uTP for all network communication
- supports IPv4/IPv6
- uses a well-defined Store interface for extensibility
- supports STUN for public address discovery
TODO
- Implement STUN for public address discovery
- Load testing/Benchmarks
- More testing around message validation
- More testing of bad/malicious message handling
- Banning/throttling of malicious messages/nodes
- Implement UDP hole punching for NAT traversal
- Use loose parallelism for iterative lookups
- Consider breaking store into two messages and transfer bulk of data over TCP
- Implement republishing according to the xlattice design document
- Better cleanup of unanswered expected messages
- Logging support