Auto-Neighborhood Balancing Feature

Aperta
#4,991 6 commenti 1 reazione 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 3 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
25/100
Tipo di issue
Funzionalità
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
go

Direzione di ricerca

Start by reviewing the existing neighborhood-suggester behavior and the Swarmscan neighborhood suggestion and population endpoints referenced in the issue. Define the rebalancing policy, interval and neighbor threshold, including how simultaneous hops and the two-round delay are handled. Done should include an agreed configuration and safe automatic hopping behavior, but the issue does not identify implementation files or tests.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary

Currently, when a node joins the network, it uses the Swarmscan neighborhood selector tool as the default value for neighborhood-suggester to choose a neighborhood based on choosing from among the least populated neighborhoods. This is great for the initial provisioning of nodes, but over time as neighborhood populations shift, it may end up that the neighborhood the node finds itself in is no longer ideal.

Currently, we recommend node operators to periodically check their node's neighborhood and hop to a new neighborhood if needed. However I am doubtful of how many node operators are actually following this practice (I just posted a poll on this matter in Discord, if it turns out my assumption is wrong, then maybe this isn't as much of an issue as I thought).

I believe that periodic automatic neighborhood balancing should be a feature which is on by default, with a sensible default configuration controlling when to hop or not according to current neighborhood population and current distribution of nodes in neighborhoods throughout the network.

Potential options with some sensible default values included:

neighborhood-rebalancing: <bool> # Defaults to `true`
neighborhood-rebalancing-interval: <int> # Days to wait until rechecking if a neighborhood hop is needed - default of 15?
max-neighbors: <int> # The maximum number of neighbors allowed. If exceeded, the `neighborhood-suggester` is used to hop to a new neighborhood. 

The max-neighbors option perhaps should not be included rather we should use the results from the Swarmscan /network/neighborhoods endpoint to calculate a reasonable number to use when checking whether to hop?

Motivation

There are several good reasons for this feature:

  1. Easier UX for node operators - it allows them to automatically ensure their nodes will always move to the most profitable neighborhoods
  2. Improves safety for data on the network - ensures that no neighborhoods are allowed to become underpopulated
Implementation

I don't have the ability to implement it.

Drawbacks
  • Defaults for neighborhood-rebalancing-interval and max-neighbors need to be carefully selected since each hop will cause an entire re-syncing of a new neighborhood and increase in bandwidth consumption, which might have unintended negative effects on the network.
  • There may be issues related to nodes simultaneously hopping without knowledge of hopping of other nodes, leading to unintended consequences
  • There is a 2 round delay between each hop during which the node will not be eligible to participate in redistribution
Lingua principale
Go
Stelle
1.5k
Fork
390
Merge medio
2g 22h
PR unite (30g)
24

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di ethersphere/bee

Tutte le issue di ethersphere/bee

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.