Quick correction: I did not highlight the issue, just heard about it in the call.
Regarding the specific dial improvement mentioned:
PR: p2p: Filter Discv4 dial candidates based on forkID by cskiraly · Pull Request #31592 · ethereum/go-ethereum · GitHub
Background to change
- Geth collects dial candidates from 3 sources: discv4, discv5, DNS
- Specific to discv4, when we learn about nodes, we don’t know anything about the network or fork ID they are on (in discv5 we have this info).
What changed in Geth
- Before the change, specific to discv4, we were dialing many nodes, just to then figure our they are not compatible. This is less of an issue on Mainnet, more a problem on smaller networks where a large part of dials would be useless.
- After the change, for the peers discovered over discv4, we do an EnrRequest first, and only dial if it would make sense (an ENR with compatible network and fork ID received).
- This saves quite some outbound TCP dial traffic for us, and quite some inbound traffic for nodes on other networks (while it is adding a UDP exchange).
This should not create issues, except if there is a problem with the ENR exchange. I think (not yet sure) this was the problem, the EnrRequest - EnrResponse exchange failing between the two client implementations for some reason.
Note that this only influences our outgoing connections. Peers can still dial us as before.