containerd / containerd/ttrpc

Feature Request: Keepalive Support in ttrpc

Open
#203 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
664
Forks
86
PR merge metrics
No merged PRs in 30d

Description

This feature request proposes the implementation of a keepalive mechanism in ttrpc based on the [HTTP/2 PING frame as defined in RFC 7540, Section 6.7](https://datatracker.ietf.org/doc/html/rfc7540#section-6.7) to distinguish between a slow remote procedure call (RPC) and a dead or unresponsive client or server. The keepalive feature will allow clients and servers to periodically check the health of the connection.

The ttrpc protocol, as described in PROTOCOL.md, will be extended with two new message types:

- PING (0x04): A message sent by the client to the server to check if the connection is alive.
- PONG (0x05): A message sent by the server in response to a PING, confirming that the connection is active.

Both server and client will be able to set this functionality with the following two options (based on golang http2 implementation):

- ReadIdleTimeout: The timeout after which a health check using a PING frame will be sent if no data frames are received on the connection (0 means disabled)
- PingTimeout: The timeout after which the connection will be closed if a response to a PING is not received (0 means disabled)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.