Subject: [quicwg/base-drafts] Invariant independent (#3684)

From: Martin Thomson <[email-masked]>
Date: Thu, 21 May 2020 19:49:39 -0700

Remove the normative reference to -transport in -invariants.

This is an editorial change, but I&#39;ll pass it to the list.

Includes some consistency updates.

Closes #3673.
You can view, comment on, or merge this pull request online at:

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

-- Commit Summary --

  * Make -transport non-normative
  * Reword packets stuff
  * Move blank lines
  * s/Len/Length/
  * Use an abbreviated notation section

-- File Changes --

    M draft-ietf-quic-invariants.md (67)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/3684.patch
https://github.com/quicwg/base-drafts/pull/3684.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/3684

---

From: David Schinazi <[email-masked]>
Date: Fri, 22 May 2020 10:39:49 -0700

@DavidSchinazi 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/3684#pullrequestreview-417081570

---

From: Mike Bishop <[email-masked]>
Date: Fri, 22 May 2020 11:11:13 -0700

@MikeBishop approved this pull request.

Looks good.  Technically, we could reference this draft for the notation, but we don't need to if it makes transport easier to read.

-- 
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/3684#pullrequestreview-417099557

---

From: ianswett <[email-masked]>
Date: Fri, 22 May 2020 12:36:18 -0700

@ianswett 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/3684#pullrequestreview-417146730

---

From: Martin Thomson <[email-masked]>
Date: Sun, 24 May 2020 03:13:03 -0700

> Technically, we could reference this draft for the notation

Yes, but I think that - at least in principle - each should be as independent of the other as possible.  Sure, -transport is a concrete instantiation of -invariants, but you can implement it without -invariants.  Similarly, -invariants exists to support -transport, but it describes something bigger than it.  So while we might have some pointers, you can read each without the other, which is nice.

-- 
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/3684#issuecomment-633208498

---

From: Jana Iyengar <[email-masked]>
Date: Mon, 25 May 2020 15:06:26 -0700

@janaiyengar commented on this pull request.

>  # QUIC Packet Headers
 
-A QUIC packet is the content of the UDP datagrams exchanged by QUIC endpoints.
-This document describes the contents of those datagrams.
+QUIC endpoints exchange UDP datagrams that contain one or more QUIC packets.
+This section describes the invariant characteristics of a QUIC packet.  A
+version of QUIC could permit multiple QUIC packets in a single UDP datagram, but
+the invariant properties only describe the first packet in a datagram.

I think it's a design change. I think this allows for some freedom in the future on the part of endhost stack developers, so I like it, but I'm not sure I can simply justify it with that rationale.

That said, the way I read it, a new version of QUIC _could_ have a packet_len field, but the following packet within the same dgram is then not guaranteed to follow the invariants. This seems to deviate from the previous simple model about packets. Why can this not apply to all packets, even if it cannot be enforced?

-- 
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/3684#pullrequestreview-417887509

---

From: Martin Thomson <[email-masked]>
Date: Mon, 25 May 2020 17:30:50 -0700

@martinthomson commented on this pull request.

I think that this is far more pragmatic than that.  It says that this document can only talk about the first packet in a datagram because it doesn't have any way of identifying other packets.  That's pure mathematics from my perspective, not a design change.  

I don't see this as anything more than editorial on that basis, but I will pass this to the list.

(BTW, you don't strictly need a length, because you could start from the other end of the datagram payload to find a second packet.)

-- 
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/3684#discussion_r430104904

---

From: Gorry Fairhurst <[email-masked]>
Date: Tue, 26 May 2020 03:45:04 -0700

@gorryfair commented on this pull request.

So if we go down this path I think we need carefully to consider each transport mechanism. And the fate of multiplexed flows start to become entangled, such as when a sender chooses a smaller size or DSCP marking because that endpoint expects a characteristic treatment; the unit of loss can be different to the unit of retransmission; PMTUD will need tighter language; pacing may be impacted;  - basically it makes the transport more complex, if that's needed let's try and explain why and understand the constraints - e.g. do we need rules to say when not to multiplex multiple QUIC packets into one IP packet? 

-- 
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/3684#discussion_r430320716

---

From: Martin Thomson <[email-masked]>
Date: Tue, 26 May 2020 14:58:58 -0700

I don't understand what you mean by "if" here.  This is a choice already made for QUICv1: it has multiple packets in a datagram.  That those packets have most of the invariant properties doesn't matter because that isn't detectable.

So if the listed problems are problems - and I have no idea how - then they are already problems.

-- 
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/3684#discussion_r430731056

---

From: David Schinazi <[email-masked]>
Date: Tue, 26 May 2020 15:59:35 -0700

@DavidSchinazi commented on this pull request.

I agree with @martinthomson here. Since the long header length is version-specific, it's not possible to access any subsequent packets in the same UDP payload from just the invariants. Stating in the invariants that some QUIC versions might allow packet coalescing is not a design change, it's just a fact.

-- 
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/3684#discussion_r430752791

---

From: Jana Iyengar <[email-masked]>
Date: Tue, 26 May 2020 16:06:47 -0700

I'll take back my suggestion that this should be a design issue. I agree that this new text is consistent with what is possible. (To answer myself, a new version of QUIC could just as well define coalescing as using "sub packets" with other headers, so there's no way to require a header format for a second packet in a coalesced datagram.)

-- 
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/3684#discussion_r430755137

---

From: Jana Iyengar <[email-masked]>
Date: Tue, 26 May 2020 16:06:51 -0700

@janaiyengar 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/3684#pullrequestreview-418737587

---

From: Martin Thomson <[email-masked]>
Date: Tue, 26 May 2020 16:15:30 -0700

Merged #3684 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/3684#event-3375754065

---

From: Gorry Fairhurst <[email-masked]>
Date: Wed, 27 May 2020 00:11:31 -0700

And the points I raised were not "problems" - I will take them as things that I think need to be mentioned in the transport ID. I'll check that next time I review.

-- 
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/3684#discussion_r430902096