Skip to content
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

feat(s2n-quic): expose mtu provider #2232

Merged
merged 20 commits into from
Jun 20, 2024
Merged

feat(s2n-quic): expose mtu provider #2232

merged 20 commits into from
Jun 20, 2024

Conversation

toidiu
Copy link
Contributor

@toidiu toidiu commented Jun 7, 2024

Description of changes:

While it is currently possible to specify MTU setting on the IO provider (endpoint specific configuration), an application may want to specify these values per connection.

This PR exposes an MTU provider that allows Applications to provide MTU values at connection granularity. The MTU provider exposes remote_address and endpoint_config, which Applications can use to identify the connection.

Usecases:

By default s2n-quic will attempt to set the DF (dont fragment) and do MTU probing on a path. The only way to disable MTU probing is to set the initial, base, and max MTU to the same values. With the inclusion of the MTU provider, Applications can disable MTU probing at the connection level rather than the entire endpoint.

MTU probing can lead to higher path MTUs and therefore lead to better transmission efficiency (25% = (1500-1200)/1200). However, probing for higher MTUs takes time and therefore doesn't benefit Initial and Handshake packets. Applications operating on predictable networks could set the MTU values for known paths and also benefit from efficiency gains during connection establishment.

Testing:

  • Unit tests to confirm that the MTU provider values propagate to the path.
  • Unit test to confirm that validation is enforced.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@toidiu toidiu changed the title Ak mtu per conn wip: expose mtu per conn configuration Jun 10, 2024
@toidiu toidiu force-pushed the ak-mtuPerConn branch 3 times, most recently from 4215d1b to 384a116 Compare June 11, 2024 22:35
@toidiu toidiu changed the title wip: expose mtu per conn configuration feat(s2n-quic): expose an mtu provider with connection specific support Jun 12, 2024
@toidiu toidiu changed the title feat(s2n-quic): expose an mtu provider with connection specific support feat(s2n-quic): expose an mtu provider Jun 12, 2024
@toidiu toidiu marked this pull request as ready for review June 12, 2024 20:53
@toidiu toidiu requested review from camshaft and WesleyRosenblum and removed request for camshaft June 12, 2024 20:59
quic/s2n-quic/src/client/builder.rs Outdated Show resolved Hide resolved
quic/s2n-quic/src/server/builder.rs Outdated Show resolved Hide resolved
quic/s2n-quic/src/client/providers.rs Outdated Show resolved Hide resolved
quic/s2n-quic/src/client/providers.rs Outdated Show resolved Hide resolved
quic/s2n-quic/src/server/providers.rs Outdated Show resolved Hide resolved
quic/s2n-quic/src/provider/mtu.rs Outdated Show resolved Hide resolved
quic/s2n-quic-core/src/path/mtu.rs Outdated Show resolved Hide resolved
quic/s2n-quic-transport/src/path/manager.rs Show resolved Hide resolved
quic/s2n-quic-core/src/path/mtu.rs Outdated Show resolved Hide resolved
quic/s2n-quic-core/src/connection/error.rs Outdated Show resolved Hide resolved
@toidiu toidiu force-pushed the ak-mtuPerConn branch 3 times, most recently from 2384ed4 to f8d9971 Compare June 14, 2024 02:17
@toidiu toidiu changed the title feat(s2n-quic): expose an mtu provider feat(s2n-quic): expose mtu provider Jun 14, 2024
quic/s2n-quic-core/src/path/mtu.rs Outdated Show resolved Hide resolved
quic/s2n-quic-core/src/path/mtu.rs Outdated Show resolved Hide resolved
quic/s2n-quic-core/src/path/mtu.rs Outdated Show resolved Hide resolved
quic/s2n-quic-core/src/path/mtu.rs Outdated Show resolved Hide resolved
quic/s2n-quic-core/src/path/mtu.rs Outdated Show resolved Hide resolved
quic/s2n-quic-core/src/path/mtu.rs Outdated Show resolved Hide resolved
quic/s2n-quic-core/src/path/mtu.rs Outdated Show resolved Hide resolved
quic/s2n-quic-events/events/common.rs Outdated Show resolved Hide resolved
quic/s2n-quic-transport/src/path/manager.rs Outdated Show resolved Hide resolved
camshaft
camshaft previously approved these changes Jun 19, 2024
@toidiu toidiu merged commit b5bcd7f into main Jun 20, 2024
128 of 129 checks passed
@toidiu toidiu deleted the ak-mtuPerConn branch June 20, 2024 17:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants