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

jumpstart #565

Merged
merged 61 commits into from
Mar 12, 2024
Merged

jumpstart #565

merged 61 commits into from
Mar 12, 2024

Conversation

kazuho
Copy link
Member

@kazuho kazuho commented Nov 4, 2023

Builds on top of #452, and therefore this PR currently points to #452 as the base branch.

This PR implements Careful Resume WG draft-04 with following differences:

  • Uses smoothed delivery rate (https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg-careful-resume-04) and compares idle RTTs of the previous and new connection. That gives up better accuracy compared to using CWND and SRTT (a pair known to overshoot up to 2x at the end of slow start or undershoot by 1/2 immediately after a loss in congestion avoidance phase).
  • When resuming, sends at the estimated bandwidth for full idle RTT. The draft states that endpoints should send at the estimated bandwidth for half the idle RTT. Justifications are that we have better accuracy (as stated above), and that there is no firm ground for the argument that half the idle RTT is better for fairness, considering that RTT of competing connections are going to be different.
  • We count the number of bytes being acked among the packets sent in the jumpstart (i.e., unvalidated) phase, and if a loss is observed for any of the packets sent in that phase, CWND is adjusted to the number of bytes being acked. When the last packet sent in the unvalidated phase is acked (or deemed lost), CWND becomes equal to the pipe width.
  • We do not have HyStart++ implemented.
  • Separate knob (quicly_context_t::default_jumpstart_cwnd_bytes) is provided to set the CWND to be used when there is no previous information. This is useful for testing, et. al.
  • We enter jumpstart (unvalidated phase) when we have more data to send than the pacer can send immediatly (i.e., 10 packets).

The PR adds following metrics to quicly_context_t:

  • max_jumpstart_cwnd_bytes - cap for the CWND size used for jumpstart when previous information is available.
  • default_jumpstart_cwnd_bytes jumpstart CWND to be used when no previous information is available; see above.

The PR adds following metrics to quicly_stats_t:

  • jumpstart.prev_rate - delivery rate of the previous session
  • jumpstart.prev_rtt - min RTT of the previous session
  • jumpstart.new_rtt- min RTT of the new session
  • jumpstart.cwnd - jumpstart CWND being adopted
  • cc.exit_slow_start_at - contains milliseconds between creation of the connection and exit of slow start; alongside the existing parameter cc.cwnd_exiting_slow_start, this value would help us test the efficiency of jumpstart
  • cc.cwnd_exiting_jumpstart - this value represents overestimation of the new RTT; if new RTT was overestimated, the value is going to be smaller than jumpstart.cwnd, as CWND is adjusted to the amount of bytes being acked previously, when exiting CWND (this is the moment when an the first ack is received for the packets sent in the unvalidated phase).

kazuho added 27 commits November 4, 2023 15:44
…d at least once; having such function can help apps determine when to send a new token
…`addsess_mismatch` field so that apps can provide the token even if address validation fails
…loss signal arrives 1 rtt later and slow start is 2x per rtt)
lib/cc-reno.c Outdated Show resolved Hide resolved
@kazuho kazuho mentioned this pull request Mar 10, 2024
3 tasks
@kazuho kazuho changed the base branch from kazuho/pacer to master March 12, 2024 05:06
@kazuho kazuho merged commit 3336ce1 into master Mar 12, 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