quinn-rs / quinn

Async-friendly QUIC implementation in Rust
Apache License 2.0
3.76k stars 380 forks source link

Expose more properties and setters on UdpState #1610

Closed Icelk closed 1 year ago

Icelk commented 1 year ago

Allows downgrading system capabilities. Closes #1609.

Icelk commented 1 year ago

Would it be possibly to release a patch version after this PR? I need to downgrade the system UDP capabilities to get quinn working with tokio-uring :)

Icelk commented 1 year ago

Seems like 35089ee1c8708f6697767baf4f96fa6d7707e923 is the only commit since 0.11 with breaking changes. Could that maybe be cherry-picked out?

Ralith commented 1 year ago

Thanks for looking into interop with tokio-uring! I'm not sure this is an approach we want to support. Aside from the (fixable) issues with exposing these implementation details, GSO and GRO are critical to performance under heavy load, and ECN support is required for conformance. io-uring support alone is unlikely to be balance those severe costs. First-class tokio-uring support should require those features be available.

Ralith commented 1 year ago

https://github.com/quinn-rs/quinn/pull/1612 will allow a similar level of control with less leakage, though it is a breaking change.

Ralith commented 1 year ago

Closing as #1612 was merged. Let us know if that doesn't solve your issue.

Icelk commented 1 year ago

Again, sorry for the late response. Your new code worked excellently and GSO & GRO are now properly implemented (https://github.com/Icelk/kvarn/tree/proper-quic/). So thank you! I completely agree with you, it would be bad not to use the offloads to maximize performance.

I blame my skepticism on my disregarding some error handling (i.e. trying again after failed GSO) and the fact that my server didn't support GSO (it's a VM), so thanks for showing me to the correct side!

Icelk commented 1 year ago

Do you know when the next release is planned so these changes can be used in packages published to crates.io (my release is sort of blocking on this & a tokio-uring PR) :)

djc commented 1 year ago

We don't have concrete plans right now. Given that I think a semver-incompatible rustls release is probably a few weeks away (https://github.com/rustls/rustls/issues/1435), I would be inclined to wait with doing a semver-incompatible Quinn release until that's ready. Would it help if we published an alpha release?

Icelk commented 1 year ago

Waiting a few weeks is completely fine—my packages don't have a ton of users. And thanks for your awesome work. I've been coding this on/off for a few months now, so waiting another one is OK.