From d308319306e40aaf7eaa9cf313c65ba7e4916944 Mon Sep 17 00:00:00 2001 From: Neal Cardwell Date: Tue, 18 Jan 2022 09:35:09 -0500 Subject: [PATCH 1/7] clarify the meaning of "application-limited" Clarify the meaning of "application-limited" to explicitly mention that this can include slow sender applicaitons or slow receiver applications. Matt Olson notes in Issue #137: It seems like usually "app-limited" refers only to the local app, but if the peer's receive window limits the connection's send rate then we have the same problem where CWnd can grow arbitrarily. So, is "app-limited" supposed to also refer to the peer's receive window? If so, then this should probably be spelled out. So we should be explicit that application-limited can refer to sender or receiver apps that are slower than what cwnd allows. We should particularly clarify this because the text on this topic in 7661 is buggy, when it says: "application-limited period" for the time when the sender sends less than is allowed by the congestion or receiver windows. This RFC 7661 text is buggy because if the receiver window is smaller than the congestion window, and the sender sends an amount equal to the receiver window, then the flow is application-limited (it is limited by the receiver and receiver advertised window instead of cwnd). --- draft-ietf-tcpm-rfc8312bis.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/draft-ietf-tcpm-rfc8312bis.md b/draft-ietf-tcpm-rfc8312bis.md index 5fa6832..bfbe772 100644 --- a/draft-ietf-tcpm-rfc8312bis.md +++ b/draft-ietf-tcpm-rfc8312bis.md @@ -486,8 +486,8 @@ cwnd & {: artwork-align="center" } The elapsed time *t* in {{eq1}} MUST NOT include periods during -which *cwnd* has not been updated due to an application limit (see -{{app-limited}}). +which *cwnd* has not been updated due application-limited behavior +(see {{app-limited}}). Depending on the value of the current congestion window size *cwnd*, CUBIC runs in three different regions: @@ -1010,8 +1010,14 @@ This is not considered in the current CUBIC design. ## Behavior for Application-Limited Flows {#app-limited} -CUBIC does not increase its congestion window size if a flow is -currently limited by the application instead of the congestion window. +A flow is application-limited if it is currently sending +less than is allowed by the congestion window. +This can happen if the flow is limited by either the +sender application or the receiver application (via the receiver +advertised window) instead of the sender's congestion window. + +CUBIC does not +increase its congestion window if a flow is application-limited. {{win-inc}} requires that *t* in {{eq1}} does not include application-limited periods, such as idle periods, otherwise Wcubic(*t*) might be very high after restarting from these From 1c0f006cc9bc634c7f42ca57b15fe7a293253a73 Mon Sep 17 00:00:00 2001 From: Neal Cardwell Date: Tue, 18 Jan 2022 09:41:00 -0500 Subject: [PATCH 2/7] fix trailing space caught by markdown lint tool --- draft-ietf-tcpm-rfc8312bis.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/draft-ietf-tcpm-rfc8312bis.md b/draft-ietf-tcpm-rfc8312bis.md index bfbe772..63fdd9d 100644 --- a/draft-ietf-tcpm-rfc8312bis.md +++ b/draft-ietf-tcpm-rfc8312bis.md @@ -1016,8 +1016,7 @@ This can happen if the flow is limited by either the sender application or the receiver application (via the receiver advertised window) instead of the sender's congestion window. -CUBIC does not -increase its congestion window if a flow is application-limited. +CUBIC does not increase its congestion window if a flow is application-limited. {{win-inc}} requires that *t* in {{eq1}} does not include application-limited periods, such as idle periods, otherwise Wcubic(*t*) might be very high after restarting from these From ad3770504fc175f423c375e0c47402e12b0e4dc6 Mon Sep 17 00:00:00 2001 From: Neal Cardwell Date: Tue, 18 Jan 2022 15:16:27 -0500 Subject: [PATCH 3/7] add a changelog entry at the request of larseggert --- draft-ietf-tcpm-rfc8312bis.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/draft-ietf-tcpm-rfc8312bis.md b/draft-ietf-tcpm-rfc8312bis.md index 63fdd9d..81ddbfd 100644 --- a/draft-ietf-tcpm-rfc8312bis.md +++ b/draft-ietf-tcpm-rfc8312bis.md @@ -1089,6 +1089,8 @@ These individuals suggested improvements to this document: ## Since draft-ietf-tcpm-rfc8312bis-05 +- Clarify meaning of "application-limited" in Section 5.8 + ([#137](https://github.com/NTAP/rfc8312bis/issues/137) - Brief discussion of convergence in Section 5.6 ([#96](https://github.com/NTAP/rfc8312bis/issues/96)) - Add more test results to Section 5 and update some references From 72d174d018d524667fbb4ad133ccc0681d4e9282 Mon Sep 17 00:00:00 2001 From: Neal Cardwell Date: Wed, 19 Jan 2022 10:09:05 -0500 Subject: [PATCH 4/7] fix typo Co-authored-by: Vidhi Goel --- draft-ietf-tcpm-rfc8312bis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-ietf-tcpm-rfc8312bis.md b/draft-ietf-tcpm-rfc8312bis.md index 81ddbfd..0e29c78 100644 --- a/draft-ietf-tcpm-rfc8312bis.md +++ b/draft-ietf-tcpm-rfc8312bis.md @@ -486,7 +486,7 @@ cwnd & {: artwork-align="center" } The elapsed time *t* in {{eq1}} MUST NOT include periods during -which *cwnd* has not been updated due application-limited behavior +which *cwnd* has not been updated due to application-limited behavior (see {{app-limited}}). Depending on the value of the current congestion window size *cwnd*, From c1f8e585b95ff9a8b80b2e51a5e4e7c89a924e23 Mon Sep 17 00:00:00 2001 From: Neal Cardwell Date: Wed, 19 Jan 2022 10:10:37 -0500 Subject: [PATCH 5/7] tighten up: "less than is allowed" -> "less than what is allowed" Co-authored-by: Vidhi Goel --- draft-ietf-tcpm-rfc8312bis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-ietf-tcpm-rfc8312bis.md b/draft-ietf-tcpm-rfc8312bis.md index 0e29c78..943be1c 100644 --- a/draft-ietf-tcpm-rfc8312bis.md +++ b/draft-ietf-tcpm-rfc8312bis.md @@ -1011,7 +1011,7 @@ This is not considered in the current CUBIC design. ## Behavior for Application-Limited Flows {#app-limited} A flow is application-limited if it is currently sending -less than is allowed by the congestion window. +less than what is allowed by the congestion window. This can happen if the flow is limited by either the sender application or the receiver application (via the receiver advertised window) instead of the sender's congestion window. From 9727140b3a2e4bef8961aa6d16cf6295d1db2e7f Mon Sep 17 00:00:00 2001 From: Neal Cardwell Date: Tue, 25 Jan 2022 10:15:32 -0500 Subject: [PATCH 6/7] use "and thus sends less data than what is allowed by" From @larseggert and @goelvidhi. Co-authored-by: Lars Eggert --- draft-ietf-tcpm-rfc8312bis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-ietf-tcpm-rfc8312bis.md b/draft-ietf-tcpm-rfc8312bis.md index 943be1c..a75a9c4 100644 --- a/draft-ietf-tcpm-rfc8312bis.md +++ b/draft-ietf-tcpm-rfc8312bis.md @@ -1014,7 +1014,7 @@ A flow is application-limited if it is currently sending less than what is allowed by the congestion window. This can happen if the flow is limited by either the sender application or the receiver application (via the receiver -advertised window) instead of the sender's congestion window. +advertised window) and thus sends less data than what is allowed by the sender's congestion window. CUBIC does not increase its congestion window if a flow is application-limited. {{win-inc}} requires that *t* in {{eq1}} does not include From 82d96ba7e69fc7cea22992ce956dbe1c690214a2 Mon Sep 17 00:00:00 2001 From: Neal Cardwell Date: Tue, 25 Jan 2022 10:21:37 -0500 Subject: [PATCH 7/7] fix line length lint error from previous patch The latest patch caused a lint error: draft-ietf-tcpm-rfc8312bis.md:1017:81 MD013/line-length Line length [Expected: 80; Actual: 99] Fixed by wrapping: "and thus sends less data than what is allowed by the sender's congestion window." --- draft-ietf-tcpm-rfc8312bis.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/draft-ietf-tcpm-rfc8312bis.md b/draft-ietf-tcpm-rfc8312bis.md index a75a9c4..16cc1ba 100644 --- a/draft-ietf-tcpm-rfc8312bis.md +++ b/draft-ietf-tcpm-rfc8312bis.md @@ -1014,7 +1014,8 @@ A flow is application-limited if it is currently sending less than what is allowed by the congestion window. This can happen if the flow is limited by either the sender application or the receiver application (via the receiver -advertised window) and thus sends less data than what is allowed by the sender's congestion window. +advertised window) and thus sends less data than what is allowed by +the sender's congestion window. CUBIC does not increase its congestion window if a flow is application-limited. {{win-inc}} requires that *t* in {{eq1}} does not include