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

Improve detection of CC-limited state #573

Merged
merged 1 commit into from
Mar 14, 2024
Merged

Improve detection of CC-limited state #573

merged 1 commit into from
Mar 14, 2024

Conversation

kazuho
Copy link
Member

@kazuho kazuho commented Mar 14, 2024

At the moment, a flow is considered CC limited (i.e., CWND in increased) when an acknowledgment is received and if either the CWND or the pacer restricts the flow from sending more.

The problem with this approach is that once all data is sent, newly received acks do not increase CWND, even if those acks were sent while the sender was sending at full speed. To paraphrase, if an idle connection goes into CC-limited for X round-trips then becomes idle again, only packets sent during X - 1 round-trips cause the increase of CWND.

During slow start, this behavior might lead to slower CWND growth than what is ideal.

This PR changes the approach; now, packets affect the congestion window if the acked packet was sent while inflight >= 1/2 * CWND, or if the packet was acked under the same condition. 1/2 of CWND is adopted for having fairness to RFC 7661, but also provides correct increase; i.e., if an idle connection goes into CC-limited for X round-trips then becomes idle again, all packets sent during that X round-trips will be considered as CC-limited.

This is a follow-up PR of #452.

…t >= 1/2 * CNWD` or acked under the same condition.

1/2 of CWND is adopted for fairness with RFC 7661, and also provides correct increase; i.e., if an idle connection goes into CC-limited for X round-trips then becomes idle again, all packets sent during that X round-trips will be considered as CC-limited.
@kazuho kazuho merged commit 69b2275 into master Mar 14, 2024
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant