From d97c226a9a2f6c147b3952b39a982cf55f12412b Mon Sep 17 00:00:00 2001 From: Jana Iyengar Date: Sun, 17 Nov 2019 13:09:14 +0800 Subject: [PATCH 1/6] Fix congestion control permissiveness --- draft-ietf-quic-recovery.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index 117e1b78a4..dc269e3704 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -633,20 +633,21 @@ sooner, as soon as handshake keys are available (see Section 4.9.1 of # Congestion Control {#congestion-control} -QUIC's congestion control is based on TCP NewReno {{?RFC6582}}. NewReno is a -congestion window based congestion control. QUIC specifies the congestion -window in bytes rather than packets due to finer control and the ease of -appropriate byte counting {{?RFC3465}}. - -QUIC hosts MUST NOT send packets if they would increase bytes_in_flight (defined -in {{vars-of-interest}}) beyond the available congestion window, unless the -packet is a probe packet sent after a PTO timer expires, as described in -{{pto}}. - -Implementations MAY use other congestion control algorithms, such as -Cubic {{?RFC8312}}, and endpoints MAY use different algorithms from one another. -The signals QUIC provides for congestion control are generic and are designed -to support different algorithms. +This document specifies a Reno congestion controller for QUIC {{?RFC6582}}. + +Endpoints can unilaterally choose a different algorithm to use, such as Cubic +{{?RFC8312}}. The signals QUIC provides for congestion control are generic and +are designed to support different algorithms. + +If an endpoint uses a different controller than that specified in this document, +it MUST conform to the congestion control guidelines specified in {{!RFC8085}}. + +The algorithm in this document specifies and uses the controller's congestion +window in bytes. + +An endpoint MUST NOT send a packet if it would cause bytes_in_flight (see +{{vars-of-interest}}) to be larger than the congestion window, unless the packet +is a probe sent on a PTO timer expiration (see {{pto}}). ## Explicit Congestion Notification {#congestion-ecn} From df57effc57901da028bd3c72a5b0d5b76ef84b02 Mon Sep 17 00:00:00 2001 From: Jana Iyengar Date: Sun, 17 Nov 2019 13:17:26 +0800 Subject: [PATCH 2/6] remove pointless sentences --- draft-ietf-quic-recovery.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/draft-ietf-quic-recovery.md b/draft-ietf-quic-recovery.md index dc269e3704..c5ce5baabb 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -889,8 +889,7 @@ time_sent: ## Constants of interest {#ld-consts-of-interest} Constants used in loss recovery are based on a combination of RFCs, papers, and -common practice. Some may need to be changed or negotiated in order to better -suit a variety of environments. +common practice. kPacketThreshold: : Maximum reordering in packets before packet threshold loss detection @@ -1250,9 +1249,8 @@ in {{congestion-control}}. ## Constants of interest {#cc-consts-of-interest} -Constants used in congestion control are based on a combination of RFCs, -papers, and common practice. Some may need to be changed or negotiated -in order to better suit a variety of environments. +Constants used in congestion control are based on a combination of RFCs, papers, +and common practice. kInitialWindow: : Default limit on the initial amount of data in flight, in bytes. Taken from From 1de8eb4421ba5d48cf5fac71ee37bc1914e62df3 Mon Sep 17 00:00:00 2001 From: Jana Iyengar Date: Wed, 20 Nov 2019 15:34:04 +0800 Subject: [PATCH 3/6] gorry comment --- 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 c5ce5baabb..3f9aa2a0b9 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -635,9 +635,9 @@ sooner, as soon as handshake keys are available (see Section 4.9.1 of This document specifies a Reno congestion controller for QUIC {{?RFC6582}}. -Endpoints can unilaterally choose a different algorithm to use, such as Cubic -{{?RFC8312}}. The signals QUIC provides for congestion control are generic and -are designed to support different algorithms. +The signals QUIC provides for congestion control are generic and are designed to +support different algorithms. Endpoints can unilaterally choose a different +algorithm to use, such as Cubic {{?RFC8312}}. If an endpoint uses a different controller than that specified in this document, it MUST conform to the congestion control guidelines specified in {{!RFC8085}}. From d8ad74521844f06a60f9f5fcb9cd4d133d6a0e9a Mon Sep 17 00:00:00 2001 From: Jana Iyengar Date: Mon, 18 Nov 2019 11:56:01 +0800 Subject: [PATCH 4/6] Update draft-ietf-quic-recovery.md Co-Authored-By: ianswett --- 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 3f9aa2a0b9..1bfb61d3e9 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -647,7 +647,7 @@ window in bytes. An endpoint MUST NOT send a packet if it would cause bytes_in_flight (see {{vars-of-interest}}) to be larger than the congestion window, unless the packet -is a probe sent on a PTO timer expiration (see {{pto}}). +is sent on a PTO timer expiration (see {{pto}}). ## Explicit Congestion Notification {#congestion-ecn} From dc62871ae0d6585eb518c6d7e5d58434922f6b94 Mon Sep 17 00:00:00 2001 From: Jana Iyengar Date: Thu, 28 Nov 2019 16:54:18 +0530 Subject: [PATCH 5/6] specify section 3.1 --- 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 1bfb61d3e9..3337311bf7 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -640,7 +640,8 @@ support different algorithms. Endpoints can unilaterally choose a different algorithm to use, such as Cubic {{?RFC8312}}. If an endpoint uses a different controller than that specified in this document, -it MUST conform to the congestion control guidelines specified in {{!RFC8085}}. +it MUST conform to the congestion control guidelines specified in Section 3.1 of +{{!RFC8085}}. The algorithm in this document specifies and uses the controller's congestion window in bytes. From 19063e44b6f29f1cad20f7c13179fc5e6e116638 Mon Sep 17 00:00:00 2001 From: Jana Iyengar Date: Mon, 9 Dec 2019 17:55:43 -0800 Subject: [PATCH 6/6] Ted's suggestion --- 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 3337311bf7..13514de60f 100644 --- a/draft-ietf-quic-recovery.md +++ b/draft-ietf-quic-recovery.md @@ -640,8 +640,8 @@ support different algorithms. Endpoints can unilaterally choose a different algorithm to use, such as Cubic {{?RFC8312}}. If an endpoint uses a different controller than that specified in this document, -it MUST conform to the congestion control guidelines specified in Section 3.1 of -{{!RFC8085}}. +the chosen controller MUST conform to the congestion control guidelines +specified in Section 3.1 of {{!RFC8085}}. The algorithm in this document specifies and uses the controller's congestion window in bytes.