rfc9287v2.txt | rfc9287.txt | |||
---|---|---|---|---|
skipping to change at line 12 ¶ | skipping to change at line 12 ¶ | |||
Internet Engineering Task Force (IETF) M. Thomson | Internet Engineering Task Force (IETF) M. Thomson | |||
Request for Comments: 9287 Mozilla | Request for Comments: 9287 Mozilla | |||
Category: Standards Track July 2022 | Category: Standards Track July 2022 | |||
ISSN: 2070-1721 | ISSN: 2070-1721 | |||
Greasing the QUIC Bit | Greasing the QUIC Bit | |||
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. | |||
Status of This Memo | Status of This Memo | |||
This is an Internet Standards Track document. | This is an Internet Standards Track document. | |||
This document is a product of the Internet Engineering Task Force | This document is a product of the Internet Engineering Task Force | |||
(IETF). It represents the consensus of the IETF community. It has | (IETF). It represents the consensus of the IETF community. It has | |||
received public review and has been approved for publication by the | received public review and has been approved for publication by the | |||
Internet Engineering Steering Group (IESG). Further information on | Internet Engineering Steering Group (IESG). Further information on | |||
skipping to change at line 60 ¶ | skipping to change at line 60 ¶ | |||
3.2. Using the QUIC Bit | 3.2. Using the QUIC Bit | |||
4. Security Considerations | 4. Security Considerations | |||
5. IANA Considerations | 5. IANA Considerations | |||
6. References | 6. References | |||
6.1. Normative References | 6.1. Normative References | |||
6.2. Informative References | 6.2. Informative References | |||
Author's Address | 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-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 a liability than an asset. If systems | in every packet is more of a liability than an asset. If systems | |||
come to depend on a fixed value, then it might become infeasible to | come to depend on a fixed value, then it might become infeasible to | |||
define a version of QUIC that attributes semantics to this bit. | define a version of QUIC that attributes semantics to this bit. | |||
skipping to change at line 97 ¶ | skipping to change at line 98 ¶ | |||
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-most significant bit of the first byte | Bit is defined as the second-most significant bit of the first byte | |||
of QUIC packets (that is, the value 0x40). | of QUIC packets (that is, the value 0x40). | |||
skipping to change at line 179 ¶ | skipping to change at line 181 ¶ | |||
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 | |||
skipping to change at line 212 ¶ | skipping to change at line 215 ¶ | |||
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/info/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/info/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/info/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-05, 30 June 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-05>. | 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/info/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/info/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/info/rfc9170>. | December 2021, <https://www.rfc-editor.org/info/rfc9170>. | |||
Author's Address | Author's Address | |||
End of changes. 9 change blocks. | ||||
15 lines changed or deleted | 25 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |