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

A pacing algorithm #3630

Merged
merged 13 commits into from May 18, 2020
12 changes: 6 additions & 6 deletions draft-ietf-quic-recovery.md
Expand Up @@ -910,12 +910,12 @@ sent@t[n] - sent@t[m]
max(2 * max_datagram_size, 14720))
~~~

For a congestion controller that limits the increase in congestion window by a
fixed multiple each round trip, using that value for `N` in this function
ensures that the pacer does not limit the overall send rate more than the
congestion controller. The congestion controller specified in this document at
most doubles the congestion window every round trip, so a factor of 2 suits a
pacer using this congestion controller.
The inclusion of the factor, `N`, that increases the rate of sending is to
anticipate increases in sending rate as the congestion window expands. Sending
at a higher rate also avoids having scheduling delays reduce the send rate
below that allowed by the congestion controller. A value of 2 ensures that
pacing is unlikely to limit what is sent any more than the congestion
controller.
martinthomson marked this conversation as resolved.
Show resolved Hide resolved

martinthomson marked this conversation as resolved.
Show resolved Hide resolved
One possible implementation strategy for pacing uses a leaky bucket algorithm,
where the capacity of the "bucket" is limited to the maximum burst size and the
Expand Down