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
Move day-in-the-life to intro #3858
Conversation
This does a little shuffling to move some of the context-setting up. It then adds some more meat to the introductory section. Closes #3763.
draft-ietf-quic-transport.md
Outdated
The QUIC handshake combines negotiation of cryptographic and transport | ||
parameters. The handshake is structured to permit the exchange of application | ||
data as soon as possible. This includes an option for clients to send data | ||
immediately (0-RTT) as possible, which might require prior communication to |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
immediately (0-RTT) as possible, which might require prior communication to | |
immediately (0-RTT), which might require prior communication to |
draft-ietf-quic-transport.md
Outdated
|
||
Frames are used in QUIC to communicate between endpoints. Multiple frames are | ||
assembled into packets. QUIC authenticates all packets and encrypts as much as | ||
is practical to avoid incurring a dependency on middleboxes. QUIC packets are |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't the dependency the other way around; we're trying to avoid middleboxes becoming dependent on any visible features of QUIC.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some suggestions, but LG.
draft-ietf-quic-transport.md
Outdated
and server. The primary purpose of a connection is to support the exchange of | ||
data by an application protocol. | ||
|
||
Streams ({{streams}}) are the primary means by which an application protocol |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Saying 'primary' seems odd given there's no other option in v1.
You could say "Streams are the only means by which an application protocol exchange information in this version of QUIC."
draft-ietf-quic-transport.md
Outdated
unidirectional streams allow a single endpoint to send. Endpoints can create | ||
streams without prior negotiation. A credit-based scheme is used to limit |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd drop this sentence, since one could consider the stream limit TPs 'negotiation'.
unidirectional streams allow a single endpoint to send. Endpoints can create | |
streams without prior negotiation. A credit-based scheme is used to limit | |
unidirectional streams allow a single endpoint to send. A credit-based scheme is used to limit |
draft-ietf-quic-transport.md
Outdated
Frames are used in QUIC to communicate between endpoints. Multiple frames are | ||
assembled into packets. QUIC authenticates all packets and encrypts as much as |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Frames are used in QUIC to communicate between endpoints. Multiple frames are | |
assembled into packets. QUIC authenticates all packets and encrypts as much as | |
Frames are used in QUIC to communicate between endpoints. One or more frames can | |
be sent in a single QUIC packet. QUIC authenticates all packets and encrypts as much as |
draft-ietf-quic-transport.md
Outdated
and server. The primary purpose of a connection is to support the exchange of | ||
data by an application protocol. | ||
|
||
Streams ({{streams}}) are the primary means by which an application protocol |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Streams is the only reference in this section, so I'd be inclined to drop it given it's referenced in "Life of a QUIC connection"?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A high-order idea: Merge the Overview and Structure sections. Basically, I think we could use your descriptions of the three major pieces (Streams, Connections, Packets/Frames) at the right points in the text under Document Structure, and just move all of it into Overview. WDYT?
draft-ietf-quic-transport.md
Outdated
@@ -979,6 +1022,34 @@ described in {{migration}}. Finally, a connection may be terminated by either | |||
endpoint, as described in {{termination}}. | |||
|
|||
|
|||
## Life of a QUIC Connection {#connection-lifecycle} | |||
|
|||
Each connection starts with a handshake phase, during which client and server |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Each connection starts with a handshake phase, during which client and server | |
Each connection starts with a handshake phase, during which the two endpoints |
draft-ietf-quic-transport.md
Outdated
## Life of a QUIC Connection {#connection-lifecycle} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the text in this subsection can replace the text above in the Connections
section header. The first sentence above is broken (there's no version negotiation), and the rest of them are covered below. So basically, delete all text from lines 1016 - 1026.
draft-ietf-quic-transport.md
Outdated
An application protocol can also operate in a limited fashion during the | ||
handshake phase. 0-RTT allows application data to be sent by a client before | ||
receiving any response from the server. However, 0-RTT lacks certain key | ||
security guarantees. In particular, there is no protection against replay | ||
attacks in 0-RTT; see {{QUIC-TLS}}. Separately, a server can also send | ||
application data to a client before it receives the final cryptographic | ||
handshake messages that allow it to confirm the identity and liveness of the | ||
client. These capabilities allow an application protocol to offer the option to | ||
trade some security guarantees for reduced latency. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
An application protocol can also operate in a limited fashion during the | |
handshake phase. 0-RTT allows application data to be sent by a client before | |
receiving any response from the server. However, 0-RTT lacks certain key | |
security guarantees. In particular, there is no protection against replay | |
attacks in 0-RTT; see {{QUIC-TLS}}. Separately, a server can also send | |
application data to a client before it receives the final cryptographic | |
handshake messages that allow it to confirm the identity and liveness of the | |
client. These capabilities allow an application protocol to offer the option to | |
trade some security guarantees for reduced latency. | |
An application protocol can use the connection during the handshake | |
phase, albeit to a limited extent. 0-RTT allows application data to be | |
sent by a client before receiving a response from the server. However, | |
there is no protection against replay attacks in 0-RTT; see {{QUIC-TLS}}. | |
A server can also send application data to a client before it receives the | |
final cryptographic handshake messages that allow it to confirm the | |
identity and liveness of the client. These capabilities allow an application | |
protocol to offer the option of trading some security guarantees for | |
reduced latency. |
draft-ietf-quic-transport.md
Outdated
and server. The primary purpose of a connection is to support the exchange of | ||
data by an application protocol. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
and server. The primary purpose of a connection is to support the exchange of | |
data by an application protocol. | |
and server. The primary purpose of a connection is to support the structured | |
exchange of data by an application protocol. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not so sure about this myself, but suggesting... the idea is to surface the use of QUIC streams.
draft-ietf-quic-transport.md
Outdated
bidirectional streams allow both endpoints to send data; unidirectional streams | ||
allow a single endpoint to send. A credit-based scheme is used to limit stream | ||
creation and to bound the amount of data that can be sent. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bidirectional streams allow both endpoints to send data; unidirectional streams | |
allow a single endpoint to send. A credit-based scheme is used to limit stream | |
creation and to bound the amount of data that can be sent. | |
bidirectional streams, that allow both endpoints to send data; and | |
unidirectional streams, that allow a single endpoint to send. A credit-based | |
scheme is used to limit stream creation and to bound the amount of data that | |
can be sent. |
draft-ietf-quic-transport.md
Outdated
QUIC establishes a connection, which is a stateful interaction between a client | ||
and server. The primary purpose of a connection is to support the exchange of | ||
data by an application protocol. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would propose this be moved to after the para on streams
The QUIC handshake combines negotiation of cryptographic and transport | ||
parameters. The handshake is structured to permit the exchange of application | ||
data as soon as possible. This includes an option for clients to send data | ||
immediately (0-RTT), which might require prior communication to enable. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With the leading para on QUIC connections from lines 127-129 moved here, maybe combine this with that para and start with "QUIC connections are established using a handshake that combines..."
draft-ietf-quic-transport.md
Outdated
{{fig-hs}} shows a simplied handshake and the exchange of packets and frames | ||
that are used to advance the handshake. Exchange of application data during the | ||
handshake is enabled where possible, shown with a '*'. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems a bit out of place. It would be more useful if it included data exchange and connection termination. Otherwise, I would suggest removing it entirely (this para and the text below as well).
Thanks for the review Jana. I've taken most of this, with small tweaks only. Two things I didn't take:
I've moved the picture to the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for working through this!
This does a little shuffling to move some of the context-setting up. It
then adds some more meat to the introductory section.
Closes #3763.