* Upgrade to Boxo v0.33.0
* Update test to work with boxo-v0.33.0
(cherry picked from commit 738d5232fb)
7.4 KiB
Kubo changelog v0.36
This release was brought to you by the Interplanetary Shipyard team.
v0.36.0
- Overview
- 🔦 Highlights
- HTTP Retrieval Client Now Enabled by Default
- Bitswap Broadcast Reduction
- Update go-log to v2
- Kubo now uses AutoNATv2 as a client
- Overwrite option for files cp command
- Gateway now supports negative HTTP Range requests
- Option for
filestorecommand to remove bad blocks ConnMgr.SilencePeriodconfiguration setting exposed- 📦️ Important dependency updates
- 📝 Changelog
- 👨👩👧👦 Contributors
Overview
🔦 Highlights
HTTP Retrieval Client Now Enabled by Default
This release promotes the HTTP Retrieval client from an experimental feature to a standard feature that is enabled by default. When possible, Kubo will be retrieving blocks over plain HTTPS (HTTP/2) without any extra user configuration.
See HTTPRetrieval for more details.
Bitswap Broadcast Reduction
The Bitswap client now supports broadcast reduction logic, which is enabled by default. This feature significantly reduces the number of broadcast messages sent to peers, resulting in lower bandwidth usage during load spikes.
The overall logic works by sending to non-local peers only if those peers have previously replied that they have wanted data blocks. To minimize impact on existing workloads, by default, broadcasts are still always sent to peers on the local network, or the ones defined in Peering.Peers.
At Shipyard, we conducted A/B testing on our internal Kubo staging gateway with organic CID requests to ipfs.io. While these results may not exactly match your specific workload, the benefits proved significant enough to make this feature default. Here are the key findings:
- Dramatic Resource Usage Reduction: Internal testing demonstrated reduction in Bitswap broadcast messages by 80-98% and network bandwidth savings of 50-95%, with the greatest improvements occurring during high traffic and peer spikes. These efficiency gains lower operational costs of running Kubo under high load and improve the IPFS Mainnet (which is >80% Kubo-based) by reducing ambient traffic for all connected peers.
- Improved Memory Stability: Memory stays stable even during major CID request spikes that increase peer count, preventing the out-of-memory (OOM) issues found in earlier Kubo versions.
- Data Retrieval Performance Remains Strong: Our tests suggest that Kubo gateway hosts with broadcast reduction enabled achieve similar or better HTTP 200 success rates compared to version 0.35, while maintaining equivalent or higher want-have responses and unique blocks received.
For more information about our A/B tests, see kubo#10825.
To revert to the previous behavior for your own A/B testing, set Internal.Bitswap.BroadcastControl.Enable to false and monitor relevant metrics (ipfs_bitswap_bcast_skips_total, ipfs_bitswap_haves_received, ipfs_bitswap_unique_blocks_received, ipfs_bitswap_wanthaves_broadcast, HTTP 200 success rate).
For a description of the configuration items, see the documentation of Internal.Bitswap.BroadcastControl.
Update go-log to v2
go-log v2 has been out for quite a while now and it is time to deprecate v1.
- Replace all use of
go-logwithgo-log/v2 - Makes
/api/v0/log/tailuseful over HTTP - Fixes
ipfs log tail - Removes support for
ContextWithLoggableas this is not needed for tracing-like functionality
Kubo now uses AutoNATv2 as a client
This Kubo release starts utilizing AutoNATv2 client functionality. go-libp2p v0.42 supports and depends on both AutoNATv1 and v2, and Autorelay feature continues to use v1. go-libp2p v0.43+ will discontinue internal use of AutoNATv1. We will maintain support for both v1 and v2 until then, though v1 will gradually be deprecated and ultimately removed.
Smarter AutoTLS registration
This update to libp2p and AutoTLS tests AutoNATv2 changes. It aims to reduce false-positive scenarios where AutoTLS certificate registration occurred before a publicly dialable multiaddr was available. This should result in fewer error logs during node start, especially when IPv6 and/or IPv4 NATs with UPnP/PCP/NAT-PMP are at play.
Overwrite option for files cp command
The ipfs files cp command has a --force option to allow it to overwrite existing files. Attempting to overwrite an existing directory results in an error.
Gateway now supports negative HTTP Range requests
The latest update to boxo/gateway adds support for negative HTTP Range requests, achieving gateway-conformance@v0.8 compatibility.
This enables greater interoperability with generic HTTP-based tools. For example, WebRecorder's https://replayweb.page/ can now directly load website snapshots from Kubo-backed URLs.
Option for filestore command to remove bad blocks
The experimental filestore command has a new option, --remove-bad-blocks, to verify objects in the filestore and remove those that fail verification.
ConnMgr.SilencePeriod configuration setting exposed
This connection manager option controls how often connections are swept and potentially terminated. See the ConnMgr documentation.
📦️ Important dependency updates
- update
go-libp2pto v0.42.0 - update
go-libp2p-kad-dhtto v0.33.0 - update
boxoto v0.33.0 (incl. v0.32.0) - update
gateway-conformanceto v0.8 - update
p2p-forge/clientto v0.6.0 - update
github.com/cockroachdb/pebble/v2to v2.0.6 for Go 1.25 support