draft-ietf-quic-applicability-01.txt | draft-ietf-quic-applicability-02.txt | |||
---|---|---|---|---|
Network Working Group M. Kuehlewind | Network Working Group M. Kuehlewind | |||
Internet-Draft B. Trammell | Internet-Draft B. Trammell | |||
Intended status: Informational ETH Zurich | Intended status: Informational ETH Zurich | |||
Expires: April 28, 2018 October 25, 2017 | Expires: January 3, 2019 July 02, 2018 | |||
Applicability of the QUIC Transport Protocol | Applicability of the QUIC Transport Protocol | |||
draft-ietf-quic-applicability-01 | draft-ietf-quic-applicability-02 | |||
Abstract | Abstract | |||
This document discusses the applicability of the QUIC transport | This document discusses the applicability of the QUIC transport | |||
protocol, focusing on caveats impacting application protocol | protocol, focusing on caveats impacting application protocol | |||
development and deployment over QUIC. Its intended audience is | development and deployment over QUIC. Its intended audience is | |||
designers of application protocol mappings to QUIC, and implementors | designers of application protocol mappings to QUIC, and implementors | |||
of these application protocols. | of these application protocols. | |||
Status of This Memo | Status of This Memo | |||
skipping to change at page 1, line 34 ¶ | skipping to change at page 1, line 34 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on April 28, 2018. | This Internet-Draft will expire on January 3, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
skipping to change at page 2, line 16 ¶ | skipping to change at page 2, line 16 ¶ | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Notational Conventions . . . . . . . . . . . . . . . . . 3 | 1.1. Notational Conventions . . . . . . . . . . . . . . . . . 3 | |||
2. The Necessity of Fallback . . . . . . . . . . . . . . . . . . 3 | 2. The Necessity of Fallback . . . . . . . . . . . . . . . . . . 3 | |||
3. Zero RTT . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Zero RTT . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3.1. Thinking in Zero RTT . . . . . . . . . . . . . . . . . . 4 | 3.1. Thinking in Zero RTT . . . . . . . . . . . . . . . . . . 4 | |||
3.2. Here There Be Dragons . . . . . . . . . . . . . . . . . . 4 | 3.2. Here There Be Dragons . . . . . . . . . . . . . . . . . . 4 | |||
3.3. Session resumption versus Keep-alive . . . . . . . . . . 4 | 3.3. Session resumption versus Keep-alive . . . . . . . . . . 4 | |||
4. Use of Streams . . . . . . . . . . . . . . . . . . . . . . . 4 | 4. Use of Streams . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
4.1. Stream versus Flow Multiplexing . . . . . . . . . . . . . 5 | 4.1. Stream versus Flow Multiplexing . . . . . . . . . . . . . 5 | |||
4.2. Paketization and latency . . . . . . . . . . . . . . . . 6 | 4.2. Packetization and latency . . . . . . . . . . . . . . . . 6 | |||
4.3. Prioritization . . . . . . . . . . . . . . . . . . . . . 6 | 4.3. Prioritization . . . . . . . . . . . . . . . . . . . . . 6 | |||
5. Graceful connection closure . . . . . . . . . . . . . . . . . 6 | 5. Graceful connection closure . . . . . . . . . . . . . . . . . 6 | |||
6. Information exposure and the Connection ID . . . . . . . . . 7 | 6. Information exposure and the Connection ID . . . . . . . . . 7 | |||
6.1. Server-Generated Connection ID . . . . . . . . . . . . . 7 | 6.1. Server-Generated Connection ID . . . . . . . . . . . . . 7 | |||
6.2. Using Server Retry for Redirection . . . . . . . . . . . 8 | 6.2. Using Server Retry for Redirection . . . . . . . . . . . 8 | |||
7. Use of Versions and Cryptographic Handshake . . . . . . . . . 8 | 7. Use of Versions and Cryptographic Handshake . . . . . . . . . 8 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 9 | 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9 | 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
skipping to change at page 3, line 42 ¶ | skipping to change at page 3, line 42 ¶ | |||
can be requested by the connection initiator but might no be | can be requested by the connection initiator but might no be | |||
supported by the far end or could be blocked on the network path. | supported by the far end or could be blocked on the network path. | |||
Note that there is some evidence of middleboxes blocking SYN data | Note that there is some evidence of middleboxes blocking SYN data | |||
even if TFO was successfully negotiated (see [PaaschNanog]). | even if TFO was successfully negotiated (see [PaaschNanog]). | |||
Any fallback mechanism is likely to impose a degradation of | Any fallback mechanism is likely to impose a degradation of | |||
performance; however, fallback MUST not silently violate the | performance; however, fallback MUST not silently violate the | |||
application's expectation of confidentiality or integrity of its | application's expectation of confidentiality or integrity of its | |||
payload data. | payload data. | |||
Moreover, while encryption (in this case TLS) is inseparable | Moreover, while encryption (in this case TLS) is inseparably | |||
integrated with QUIC, TLS negotiation over TCP can be blocked. In | integrated with QUIC, TLS negotiation over TCP can be blocked. In | |||
case it is RECOMMENDED to abort the connection, allowing the | case it is RECOMMENDED to abort the connection, allowing the | |||
application to present a suitable prompt to the user that secure | application to present a suitable prompt to the user that secure | |||
communication is unavailable. | communication is unavailable. | |||
3. Zero RTT | 3. Zero RTT | |||
QUIC provides for 0-RTT connection establishment (see section 3.2 of | QUIC provides for 0-RTT connection establishment (see section 3.2 of | |||
[QUIC]). This presents opportunities and challenges for applications | [QUIC]). This presents opportunities and challenges for applications | |||
using QUIC. | using QUIC. | |||
3.1. Thinking in Zero RTT | 3.1. Thinking in Zero RTT | |||
A transport protocol that provides 0-RTT connection establishment to | A transport protocol that provides 0-RTT connection establishment to | |||
recently contacted servers is qualitatively different than one that | recently contacted servers is qualitatively different than one that | |||
does not from the point of view of the application using it. | does not from the point of view of the application using it. | |||
Relative tradeoffs between the cost of closing and reopening a | Relative trade-offs between the cost of closing and reopening a | |||
connection and trying to keep it open are different; see Section 3.3. | connection and trying to keep it open are different; see Section 3.3. | |||
Applications must be slightly rethought in order to make best use of | Applications must be slightly rethought in order to make best use of | |||
0-RTT resumption. Most importantly, application operations must be | 0-RTT resumption. Most importantly, application operations must be | |||
divided into idempotent and non-idempotent operations, as only | divided into idempotent and non-idempotent operations, as only | |||
idempotent operations may appear in 0-RTT packets. This implies that | idempotent operations may appear in 0-RTT packets. This implies that | |||
the interface between the application and transport layer exposes | the interface between the application and transport layer exposes | |||
idempotence either ecplicitly or implicitly. | idempotence either explicitly or implicitly. | |||
3.2. Here There Be Dragons | 3.2. Here There Be Dragons | |||
Retransmission or (malicious) replay of data contained in 0-RTT | Retransmission or (malicious) replay of data contained in 0-RTT | |||
resumption packets could cause the server side to receive two copies | resumption packets could cause the server side to receive two copies | |||
of the same data. This is further described in [HTTP-RETRY]. Data | of the same data. This is further described in [HTTP-RETRY]. Data | |||
sent during 0-RTT resumption also cannot benefit from perfect forward | sent during 0-RTT resumption also cannot benefit from perfect forward | |||
secrecy (PFS). | secrecy (PFS). | |||
Data in the first flight sent by the client in a connection | Data in the first flight sent by the client in a connection | |||
skipping to change at page 4, line 50 ¶ | skipping to change at page 4, line 50 ¶ | |||
3.3. Session resumption versus Keep-alive | 3.3. Session resumption versus Keep-alive | |||
[EDITOR'S NOTE: see https://github.com/quicwg/ops-drafts/issues/6] | [EDITOR'S NOTE: see https://github.com/quicwg/ops-drafts/issues/6] | |||
4. Use of Streams | 4. Use of Streams | |||
QUIC's stream multiplexing feature allows applications to run | QUIC's stream multiplexing feature allows applications to run | |||
multiple streams over a single connection, without head-of-line | multiple streams over a single connection, without head-of-line | |||
blocking between streams, associated at a point in time with a single | blocking between streams, associated at a point in time with a single | |||
five-tuple. Stream data is carried within Frames, where one (UDP) | five-tuple. Stream data is carried within Frames, where one (UDP) | |||
packet on the wired can carry one of multiple stream frames. | packet on the wire can carry one of multiple stream frames. | |||
Stream can be independently open and closed, gracefully or by error. | Stream can be independently open and closed, gracefully or by error. | |||
If a critical stream for the application is closed, the application | If a critical stream for the application is closed, the application | |||
can generate respective error messages on the application layer to | can generate respective error messages on the application layer to | |||
inform the other end or the higher layer and eventually indicate quic | inform the other end or the higher layer and eventually indicate quic | |||
to reset the connection. QUIC, however, does not need to know which | to reset the connection. QUIC, however, does not need to know which | |||
streams are critical, and does not provide an interface to | streams are critical, and does not provide an interface to | |||
exceptional handling of any stream. There are special streams in | exceptional handling of any stream. There are special streams in | |||
QUIC that are used for control on the QUIC connection, however, these | QUIC that are used for control on the QUIC connection, however, these | |||
streams are not exposed to the apllication. | streams are not exposed to the application. | |||
Mapping of application data to streams is application-specific and | Mapping of application data to streams is application-specific and | |||
described for HTTP/s in [QUIC-HTTP]. In general data that can be | described for HTTP/s in [QUIC-HTTP]. In general data that can be | |||
processed independently, and therefore would suffer from head of line | processed independently, and therefore would suffer from head of line | |||
blocking, if forced to be received in order, should be transmitted | blocking, if forced to be received in order, should be transmitted | |||
over different streams. If there is a logical grouping of those data | over different streams. If there is a logical grouping of those data | |||
chunks or messages, stream can be reused, or a new stream can be | chunks or messages, stream can be reused, or a new stream can be | |||
opened for each chunk/message. However, a QUIC receiver has a | opened for each chunk/message. If a QUIC receiver has maximum | |||
maximum number of concurrently open streams. If the stream limit is | allowed concurrent streams open and the sender on the other end | |||
exhausted a sender is able to indicate that more streams are needed, | indicates that more streams are needed, it doesn't automatically lead | |||
however, this does not automatically lead to an increase of the | to an increase of the maximum number of streams by the receiver. | |||
maximum number of streams by the receiver. Therefore it can be | Therefore it can be valuable to expose maximum number of allowed, | |||
valuable to expose this maximum number to the application, or the | currently open and currently used streams to the application to make | |||
number of currently still available, unused streams, and make the | the mapping of data to streams dependent on this information. | |||
mapping of data to streams dependent on this information. | ||||
Further, streams have a maximum number of bytes that can be sent on | Further, streams have a maximum number of bytes that can be sent on | |||
one stream. This number is high enough (2^64) that this will usually | one stream. This number is high enough (2^64) that this will usually | |||
not be reached with current applications. Applications that send | not be reached with current applications. Applications that send | |||
chunks of data over a very long period of time (such as days, months, | chunks of data over a very long period of time (such as days, months, | |||
or years), should rather utilize the 0-RTT seesion resumption ability | or years), should rather utilize the 0-RTT session resumption ability | |||
provided by QUIC, than trying to maintain one connection open. | provided by QUIC, than trying to maintain one connection open. | |||
4.1. Stream versus Flow Multiplexing | 4.1. Stream versus Flow Multiplexing | |||
Streams are meaningful only to the application; since stream | Streams are meaningful only to the application; since stream | |||
information is carried inside QUIC's encryption boundary, no | information is carried inside QUIC's encryption boundary, no | |||
information about the stream(s) whose frames are carried by a given | information about the stream(s) whose frames are carried by a given | |||
packet is visible to the network. Therefore stream multiplexing is | packet is visible to the network. Therefore stream multiplexing is | |||
not intended to be used for differentiating streams in terms of | not intended to be used for differentiating streams in terms of | |||
network treatment. Application traffic requiring different network | network treatment. Application traffic requiring different network | |||
treatment SHOULD therefore be carried over different five-tuples | treatment SHOULD therefore be carried over different five-tuples | |||
(i.e. multiple QUIC connections). Given QUIC's ability to send | (i.e. multiple QUIC connections). Given QUIC's ability to send | |||
application data in the first RTT of a connection (if a previous | application data in the first RTT of a connection (if a previous | |||
connection to the same host has been successfully established to | connection to the same host has been successfully established to | |||
provide the respective credentials), the cost for establishing | provide the respective credentials), the cost for establishing | |||
another connection are extremely low. | another connection are extremely low. | |||
4.2. Paketization and latency | 4.2. Packetization and latency | |||
Quic provides an interface that provides multiple streams to the | Quic provides an interface that provides multiple streams to the | |||
application, however, the application usually doesn't have control | application, however, the application usually doesn't have control | |||
how the data transmitted over one stream is mapped into frame and how | how the data transmitted over one stream is mapped into frame and how | |||
frames are bundled into packets. By default QUIC will try to | frames are bundled into packets. By default QUIC will try to | |||
maximally pack packets to minimize bandwidth consumption and | maximally pack packets to minimize bandwidth consumption and | |||
computational costs with one or multiple same data frames. If not | computational costs with one or multiple same data frames. If not | |||
enough data available to send QUIC may even wait for a short time, | enough data available to send QUIC may even wait for a short time, | |||
trading of latency and bandwidth effeciency. This time might either | trading of latency and bandwidth efficiency. This time might either | |||
be pre-configured or can the dynamically adjusted based on the | be pre-configured or can the dynamically adjusted based on the | |||
observed sending pattern of the application. If the apllication | observed sending pattern of the application. If the application | |||
requires low latency, with only small chunks of data to send, it may | requires low latency, with only small chunks of data to send, it may | |||
be valuable to indicate to QUIC that all data should be send out | be valuable to indicate to QUIC that all data should be send out | |||
immediately. Or if a certain sending pattern is know by the | immediately. Or if a certain sending pattern is know by the | |||
application, it might also provide valuabe to QUIC how long it should | application, it might also provide valuable guidance to QUIC how long | |||
wait to bundle frame into a packet. | it should wait to bundle frame into a packet. | |||
4.3. Prioritization | 4.3. Prioritization | |||
Stream prioritization is not exposed to the network, nor to the | Stream prioritization is not exposed to the network, nor to the | |||
receiver. Prioritization can be realized by the sender and the QUIC | receiver. Prioritization can be realized by the sender and the QUIC | |||
transport should provide an interface for applications to prioritize | transport should provide an interface for applications to prioritize | |||
streams [QUIC]. Further applications can implement their own | streams [QUIC]. Further applications can implement their own | |||
prioritization scheme on top of QUIC: an an (application) protocol | prioritization scheme on top of QUIC: (an application) protocol that | |||
that run on top of QUIC can define explict messages for signaling | runs on top of QUIC can define explicit messages for signaling | |||
priority, such as those defined for HTTP/2; it can define rules that | priority, such as those defined for HTTP/2; it can define rules that | |||
allow an endpoint to determine priority based on context; or it can | allow an endpoint to determine priority based on context; or it can | |||
provide a higher level interface and leave the determination to the | provide a higher level interface and leave the determination to the | |||
application on top. | application on top. | |||
Priority handling of retransmissions can be implemented by the sender | Priority handling of retransmissions can be implemented by the sender | |||
in the transport layer. [QUIC] recommends to retransmit lost data | in the transport layer. [QUIC] recommends to retransmit lost data | |||
before new data, unless indicated differently by the application. | before new data, unless indicated differently by the application. | |||
Currently QUIC only provides fully reliable stream transmission, and | Currently QUIC only provides fully reliable stream transmission, and | |||
as such prioritization of retransmissionis likely beneficial in most | as such prioritization of retransmissions likely beneficial in most | |||
cases, as gaps that get filled up and thereby free up flow control. | cases, as gaps that get filled up and thereby free up flow control. | |||
For not fully reliable streams priority scheduling of retransmissions | For not fully reliable streams priority scheduling of retransmissions | |||
over data of higher-priority streams might not be desired. In this | over data of higher-priority streams might not be desired. In this | |||
case QUIC could also provide an interface or derive the | case QUIC could also provide an interface or derive the | |||
prioritization decision from the reliability level of the stream. | prioritization decision from the reliability level of the stream. | |||
5. Graceful connection closure | 5. Graceful connection closure | |||
[EDITOR'S NOTE: give some guidance here about the steps an | [EDITOR'S NOTE: give some guidance here about the steps an | |||
application should take; however this is still work in progress] | application should take; however this is still work in progress] | |||
skipping to change at page 7, line 21 ¶ | skipping to change at page 7, line 21 ¶ | |||
for other control processes, and a short header that may be used for | for other control processes, and a short header that may be used for | |||
data transmission in an established connection. While the long | data transmission in an established connection. While the long | |||
header is fixed and exposes some information, the short header only | header is fixed and exposes some information, the short header only | |||
exposes the packet number by default and may optionally expose a | exposes the packet number by default and may optionally expose a | |||
connection ID. | connection ID. | |||
Given that exposing this information may make it possible to | Given that exposing this information may make it possible to | |||
associate multiple addresses with a single client during rebinding, | associate multiple addresses with a single client during rebinding, | |||
which has privacy implications, an application may indicate to not | which has privacy implications, an application may indicate to not | |||
support exposure of certain information after the handshake. | support exposure of certain information after the handshake. | |||
Specificially, an application that has additional information that | Specifically, an application that has additional information that the | |||
the client is not behind a NAT and the server is not behind a load | client is not behind a NAT and the server is not behind a load | |||
balancer, and therefore it is unlikely that the addresses will be re- | balancer, and therefore it is unlikely that the addresses will be re- | |||
bound, may indicate to the transport that is wishes to not expose a | bound, may indicate to the transport that is wishes to not expose a | |||
connection ID. | connection ID. | |||
6.1. Server-Generated Connection ID | 6.1. Server-Generated Connection ID | |||
QUIC supports a server-generated Connection ID, transmitted to the | QUIC supports a server-generated Connection ID, transmitted to the | |||
client during connection establishment: see Section 5.7 of [QUIC] | client during connection establishment: see Section 5.7 of [QUIC]. | |||
Servers behind load balancers should propose a Connection ID during | Servers behind load balancers should propose a Connection ID during | |||
the handshake, encoding the identity of the server or information | the handshake, encoding the identity of the server or information | |||
about its load balancing pool, in order to support stateless load | about its load balancing pool, in order to support stateless load | |||
balancing. Once the server generates a Connection ID that encodes | balancing. Once the server generates a Connection ID that encodes | |||
its identity, every CDN load balancer would be able to forward the | its identity, every CDN load balancer would be able to forward the | |||
packets to that server without needing information about every | packets to that server without needing information about every | |||
specific flow it is forwarding. | specific flow it is forwarding. | |||
Server-generated Connection IDs must not encode any information other | Server-generated Connection IDs must not encode any information other | |||
that that needed to route packets to the appropriate backend | that that needed to route packets to the appropriate backend | |||
server(s): typically the identity of the backend server or pool of | server(s): typically the identity of the backend server or pool of | |||
servers, if the data-center's load balancing system keeps "local" | servers, if the data-center's load balancing system keeps "local" | |||
state of all flows itself. Care must be exercised to ensure that the | state of all flows itself. Care must be exercised to ensure that the | |||
information encoded in the Connection ID is not sufficient to | information encoded in the Connection ID is not sufficient to | |||
identify unique end users. Note that by encoding routing information | identify unique end users. Note that by encoding routing information | |||
in the Connection ID, load balancers open up a new attack vector that | in the Connection ID, load balancers open up a new attack vector that | |||
allows bad actors to direct traffic at a specific backend server or | allows bad actors to direct traffic at a specific backend server or | |||
pool. It is therefore recommended that Server-Generated Connection | pool. It is therefore recommended that Server-Generated Connection | |||
ID includes a cryptographic MAC that the load balancer pool server | ID includes a cryptographic MAC that the load balancer pool server is | |||
are able to identify and discard packets featuring an invalid MAC. | able to identify and discard packets featuring an invalid MAC. | |||
6.2. Using Server Retry for Redirection | 6.2. Using Server Retry for Redirection | |||
QUIC provide a Server Retry packet that can be send by a server in | QUIC provides a Server Retry packet that can be sent by a server in | |||
response to the Client Initial packet. The server may choose a new | response to the Client Initial packet. The server may choose a new | |||
connection ID in that packet and the client will retry by sending | connection ID in that packet and the client will retry by sending | |||
another Client Initial packet with the server-selected connection ID. | another Client Initial packet with the server-selected connection ID. | |||
This mechanism can be used to redirect a connection to a different | This mechanism can be used to redirect a connection to a different | |||
server, e.g. due to performance reasons or when servers in a server | server, e.g. due to performance reasons or when servers in a server | |||
pool are upgraded gradually, and therefore may support different | pool are upgraded gradually, and therefore may support different | |||
versions of QUIC. In this case, it is assumed that all servers | versions of QUIC. In this case, it is assumed that all servers | |||
belonging to a certain pool are served in cooperation with load | belonging to a certain pool are served in cooperation with load | |||
balancers that forward the traffic based on the connection ID. A | balancers that forward the traffic based on the connection ID. A | |||
server can chose the connection ID in the Server Retry packet such | server can chose the connection ID in the Server Retry packet such | |||
that the load balancer will redirect the next Client Initial packet | that the load balancer will redirect the next Client Initial packet | |||
to a different server in that pool. | to a different server in that pool. | |||
7. Use of Versions and Cryptographic Handshake | 7. Use of Versions and Cryptographic Handshake | |||
Versioning in QUIC may change the the protocol's behavior completely, | Versioning in QUIC may change the protocol's behavior completely, | |||
except for the meaning of a few header fields that have been declared | except for the meaning of a few header fields that have been declared | |||
to be fixed. As such version of QUIC with a higher version number | to be fixed. As such version of QUIC with a higher version number | |||
does not necessarily provide a better service, but might simply | does not necessarily provide a better service, but might simply | |||
provide a very different service, so an application needs to be able | provide a very different service, so an application needs to be able | |||
to select which versions of QUIC it wants to use. | to select which versions of QUIC it wants to use. | |||
A new version could use an encryption scheme other than TLS 1.3 or | A new version could use an encryption scheme other than TLS 1.3 or | |||
higher. [QUIC] specifies requirements for the cryptographic | higher. [QUIC] specifies requirements for the cryptographic | |||
handshake as currently realized by TLS 1.3 and described in a | handshake as currently realized by TLS 1.3 and described in a | |||
separate specification [QUIC-TLS]. This split is performed to enable | separate specification [QUIC-TLS]. This split is performed to enable | |||
skipping to change at page 9, line 23 ¶ | skipping to change at page 9, line 23 ¶ | |||
Horizon 2020 grant agreement no. 688421 Measurement and Architecture | Horizon 2020 grant agreement no. 688421 Measurement and Architecture | |||
for a Middleboxed Internet (MAMI), and by the Swiss State Secretariat | for a Middleboxed Internet (MAMI), and by the Swiss State Secretariat | |||
for Education, Research, and Innovation under contract no. 15.0268. | for Education, Research, and Innovation under contract no. 15.0268. | |||
This support does not imply endorsement. | This support does not imply endorsement. | |||
12. References | 12. References | |||
12.1. Normative References | 12.1. Normative References | |||
[QUIC] Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed | [QUIC] Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed | |||
and Secure Transport", draft-ietf-quic-transport-07 (work | and Secure Transport", draft-ietf-quic-transport-13 (work | |||
in progress), October 2017. | in progress), June 2018. | |||
[QUIC-TLS] | [QUIC-TLS] | |||
Thomson, M. and S. Turner, "Using Transport Layer Security | Thomson, M. and S. Turner, "Using Transport Layer Security | |||
(TLS) to Secure QUIC", draft-ietf-quic-tls-07 (work in | (TLS) to Secure QUIC", draft-ietf-quic-tls-13 (work in | |||
progress), October 2017. | progress), June 2018. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ | Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ | |||
RFC2119, March 1997, <https://www.rfc-editor.org/info/ | RFC2119, March 1997, <https://www.rfc-editor.org/info/ | |||
rfc2119>. | rfc2119>. | |||
[TLS13] Thomson, M. and S. Turner, "Using Transport Layer Security | [TLS13] Thomson, M. and S. Turner, "Using Transport Layer Security | |||
(TLS) to Secure QUIC", draft-ietf-quic-tls-07 (work in | (TLS) to Secure QUIC", draft-ietf-quic-tls-13 (work in | |||
progress), October 2017. | progress), June 2018. | |||
12.2. Informative References | 12.2. Informative References | |||
[Edeline16] | [Edeline16] | |||
Edeline, K., Kuehlewind, M., Trammell, B., Aben, E., and | Edeline, K., Kuehlewind, M., Trammell, B., Aben, E., and | |||
B. Donnet, "Using UDP for Internet Transport Evolution | B. Donnet, "Using UDP for Internet Transport Evolution | |||
(arXiv preprint 1612.07816)", December 2016, | (arXiv preprint 1612.07816)", December 2016, | |||
<https://arxiv.org/abs/1612.07816>. | <https://arxiv.org/abs/1612.07816>. | |||
[HTTP-RETRY] | [HTTP-RETRY] | |||
skipping to change at page 10, line 18 ¶ | skipping to change at page 10, line 18 ¶ | |||
2017. | 2017. | |||
[PaaschNanog] | [PaaschNanog] | |||
Paasch, C., "Network Support for TCP Fast Open (NANOG 67 | Paasch, C., "Network Support for TCP Fast Open (NANOG 67 | |||
presentation)", June 2016, | presentation)", June 2016, | |||
<https://www.nanog.org/sites/default/files/ | <https://www.nanog.org/sites/default/files/ | |||
Paasch_Network_Support.pdf>. | Paasch_Network_Support.pdf>. | |||
[QUIC-HTTP] | [QUIC-HTTP] | |||
Bishop, M., "Hypertext Transfer Protocol (HTTP) over | Bishop, M., "Hypertext Transfer Protocol (HTTP) over | |||
QUIC", draft-ietf-quic-http-07 (work in progress), October | QUIC", draft-ietf-quic-http-13 (work in progress), June | |||
2017. | 2018. | |||
[Swett16] Swett, I., "QUIC Deployment Experience at Google (IETF96 | [Swett16] Swett, I., "QUIC Deployment Experience at Google (IETF96 | |||
QUIC BoF presentation)", July 2016, | QUIC BoF presentation)", July 2016, | |||
<https://www.ietf.org/proceedings/96/slides/slides-96- | <https://www.ietf.org/proceedings/96/slides/slides-96- | |||
quic-3.pdf>. | quic-3.pdf>. | |||
[Trammell16] | [Trammell16] | |||
Trammell, B. and M. Kuehlewind, "Internet Path | Trammell, B. and M. Kuehlewind, "Internet Path | |||
Transparency Measurements using RIPE Atlas (RIPE72 MAT | Transparency Measurements using RIPE Atlas (RIPE72 MAT | |||
presentation)", May 2016, <https://ripe72.ripe.net/wp- | presentation)", May 2016, <https://ripe72.ripe.net/wp- | |||
End of changes. 27 change blocks. | ||||
42 lines changed or deleted | 41 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |