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

Add KeepAliveEnabled setting #3880

Open
bernardnormier opened this issue Sep 25, 2023 · 1 comment
Open

Add KeepAliveEnabled setting #3880

bernardnormier opened this issue Sep 25, 2023 · 1 comment
Labels
feature request A request for new functionality
Milestone

Comments

@bernardnormier
Copy link

Describe the feature you'd like supported

The QUIC idle timer closes a connection when there is no activity on this connection.

Occasionally, the application wants to disable this behavior because it's still actively using this connection (really a stream on this connection) without writing anything for a while. A typical examples is a RPC mapped to a QUIC stream: the client sends a request and waits for the response. If the application code on the server takes more than idle timeout to return the response, the server QUIC idle timer would close the connection even though there is an outstanding request/response.

Another use case from HTTP/3 (https://datatracker.ietf.org/doc/html/rfc9114#name-idle-connections):

HTTP clients are expected to request that the transport keep connections open while there are responses outstanding for requests or server pushes, as described in Section 10.1.2 of [QUIC-TRANSPORT].

Proposed solution

Add a KeepAliveEnabled on/off setting to QUIC_SETTINGS.

The default is 0 (FALSE).
When 1 (TRUE), the local peer sends PING frames to the remote peer to keep the connection alive. The implementation decides when to send these PING frames, and takes into account the negotiated idle timeout.

Additional context

See also #3875

@bernardnormier bernardnormier added the feature request A request for new functionality label Sep 25, 2023
@bentoi
Copy link

bentoi commented Sep 26, 2023

See also dotnet/runtime#87478

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request A request for new functionality
Projects
None yet
Development

No branches or pull requests

3 participants