-
Notifications
You must be signed in to change notification settings - Fork 592
Description
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