Skip to content
  • Felix Lange's avatar
    9123eceb
    p2p, p2p/discover: misc connectivity improvements (#16069) · 9123eceb
    Felix Lange authored and Péter Szilágyi's avatar Péter Szilágyi committed
    * p2p: add DialRatio for configuration of inbound vs. dialed connections
    
    * p2p: add connection flags to PeerInfo
    
    * p2p/netutil: add SameNet, DistinctNetSet
    
    * p2p/discover: improve revalidation and seeding
    
    This changes node revalidation to be periodic instead of on-demand. This
    should prevent issues where dead nodes get stuck in closer buckets
    because no other node will ever come along to replace them.
    
    Every 5 seconds (on average), the last node in a random bucket is
    checked and moved to the front of the bucket if it is still responding.
    If revalidation fails, the last node is replaced by an entry of the
    'replacement list' containing recently-seen nodes.
    
    Most close buckets are removed because it's very unlikely we'll ever
    encounter a node that would fall into any of those buckets.
    
    Table seeding is also improved: we now require a few minutes of table
    membership before considering a node as a potential seed node. This
    should make it less likely to store short-lived nodes as potential
    seeds.
    
    * p2p/discover: fix nits in UDP transport
    
    We would skip sending neighbors replies if there were fewer than
    maxNeighbors results and CheckRelayIP returned an error for the last
    one. While here, also resolve a TODO about pong reply tokens.
    9123eceb
    p2p, p2p/discover: misc connectivity improvements (#16069)
    Felix Lange authored and Péter Szilágyi's avatar Péter Szilágyi committed
    * p2p: add DialRatio for configuration of inbound vs. dialed connections
    
    * p2p: add connection flags to PeerInfo
    
    * p2p/netutil: add SameNet, DistinctNetSet
    
    * p2p/discover: improve revalidation and seeding
    
    This changes node revalidation to be periodic instead of on-demand. This
    should prevent issues where dead nodes get stuck in closer buckets
    because no other node will ever come along to replace them.
    
    Every 5 seconds (on average), the last node in a random bucket is
    checked and moved to the front of the bucket if it is still responding.
    If revalidation fails, the last node is replaced by an entry of the
    'replacement list' containing recently-seen nodes.
    
    Most close buckets are removed because it's very unlikely we'll ever
    encounter a node that would fall into any of those buckets.
    
    Table seeding is also improved: we now require a few minutes of table
    membership before considering a node as a potential seed node. This
    should make it less likely to store short-lived nodes as potential
    seeds.
    
    * p2p/discover: fix nits in UDP transport
    
    We would skip sending neighbors replies if there were fewer than
    maxNeighbors results and CheckRelayIP returned an error for the last
    one. While here, also resolve a TODO about pong reply tokens.
Loading