-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
go-libp2p v0.29 #2326
Comments
Per ipfs/kubo#9911 (comment) the Kubo 0.22 expected RC date is now (tentatively) 2023-07-20 |
I pushed the release date to end of next week (July 14th). |
I'm likely going to defer #2369 until the next release. #2318 was already a big enough change and we are enabling smart dialing by default for the first time. I'm almost hesitant to include #2318 in order to keep this release smaller. But I think if anything fails there it should fail fast. So it's probably okay. |
Agreed. It’s ok to keep draft-29 around for another release. We will have to drop it in the next one though, since quic-go v0.37 is removing it. |
v0.29.0 is released. Closing this issue. |
I ran kubo v0.21.0 with v0.27.7 and v0.29.0.
The detailed numbers are here:
|
We should link to the above numbers from the release notes. We should at least make it clear that cancellations are down from 60% of all dials to 30%. |
🗺 What's left for release
Planned release date: 2023-07-14 (before the Kubo v0.22 rc cutoff: ipfs/kubo#9911)
Smart Dialing:
QUIC:
Misc:
Metrics:
🔦 Highlights
Smart Dialing
In our last release, we shipped Smart Dialing. To reiterate, it’s a clever way to reduce the number of spurious dials. Instead of dialing all addresses in parallel (which is what we did before v0.28), we now carefully rank the addresses and dial them one by one.
However, there were two areas where the logic we introduced could lead to suboptimal results:
This is why smart dialing was disabled by default in v0.28.
For this release, we implemented a logic we call Black Hole Detection in this release. We now detect if UDP or IPv6 is completely blocked (blackholed) by observing the outcomes of dial attempts. When a black hole is detected, we skip QUIC / WebTransport and IPv6 addresses, respectively. This significantly reduces the number of unsuccessful dials for users in these environments. To monitor the status of black hole detection, we added two Grafana dashboards to our swarm dashboard, showing the percentage successful / failed dials on UDP and IPv6, and if that leads to our blackhole logic kicking in.
This now allows us to use RFC8305 Happy Eyballs for QUIC: When we dial a peer that has a QUIC IPv6 and IPv4 address, we dial the IPv6 address first, and only start dialing the IPv4 address if we haven’t heard back from the peer within 250ms. Only if we don’t hear back within another 250ms, we start dialing on TCP.
In a future release, we will enable a similar logic for TCP IPv6 and IPv4 addresses, however, this will require us to refactor our code a bit (see #2394 for details).
Preliminary measurements on the IPFS network show that:
Smart Dialing is now enabled by default. We don’t expect it to cause any performance regression, but if you find any problems, please open an issue. It can be disabled via a constructor option to
libp2p.New
:Metrics
docker-compose up
in thedashboards
directory: metrics: make it possible to spin up Grafana using docker-compose #2383.Changelog
Cloning github.com/libp2p/go-yamux...
Cloning into '/home/codespace/go/src/github.com/libp2p/go-yamux'...
warning: redirecting to https://github.com/libp2p/go-yamux/
remote: Enumerating objects: 1191, done.
remote: Counting objects: 100% (162/162), done.
remote: Compressing objects: 100% (76/76), done.
remote: Total 1191 (delta 97), reused 107 (delta 76), pack-reused 1029
Receiving objects: 100% (1191/1191), 375.28 KiB | 11.73 MiB/s, done.
Resolving deltas: 100% (715/715), done.
Cloning github.com/multiformats/go-multiaddr...
Cloning into '/home/codespace/go/src/github.com/multiformats/go-multiaddr'...
warning: redirecting to https://github.com/multiformats/go-multiaddr/
remote: Enumerating objects: 2216, done.
remote: Counting objects: 100% (456/456), done.
remote: Compressing objects: 100% (153/153), done.
remote: Total 2216 (delta 336), reused 361 (delta 293), pack-reused 1760
Receiving objects: 100% (2216/2216), 1.09 MiB | 11.91 MiB/s, done.
Resolving deltas: 100% (1150/1150), done.
Cloning github.com/multiformats/go-multihash...
Cloning into '/home/codespace/go/src/github.com/multiformats/go-multihash'...
warning: redirecting to https://github.com/multiformats/go-multihash/
remote: Enumerating objects: 1172, done.
remote: Counting objects: 100% (362/362), done.
remote: Compressing objects: 100% (108/108), done.
remote: Total 1172 (delta 281), reused 278 (delta 244), pack-reused 810
Receiving objects: 100% (1172/1172), 283.69 KiB | 9.46 MiB/s, done.
Resolving deltas: 100% (631/631), done.
Contributors
✅ Release Checklist
go get -u ./...
to see if there are any out-of-date deps that look important. If there are, bubble them. Try to avoid directly updating indirect deps in go-libp2p'sgo.mod
when possible.The text was updated successfully, but these errors were encountered: