network: Only insert global addresses into the DHT. (#5735)

* network: Only insert global addresses into the DHT.

Currently every address reported via libp2p-identify is inserted into
the DHT which thus contains a multitude of unreachable addresses such
as from 127.0.0.0/8 or 10.0.0.0/8.

Issue #5099 suggested a dedicated service over UDP to gauge the
reachability of an address, which would however incur extra I/O costs
and be of limited use.

As an alternative and simpler tactic, this PR only allows global IP
addresses to be inserted into the DHT unless an explicit command-line
flag `--allow-non-global-addresses-in-dht` is given or a node is
started with `--dev`. This opt-in behaviour is meant to allow
site-local networks to still make use of a DHT.

* Enable non-global in more test setups.

* Replace command-line option with different name.

* Another test fix.
This commit is contained in:
Toralf Wittner
2020-04-23 09:52:20 +02:00
committed by GitHub
parent 96b7cec1ce
commit 421ef498f4
8 changed files with 67 additions and 8 deletions
+7 -6
View File
@@ -27,39 +27,40 @@ erased-serde = "0.3.9"
fnv = "1.0.6"
fork-tree = { version = "2.0.0-dev", path = "../../utils/fork-tree" }
futures = "0.3.4"
futures_codec = "0.3.3"
futures-timer = "3.0.1"
wasm-timer = "0.2"
futures_codec = "0.3.3"
hex = "0.4.0"
ip_network = "0.3.4"
linked-hash-map = "0.5.2"
linked_hash_set = "0.1.3"
log = "0.4.8"
lru = "0.4.0"
nohash-hasher = "0.2.0"
parking_lot = "0.10.0"
pin-project = "0.4.6"
prometheus-endpoint = { package = "substrate-prometheus-endpoint", version = "0.8.0-dev", path = "../../utils/prometheus" }
prost = "0.6.1"
rand = "0.7.2"
hex = "0.4.0"
sc-block-builder = { version = "0.8.0-dev", path = "../block-builder" }
sc-client = { version = "0.8.0-dev", path = "../" }
sc-client-api = { version = "2.0.0-dev", path = "../api" }
sc-peerset = { version = "2.0.0-dev", path = "../peerset" }
pin-project = "0.4.6"
serde = { version = "1.0.101", features = ["derive"] }
serde_json = "1.0.41"
slog = { version = "2.5.2", features = ["nested-values"] }
slog_derive = "0.2.0"
smallvec = "0.6.10"
sp-arithmetic = { version = "2.0.0-dev", path = "../../primitives/arithmetic" }
sp-utils = { version = "2.0.0-dev", path = "../../primitives/utils" }
sp-blockchain = { version = "2.0.0-dev", path = "../../primitives/blockchain" }
sp-consensus = { version = "0.8.0-dev", path = "../../primitives/consensus/common" }
sp-consensus-babe = { version = "0.8.0-dev", path = "../../primitives/consensus/babe" }
sp-core = { version = "2.0.0-dev", path = "../../primitives/core" }
sp-runtime = { version = "2.0.0-dev", path = "../../primitives/runtime" }
prometheus-endpoint = { package = "substrate-prometheus-endpoint", version = "0.8.0-dev", path = "../../utils/prometheus" }
sp-utils = { version = "2.0.0-dev", path = "../../primitives/utils" }
thiserror = "1"
unsigned-varint = { version = "0.3.1", features = ["futures", "futures-codec"] }
void = "1.0.2"
wasm-timer = "0.2"
zeroize = "1.0.0"
[dependencies.libp2p]