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

From: ianswett <[email-masked]>
Date: Fri, 07 Feb 2020 15:56:04 -0800

Fixes #3259 by documenting the core difference between TCP&#39;s RTO and QUIC&#39;s PTO.
You can view, comment on, or merge this pull request online at:

  https://github.com/quicwg/base-drafts/pull/3441

-- Commit Summary --

  * Update draft-ietf-quic-recovery.md

-- File Changes --

    M draft-ietf-quic-recovery.md (12)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/3441.patch
https://github.com/quicwg/base-drafts/pull/3441.diff

-- 
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

---

From: ianswett <[email-masked]>
Date: Fri, 07 Feb 2020 15:58:42 -0800

@ianswett pushed 1 commit.

7f5f3c12bd79469b30485466d1c01adeb0ff9e17  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/ba6b30d4e1e37c371d75f6d379ae35f23dbd5a91..7f5f3c12bd79469b30485466d1c01adeb0ff9e17

---

From: ianswett <[email-masked]>
Date: Fri, 07 Feb 2020 15:59:22 -0800

f992e436069e23d86862e2c41c966b4722a1abdd  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/7f5f3c12bd79469b30485466d1c01adeb0ff9e17..f992e436069e23d86862e2c41c966b4722a1abdd

---

From: ianswett <[email-masked]>
Date: Fri, 07 Feb 2020 16:00:32 -0800

d183a0c788915181b0d905081dafd7e3fce800fa  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/f992e436069e23d86862e2c41c966b4722a1abdd..d183a0c788915181b0d905081dafd7e3fce800fa

---

From: ianswett <[email-masked]>
Date: Fri, 07 Feb 2020 16:07:43 -0800

3f67de912856591e0e7839ebafab568206c97a62  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/d183a0c788915181b0d905081dafd7e3fce800fa..3f67de912856591e0e7839ebafab568206c97a62

---

From: ianswett <[email-masked]>
Date: Fri, 07 Feb 2020 16:48:55 -0800

fa443957b59aa72c350e7a1d6fd202f3e27ee2c2  Add a paragraph on PTO

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

---

From: ianswett <[email-masked]>
Date: Fri, 07 Feb 2020 17:06:36 -0800

bd755b267dcc9ca301058d6806523bb39a35d19e  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/fa443957b59aa72c350e7a1d6fd202f3e27ee2c2..bd755b267dcc9ca301058d6806523bb39a35d19e

---

From: Nick Banks <[email-masked]>
Date: Fri, 07 Feb 2020 17:24:11 -0800

nibanks approved this pull request.

LGTM 👍

-- 
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-355518141

---

From: Martin Thomson <[email-masked]>
Date: Sun, 09 Feb 2020 14:37:29 -0800

martinthomson commented on this pull request.

> @@ -228,6 +228,23 @@ 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 timeout.  QUIC PTO includes the peer's max_ack_delay in the calculation,
+instead of relying upon a fixed minimum RTO.  Unlike TCP's RTO, which collapses
+the congestion window upon expiry, QUIC does not change the congestion window
+and instead allows sending probe packets whenever the timer expires.  This is
+similar to TCP with F-RTO, but it does allow more packets to be sent when the
+congestion window was not fully utilized when the probe timeout expires. Though
+this is slightly more aggressive than TCP RTO, it's less aggressive than the
+congestion controller allowed.

Phrasing here suggests "than the congestion controller allows" or "than the congestion controller in TCP allowed" or something else.

-- 
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-355639387

---

From: ianswett <[email-masked]>
Date: Mon, 10 Feb 2020 07:01:31 -0800

e0cdbbcb866f9924916a327e4ab178155c49a1b1  Attempt to clarify for Martin

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

---

From: ianswett <[email-masked]>
Date: Mon, 10 Feb 2020 07:02:15 -0800

ianswett commented on this pull request.

Updated to compare to a non-app limited connection.  Tell me if that works.

-- 
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_r377115892

---

From: Martin Thomson <[email-masked]>
Date: Tue, 25 Feb 2020 15:14:15 -0800

martinthomson 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-364519317

---

From: Jana Iyengar <[email-masked]>
Date: Tue, 25 Feb 2020 15:53:16 -0800

janaiyengar commented on this pull request.

```suggestion
RTO period computation.  QUIC's PTO period includes the peer's maximum expected acknowledgement delay (max_ack_delay, Section XX),
```

```suggestion
instead of using a fixed minimum period.  Unlike TCP, which collapses
```

```suggestion
the congestion window upon expiry of an RTO, QUIC does not change the congestion window
```

```suggestion
and instead sends probe packets whenever the timer expires.  This is
```

I don't think this is similar to F-RTO... I would remove this previous sentence.

+this is slightly more aggressive than TCP RTO, it's less aggressive than if the
+connection was not application limited.

I'm not sure I understand this last sentence... how is app-limited relevant here?

+### Probe Timeout Replaces RTO and TLP
+
+QUIC uses a probe timeout (see {{pto}}), with a timer based on TCP's
+RTO timeout.  QUIC PTO includes the peer's max_ack_delay in the calculation,
+instead of relying upon a fixed minimum RTO.  Unlike TCP's RTO, which collapses
+the congestion window upon expiry, QUIC does not change the congestion window
+and instead allows sending probe packets whenever the timer expires.  This is
+similar to TCP with F-RTO, but it does allow more packets to be sent when the
+congestion window was not fully utilized when the probe timeout expires. Though
+this is slightly more aggressive than TCP RTO, it's less aggressive than if the
+connection was not application limited.
+
+A single packet loss at the tail does not indicate persistent congestion, so
+QUIC defines a time-based definition (see {{persistent-congestion}}) to

```suggestion
QUIC specifies a time-based definition (see {{persistent-congestion}}) to
```

-- 
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-364519445

---

From: ianswett <[email-masked]>
Date: Wed, 26 Feb 2020 19:01:25 -0800

ae8900e3a19164a78984b2f6fe721ab55019c660  Jana's suggestions

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

---

From: ianswett <[email-masked]>
Date: Wed, 26 Feb 2020 19:04:33 -0800

8feaa19743623c858e5b5e5dd7309264dd478d76  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/ae8900e3a19164a78984b2f6fe721ab55019c660..8feaa19743623c858e5b5e5dd7309264dd478d76

---

From: ianswett <[email-masked]>
Date: Wed, 26 Feb 2020 19:08:30 -0800

8cc4fa1278bd2785dfb14f3088db29bb584c1f13  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/8feaa19743623c858e5b5e5dd7309264dd478d76..8cc4fa1278bd2785dfb14f3088db29bb584c1f13

---

From: ianswett <[email-masked]>
Date: Wed, 26 Feb 2020 19:10:06 -0800

d8dd73a087b177f3fa68f1dea49dff6d7f3a73fd  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/8cc4fa1278bd2785dfb14f3088db29bb584c1f13..d8dd73a087b177f3fa68f1dea49dff6d7f3a73fd

---

From: ianswett <[email-masked]>
Date: Wed, 26 Feb 2020 19:14:35 -0800

330de8ffcb4bf8f153d404285317d92a62069b82  More editorial updates

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

---

From: ianswett <[email-masked]>
Date: Wed, 26 Feb 2020 19:23:56 -0800

bbdd861d1ef8dfbaadb2d38991af581acb4eea40  Reflow for line length

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

---

From: Jana Iyengar <[email-masked]>
Date: Thu, 27 Feb 2020 19:50:10 -0800

ping

-- 
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_r385495450

---

From: Jana Iyengar <[email-masked]>
Date: Thu, 27 Feb 2020 19:50:13 -0800

ping

-- 
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_r385495457

---

From: Jana Iyengar <[email-masked]>
Date: Thu, 27 Feb 2020 19:52:08 -0800

One suggestion, but the rest LGTM.

> +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
+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.
```

-- 
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-366147245

---

From: ianswett <[email-masked]>
Date: Fri, 28 Feb 2020 06:43:58 -0800

If you weren't app-limited, then you wouldn't have CWND free to send more packets after the PTO 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#discussion_r385732718

---

From: ianswett <[email-masked]>
Date: Fri, 28 Feb 2020 06:45:09 -0800

Why not?

-- 
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_r385733412

---

From: ianswett <[email-masked]>
Date: Fri, 28 Feb 2020 06:45:40 -0800

This sentence is part of the purpose of this PR from my perspective, so I think we need something along these lines.

-- 
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_r385733700