Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bump github.com/quic-go/quic-go from 0.33.0 to 0.36.1 (#497)
Bumps [github.com/quic-go/quic-go](https://github.com/quic-go/quic-go) from 0.33.0 to 0.36.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/quic-go/quic-go/releases">github.com/quic-go/quic-go's releases</a>.</em></p> <blockquote> <h2>v0.36.1</h2> <p>This patch release disables GSO support (<a href="https://redirect.github.com/quic-go/quic-go/pull/3934">quic-go/quic-go#3934</a>), unless explicitly enabled using an environment variable (<code>QUIC_GO_ENABLE_GSO=true</code>). We discovered that GSO fails with some NICs and in some containerized environments. See <a href="https://redirect.github.com/quic-go/quic-go/issues/3911">#3911</a> for a detailed discussion.</p> <p>From the user's perspective, GSO should "just work". Once we have a fix that correctly detects GSO support under all circumstances we'll re-enable GSO by default.</p> <h2>v0.36.0</h2> <h2>Generic Segmentation Offload (GSO)</h2> <p>This release enables GSO (Generic Segmentation Offload) in the send path, drastically increasing the packet send rate. Without GSO, quic-go had to use a single (sendmsg) syscall for every UDP datagram sent. GSO allows us to pass one giant (up to 64k) datagram to the sendmsg syscall, and have the kernel chop it into MTU sized (~1300 bytes) datagrams before sending them out on the wire. For more details on syscall optimizations, CloudFlare published an <a href="https://blog.cloudflare.com/accelerating-udp-packet-transmission-for-quic/">excellent blog post</a> about this a while ago. GSO is currently only available on Linux (and with kernels >4.18).</p> <p>Users who are using the same <code>net.PacketConn</code> for QUIC and to send out non-QUIC packets now need to call the newly introduced <code>OptimizeConn</code> function before passing the connection to the <code>Transport</code>. Otherwise, calls to <code>WriteTo</code> will fail after GSO support was enabled. Users who are not using the same <code>net.PacketConn</code> in this way don't need to change anything.</p> <p>We also continued our effort to further reduce allocations during data transfers (<a href="https://redirect.github.com/quic-go/quic-go/issues/3526">#3526</a>). Work on improving performance even further will continue in future releases.</p> <h2>Other Notable Changes</h2> <ul> <li>http3: The server now returns http.ErrServerClosed instead of quic.ErrServerClosed (<a href="https://redirect.github.com/quic-go/quic-go/issues/3900">#3900</a>)</li> <li>quic-go now correctly deals with super-short idle timeouts (<a href="https://redirect.github.com/quic-go/quic-go/issues/3909">#3909</a>)</li> <li>uint62 overflows are now correctly handled in the Config (<a href="https://redirect.github.com/quic-go/quic-go/issues/3866">#3866</a>)</li> <li>only run DPLPMTUD (RFC 8899) on connections that support setting the DF bit (<a href="https://redirect.github.com/quic-go/quic-go/issues/3879">#3879</a>)</li> <li>switch to the packet number length derivation logic described in the RFC (<a href="https://redirect.github.com/quic-go/quic-go/issues/3885">#3885</a>)</li> <li>fix panics when closing an uninitialized Transport (<a href="https://redirect.github.com/quic-go/quic-go/issues/3908">#3908</a>)</li> </ul> <h2>Full Changelog</h2> <ul> <li>use a ring buffer in the framer by <a href="https://github.com/Glonee"><code>@Glonee</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3857">quic-go/quic-go#3857</a></li> <li>update Ginkgo to v2.9.5 and Gomega to v1.27.6 by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3845">quic-go/quic-go#3845</a></li> <li>fix flaky client test by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3834">quic-go/quic-go#3834</a></li> <li>ackhandler: simplify sentPacketHandler.SentPacket by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3847">quic-go/quic-go#3847</a></li> <li>readme: restructure RFC section, add QUIC v2 (RFC 9369) by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3871">quic-go/quic-go#3871</a></li> <li>remove stray print statement in datagram test by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3828">quic-go/quic-go#3828</a></li> <li>ci: fix ordering of error output of the cross compilation workflow by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3809">quic-go/quic-go#3809</a></li> <li>githooks: exclude deleted files from checks by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3864">quic-go/quic-go#3864</a></li> <li>receive stream: put back the buffer for the last STREAM frame by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3832">quic-go/quic-go#3832</a></li> <li>config: handle overflows of stream and flow control limits by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3866">quic-go/quic-go#3866</a></li> <li>improve documentation of the Transport and the dial and listen functions by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3875">quic-go/quic-go#3875</a></li> <li>don't use closures for passing OnLost and OnAcked STREAM frame callbacks by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3833">quic-go/quic-go#3833</a></li> <li>use ackhandler.Frame directly, not as a pointer, remove its sync.Pool by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3835">quic-go/quic-go#3835</a></li> <li>only run DPLPMTUD if the connection can send packets with the DF bit set by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3879">quic-go/quic-go#3879</a></li> <li>use a single ACK frame in the receive path by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3878">quic-go/quic-go#3878</a></li> <li>use the same ACK frame struct in the send path, remove ACK frame pool by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3831">quic-go/quic-go#3831</a></li> <li>use GSO by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3808">quic-go/quic-go#3808</a></li> <li>ci: run linter on all supported platforms by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3816">quic-go/quic-go#3816</a></li> <li>packer: reduce number of calls to time.Now() when packing packets by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3815">quic-go/quic-go#3815</a></li> <li>pass around receivedPacket as struct instead of as pointer by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3823">quic-go/quic-go#3823</a></li> <li>pass the current timestamp to the pacer instead of calling time.Now() by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3824">quic-go/quic-go#3824</a></li> <li>embed packetInfo in receivedPacket struct, use netip.Addr by <a href="https://github.com/marten-seemann"><code>@marten-seemann</code></a> in <a href="https://redirect.github.com/quic-go/quic-go/pull/3881">quic-go/quic-go#3881</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/quic-go/quic-go/commit/4384df18a317f5c103b7b5f653c2968eeda62a34"><code>4384df1</code></a> disable GSO unless QUIC_GO_ENABLE_GSO is set (<a href="https://redirect.github.com/quic-go/quic-go/issues/3934">#3934</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/4a78b51955d02c3d5f0f21f7f370db5c0544a33a"><code>4a78b51</code></a> update link to the wiki page about UDP buffer sizes (<a href="https://redirect.github.com/quic-go/quic-go/issues/3924">#3924</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/da298d09e159fd545a3a90bd54771aabfe9e9162"><code>da298d0</code></a> docs: improve documentation of OptimizeConn (<a href="https://redirect.github.com/quic-go/quic-go/issues/3910">#3910</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/8352e5dc3236d1b26858ff44f85b699ced095bac"><code>8352e5d</code></a> check for uninitialized fields when closing the Transport (<a href="https://redirect.github.com/quic-go/quic-go/issues/3908">#3908</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/9acce3c6d94a8891b72001b082b19d4db40d824c"><code>9acce3c</code></a> http3: return http.ErrServerClosed instead of quic.ErrServerClosed (<a href="https://redirect.github.com/quic-go/quic-go/issues/3900">#3900</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/e4fe28930a6cf8ca41fb887aa95ad6debbbe10ea"><code>e4fe289</code></a> docs: add detailed description of the quic package (<a href="https://redirect.github.com/quic-go/quic-go/issues/3902">#3902</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/28d5106a1c68722e98c006ecba10f1f00240633f"><code>28d5106</code></a> wire: switch to crypto/rand for greased transport parameter generation (<a href="https://redirect.github.com/quic-go/quic-go/issues/3904">#3904</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/f57f876446d6ed52dfa34e9ed115a054353f9b84"><code>f57f876</code></a> respect minimum idle timeout of 3 PTOs (<a href="https://redirect.github.com/quic-go/quic-go/issues/3909">#3909</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/85764da3b65997a229a961d9704a03e6c02a682b"><code>85764da</code></a> docs: improve doc comments for the ConnectionState fields (<a href="https://redirect.github.com/quic-go/quic-go/issues/3901">#3901</a>)</li> <li><a href="https://github.com/quic-go/quic-go/commit/30527c58c2ac336b48b32dd9288147df8cf33b0a"><code>30527c5</code></a> frame fuzzer: handle frames one by one (<a href="https://redirect.github.com/quic-go/quic-go/issues/3884">#3884</a>)</li> <li>Additional commits viewable in <a href="https://github.com/quic-go/quic-go/compare/v0.33.0...v0.36.1">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/quic-go/quic-go&package-manager=go_modules&previous-version=0.33.0&new-version=0.36.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Steve Ayers <[email protected]> Co-authored-by: Steve Ayers <[email protected]>
- Loading branch information