rfc9287.original   rfc9287.txt 
quic M. Thomson Internet Engineering Task Force (IETF) M. Thomson
Internet-Draft Mozilla Request for Comments: 9287 Mozilla
Intended status: Standards Track 9 June 2022 Category: Standards Track July 2022
Expires: 11 December 2022 ISSN: 2070-1721
Greasing the QUIC Bit Greasing the QUIC Bit
draft-ietf-quic-bit-grease-04
Abstract Abstract
This document describes a method for negotiating the ability to send This document describes a method for negotiating the ability to send
an arbitrary value for the second-to-most significant bit in QUIC an arbitrary value for the second-most significant bit in QUIC
packets. packets.
Discussion Venues
This note is to be removed before publishing as an RFC.
Discussion of this document takes place on the QUIC Working Group
mailing list (quic@ietf.org), which is archived at
https://mailarchive.ietf.org/arch/browse/quic/
(https://mailarchive.ietf.org/arch/browse/quic/).
Source for this draft and an issue tracker can be found at
https://github.com/quicwg/quic-bit-grease (https://github.com/quicwg/
quic-bit-grease).
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
This Internet-Draft will expire on 11 December 2022. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9287.
Copyright Notice Copyright Notice
Copyright (c) 2022 IETF Trust and the persons identified as the Copyright (c) 2022 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 (https://trustee.ietf.org/ Provisions Relating to IETF Documents
license-info) in effect on the date of publication of this document. (https://trustee.ietf.org/license-info) in effect on the date of
Please review these documents carefully, as they describe your rights publication of this document. Please review these documents
and restrictions with respect to this document. Code Components carefully, as they describe your rights and restrictions with respect
extracted from this document must include Revised BSD License text as to this document. Code Components extracted from this document must
described in Section 4.e of the Trust Legal Provisions and are include Revised BSD License text as described in Section 4.e of the
provided without warranty as described in the Revised BSD License. Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction
2. Conventions and Definitions . . . . . . . . . . . . . . . . . 3 2. Conventions and Definitions
3. The Grease QUIC Bit Transport Parameter . . . . . . . . . . . 3 3. The Grease QUIC Bit Transport Parameter
3.1. Clearing the QUIC Bit . . . . . . . . . . . . . . . . . . 3 3.1. Clearing the QUIC Bit
3.2. Using the QUIC Bit . . . . . . . . . . . . . . . . . . . 4 3.2. Using the QUIC Bit
4. Security Considerations . . . . . . . . . . . . . . . . . . . 5 4. Security Considerations
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 5. IANA Considerations
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 5 6. References
6.1. Normative References . . . . . . . . . . . . . . . . . . 5 6.1. Normative References
6.2. Informative References . . . . . . . . . . . . . . . . . 6 6.2. Informative References
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 6 Author's Address
1. Introduction 1. Introduction
QUIC [QUIC] intentionally describes a very narrow set of fields that The version-independent definition of QUIC [QUIC-INVARIANTS]
are visible to entities other than endpoints. Beyond those intentionally describes a very narrow set of fields that are visible
characteristics that are defined as invariant [QUIC-INVARIANTS], very to entities other than endpoints. Beyond those characteristics that
little about the "wire image" [RFC8546] of QUIC is visible. are invariant, very little about the "wire image" [RFC8546] of QUIC
is visible.
The second-to-most significant bit of the first byte in every QUIC The second-most significant bit of the first byte in every QUIC
packet is defined as having a fixed value in QUIC version 1 [QUIC]. packet is defined as having a fixed value in QUIC version 1 [QUIC].
The purpose of having a fixed value is to allow QUIC to be The purpose of having a fixed value is to allow endpoints to
efficiently distinguished from other protocols; see [DEMUX] for a efficiently distinguish QUIC from other protocols; see [DEMUX] for a
description of a system that might use this property. As this bit description of a system that might use this property. As this bit
can identify a packet as QUIC, it is sometimes referred to as the can identify a packet as QUIC, it is sometimes referred to as the
"QUIC Bit". "QUIC Bit".
Where endpoints and the intermediaries that support them do not Where endpoints and the intermediaries that support them do not
depend on the QUIC Bit having a fixed value, sending the same value depend on the QUIC Bit having a fixed value, sending the same value
in every packet is more of liability than an asset. If systems come in every packet is more of a liability than an asset. If systems
to depend on a fixed value, then it might become infeasible to define come to depend on a fixed value, then it might become infeasible to
a version of QUIC that attributes semantics to this bit. define a version of QUIC that attributes semantics to this bit.
In order to safeguard future use of this bit, this document defines a In order to safeguard future use of this bit, this document defines a
QUIC transport parameter that indicates that an endpoint is willing QUIC transport parameter that indicates that an endpoint is willing
to receive QUIC packets containing any value for this bit. By to receive QUIC packets containing any value for this bit. By
sending different values for this bit, the hope is that the value sending different values for this bit, the hope is that the value
will remain available for future use [USE-IT]. will remain available for future use [USE-IT].
2. Conventions and Definitions 2. Conventions and Definitions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
This document uses terms and notational conventions from [QUIC]. This document uses terms and notational conventions from [QUIC].
3. The Grease QUIC Bit Transport Parameter 3. The Grease QUIC Bit Transport Parameter
The grease_quic_bit transport parameter (0x2ab2) can be sent by both The grease_quic_bit transport parameter (0x2ab2) is defined for QUIC
version 1 [QUIC]. This transport parameter can be sent by both
client and server. The transport parameter is sent with an empty client and server. The transport parameter is sent with an empty
value; an endpoint that understands this transport parameter MUST value; an endpoint that understands this transport parameter MUST
treat receipt of a non-empty value of the transport parameter as a treat receipt of a non-empty value of the transport parameter as a
connection error of type TRANSPORT_PARAMETER_ERROR. connection error of type TRANSPORT_PARAMETER_ERROR.
An endpoint that advertises the grease_quic_bit transport parameter An endpoint that advertises the grease_quic_bit transport parameter
MUST accept packets with the QUIC Bit set to a value of 0. The QUIC MUST accept packets with the QUIC Bit set to a value of 0. The QUIC
Bit is defined as the second-to-most significant bit of the first Bit is defined as the second-most significant bit of the first byte
byte of QUIC packets (that is, the value 0x40). of QUIC packets (that is, the value 0x40).
3.1. Clearing the QUIC Bit 3.1. Clearing the QUIC Bit
Endpoints that receive the grease_quic_bit transport parameter from a Endpoints that receive the grease_quic_bit transport parameter from a
peer SHOULD set the QUIC Bit to an unpredictable value unless another peer SHOULD set the QUIC Bit to an unpredictable value unless another
extension assigns specific meaning to the value of the bit. extension assigns specific meaning to the value of the bit.
Endpoints can set the QUIC Bit to 0 on all packets that are sent Endpoints can set the QUIC Bit to 0 on all packets that are sent
after receiving and processing transport parameters. This could after receiving and processing transport parameters. This could
include Initial, Handshake, and Retry packets. include Initial, Handshake, and Retry packets.
A client MAY also set the QUIC Bit to 0 in Initial, Handshake, or A client MAY also set the QUIC Bit to 0 in Initial, Handshake, or
0-RTT packets that are sent prior to receiving transport parameters 0-RTT packets that are sent prior to receiving transport parameters
from the server. However, a client MUST NOT set the QUIC Bit to 0 from the server. However, a client MUST NOT set the QUIC Bit to 0
unless the Initial packets it sends include a token provided by the unless the Initial packets it sends include a token provided by the
server in a NEW_TOKEN frame (Section 19.7 of [QUIC]), received less server in a NEW_TOKEN frame (Section 19.7 of [QUIC]), received less
than 604800 seconds (7 days) prior on a connection where the server than 604800 seconds (7 days) prior on a connection where the server
also included the grease_quic_bit transport parameter. also included the grease_quic_bit transport parameter.
| This 7 day limit allows for changes in server configuration. | This 7-day limit allows for changes in server configuration.
| If server configuration changes and a client does not set the | If server configuration changes and a client does not set the
| QUIC Bit, then it is possible that a server will drop packets, | QUIC Bit, then it is possible that a server will drop packets,
| resulting in connection failures. | resulting in connection failures.
A server MUST set the QUIC bit to 0 only after processing transport A server MUST set the QUIC Bit to 0 only after processing transport
parameters from a client. A server MUST NOT remember that a client parameters from a client. A server MUST NOT remember that a client
negotiated the extension in a previous connection and set the QUIC negotiated the extension in a previous connection and set the QUIC
Bit to 0 based on that information. Bit to 0 based on that information.
An endpoint MUST NOT set the QUIC Bit to 0 without knowing whether An endpoint MUST NOT set the QUIC Bit to 0 without knowing whether
the peer supports the extension. As Stateless Reset packets the peer supports the extension. As Stateless Reset packets
(Section 10.3 of [QUIC]) are only used after a loss of connection (Section 10.3 of [QUIC]) are only used after a loss of connection
state, endpoints are unlikely to be able to set the QUIC Bit to 0 on state, endpoints are unlikely to be able to set the QUIC Bit to 0 on
Stateless Reset packets. Stateless Reset packets.
skipping to change at page 4, line 39 skipping to change at line 162
a randomized value from a value carrying information according to the a randomized value from a value carrying information according to the
extension. Extensions that use the QUIC Bit MUST negotiate their use extension. Extensions that use the QUIC Bit MUST negotiate their use
prior to acting on any semantic. prior to acting on any semantic.
For example, an extension might define a transport parameter that is For example, an extension might define a transport parameter that is
sent in addition to the grease_quic_bit transport parameter. Though sent in addition to the grease_quic_bit transport parameter. Though
the value of the QUIC Bit in packets received by a peer might be set the value of the QUIC Bit in packets received by a peer might be set
according to rules defined by the extension, they might also be according to rules defined by the extension, they might also be
randomized as specified in this document. randomized as specified in this document.
Receiving a transport parameter for an extension that uses the QUIC The receipt of a transport parameter for an extension that uses the
Bit could be used to confirm that a peer supports the semantic QUIC Bit could be used to confirm that a peer supports the semantic
defined in the extension. To avoid acting on a randomized signal, defined in the extension. To avoid acting on a randomized signal,
the extension can require that endpoints set the QUIC Bit according the extension can require that endpoints set the QUIC Bit according
to the rules of the extension, but defer acting on the information to the rules of the extension but defer acting on the information
conveyed until the transport parameter for the extension is received. conveyed until the transport parameter for the extension is received.
Extensions that define semantics for the QUIC Bit can be negotiated Extensions that define semantics for the QUIC Bit can be negotiated
without using the grease_quic_bit transport parameter. However, without using the grease_quic_bit transport parameter. However,
including both extensions allows for the QUIC Bit to be greased even including both extensions allows for the QUIC Bit to be greased even
if the alternative use is not supported. if the alternative use is not supported.
4. Security Considerations 4. Security Considerations
This document introduces no new security considerations for endpoints This document introduces no new security considerations for endpoints
or entities that can rely on endpoint cooperation. However, this or entities that can rely on endpoint cooperation. However, this
change makes the task of identifying QUIC more difficult without change makes the task of identifying QUIC more difficult without
cooperation of endpoints. This sometimes works counter to the cooperation of endpoints. This sometimes works counter to the
security goals of network operators who rely on network security goals of network operators who rely on network
classification to identify threats. classification to identify threats; see Section 3.1 of
[MANAGEABILITY] for a more comprehensive treatment of this topic.
5. IANA Considerations 5. IANA Considerations
This document registers the grease_quic_bit transport parameter in This document registers the grease_quic_bit transport parameter in
the "QUIC Transport Parameters" registry established in Section 22.3 the "QUIC Transport Parameters" registry established in Section 22.3
of [QUIC]. The following fields are registered: of [QUIC]. The following fields are registered:
Value: 0x2ab2 Value: 0x2ab2
Parameter Name: grease_quic_bit Parameter Name: grease_quic_bit
Status: Permanent Status: Permanent
Specification: This document. Specification: RFC 9287
Date: Date of registration.
Contact: QUIC Working Group (quic@ietf.org) Date: 2022-07-13
Change Controller: IETF (iesg@ietf.org) Change Controller: IETF (iesg@ietf.org)
Contact: QUIC Working Group (quic@ietf.org)
Notes: (none) Notes: (none)
6. References 6. References
6.1. Normative References 6.1. Normative References
[QUIC] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based [QUIC] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
Multiplexed and Secure Transport", RFC 9000, Multiplexed and Secure Transport", RFC 9000,
DOI 10.17487/RFC9000, May 2021, DOI 10.17487/RFC9000, May 2021,
<https://www.rfc-editor.org/rfc/rfc9000>. <https://www.rfc-editor.org/info/rfc9000>.
[QUIC-INVARIANTS]
Thomson, M., "Version-Independent Properties of QUIC",
RFC 8999, DOI 10.17487/RFC8999, May 2021,
<https://www.rfc-editor.org/info/rfc8999>.
[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, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/rfc/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
6.2. Informative References 6.2. Informative References
[DEMUX] Aboba, B., Salgueiro, G., and C. Perkins, "Multiplexing [DEMUX] Aboba, B., Salgueiro, G., and C. Perkins, "Multiplexing
Scheme Updates for QUIC", Work in Progress, Internet- Scheme Updates for QUIC", Work in Progress, Internet-
Draft, draft-ietf-avtcore-rfc7983bis-04, 12 May 2022, Draft, draft-ietf-avtcore-rfc7983bis-06, 5 August 2022,
<https://datatracker.ietf.org/doc/html/draft-ietf-avtcore- <https://datatracker.ietf.org/doc/html/draft-ietf-avtcore-
rfc7983bis-04>. rfc7983bis-06>.
[QUIC-INVARIANTS] [MANAGEABILITY]
Thomson, M., "Version-Independent Properties of QUIC", Kuehlewind, M. and B. Trammell, "Manageability of the QUIC
RFC 8999, DOI 10.17487/RFC8999, May 2021, Transport Protocol", Work in Progress, Internet-Draft,
<https://www.rfc-editor.org/rfc/rfc8999>. draft-ietf-quic-manageability-18, 15 July 2022,
<https://datatracker.ietf.org/doc/html/draft-ietf-quic-
manageability-18>.
[RFC8546] Trammell, B. and M. Kuehlewind, "The Wire Image of a [RFC8546] Trammell, B. and M. Kuehlewind, "The Wire Image of a
Network Protocol", RFC 8546, DOI 10.17487/RFC8546, April Network Protocol", RFC 8546, DOI 10.17487/RFC8546, April
2019, <https://www.rfc-editor.org/rfc/rfc8546>. 2019, <https://www.rfc-editor.org/info/rfc8546>.
[USE-IT] Thomson, M. and T. Pauly, "Long-Term Viability of Protocol [USE-IT] Thomson, M. and T. Pauly, "Long-Term Viability of Protocol
Extension Mechanisms", RFC 9170, DOI 10.17487/RFC9170, Extension Mechanisms", RFC 9170, DOI 10.17487/RFC9170,
December 2021, <https://www.rfc-editor.org/rfc/rfc9170>. December 2021, <https://www.rfc-editor.org/info/rfc9170>.
Author's Address Author's Address
Martin Thomson Martin Thomson
Mozilla Mozilla
Email: mt@lowentropy.net Email: mt@lowentropy.net
 End of changes. 31 change blocks. 
83 lines changed or deleted 77 lines changed or added

This html diff was produced by rfcdiff 1.48.