Subject: Re: [quicwg/base-drafts] Document TCP RTO vs QUIC PTO (#3441)

From: Martin Thomson <[email-masked]>
Date: Tue, 03 Mar 2020 15:52:14 -0800

martinthomson approved this pull request.

> @@ -228,6 +228,25 @@ QUIC endpoints measure the delay incurred between when a packet is received and
 when the corresponding acknowledgment is sent, allowing a peer to maintain a
 more accurate round-trip time estimate (see Section 13.2 of {{QUIC-TRANSPORT}}).
 
+### Probe Timeout Replaces RTO and TLP
+
+QUIC uses a probe timeout (see {{pto}}), with a timer based on TCP's RTO
+computation.  QUIC's PTO includes the peer's maximum expected acknowledgement
+delay instead of using a fixed minimum timeout. Unlike TCP, which collapses
+the congestion window upon expiry of an RTO, QUIC does not collapse the
+congestion window until persistent congestion {{persistent-congestion}} is

```suggestion
congestion window until persistent congestion ({{persistent-congestion}}) is
```

> @@ -228,6 +228,25 @@ QUIC endpoints measure the delay incurred between when a packet is received and
 when the corresponding acknowledgment is sent, allowing a peer to maintain a
 more accurate round-trip time estimate (see Section 13.2 of {{QUIC-TRANSPORT}}).
 
+### Probe Timeout Replaces RTO and TLP
+
+QUIC uses a probe timeout (see {{pto}}), with a timer based on TCP's RTO
+computation.  QUIC's PTO includes the peer's maximum expected acknowledgement
+delay instead of using a fixed minimum timeout. Unlike TCP, which collapses
+the congestion window upon expiry of an RTO, QUIC does not collapse the
+congestion window until persistent congestion {{persistent-congestion}} is
+declared and instead allows probe packets to temporarily exceed the congestion
+window whenever the timer expires.  In practice, this is similar to TCP with
+F-RTO, but it does allow more packets to be sent when the congestion window was

Citation for F-RTO?

> +QUIC specifies a time-based definition (see {{persistent-congestion}}) to
+ensure one or more packets are sent prior to a dramatic decrease in
+congestion window.

```suggestion
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}}.
```

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441#pullrequestreview-368409594

---

From: ianswett <[email-masked]>
Date: Tue, 03 Mar 2020 15:53:41 -0800

@ianswett pushed 1 commit.

ccefe8667092622d869c997728b062a2f96153c4  Update draft-ietf-quic-recovery.md

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441/files/bbdd861d1ef8dfbaadb2d38991af581acb4eea40..ccefe8667092622d869c997728b062a2f96153c4

---

From: ianswett <[email-masked]>
Date: Tue, 03 Mar 2020 15:55:15 -0800

0ef8f341bb1df7e7b04e5815596468b7a442824d  Update draft-ietf-quic-recovery.md

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441/files/ccefe8667092622d869c997728b062a2f96153c4..0ef8f341bb1df7e7b04e5815596468b7a442824d

---

From: Martin Thomson <[email-masked]>
Date: Tue, 03 Mar 2020 16:01:59 -0800

martinthomson commented on this pull request.

+F-RTO, but it does allow more packets to be sent when the congestion window was
+not fully utilized prior to the probe timeout expiring. Though this is slightly

```suggestion
window whenever the timer expires.  In comparison to TCP with F-RTO
{{!RFC5682}}, which corrects an unnecessary collapse of the congestion window,
this design aims to prevent the window from collapsing. Though this is slightly
```

Perhaps?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441#pullrequestreview-368413724

---

From: Jana Iyengar <[email-masked]>
Date: Tue, 03 Mar 2020 16:59:02 -0800

janaiyengar commented on this pull request.

+F-RTO, but it does allow more packets to be sent when the congestion window was
+not fully utilized prior to the probe timeout expiring. Though this is slightly
+more aggressive than TCP RTO, it's less aggressive than if the connection was
+not application limited.

```suggestion
window whenever the timer expires. In doing this, QUIC avoids congestion window reductions that
might otherwise be caused by spurious retransmissions, obviating the need for correcting
mechanisms such as F-RTO {{cite}}.

Since QUIC does not collapse the congestion window on a PTO expiration, a QUIC sender is not
limited from sending more application data after a PTO expiration. A sender could be application-limited,
have a PTO timer expire, and then send as much application data as the congestion window allows after.
At first glance this might seem to be more aggressive than TCP's RTO mechanism, where a sender
is effectively limited to sending a single packet after an RTO expiration. However, TCP's RTO period is
more accurately modeled in QUIC by the persistent congestion event, after which QUIC also limits the
sender's congestion window. 
```

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441#pullrequestreview-368435666

---

From: ianswett <[email-masked]>
Date: Sat, 07 Mar 2020 03:39:01 -0800

e043bb4612537f3fe3afe6d12154176a66e9bb46  Update draft-ietf-quic-recovery.md

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441/files/0ef8f341bb1df7e7b04e5815596468b7a442824d..e043bb4612537f3fe3afe6d12154176a66e9bb46

---

From: ianswett <[email-masked]>
Date: Sat, 07 Mar 2020 03:41:02 -0800

ianswett commented on this pull request.

Done with your suggestion.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441#discussion_r389248823

---

From: ianswett <[email-masked]>
Date: Sat, 07 Mar 2020 03:53:30 -0800

78e81dcd8d40b76409cf702a5e6e6509ad7d8022  Took and reworked Jana's suggestion.

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441/files/e043bb4612537f3fe3afe6d12154176a66e9bb46..78e81dcd8d40b76409cf702a5e6e6509ad7d8022

---

From: ianswett <[email-masked]>
Date: Sat, 07 Mar 2020 04:15:32 -0800

I took most of this, but not all of it.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441#discussion_r389250766

---

From: Martin Thomson <[email-masked]>
Date: Sat, 07 Mar 2020 04:34:49 -0800

> +congestion window until persistent congestion ({{persistent-congestion}}) is

```suggestion
congestion window until persistent congestion is declared; see 
{{persistent-congestion}}. Instead allows probe packets to temporarily exceed the congestion
```

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441#pullrequestreview-370741856

---

From: Martin Thomson <[email-masked]>
Date: Sat, 07 Mar 2020 12:36:39 +0000 (UTC)

+declared and instead allows probe packets to temporarily exceed the congestion
+window whenever the timer expires.

```suggestion
congestion window until persistent congestion is declared; see
{{persistent-congestion}}. Instead QUIC allows probe packets to temporarily
exceed the congestion window whenever the timer expires.
```

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441#pullrequestreview-370741910

---

From: ianswett <[email-masked]>
Date: Mon, 09 Mar 2020 11:01:28 -0700

0925aaa68752b7dcf0b24ef1a537dd2604907c53  Update draft-ietf-quic-recovery.md

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441/files/78e81dcd8d40b76409cf702a5e6e6509ad7d8022..0925aaa68752b7dcf0b24ef1a537dd2604907c53

---

From: ianswett <[email-masked]>
Date: Mon, 09 Mar 2020 18:09:14 -0700

9546ff24cd8759c48acde86ff694e856ba47b465  Wordsmithing

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441/files/0925aaa68752b7dcf0b24ef1a537dd2604907c53..9546ff24cd8759c48acde86ff694e856ba47b465

---

From: ianswett <[email-masked]>
Date: Mon, 09 Mar 2020 18:26:02 -0700

d2ce42374c219958b5c52040e564b2fd9aa2f277  Update draft-ietf-quic-recovery.md

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441/files/9546ff24cd8759c48acde86ff694e856ba47b465..d2ce42374c219958b5c52040e564b2fd9aa2f277

---

From: Lars Eggert <[email-masked]>
Date: Tue, 10 Mar 2020 01:47:24 -0700

larseggert approved this pull request.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441#pullrequestreview-371763829

---

From: ianswett <[email-masked]>
Date: Tue, 10 Mar 2020 06:07:21 -0700

Merged #3441 into master.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441#event-3114609189

---

From: MikkelFJ <[email-masked]>
Date: Wed, 11 Mar 2020 06:26:57 -0700

mikkelfj commented on this pull request.

> @@ -228,6 +228,31 @@ QUIC endpoints measure the delay incurred between when a packet is received and

RTO abbreviation is spelled out in a later chapter, but it would be helpful to state what RTO means. To a lesser extend this also applies to the section where PTO is defined because RTO is mentioned, but there is comes with a TCP doc reference and is not needed for understanding PTO.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441#pullrequestreview-372753993

---

From: MikkelFJ <[email-masked]>
Date: Wed, 11 Mar 2020 06:29:17 -0700

+
+QUIC uses a probe timeout (see {{pto}}), with a timer based on TCP's RTO
+computation.  QUIC's PTO includes the peer's maximum expected acknowledgement
+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
+limited from sending more in-flight packets after a PTO expiration if it still
+has available congestion window. This occurs when a sender is

sounds like a word is missing before "congestion window".

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3441#pullrequestreview-372755943