Open phillebaba opened 12 months ago
Hey @phillebaba, I just saw this issue here linked from https://github.com/libp2p/go-libp2p-kad-dht/issues/856. I'm one of the developers rewriting the DHT implementation for Kubo (IPFS).
I'd be curious to hear more about the features that you require. Right now, we're quite focused on the requirements that IPFS has, so your input could be very valuable here.
@dennis-tra I do not think it is a question of what features are needed on top of IPFS but rather which features Spegel does not require. At times I feel like libp2p KAD DHT has too many features making it difficult to understand the internals. The challenges that Spegel and IPFS has are obviously different as on needs to cater to public internet wide networks while Spegel runs within a private trusted cluster.
Having said that these are the two main issues that I am currently facing.
Requiring a public key to be a part of the peer ID makes bootstrapping and restarts overly complicated. Currently the key is generated in runtime meaning that any restart of Spegel will result in a new peer ID. It also means that the bootstrap peer ID needs to be advertised through the Kubernetes API. It would be nice to not have to do this.
I have received questions from end users about how locality works when it comes to peer priority. There are financial benefits from keeping traffic within the same zones on top of performance benefits. I have postponed giving any answer to this question as I do not understand the internals for libp2p KAD.
Looks like v2 of go-pibp2p-kad-dht will live under a different name.
https://github.com/plprobelab/zikade
This is a note to come back and check progress of the project at a later time. When stable it would be a good idea to migrate.
There is a new project https://github.com/plprobelab/go-kademlia that aims to build a standardized generic Kademlia implementation. It looks like libp2p2 kad will refactor to use the new library according to https://github.com/libp2p/go-libp2p-kad-dht/issues/856. I am currently not sure but I think we could just switch to using go-kademlia if it offers all of the features that we require. This may simplify some of the routing implementations as the new API is simpler.