From 66fb2929883fc076683392c81be00c2b6936ad82 Mon Sep 17 00:00:00 2001 From: ianswett Date: Sun, 19 Apr 2020 17:43:35 -0400 Subject: [PATCH 01/13] Why min CWND of 2 instead of 1 Feel free to suggest better text or other reasons, but this is what I came up with. Fixes #3261 --- draft-ietf-quic-recovery.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 722c259012..efc017b29d 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -245,6 +245,13 @@ 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}}. +### Increase the min congestion window to 2 packets + +QUIC recommends a minimum congestion window of 2 packets instead of TCP's 1. +2 packets avoid waiting for a delayed acknowledgement and allow the PTO to +send 2 packets instead of 1, which can be particularly important during the +handshake. + # Estimating the Round-Trip Time {#compute-rtt} From 6d95aa65d4366e6474de8b61f964e99ffd9a996b Mon Sep 17 00:00:00 2001 From: ianswett Date: Mon, 20 Apr 2020 17:41:49 -0400 Subject: [PATCH 02/13] Update draft-ietf-quic-recovery.md Co-Authored-By: Martin Thomson --- 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 efc017b29d..6220b844de 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -245,7 +245,7 @@ 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}}. -### Increase the min congestion window to 2 packets +### The Minimum Congestion Window is 2 Packets QUIC recommends a minimum congestion window of 2 packets instead of TCP's 1. 2 packets avoid waiting for a delayed acknowledgement and allow the PTO to From 1225aad461e601e2cfec4e354a8b34704f633f81 Mon Sep 17 00:00:00 2001 From: ianswett Date: Mon, 20 Apr 2020 17:52:02 -0400 Subject: [PATCH 03/13] Update draft-ietf-quic-recovery.md Co-Authored-By: Martin Thomson --- draft-ietf-quic-recovery.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 6220b844de..36826594e1 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -247,7 +247,8 @@ prior to a dramatic decrease in congestion window; see ### The Minimum Congestion Window is 2 Packets -QUIC recommends a minimum congestion window of 2 packets instead of TCP's 1. +QUIC recommends that the minimum congestion window be 2 packets instead +of the 1 packet minimum in TCP. 2 packets avoid waiting for a delayed acknowledgement and allow the PTO to send 2 packets instead of 1, which can be particularly important during the handshake. From d214bfdcdc246bc0955acf834fc64c3d463ab2d6 Mon Sep 17 00:00:00 2001 From: ianswett Date: Mon, 20 Apr 2020 17:54:43 -0400 Subject: [PATCH 04/13] Update draft-ietf-quic-recovery.md --- draft-ietf-quic-recovery.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 36826594e1..34f2b5d722 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -248,10 +248,9 @@ prior to a dramatic decrease in congestion window; see ### The Minimum Congestion Window is 2 Packets QUIC recommends that the minimum congestion window be 2 packets instead -of the 1 packet minimum in TCP. -2 packets avoid waiting for a delayed acknowledgement and allow the PTO to -send 2 packets instead of 1, which can be particularly important during the -handshake. +of the 1 packet minimum in TCP. A minimum of 2 packets avoids waiting for a +delayed acknowledgement, which can substantially decrease throughput, +particularly if the max_ack_delay is larger than the round trip time. # Estimating the Round-Trip Time {#compute-rtt} From ce6ab3402520ed0931bafed333a3ab3cddf73903 Mon Sep 17 00:00:00 2001 From: ianswett Date: Mon, 20 Apr 2020 17:56:09 -0400 Subject: [PATCH 05/13] 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 34f2b5d722..5d9b9a59c9 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -247,7 +247,7 @@ prior to a dramatic decrease in congestion window; see ### The Minimum Congestion Window is 2 Packets -QUIC recommends that the minimum congestion window be 2 packets instead +QUIC recommends that the minimum congestion window be 2 packets instead of the 1 packet minimum in TCP. A minimum of 2 packets avoids waiting for a delayed acknowledgement, which can substantially decrease throughput, particularly if the max_ack_delay is larger than the round trip time. From 5580b7a57d7fa5f1585f598751f9930b4480c01a Mon Sep 17 00:00:00 2001 From: ianswett Date: Mon, 20 Apr 2020 17:59:40 -0400 Subject: [PATCH 06/13] Update draft-ietf-quic-recovery.md --- draft-ietf-quic-recovery.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 5d9b9a59c9..2fd940c2a5 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -251,6 +251,8 @@ QUIC recommends that the minimum congestion window be 2 packets instead of the 1 packet minimum in TCP. A minimum of 2 packets avoids waiting for a delayed acknowledgement, which can substantially decrease throughput, particularly if the max_ack_delay is larger than the round trip time. +A 2 packet minimum congestion window also avoids waiting for a probe +timeout(see {{pto}}) every time a single packet is lost. # Estimating the Round-Trip Time {#compute-rtt} From 72c7eced88de7b859edf4d1f093277851433ab8a Mon Sep 17 00:00:00 2001 From: ianswett Date: Tue, 21 Apr 2020 18:05:36 -0400 Subject: [PATCH 07/13] Update draft-ietf-quic-recovery.md Co-Authored-By: Martin Thomson --- 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 2fd940c2a5..da30553066 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -252,7 +252,7 @@ of the 1 packet minimum in TCP. A minimum of 2 packets avoids waiting for a delayed acknowledgement, which can substantially decrease throughput, particularly if the max_ack_delay is larger than the round trip time. A 2 packet minimum congestion window also avoids waiting for a probe -timeout(see {{pto}}) every time a single packet is lost. +timeout (see {{pto}}) every time a single packet is lost. # Estimating the Round-Trip Time {#compute-rtt} From 1e67d0fb1c81085c81ab5812621111608d824cdf Mon Sep 17 00:00:00 2001 From: ianswett Date: Tue, 5 May 2020 18:31:30 -0400 Subject: [PATCH 08/13] Update draft-ietf-quic-recovery.md --- draft-ietf-quic-recovery.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index da30553066..8233e00067 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -248,11 +248,11 @@ prior to a dramatic decrease in congestion window; see ### The Minimum Congestion Window is 2 Packets QUIC recommends that the minimum congestion window be 2 packets instead -of the 1 packet minimum in TCP. A minimum of 2 packets avoids waiting for a -delayed acknowledgement, which can substantially decrease throughput, -particularly if the max_ack_delay is larger than the round trip time. -A 2 packet minimum congestion window also avoids waiting for a probe -timeout (see {{pto}}) every time a single packet is lost. +of the 1 packet minimum in TCP. A 2 packet minimum congestion window also +avoids waiting for a probe timeout (see {{pto}}) every time a single packet +is lost. A minimum of 2 packets avoids waiting for a delayed acknowledgement, +which can substantially decrease throughput, particularly if the max_ack_delay +is larger than the round trip time. # Estimating the Round-Trip Time {#compute-rtt} From b32ab8c350ac15b92b520f7a3b15f7415b22083b Mon Sep 17 00:00:00 2001 From: ianswett Date: Tue, 5 May 2020 18:32:40 -0400 Subject: [PATCH 09/13] Update draft-ietf-quic-recovery.md --- draft-ietf-quic-recovery.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 8233e00067..785adebff5 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -248,11 +248,11 @@ prior to a dramatic decrease in congestion window; see ### The Minimum Congestion Window is 2 Packets QUIC recommends that the minimum congestion window be 2 packets instead -of the 1 packet minimum in TCP. A 2 packet minimum congestion window also -avoids waiting for a probe timeout (see {{pto}}) every time a single packet -is lost. A minimum of 2 packets avoids waiting for a delayed acknowledgement, -which can substantially decrease throughput, particularly if the max_ack_delay -is larger than the round trip time. +of the 1 packet minimum in TCP. A 2 packet minimum congestion window avoids +waiting for a probe timeout (see {{pto}}) every time a single packet is lost. +A minimum of 2 packets also avoids waiting for a delayed acknowledgement, which +can substantially decrease throughput, particularly if the max_ack_delay is +larger than the round trip time. # Estimating the Round-Trip Time {#compute-rtt} From b270451746cc6ae9655ceb30281de6bf6bbdb628 Mon Sep 17 00:00:00 2001 From: ianswett Date: Tue, 5 May 2020 18:46:38 -0400 Subject: [PATCH 10/13] 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 785adebff5..8a1dc7c1f5 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -245,7 +245,7 @@ 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 2 Packets +### The Minimum Congestion Window is Two Packets QUIC recommends that the minimum congestion window be 2 packets instead of the 1 packet minimum in TCP. A 2 packet minimum congestion window avoids From 9f773931b7c57a232ef9a9814fb664832eb7436e Mon Sep 17 00:00:00 2001 From: ianswett Date: Tue, 5 May 2020 18:54:38 -0400 Subject: [PATCH 11/13] Update draft-ietf-quic-recovery.md Co-authored-by: Jana Iyengar --- draft-ietf-quic-recovery.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 8a1dc7c1f5..1b11b7bbb4 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -247,12 +247,16 @@ prior to a dramatic decrease in congestion window; see ### The Minimum Congestion Window is Two Packets -QUIC recommends that the minimum congestion window be 2 packets instead -of the 1 packet minimum in TCP. A 2 packet minimum congestion window avoids -waiting for a probe timeout (see {{pto}}) every time a single packet is lost. -A minimum of 2 packets also avoids waiting for a delayed acknowledgement, which -can substantially decrease throughput, particularly if the max_ack_delay is -larger than the round trip time. +TCP uses a minimum congestion window of one packet. However, loss of +a single packet sent with that window limits the sender to waiting for a PTO +({{pto}}) to recover from that loss, which can be a substantial period of time. +Sending a single data packet also increases the chances of incurring +additional latency when a receiver delays its acknowledgement. + +QUIC therefore recommends that the minimum congestion window be two +packets. While this increases network load, it is considered safe, since the +sender will still reduce its sending rate exponentially under persistent +congestion ({{pto}}). # Estimating the Round-Trip Time {#compute-rtt} From c5b9e72880734f6e9e54bcbbd0339d72bdded5bc Mon Sep 17 00:00:00 2001 From: ianswett Date: Tue, 5 May 2020 18:56:35 -0400 Subject: [PATCH 12/13] Update draft-ietf-quic-recovery.md --- draft-ietf-quic-recovery.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 1b11b7bbb4..1ff9ab6fd9 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -248,9 +248,9 @@ prior to a dramatic decrease in congestion window; see ### The Minimum Congestion Window is Two Packets TCP uses a minimum congestion window of one packet. However, loss of -a single packet sent with that window limits the sender to waiting for a PTO -({{pto}}) to recover from that loss, which can be a substantial period of time. -Sending a single data packet also increases the chances of incurring +a single packet sent with that window causes the sender to waiting for a PTO +({{pto}}) to recover from that loss, which is much longer than a round trip. +Sending a single ack-eliciting packet also increases the chances of incurring additional latency when a receiver delays its acknowledgement. QUIC therefore recommends that the minimum congestion window be two From 9a69f882ff119ab34608b3a750ddc7f4639f3ec1 Mon Sep 17 00:00:00 2001 From: ianswett Date: Tue, 5 May 2020 18:59:58 -0400 Subject: [PATCH 13/13] Update draft-ietf-quic-recovery.md Co-authored-by: Jana Iyengar --- 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 1ff9ab6fd9..e8087c4c89 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -248,8 +248,8 @@ prior to a dramatic decrease in congestion window; see ### The Minimum Congestion Window is Two Packets TCP uses a minimum congestion window of one packet. However, loss of -a single packet sent with that window causes the sender to waiting for a PTO -({{pto}}) to recover from that loss, which is much longer than a round trip. +that single packet means that the sender needs to waiting for a PTO +({{pto}}) to recover, which can be much longer than a round-trip time. Sending a single ack-eliciting packet also increases the chances of incurring additional latency when a receiver delays its acknowledgement.