Subject: [quicwg/base-drafts] Recovery: Reset the Initial congestion window when loss is observed during handshake (#4847)

From: Praveen Balasubramanian <[email-masked]>
Date: Fri, 19 Mar 2021 15:33:18 -0700

RFC 3390 states (and RFC 5681 has similar text):

      If the SYN or SYN/ACK is lost, the initial window used by a sender
      after a correctly transmitted SYN MUST be one segment consisting
      of MSS bytes.

For safety reasons we should add similar text to reduce cwnd to the minimum congestion window when loss is observed/confirmed during the handshake. 

-- 
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/issues/4847

---

From: Praveen Balasubramanian <[email-masked]>
Date: Fri, 19 Mar 2021 15:33:49 -0700

@ianswett @janaiyengar I just spotted this deviation when reviewing a TCP issue.

-- 
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/issues/4847#issuecomment-803171441

---

From: Marten Seemann <[email-masked]>
Date: Fri, 19 Mar 2021 22:21:01 -0700

Is that a fair comparison? SYN - SYN/ACK is the exchange of just two packets. A QUIC handshake will involve significantly more packets: at least 3 (ClientHello, ServerHello + Cert + SFIN, CFIN), in practice probably 4-5, depending on the size of the certificate. And even more when TLS client authentication is used.

-- 
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/issues/4847#issuecomment-803252291

---

From: ianswett <[email-masked]>
Date: Sun, 21 Mar 2021 07:07:58 -0700

I don't think we should change this, particularly at this point.

As Marten said, there are typically multiple packets in a QUIC handshake exchange, so it's not clear to me what the best analogue would be?  Also, Initial and Handshake keys can be discarded prior to ever processing an ACK, so there are cases one might not know whether the Initial or Handshake packets area lost.

Also, I expect TCP SYN and SYN/ACKs are treated specially in many networks, so the odds of losing them is extra low in practice.

-- 
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/issues/4847#issuecomment-803587387

---

From: Praveen Balasubramanian <[email-masked]>
Date: Sun, 21 Mar 2021 17:03:23 -0700

Let's decouple when to change anything (and if at all) from the issue discussion and its resolution. 

No congestion reaction to loss seems incorrect to me particularly if multiple packets are involved (which increases the probability). From point of view of network the loss of  handshake packets should still be subject to a cc reaction otherwise under extreme congestion you could have collapse just due to new handshakes.

-- 
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/issues/4847#issuecomment-803685279

---

From: Martin Thomson <[email-masked]>
Date: Sun, 21 Mar 2021 17:27:22 -0700

Loss does result in a reaction.  My understanding is that lost packets are reported as lost, the congestion window is reduced, and a recovery period started, just like everywhere else.

The TCP behaviour is analogous to detecting persistent congestion, which I suppose is the defense QUIC provides.  That is consistent and seems reasonable enough to me.

If that is acceptable, we could add a note explaining the difference from TCP.  That is, QUIC does not treat loss of the first packets specially like TCP does, relying instead on the same loss detection and persistent congestion mechanisms that apply to all other packets; the only difference in handling is the retention of PTO during the handshake, which exists to address deadlocks caused by anti-amplification protections.

-- 
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/issues/4847#issuecomment-803690151

---

From: ianswett <[email-masked]>
Date: Sun, 21 Mar 2021 18:40:08 -0700

Yes, as @martinthomson stated, detected losses trigger a reduction in the congestion window.  Additionally, PTO has exponential backoff, even though the CWND does not collapse immediately.

Adding a note about the differences from TCP seems sensible to me.

Additionally, TCP collapses the congestion window and declares packets lost because that's how its mechanism to send a single (ie: RTO) packet works.  QUIC can send a single packet without declaring packets lost or collapsing the 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/issues/4847#issuecomment-803707138

---

From: Praveen Balasubramanian <[email-masked]>
Date: Wed, 24 Mar 2021 13:31:35 -0700

As long as detected losses during handshake result in a reaction, we are good to go. Let's add clarifying text and close this. Thanks!

-- 
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/issues/4847#issuecomment-806166924