Skip to content

Add KeepAliveEnabled setting #3880

@bernardnormier

Description

@bernardnormier

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature requestA request for new functionality

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions