litep2p: Update network backend to v0.7.0 (#5609)
This release introduces several new features, improvements, and fixes to
the litep2p library. Key updates include enhanced error handling,
configurable connection limits, and a new API for managing public
addresses.
For a detailed set of changes, see [litep2p
changelog](https://github.com/paritytech/litep2p/blob/master/CHANGELOG.md#070---2024-09-05).
This PR makes use of:
- connection limits to optimize network throughput
- better errors that are propagated to substrate metrics
- public addresses API to report healthy addresses to the Identify
protocol
### Warp sync time improvement
Measuring warp sync time is a bit inaccurate since the network is not
deterministic and we might end up using faster peers (peers with more
resources to handle our requests). However, I did not see warp sync
times of 16 minutes, instead, they are roughly stabilized between 8 and
10 minutes.
For measuring warp-sync time, I've used
[sub-trige-logs](https://github.com/lexnv/sub-triage-logs/?tab=readme-ov-file#warp-time)
### Litep2p
Phase | Time
-|-
Warp | 426.999999919s
State | 99.000000555s
Total | 526.000000474s
### Libp2p
Phase | Time
-|-
Warp | 731.999999837s
State | 71.000000882s
Total | 803.000000719s
Closes: https://github.com/paritytech/polkadot-sdk/issues/4986
### Low peer count
After exposing the `litep2p::public_addresses` interface, we can report
to litep2p confirmed external addresses. This should mitigate or at
least improve: https://github.com/paritytech/polkadot-sdk/issues/4925.
Will keep the issue around to confirm this.
### Improved metrics
We are one step closer to exposing similar metrics as libp2p:
https://github.com/paritytech/polkadot-sdk/issues/4681.
cc @paritytech/networking
### Next Steps
- [x] Use public address interface to confirm addresses to identify
protocol
---------
Signed-off-by: Alexandru Vasile <[email protected]>