Subject: [quicwg/base-drafts] Transport Parameters are not APLN Specific (#3973)

From: Nick Banks <[email-masked]>
Date: Wed, 29 Jul 2020 17:55:34 +0000 (UTC)

Closes #3965.

Call out that since transport parameters are not ALPN specific, when the client offers several, that application protocols should not put restrictions on them that might back them into a corner for future versions.
You can view, comment on, or merge this pull request online at:

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

-- Commit Summary --

  * Transport Parameters are not APLN Specific

-- File Changes --

    M draft-ietf-quic-transport.md (7)

-- Patch Links --

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

---

From: Kazuho Oku <[email-masked]>
Date: Wed, 29 Jul 2020 15:00:23 -0700

@kazuho commented on this pull request.

> @@ -1741,6 +1741,13 @@ parameters as a connection error of type TRANSPORT_PARAMETER_ERROR.
 Endpoints use transport parameters to authenticate the negotiation of
 connection IDs during the handshake; see {{cid-auth}}.
 
+When sent by the client, transport parameters are not specific to a particular
+ALPN being negotiated.  Therefore, a client cannot have application protocol
+specific values in the transport parameters.  Application protocols should take
+this into account when designing versioning schemes, and not place restrictions
+on the values in the transport parameters that might prevent protocol changes
+in future version of the application protocol.

Regarding the last sentence, how about saying something like: _Application protocols SHOULD NOT introduce prohibitive requirements that prevent other application protocols from working._

I am not sure if this problem can be scoped to different versions of one protocol. While that could be the case for HTTP, there could be cases where a client might ask for using different protocols that provide the same service. To give an example, a client might send send an ALPN of ("h3" (for doing DNS over HTTP), "dns" (for doing DNS over QUIC)) to a DNS server.

-- 
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/3973#pullrequestreview-457928345

---

From: Nick Banks <[email-masked]>
Date: Wed, 29 Jul 2020 15:06:37 -0700

@nibanks commented on this pull request.

@kazuho I'm not sure how you'd go about not making _prohibitive requirements_ for other protocols without understanding the set of all other possible protocols **or** by setting no requirements at all.

-- 
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/3973#discussion_r462617412

---

From: Kazuho Oku <[email-masked]>
Date: Wed, 29 Jul 2020 16:15:29 -0700

@nibanks If that's unclear, saying something like the following might be better: "should not introduce restrictions to the transport parameters, as doing so might prevent clients from offering multiple application protocols."

I think that addresses the two examples that you laid out in the original comment of #3965.

-- 
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/3973#discussion_r462642686

---

From: Martin Thomson <[email-masked]>
Date: Wed, 29 Jul 2020 19:20:24 -0700

@martinthomson commented on this pull request.

Thanks for putting this together.  I wasn't sure that I understood what you wanted before.

There is a difference between requirements and recommendations.  We do recommend in HTTP/3 that a certain number of unidirectional stream be available, but it is [just a recommendation](https://quicwg.org/base-drafts/draft-ietf-quic-http.html#section-6.2-4).

I think that this could be clearer then:

> Protocol negotiation with Application Layer Protocol Negotiation (ALPN; see {{?ALPN=RFC7301}}) allows clients to offer multiple application protocols during connection establishing. The single set of transport parameters offered by a client apply to all application protocols that the client offers.  Application protocols can make recommendations about the values for transport parameters, such as suggesting minimum values for stream or flow control limits.  Application protocols that place hard constraints on transport parameters could make it impossible for clients to attempt a connection that includes other application protocols with different constraints.

-- 
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/3973#pullrequestreview-458026730

---

From: Jana Iyengar <[email-masked]>
Date: Thu, 30 Jul 2020 05:24:30 -0700

@janaiyengar commented on this pull request.

I'd like to make some editorial suggestions to martin's proposal, but I like that text.

-- 
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/3973#discussion_r462957734

---

From: Nick Banks <[email-masked]>
Date: Thu, 30 Jul 2020 07:30:30 -0700

@nibanks pushed 1 commit.

f518bf6df92cd11c94400cf398039435e084e5cf  Martin's suggestion

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3973/files/9a2b6720262b8469b34552ef9650775d94f32afc..f518bf6df92cd11c94400cf398039435e084e5cf

---

From: Jana Iyengar <[email-masked]>
Date: Thu, 30 Jul 2020 13:58:56 -0700

Editorial suggestions

> +Protocol negotiation with Application Layer Protocol Negotiation (ALPN; see
+{{?ALPN=RFC7301}}) allows clients to offer multiple application protocols with
+connection attempts. The single set of transport parameters offered by a client
+apply to all application protocols that the client offers. Application protocols
+can make recommendations about the values for transport parameters, such as
+suggesting minimum values for stream or flow control limits. Application
+protocols that place hard constraints on transport parameters could make it
+impossible for clients to attempt a connection that includes other application
+protocols with different constraints.

```suggestion
Application Layer Protocol Negotiation (ALPN; see {{?ALPN=RFC7301}}) allows
clients to offer multiple application protocols during connection
establishment. The transport parameters that a client includes during the
handshake apply to all application protocols that the client offers. Application
protocols can recommend values for transport parameters, such as the initial
flow control limits. However, application protocols that require values for
transport parameters will make	it impossible for a client to offer multiple
application protocols with conflicting requirements.
```

-- 
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/3973#pullrequestreview-458751580

---

From: Nick Banks <[email-masked]>
Date: Thu, 30 Jul 2020 14:10:12 -0700

95c5919d77740e9761de84a0daf7e3d46feb24bf  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/3973/files/f518bf6df92cd11c94400cf398039435e084e5cf..95c5919d77740e9761de84a0daf7e3d46feb24bf

---

From: Jana Iyengar <[email-masked]>
Date: Thu, 30 Jul 2020 18:40:14 -0700

@janaiyengar approved this pull request.

Thanks for patiently working through, Nick!

-- 
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/3973#pullrequestreview-458867577

---

From: Jana Iyengar <[email-masked]>
Date: Thu, 30 Jul 2020 18:41:14 -0700

@martinthomson should take a look.

-- 
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/3973#issuecomment-666863859

---

From: ianswett <[email-masked]>
Date: Thu, 30 Jul 2020 18:48:26 -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/3973#pullrequestreview-458869868

---

From: Martin Thomson <[email-masked]>
Date: Thu, 30 Jul 2020 22:43:28 -0700

@martinthomson approved this pull request.

It is not certain that requirements on transport parameter values will cause problems.

> @@ -1741,6 +1741,15 @@ parameters as a connection error of type TRANSPORT_PARAMETER_ERROR.
 
+Application Layer Protocol Negotiation (ALPN; see {{?ALPN=RFC7301}}) allows
+clients to offer multiple application protocols during connection
+establishment. The transport parameters that a client includes during the
+handshake apply to all application protocols that the client offers. Application
+protocols can recommend values for transport parameters, such as the initial
+flow control limits. However, application protocols that require values for
+transport parameters will make it impossible for a client to offer multiple

```suggestion
transport parameters could make it impossible for a client to offer multiple
```

> @@ -1741,6 +1741,15 @@ parameters as a connection error of type TRANSPORT_PARAMETER_ERROR.
 
+Application Layer Protocol Negotiation (ALPN; see {{?ALPN=RFC7301}}) allows
+clients to offer multiple application protocols during connection
+establishment. The transport parameters that a client includes during the
+handshake apply to all application protocols that the client offers. Application
+protocols can recommend values for transport parameters, such as the initial
+flow control limits. However, application protocols that require values for
+transport parameters will make it impossible for a client to offer multiple
+application protocols with conflicting requirements.

```suggestion
application protocols if these requirements conflict.
```

-- 
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/3973#pullrequestreview-458928098

---

From: Kazuho Oku <[email-masked]>
Date: Thu, 30 Jul 2020 23:09:46 -0700

LGTM modulo the point below.

```suggestion
flow control limits. However, application protocols that require specific values for
```

I think we are talking about the requirement of values rather than if TP take values.

-- 
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/3973#pullrequestreview-458936749

---

From: Martin Thomson <[email-masked]>
Date: Thu, 30 Jul 2020 23:19:06 -0700

Or
```suggestion
flow control limits. However, application protocols that constrain values for
```

-- 
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/3973#discussion_r463425403

---

From: Martin Thomson <[email-masked]>
Date: Thu, 30 Jul 2020 23:19:37 -0700

Or

```suggestion
flow control limits. However, application protocols that set constraints on values for
```

-- 
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/3973#discussion_r463425537

---

From: Nick Banks <[email-masked]>
Date: Fri, 31 Jul 2020 07:20:07 -0700

967fcd53056273cdf59b2aa5c06c05caa0787417  PR Feedback

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3973/files/95c5919d77740e9761de84a0daf7e3d46feb24bf..967fcd53056273cdf59b2aa5c06c05caa0787417

---

From: Kazuho Oku <[email-masked]>
Date: Fri, 31 Jul 2020 07:22:42 -0700

@kazuho 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/3973#pullrequestreview-459213304

---

From: David Schinazi <[email-masked]>
Date: Fri, 31 Jul 2020 07:51:53 -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/3973#pullrequestreview-459236398

---

From: Jana Iyengar <[email-masked]>
Date: Fri, 31 Jul 2020 12:34:40 -0700

-- 
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/3973#pullrequestreview-459416785

---

From: Jana Iyengar <[email-masked]>
Date: Fri, 31 Jul 2020 12:35:20 -0700

Merged #3973 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/3973#event-3609976937