| 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. | ||||