From 1ae9ec8d44475f7c2176d2009ba8a13ef568cfe5 Mon Sep 17 00:00:00 2001 From: ianswett Date: Wed, 6 Jan 2021 15:36:29 -0500 Subject: [PATCH 1/8] Reference RACK and TLP in recovery section 4.7 Fixes #4467 --- draft-ietf-quic-recovery.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 6e7e3654a0..2271723c47 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -229,12 +229,17 @@ more accurate round-trip time estimate; see Section 13.2 of {{QUIC-TRANSPORT}}. 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. +delay instead of using a fixed minimum timeout. + +As reflected in RACK ({{?RACK=I-D.ietf-tcpm-rack}}) TLP, a single packet loss +at the tail does not indicate persistent congestion, so QUIC does not collapse +the congestion window when the PTO expires. + +Instead of collapsing the congestion window and declaring everything in-flight +lost, 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. In doing this, QUIC avoids unnecessary congestion window reductions, obviating the need for correcting mechanisms such as F-RTO ({{?RFC5682}}). Since QUIC does @@ -245,11 +250,6 @@ 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}}. - ## The Minimum Congestion Window is Two Packets TCP uses a minimum congestion window of one packet. However, loss of @@ -467,7 +467,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 ({{?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: @@ -535,7 +535,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. From 23fa77219511a3642ec6a012069cef5b58f77da5 Mon Sep 17 00:00:00 2001 From: ianswett Date: Wed, 6 Jan 2021 15:39:47 -0500 Subject: [PATCH 2/8] Update draft-ietf-quic-recovery.md --- draft-ietf-quic-recovery.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 2271723c47..faa86cc4c8 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -233,13 +233,12 @@ delay instead of using a fixed minimum timeout. As reflected in RACK ({{?RACK=I-D.ietf-tcpm-rack}}) TLP, a single packet loss at the tail does not indicate persistent congestion, so QUIC does not collapse -the congestion window when the PTO expires. - -Instead of collapsing the congestion window and declaring everything in-flight -lost, 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 congestion window when the PTO expires. Instead of collapsing the +congestion window and declaring everything in-flight lost, 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. In doing this, QUIC avoids unnecessary congestion window reductions, obviating the need for correcting mechanisms such as F-RTO ({{?RFC5682}}). Since QUIC does From 911cb33648d88fa98047db18bb9027f4fda3dae0 Mon Sep 17 00:00:00 2001 From: ianswett Date: Wed, 6 Jan 2021 15:42:10 -0500 Subject: [PATCH 3/8] Update draft-ietf-quic-recovery.md --- draft-ietf-quic-recovery.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index faa86cc4c8..3311d30042 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -231,12 +231,12 @@ 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. -As reflected in RACK ({{?RACK=I-D.ietf-tcpm-rack}}) TLP, a single packet loss -at the tail does not indicate persistent congestion, so QUIC does not collapse -the congestion window when the PTO expires. Instead of collapsing the -congestion window and declaring everything in-flight lost, 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}}. +As reflected by TLP defined in RACK ({{?RACK=I-D.ietf-tcpm-rack}}), a single +packet loss at the tail does not indicate persistent congestion, so QUIC does +not collapse the congestion window when the PTO expires. Instead of +collapsing the congestion window and declaring everything in-flight lost, 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. From a39ad324bb5131681914d17c19ebcb474165bdde Mon Sep 17 00:00:00 2001 From: ianswett Date: Wed, 6 Jan 2021 15:44:23 -0500 Subject: [PATCH 4/8] Update draft-ietf-quic-recovery.md --- draft-ietf-quic-recovery.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 3311d30042..1d4d999d81 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -229,7 +229,7 @@ more accurate round-trip time estimate; see Section 13.2 of {{QUIC-TRANSPORT}}. 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. +delay instead of using a fixed minimum timeout. As reflected by TLP defined in RACK ({{?RACK=I-D.ietf-tcpm-rack}}), a single packet loss at the tail does not indicate persistent congestion, so QUIC does From 78673301021c96221ad73804c1bace7748f6b8da Mon Sep 17 00:00:00 2001 From: ianswett Date: Wed, 6 Jan 2021 16:30:15 -0500 Subject: [PATCH 5/8] Update draft-ietf-quic-recovery.md Reference RTO RFC --- draft-ietf-quic-recovery.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 1d4d999d81..3851f0e736 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -228,8 +228,8 @@ 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. +computation; see {{?RFC6297}}. QUIC's PTO includes the peer's maximum expected +acknowledgment delay instead of using a fixed minimum timeout. As reflected by TLP defined in RACK ({{?RACK=I-D.ietf-tcpm-rack}}), a single packet loss at the tail does not indicate persistent congestion, so QUIC does From 3dd1e5c337c1a96511a55ac6318a4330a2731473 Mon Sep 17 00:00:00 2001 From: ianswett Date: Thu, 7 Jan 2021 15:09:15 -0500 Subject: [PATCH 6/8] Update draft-ietf-quic-recovery.md Co-authored-by: Jana Iyengar --- draft-ietf-quic-recovery.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 3851f0e736..b78e0bd3f9 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -466,7 +466,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}}). 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: From 609c9c751f6bb71d5df22e31911f4d0822c31485 Mon Sep 17 00:00:00 2001 From: ianswett Date: Thu, 7 Jan 2021 15:09:28 -0500 Subject: [PATCH 7/8] Update draft-ietf-quic-recovery.md Co-authored-by: Jana Iyengar --- draft-ietf-quic-recovery.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index b78e0bd3f9..d0a6662653 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -231,14 +231,14 @@ QUIC uses a probe timeout (PTO; see {{pto}}), with a timer based on TCP's RTO computation; see {{?RFC6297}}. QUIC's PTO includes the peer's maximum expected acknowledgment delay instead of using a fixed minimum timeout. -As reflected by TLP defined in RACK ({{?RACK=I-D.ietf-tcpm-rack}}), a single -packet loss at the tail does not indicate persistent congestion, so QUIC does -not collapse the congestion window when the PTO expires. Instead of -collapsing the congestion window and declaring everything in-flight lost, 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. +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}}. + +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 From eaa743adcdab8ea9073e5af038cd5fbf2991cf85 Mon Sep 17 00:00:00 2001 From: ianswett Date: Thu, 7 Jan 2021 15:11:48 -0500 Subject: [PATCH 8/8] Update draft-ietf-quic-recovery.md --- draft-ietf-quic-recovery.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index d0a6662653..5f82ab495f 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -235,20 +235,19 @@ 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}}. - -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 +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. +QUIC allows probe packets to temporarily exceed the congestion window whenever +the timer expires. + ## The Minimum Congestion Window is Two Packets TCP uses a minimum congestion window of one packet. However, loss of