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

Reference RACK and TLP in recovery section 4.7 #4596

Merged
merged 8 commits into from Jan 8, 2021
32 changes: 15 additions & 17 deletions draft-ietf-quic-recovery.md
Expand Up @@ -228,27 +228,25 @@ more accurate round-trip time estimate; see Section 13.2 of {{QUIC-TRANSPORT}}.
## Probe Timeout Replaces RTO and TLP

QUIC uses a probe timeout (PTO; see {{pto}}), with a timer based on TCP's RTO
computation. QUIC's PTO includes the peer's maximum expected acknowledgment
delay instead of using a fixed minimum timeout. QUIC does not collapse the
congestion window until persistent congestion ({{persistent-congestion}}) is
declared, unlike TCP, which collapses the congestion window upon expiry of an
RTO. Instead of collapsing the congestion window and declaring everything
in-flight lost, QUIC allows probe packets to temporarily exceed the congestion
window whenever the timer expires.

In doing this, QUIC avoids unnecessary congestion window reductions, obviating
the need for correcting mechanisms such as F-RTO ({{?RFC5682}}). Since QUIC does
not collapse the congestion window on a PTO expiration, a QUIC sender is not
computation; see {{?RFC6297}}. QUIC's PTO includes the peer's maximum expected
acknowledgment delay instead of using a fixed minimum timeout.

Similar to the RACK-TLP loss detection algorithm for TCP
({{?RACK=I-D.ietf-tcpm-rack}}), QUIC does not collapse the congestion window
when the PTO expires, since a single packet loss at the tail does not indicate
persistent congestion. Instead, QUIC collapses the congestion window when
persistent congestion is declared; see {{persistent-congestion}}. In doing this,
QUIC avoids unnecessary congestion window reductions, obviating the need for
correcting mechanisms such as F-RTO ({{?RFC5682}}). Since QUIC does not
collapse the congestion window on a PTO expiration, a QUIC sender is not
limited from sending more in-flight packets after a PTO expiration if it still
has available congestion window. This occurs when a sender is
application-limited and the PTO timer expires. This is more aggressive than
TCP's RTO mechanism when application-limited, but identical when not
application-limited.

A single packet loss at the tail does not indicate persistent congestion, so
QUIC specifies a time-based definition to ensure one or more packets are sent
prior to a dramatic decrease in congestion window; see
{{persistent-congestion}}.
QUIC allows probe packets to temporarily exceed the congestion window whenever
the timer expires.

## The Minimum Congestion Window is Two Packets

Expand Down Expand Up @@ -467,7 +465,7 @@ path, whereas loss detection also relies upon key availability.

Acknowledgment-based loss detection implements the spirit of TCP's Fast
Retransmit ({{?RFC5681}}), Early Retransmit ({{?RFC5827}}), FACK ({{FACK}}),
SACK loss recovery ({{?RFC6675}}), and RACK ({{?RACK=I-D.ietf-tcpm-rack}}). This
SACK loss recovery ({{?RFC6675}}), and RACK-TLP ({{?RACK}}). This
section provides an overview of how these algorithms are implemented in QUIC.

A packet is declared lost if it meets all the following conditions:
Expand Down Expand Up @@ -535,7 +533,7 @@ multiplier, is 9/8. The RECOMMENDED value of the timer granularity

Note:

: TCP's RACK ({{?RACK=I-D.ietf-tcpm-rack}}) specifies a slightly larger
: TCP's RACK ({{?RACK}}) specifies a slightly larger
threshold, equivalent to 5/4, for a similar purpose. Experience with QUIC shows
that 9/8 works well.

Expand Down