From dca21f6a050b3a59fab1fe9e0b1e9186879b72de Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 12 Dec 2019 17:17:45 +0100 Subject: [PATCH 1/3] fix: prioritize closer peers License: MIT Signed-off-by: Henrique Dias --- dht.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/dht.go b/dht.go index c52bcb476..603472b94 100644 --- a/dht.go +++ b/dht.go @@ -28,9 +28,9 @@ import ( ds "github.com/ipfs/go-datastore" logging "github.com/ipfs/go-log" "github.com/jbenet/goprocess" - "github.com/jbenet/goprocess/context" + goprocessctx "github.com/jbenet/goprocess/context" kb "github.com/libp2p/go-libp2p-kbucket" - "github.com/libp2p/go-libp2p-record" + record "github.com/libp2p/go-libp2p-record" recpb "github.com/libp2p/go-libp2p-record/pb" "github.com/multiformats/go-base32" ) @@ -144,11 +144,13 @@ func NewDHTClient(ctx context.Context, h host.Host, dstore ds.Batching) *IpfsDHT } func makeDHT(ctx context.Context, h host.Host, dstore ds.Batching, protocols []protocol.ID, bucketSize int) *IpfsDHT { - rt := kb.NewRoutingTable(bucketSize, kb.ConvertPeerID(h.ID()), time.Minute, h.Peerstore()) + self := kb.ConvertPeerID(h.ID()) + rt := kb.NewRoutingTable(bucketSize, self, time.Minute, h.Peerstore()) cmgr := h.ConnManager() rt.PeerAdded = func(p peer.ID) { - cmgr.TagPeer(p, "kbucket", 5) + dist := kb.CommonPrefixLen(self, kb.ConvertPeerID(p)) + cmgr.TagPeer(p, "kbucket", 5+dist) } rt.PeerRemoved = func(p peer.ID) { From e4dae1c931d116d33426619342ce61f195b53203 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 12 Dec 2019 17:55:50 +0100 Subject: [PATCH 2/3] call it common prefix len License: MIT Signed-off-by: Henrique Dias --- dht.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dht.go b/dht.go index 603472b94..35f25ecc7 100644 --- a/dht.go +++ b/dht.go @@ -149,8 +149,8 @@ func makeDHT(ctx context.Context, h host.Host, dstore ds.Batching, protocols []p cmgr := h.ConnManager() rt.PeerAdded = func(p peer.ID) { - dist := kb.CommonPrefixLen(self, kb.ConvertPeerID(p)) - cmgr.TagPeer(p, "kbucket", 5+dist) + commonPrefixLen := kb.CommonPrefixLen(self, kb.ConvertPeerID(p)) + cmgr.TagPeer(p, "kbucket", 5+commonPrefixLen) } rt.PeerRemoved = func(p peer.ID) { From 0449555dde3006cb6036a7c4e237f9a581e6ad92 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 12 Dec 2019 17:56:30 +0100 Subject: [PATCH 3/3] make BaseConnMgrScore const License: MIT Signed-off-by: Henrique Dias --- dht.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dht.go b/dht.go index 35f25ecc7..5e25c4468 100644 --- a/dht.go +++ b/dht.go @@ -37,6 +37,8 @@ import ( var logger = logging.Logger("dht") +const BaseConnMgrScore = 5 + // IpfsDHT is an implementation of Kademlia with S/Kademlia modifications. // It is used to implement the base Routing module. type IpfsDHT struct { @@ -150,7 +152,7 @@ func makeDHT(ctx context.Context, h host.Host, dstore ds.Batching, protocols []p rt.PeerAdded = func(p peer.ID) { commonPrefixLen := kb.CommonPrefixLen(self, kb.ConvertPeerID(p)) - cmgr.TagPeer(p, "kbucket", 5+commonPrefixLen) + cmgr.TagPeer(p, "kbucket", BaseConnMgrScore+commonPrefixLen) } rt.PeerRemoved = func(p peer.ID) {