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

Independent states and STOP_SENDING #171

Merged
merged 29 commits into from Aug 3, 2017
Merged
Changes from 1 commit
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
b1c79fb
First pass at REQUEST_RST
MikeBishop Jan 18, 2017
4c96bd2
Use REQUEST_RST in HTTP/QUIC
MikeBishop Jan 18, 2017
7f66526
Martin's feedback on REQUEST_RST
MikeBishop Jan 30, 2017
b2dc2c2
Wrong word form
MikeBishop Jan 30, 2017
dd17d05
Fix some merge stuff
MikeBishop Feb 23, 2017
c9d0d8f
Servers shouldn't freak out either
MikeBishop Mar 7, 2017
7f0a134
Rename to DISINTEREST
MikeBishop Mar 7, 2017
001c274
Suggest error code, loosen ordering
MikeBishop Mar 7, 2017
d4f77df
an => a
MikeBishop Mar 7, 2017
dccd3f3
Merge remote-tracking branch 'origin/master' into request_rst
MikeBishop Mar 9, 2017
4ce57c5
Without selecting?
MikeBishop Mar 9, 2017
5088ec5
Merge remote-tracking branch 'origin/master' into request_rst
MikeBishop Apr 13, 2017
df92cb1
Martin's less-MUSTy feedback on DISINTEREST
MikeBishop Apr 13, 2017
3ac8550
Merging with Martin's stream state text
MikeBishop May 2, 2017
5740393
Martin's feedback
MikeBishop Jun 7, 2017
299e72d
Merge remote-tracking branch 'origin/master' into request_rst
MikeBishop Jun 7, 2017
1536501
Merge remote-tracking branch 'origin/master' into request_rst
MikeBishop Jun 28, 2017
52f99c7
Update frame type value and table
MikeBishop Jun 28, 2017
15da4ce
Merge remote-tracking branch 'origin/master' into request_rst
MikeBishop Jul 24, 2017
35dfd02
Bring back the error code
MikeBishop Jul 27, 2017
e0be281
REQUEST_RST -> DISINTEREST -> STOP_SENDING
MikeBishop Jul 27, 2017
e91b428
DISINTEREST->STOP_SENDING in HTTP doc
MikeBishop Jul 27, 2017
1213176
Clarifying stream state
MikeBishop Jul 27, 2017
23c7dd2
delete 'up to and'
MikeBishop Jul 27, 2017
7a46965
STOP_SENDING in half-closed remote
MikeBishop Jul 31, 2017
5699b82
Remove implied ordering of STOP_SENDING and STREAM frames
MikeBishop Jul 31, 2017
106c165
STOP_SENDING is sorta retransmittable and MUSTy
MikeBishop Aug 1, 2017
0b027f3
Jana's nits
MikeBishop Aug 2, 2017
53d1621
Merge remote-tracking branch 'origin/master' into request_rst
MikeBishop Aug 2, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
99 changes: 16 additions & 83 deletions draft-ietf-quic-transport.md
Expand Up @@ -1791,50 +1791,40 @@ stream, but is unable to due to the maximum stream ID limit.
The STREAM_ID_NEEDED frame does not contain a payload.


## NEW_CONNECTION_ID Frame {#frame-new-connection-id}

## RST_STREAM Frame {#frame-rst-stream}

An endpoint may use a RST_STREAM frame (type=0x01) to abruptly terminate a
stream.

After sending a RST_STREAM, an endpoint ceases transmission of STREAM frames on
the identified stream. A receiver of RST_STREAM can discard any data that it
already received on that stream. An endpoint sends a RST_STREAM in response to
a RST_STREAM unless the stream is already closed.
A server sends a NEW_CONNECTION_ID frame (type=0x0b) to provide the client with
alternative connection IDs that can be used to break linkability when migrating
connections (see {{migration-linkability}}).

The RST_STREAM frame is as follows:
The NEW_CONNECTION_ID is as follows:

~~~
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Stream ID (32) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Error Code (32) |
| Sequence (16) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Final Offset (64) +
+ Connection ID (64) +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~~~

The fields are:

Stream ID:

: The 32-bit Stream ID of the stream being terminated.

Error code:

: A 32-bit error code which indicates why the stream is being closed.

Final offset:

: A 64-bit unsigned integer indicating the absolute byte offset of the end of
data written on this stream by the RST_STREAM sender.
Sequence:

: A 16-bit sequence number. This value starts at 0 and increases by 1 for each
connection ID that is provided by the server. The sequence value can wrap;
the value 65535 is followed by 0. When wrapping the sequence field, the
server MUST ensure that a value with the same sequence has been received and
acknowledged by the client. The connection ID that is assigned during the
handshake is assumed to have a sequence of 65535.

Connection ID:

: A 64-bit connection ID.

## DISINTEREST Frame {#frame-disinterest}

Expand All @@ -1855,63 +1845,6 @@ The fields are:
* Stream ID: The 32-bit Stream ID of the stream being ignored.


## PADDING Frame {#frame-padding}

The PADDING frame (type=0x00) has no semantic value. PADDING frames can be used
to increase the size of a packet. Padding can be used to increase an initial
client packet to the minimum required size, or to provide protection against
traffic analysis for protected packets.

A PADDING frame has no content. That is, a PADDING frame consists of the single
octet that identifies the frame as a PADDING frame.


## PING frame {#frame-ping}

Endpoints can use PING frames (type=0x07) to verify that their peers are still
alive or to check reachability to the peer. The PING frame contains no
additional fields. The receiver of a PING frame simply needs to acknowledge the
packet containing this frame. The PING frame SHOULD be used to keep a connection
alive when a stream is open. The default is to send a PING frame after 15
seconds of quiescence. A PING frame has no additional fields.


## NEW_CONNECTION_ID Frame {#frame-new-connection-id}

A server sends a NEW_CONNECTION_ID frame (type=0x0b) to provide the client with
alternative connection IDs that can be used to break linkability when migrating
connections (see {{migration-linkability}}).

The NEW_CONNECTION_ID is as follows:

~~~
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence (16) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Connection ID (64) +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~~~

The fields are:

Sequence:

: A 16-bit sequence number. This value starts at 0 and increases by 1 for each
connection ID that is provided by the server. The sequence value can wrap;
the value 65535 is followed by 0. When wrapping the sequence field, the
server MUST ensure that a value with the same sequence has been received and
acknowledged by the client. The connection ID that is assigned during the
handshake is assumed to have a sequence of 65535.

Connection ID:

: A 64-bit connection ID.


## ACK Frame {#frame-ack}

Receivers send ACK frames to inform senders which packets they have received and
Expand Down
You are viewing a condensed version of this merge commit. You can view the full changes here.