-
Notifications
You must be signed in to change notification settings - Fork 27
Open
Description
The transport manager takes 8 addresses from the address store of a peer during the dialing process:
litep2p/src/transport/manager/mod.rs
Line 555 in 7e048bf
let dial_addresses = context.addresses.addresses(limit);
We have seen cases on Paseo where validators are behind NATs that produce 31 addresses, most of them being private and unreachable.
The transport manager sorts addresses by score, however:
- if this is the first dial, we are randomly deciding between public and private with equal chance (and in this case 1 address being public out of 30 private guarantees we are not dialing the proper address)
- on failed addresses, the transport manager does not update score of the addresses if one address succeeds: transport: Failed addresses are not reported back on a successful connection #526
To ensure we are reaching the peer and not wasting resources (and introducing connectivity delays specifically for elastic scaling), we can prioritize addresses by public/private for the address store sorting criteria. This ensures that public addresses are at the head of the list as long as they are reachable.
Part of:
Metadata
Metadata
Assignees
Labels
No labels