Subject: [quicwg/base-drafts] Optional Idle Timeout (#1765)

From: Nick Banks <[email-masked]>
Date: Tue, 18 Sep 2018 15:46:32 +0000 (UTC)

Idle timeout is currently the last required transport parameter. This makes the parameter optional, defaulting to 0 or disabled if not present. It also removes the 10 minute maximum value. For other non-http protocols over QUIC, a 10 minute max doesn't really make sense.
You can view, comment on, or merge this pull request online at:

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

-- Commit Summary --

  * Make Idle Timeout Optional

-- File Changes --

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

-- Patch Links --

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

---

From: Kazuho Oku <[email-masked]>
Date: Tue, 18 Sep 2018 16:36:43 +0000 (UTC)

Would it make sense to use varint to allow timeouts longer than 18 hours (e.g. 1 day)?

-- 
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/1765#issuecomment-422462372

---

From: Kazuho Oku <[email-masked]>
Date: Tue, 18 Sep 2018 09:36:56 -0700

kazuho commented on this pull request.

> @@ -1637,6 +1629,14 @@ initial_max_bidi_streams (0x0002):
   MAX_STREAM_ID containing 16 when received by a client or 17 when received by a
   server.
 
+idle_timeout (0x0003):
+
+: The idle timeout is a value in seconds that is encoded as an unsigned 16-bit
+  integer.  There is no maximum value besides the maximum encodable value of
+  0xFFFF (about 18 hours).  If this parameter is abset or zero then the idle

"abset" -> "absent"

-- 
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/1765#pullrequestreview-156458174

---

From: Marten Seemann <[email-masked]>
Date: Tue, 18 Sep 2018 10:21:50 -0700

@kazuho: I suggested that in #1608.

-- 
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/1765#issuecomment-422477311

---

From: Nick Banks <[email-masked]>
Date: Tue, 18 Sep 2018 10:35:36 -0700

Personally, I'd prefer not to use variable length integers here, but either way, I think we should leave that discussion to #1608 and not make that change as part of this PR. If you want an explicit idle timeout larger than 18 hours, then we should make this a 4-byte value instead of 2.

-- 
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/1765#issuecomment-422481900

---

From: Nick Banks <[email-masked]>
Date: Tue, 18 Sep 2018 10:38:47 -0700

@nibanks pushed 1 commit.

a888733  Fix typo

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/1765/files/55065ba4b9c184370479c053dad5a84c13f3deed..a8887333bae9c84337578810e5c85a2c30e1901f

---

From: Martin Thomson <[email-masked]>
Date: Tue, 18 Sep 2018 20:01:50 +0000 (UTC)

martinthomson commented on this pull request.

I really like that we no longer have any mandatory transport parameters.

> @@ -1666,6 +1654,18 @@ ack_delay_exponent (0x0007):
   value is also used for ACK frames that are sent in Initial and Handshake
   packets.  Values above 20 are invalid.
 
+initial_max_uni_streams (0x0008):

Please don't move this.  The numbers are all out of order, but I do hope to fix that eventually.

> @@ -2531,9 +2531,9 @@ source address.
 
 ### Idle Timeout
 
-A connection that remains idle for longer than the advertised idle timeout (see
-{{transport-parameter-definitions}}) is closed.  A connection enters the
-draining state when the idle timeout expires.
+If the idle timeout is enabled, a connection that remains idle for longer than

This change isn't needed.  There is always an idle timeout, it's just that it is sometimes infinite.

-: The initial maximum unidirectional streams parameter contains the initial
-  maximum number of unidirectional streams the peer may initiate, encoded as an
-  unsigned 16-bit integer.  If this parameter is absent or zero, unidirectional
-  streams cannot be created until a MAX_STREAM_ID frame is sent.  Setting this
-  parameter is equivalent to sending a MAX_STREAM_ID ({{frame-max-stream-id}})
-  immediately after completing the handshake containing the corresponding Stream
-  ID. For example, a value of 0x05 would be equivalent to receiving a
-  MAX_STREAM_ID containing 18 when received by a client or 19 when received by a
-  server.
+: The idle timeout is a value in seconds that is encoded as an unsigned 16-bit
+  integer.  There is no maximum value besides the maximum encodable value of
+  0xFFFF (about 18 hours).  If this parameter is absent or zero then the idle

I wouldn't bother with the maximum sentence thing.

-: The initial maximum unidirectional streams parameter contains the initial
-  maximum number of unidirectional streams the peer may initiate, encoded as an
-  unsigned 16-bit integer.  If this parameter is absent or zero, unidirectional
-  streams cannot be created until a MAX_STREAM_ID frame is sent.  Setting this
-  parameter is equivalent to sending a MAX_STREAM_ID ({{frame-max-stream-id}})
-  immediately after completing the handshake containing the corresponding Stream
-  ID. For example, a value of 0x05 would be equivalent to receiving a
-  MAX_STREAM_ID containing 18 when received by a client or 19 when received by a
-  server.
+: The idle timeout is a value in seconds that is encoded as an unsigned 16-bit
+  integer.  There is no maximum value besides the maximum encodable value of
+  0xFFFF (about 18 hours).  If this parameter is absent or zero then the idle
+  timeout is disabled.  In this case, the transport never closes the connection
+  in response to being idle.

drop this last sentence too

-- 
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/1765#pullrequestreview-156542883

---

From: Nick Banks <[email-masked]>
Date: Tue, 18 Sep 2018 13:07:59 -0700

nibanks commented on this pull request.

 ### Idle Timeout

We didn't quite state it that way above. It says the idle timeout is disabled, not infinite.

-- 
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/1765#discussion_r218576245

---

From: Nick Banks <[email-masked]>
Date: Tue, 18 Sep 2018 20:09:12 +0000 (UTC)

5f5421d  Address Martins comments

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/1765/files/a8887333bae9c84337578810e5c85a2c30e1901f..5f5421d8de2e34c6e736b84590d460b8b65d8557

---

From: Martin Thomson <[email-masked]>
Date: Wed, 19 Sep 2018 07:28:05 -0700

Merged #1765 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/1765#event-1855215798

---

From: Martin Thomson <[email-masked]>
Date: Wed, 19 Sep 2018 14:28:21 +0000 (UTC)

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/pull/1765#issuecomment-422825163