Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optional Idle Timeout #1765

Merged
merged 3 commits into from
Sep 19, 2018
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 21 additions & 21 deletions draft-ietf-quic-transport.md
Original file line number Diff line number Diff line change
Expand Up @@ -1606,14 +1606,6 @@ type TRANSPORT_PARAMETER_ERROR.

### Transport Parameter Definitions

An endpoint MUST include the following parameters in its encoded
TransportParameters:

idle_timeout (0x0003):

: The idle timeout is a value in seconds that is encoded as an unsigned 16-bit
integer. The maximum value is 600 seconds (10 minutes).

An endpoint MAY use the following transport parameters:

initial_max_data (0x0001):
Expand All @@ -1637,17 +1629,13 @@ initial_max_bidi_streams (0x0002):
MAX_STREAM_ID containing 16 when received by a client or 17 when received by a
server.

initial_max_uni_streams (0x0008):
idle_timeout (0x0003):

: 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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wouldn't bother with the maximum sentence thing.

timeout is disabled. In this case, the transport never closes the connection
in response to being idle.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

drop this last sentence too


max_packet_size (0x0005):

Expand All @@ -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):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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


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

disable_migration (0x0009):

: The endpoint does not support connection migration ({{migration}}). Peers MUST
Expand Down Expand Up @@ -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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

the advertised idle timeout (see {{transport-parameter-definitions}}) is closed.
A connection enters the draining state when the idle timeout expires.

Each endpoint advertises their own idle timeout to their peer. The idle timeout
starts from the last packet received. In order to ensure that initiating new
Expand Down