Skip to content

v0.17.0

Compare
Choose a tag to compare
@galargh galargh released this 22 Nov 16:07
· 1527 commits to master since this release
v0.17.0
4485d6b

🗣 Discuss

If you have comments, questions, or feedback on this release, please post here.

If you experienced any bugs with the release, please post an issue.

🔦 Highlights

libp2p resource management enabled by default

To help protect nodes from DoS (resource exhaustion) and eclipse attacks,
go-libp2p released a Network Resource Manager with a host of improvements throughout 2022.

Kubo first exposed this functionality in Kubo 0.13,
but it was disabled by default.

The resource manager is now enabled by default to protect nodes.
The defaults balance providing protection from various attacks while still enabling normal usecases to work as expected.

If you want to adjust the defaults, then you can:

  1. bound the amount of memory and file descriptors that libp2p will use with Swarm.ResourceMgr.MaxMemory
    and Swarm.ResourceMgr.MaxFileDescriptors and/or
  2. override any specific resource scopes/limits with Swarm.ResourceMgr.Limits

See Swarm.ResourceMgr for

  1. what limits are set by default,
  2. example override configuration,
  3. how to access prometheus metrics and view grafana dashboards of resource usage, and
  4. how to set explicit "allow lists" to protect against eclipse attacks.

Implicit connection manager limits

Starting with this release, ipfs init will no longer store the default
Connection Manager
limits in the user config under Swarm.ConnMgr.

Users are still free to use this setting to set custom values, but for most use
cases, the defaults provided with the latest Kubo release should be sufficient.

To remove any custom limits and switch to the implicit defaults managed by Kubo:

$ ipfs config --json Swarm.ConnMgr '{}'

We will be adjusting defaults in the future releases.

TAR Response Format on Gateways

Implemented IPIP-288 which adds
support for requesting deserialized UnixFS directory as a TAR stream.

HTTP clients can request TAR response by passing the ?format=tar URL
parameter, or setting Accept: application/x-tar HTTP header:

$ export DIR_CID=bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq
$ curl -H "Accept: application/x-tar" "http://127.0.0.1:8080/ipfs/$DIR_CID" > dir.tar
$ curl "http://127.0.0.1:8080/ipfs/$DIR_CID?format=tar" | tar xv
bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq
bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq/1 - Barrel - Part 1 - alt.txt
bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq/1 - Barrel - Part 1 - transcript.txt
bafybeigccimv3zqm5g4jt363faybagywkvqbrismoquogimy7kvz2sj7sq/1 - Barrel - Part 1.png

Dialling /wss peer behind a reverse proxy

This release resolves a regression introduced in Kubo 0.16, making it possible
again to connect to a peer over a WebSockets endpoint (/wss) that is
deployed behind a reverse proxy.

More details in go-libp2p release notes.

Changelog

Full Changelog
  • github.com/ipfs/kubo:
    • chore: bump version to v0.17.0 (ipfs/kubo#9427)
    • chore: bump version to v0.17.0-rc2 (ipfs/kubo#9414)
    • Doc improvements and changelog for resource manager (#9413) (ipfs/kubo#9413)
    • fix(docs): typo
    • docs: document /wss fixes in 0.17
    • refactor(config): remove Swarm.ConnMgr defaults
    • fix(config): skip nulls in ResourceMgr
    • Apply go fmt
    • Update core/node/libp2p/rcmgr_defaults.go
    • Remove limitation by HighWater param.
    • Fix RM errors when acceleratedDHT is active
    • docs: Deprecate Reframe on docs. (#9401) (ipfs/kubo#9401)
    • chore: bump version to v0.17.0-rc1 (ipfs/kubo#9394)
    • feat: Improve ResourceManager UX (#9338) (ipfs/kubo#9338)
    • feat: ipfs-webui 2.20.0
    • docs: note log tail is broken (#9383) (ipfs/kubo#9383)
    • feat(gateway): TAR response format (#9029) (ipfs/kubo#9029)
    • fix: error when using huge json limit file
    • chore: go-multicodec v0.7.0
    • fix: remove old unused buggy coredag code
    • feat: Add command line completion for fish
    • chore: delete snap configuration (ipfs/kubo#9352)
    • docs: update scoop package
    • docs: init release issue template improvement process v0.16.0 (ipfs/kubo#9283)
    • feat: add delegated routing metrics (#9354) (ipfs/kubo#9354)
    • chore: create v0.17.md changelog (ipfs/kubo#9353)
    • docs: pin remote arg
    • feat: [email protected]
    • test(car): export/import of (dag-)cbor/json codecs
    • add refs local alias repo ls (#9320) (ipfs/kubo#9320)
    • docs(cmds): Clarify block fetching of refs endpoint.
    • chore(cmds): dag import: use ipld legacy decode (ipfs/kubo#9219)
    • fix ipfs swarm peering crash in offline mode (#9261) (ipfs/kubo#9261)
    • feat: remove provider delay interval in bitswap (#9053) (ipfs/kubo#9053)
    • feat: --reset flag on swarm limit command (#9310) (ipfs/kubo#9310)
    • fix: add InlineDNSLink flag to PublicGateways config (#9328) (ipfs/kubo#9328)
    • docs: Fix typo and grammar in README
    • ci: add stylecheck to golangci-lint (#9334) (ipfs/kubo#9334)
    • Fix: swarm stats all command
    • Merge release v0.16.0 back into master (ipfs/kubo#9324)
    • fix: Set default Methods value to nil
    • docs: add WebTransport docs (ipfs/kubo#9314)
    • chore: bump version to 0.17.0-dev
  • github.com/ipfs/go-delegated-routing (v0.6.0 -> v0.7.0):
  • github.com/ipfs/go-ipfs-files (v0.1.1 -> v0.2.0):
  • github.com/ipfs/go-unixfs (v0.4.0 -> v0.4.1):
  • github.com/ipld/go-ipld-prime (v0.18.0 -> v0.19.0):
    • Prepare v0.19.0
    • fix: correct json codec links & bytes handling
    • test(basicnode): increase test coverage for int and map types (#454) (ipld/go-ipld-prime#454)
    • fix: remove reliance on ioutil
    • run gofmt -s
    • bump go.mod to Go 1.18 and run go fix
    • feat: add kinded union to gendemo
  • github.com/libp2p/go-libp2p (v0.23.2 -> v0.23.4):
  • github.com/libp2p/go-netroute (v0.2.0 -> v0.2.1):
  • github.com/marten-seemann/qpack (v0.2.1 -> v0.3.0):
  • github.com/multiformats/go-multicodec (v0.6.0 -> v0.7.0):

Contributors

Contributor Commits Lines ± Files Changed
Antonio Navarro Perez 11 +780/-987 31
Marcin Rataj 14 +791/-543 26
web3-bot 7 +393/-427 71
galargh 20 +309/-277 21
Gus Eggert 5 +358/-222 58
Henrique Dias 3 +409/-30 13
Dustin Long 1 +314/-0 2
Marco Munizaga 2 +211/-46 11
Rod Vagg 4 +188/-62 13
Jorropo 2 +4/-219 5
Steve Loeppky 1 +115/-72 4
Andreas Källberg 1 +145/-5 5
Lucas Molas 3 +76/-53 9
snyh 2 +36/-18 2
Piotr Galar 2 +31/-4 2
Ondrej Kokes 1 +25/-4 2
Marten Seemann 6 +14/-14 14
Yann Autissier 1 +14/-4 1
maxos 1 +8/-1 2
reidlw 1 +1/-4 1
Russell Dempsey 2 +4/-1 2
Ian Davis 1 +4/-0 2
Daniel Norman 1 +3/-1 1
Will Scott 1 +1/-1 1
Nikhilesh Susarla 1 +2/-0 2
Jamie Wilkinson 1 +1/-1 1
Will 1 +0/-1 1