Introduce generic slowstart algorithms for congestion control #583
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description:
This PR introduces the new functionality of 'slowstart algorithms' which are a step in congestion control algorithms that govern the initial handling of the congestion window.
This is to try to reduce initial packet loss during a connection and better estimate a correct congestion window.
The implemented algorithms are the following:
rfc2001 : The default behavior for CCAs described in RFC2001 and implemented previously in quicly that doubles the congestion window until a loss is detected, at which point the slowstart phase is exited.
disabled : For some congestion control algorithms (namely pico), rfc2001 behavior is not coherent and so an empty type of slowstart logic is provided.
search : The SEARCH algorithm described in:
Amber Cronin, Maryam Ataei Kachooei, Jae Chung, Feng Li, Benjamin Peters, and Mark Claypool.
Improving QUIC Slow Start Behavior in Wireless Networks with SEARCH, In Proceedings of the IEEE
Local and Metropolitan Area Conference (LANMAN), Boston, MA, USA, July 2024.
Maryam Ataei Kachooei, Jae Chung, Feng Li, Benjamin Peters, Josh Chung, and
Mark Claypool. Improving TCP Slow Start Performance in Wireless Networks with
SEARCH, In Proceedings of the World of Wireless, Mobile and Multimedia Networks
(WoWMoM), Perth, Australia June 2024.
This algorithm tracks delivered bytes in 'bins' and averages their sum over time until a certain threshold is achieved, at that point the congestion window is updated and slowstart phase exited.
The three implementations are provided via a new struct
quicly_ss_type_t
, similar toquicly_cc_type_t
and allows to select the current slowstart algorithm being used, by changing the pointer added in quicly context to the requested slowstart type.If this is context field is left empty than no change is made and the default previous behavior is still used.
Please review and send feedback.