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

Bundle flow control and ACK frames opportunistically #1899

Open
Ralith opened this issue Jun 15, 2024 · 0 comments
Open

Bundle flow control and ACK frames opportunistically #1899

Ralith opened this issue Jun 15, 2024 · 0 comments
Labels
enhancement New feature or request

Comments

@Ralith
Copy link
Collaborator

Ralith commented Jun 15, 2024

MAX_DATA, MAX_STREAM_DATA, MAX_STREAMS, and ACK frames are all sent automatically by endpoints receiving application data, and usually do not need to be sent at the first opportunity. We currently reduce traffic by relying on a significance threshold (e.g. 1/8 of a flow control window, or a certain time or packet count for ACKs) to judge whether they must be sent. This fails to reliably include these automatically generated frames in packets bearing application data, even if such packets are being sent regularly (e.g. responses to requests).

We could capture this opportunity by introducing an additional, separate, lower significance threshold at which flow control and/or ACK frames will be included in an outgoing packet. If packets are being sent regularly, then this threshold will typically be crossed and a frame included before a free-standing packet would become necessary.

We should be careful not to generate too many ACK frames even when bundled in otherwise-scheduled packets, as they are thought to be relatively expensive for the peer to process. Flow control frames have no such constraint and need only consider the cost of the space to encode them.

@Ralith Ralith added the enhancement New feature or request label Jun 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant