Skip to main content

Greasing the QUIC Bit
draft-ietf-quic-bit-grease-03

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft that was ultimately published as RFC 9287.
Author Martin Thomson
Last updated 2022-06-01 (Latest revision 2022-05-17)
Replaces draft-thomson-quic-bit-grease
RFC stream Internet Engineering Task Force (IETF)
Formats
Reviews
Additional resources Mailing list discussion
Stream WG state Submitted to IESG for Publication
Associated WG milestone
Greasing the QUIC bit to IESG
Document shepherd Lucas Pardue
Shepherd write-up Show Last changed 2022-04-08
IESG IESG state Became RFC 9287 (Proposed Standard)
Consensus boilerplate Yes
Telechat date (None)
Responsible AD Zaheduzzaman Sarker
Send notices to lucaspardue.24.7@gmail.com
IANA IANA review state IANA OK - Actions Needed
draft-ietf-quic-bit-grease-03
quic                                                          M. Thomson
Internet-Draft                                                   Mozilla
Intended status: Standards Track                             18 May 2022
Expires: 19 November 2022

                         Greasing the QUIC Bit
                     draft-ietf-quic-bit-grease-03

Abstract

   This document describes a method for negotiating the ability to send
   an arbitrary value for the second-to-most significant bit in QUIC
   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

   This Internet-Draft is submitted in full conformance with the
   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
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 19 November 2022.

Thomson                 Expires 19 November 2022                [Page 1]
Internet-Draft            Greasing the QUIC Bit                 May 2022

Copyright Notice

   Copyright (c) 2022 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Conventions and Definitions . . . . . . . . . . . . . . . . .   3
   3.  The Grease QUIC Bit Transport Parameter . . . . . . . . . . .   3
     3.1.  Clearing the QUIC Bit . . . . . . . . . . . . . . . . . .   3
     3.2.  Using the QUIC Bit  . . . . . . . . . . . . . . . . . . .   4
   4.  Security Considerations . . . . . . . . . . . . . . . . . . .   5
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   5
   6.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   5
     6.1.  Normative References  . . . . . . . . . . . . . . . . . .   5
     6.2.  Informative References  . . . . . . . . . . . . . . . . .   6
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   6

1.  Introduction

   QUIC [QUIC] intentionally describes a very narrow set of fields that
   are visible to entities other than endpoints.  Beyond those
   characteristics that are defined as invariant [QUIC-INVARIANTS], very
   little about the "wire image" [RFC8546] of QUIC is visible.

   The second-to-most significant bit of the first byte in every 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
   efficiently distinguished from other protocols; see [DEMUX] for a
   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
   "QUIC Bit".

   Where endpoints and the intermediaries that support them do not
   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
   to depend on a fixed value, then it might become infeasible to define
   a version of QUIC that attributes semantics to this bit.

Thomson                 Expires 19 November 2022                [Page 2]
Internet-Draft            Greasing the QUIC Bit                 May 2022

   In order to safeguard future use of this bit, this document defines a
   QUIC transport parameter that indicates that an endpoint is willing
   to receive QUIC packets containing any value for this bit.  By
   sending different values for this bit, the hope is that the value
   will remain available for future use [USE-IT].

2.  Conventions and Definitions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

   This document uses terms and notational conventions from [QUIC].

3.  The Grease QUIC Bit Transport Parameter

   The grease_quic_bit transport parameter (0x2ab2) can be sent by both
   client and server.  The transport parameter is sent with an empty
   value; an endpoint that understands this transport parameter MUST
   treat receipt of a non-empty value as a connection error of type
   TRANSPORT_PARAMETER_ERROR.

   Advertising the grease_quic_bit transport parameter indicates that
   packets sent to this endpoint MAY set a value of 0 for the QUIC Bit.
   The QUIC Bit is defined as the second-to-most significant bit of the
   first byte of QUIC packets (that is, the value 0x40).

   A server MUST respect the value it previously provided for the
   grease_quic_bit transport parameter if it accepts 0-RTT.  A client
   MAY forget the value.  In all other cases, only the presence or
   absence of the transport parameter in the current handshake is used
   to determine what values can be sent in the QUIC Bit.

3.1.  Clearing the QUIC Bit

   Endpoints that receive the grease_quic_bit transport parameter from a
   peer MAY set the QUIC Bit to any value in packets they send to that
   peer.  Endpoints SHOULD set the QUIC Bit to an unpredictable value
   unless another extension assigns specific meaning to the value of the
   bit.

   All packets sent after receiving and processing transport parameters
   might be affected, including Initial, Handshake, and Retry packets.

Thomson                 Expires 19 November 2022                [Page 3]
Internet-Draft            Greasing the QUIC Bit                 May 2022

   A client MAY also clear the QUIC Bit in Initial, Handshake, or 0-RTT
   packets that are sent prior to receiving transport parameters from
   the server.  However, a client MUST NOT clear the QUIC Bit 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 than 604800
   seconds (7 days) prior on a connection where the server also included
   the grease_quic_bit transport parameter.

      |  This 7 day limit allows for changes in server configuration.
      |  If server configuration changes and a client does not set the
      |  QUIC Bit, then it is possible that a server will drop packets,
      |  resulting in connection failures.

   A server MUST clear the QUIC bit only after processing transport
   parameters from a client.  A server cannot remember that a client
   negotiated the extension in a previous connection and clear the QUIC
   Bit based on that information.

   An endpoint cannot clear the QUIC Bit without knowing whether the
   peer supports the extension.  As Stateless Reset packets
   (Section 10.3 of [QUIC]) are only used after a loss of connection
   state, endpoints are unlikely to be able to clear the QUIC Bit on
   Stateless Reset packets.

3.2.  Using the QUIC Bit

   The purpose of this extension is to allow for the use of the QUIC Bit
   by later extensions.

   Extensions to QUIC that define semantics for the QUIC Bit can be
   negotiated at the same time as the grease_quic_bit transport
   parameter.  In this case, a recipient needs to be able to distinguish
   a randomized value from a value carrying information according to the
   extension.  Extensions that use the QUIC Bit MUST negotiate their use
   prior to acting on any semantic.

   For example, an extension might define a transport parameter that is
   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
   according to rules defined by the extension, they might also be
   randomized as specified in this document.

   Receiving a transport parameter for an extension that uses the QUIC
   Bit could be used to confirm that a peer supports the semantic
   defined in the extension.  To avoid acting on a randomized signal,
   the extension can require that endpoints set the QUIC Bit according
   to the rules of the extension, but defer acting on the information
   conveyed until the transport parameter for the extension is received.

Thomson                 Expires 19 November 2022                [Page 4]
Internet-Draft            Greasing the QUIC Bit                 May 2022

   Extensions that define semantics for the QUIC Bit can be negotiated
   without using the grease_quic_bit transport parameter.  However,
   including both extensions allows for the QUIC Bit to be greased even
   if the alternative use is not supported.

4.  Security Considerations

   This document introduces no new security considerations for endpoints
   or entities that can rely on endpoint cooperation.  However, this
   change makes the task of identifying QUIC more difficult without
   cooperation of endpoints.  This sometimes works counter to the
   security goals of network operators who rely on network
   classification to identify threats.

5.  IANA Considerations

   This document registers the grease_quic_bit transport parameter in
   the "QUIC Transport Parameters" registry established in Section 22.2
   of [QUIC].  The following fields are registered:

   Value:  0x2ab2

   Parameter Name:  grease_quic_bit

   Status:  Permanent

   Specification:  This document.

   Date:  Date of registration.

   Contact:  QUIC Working Group (quic@ietf.org)

   Change Controller:  IETF (iesg@ietf.org)

   Notes:  (none)

6.  References

6.1.  Normative References

   [QUIC]     Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
              Multiplexed and Secure Transport", RFC 9000,
              DOI 10.17487/RFC9000, May 2021,
              <https://www.rfc-editor.org/rfc/rfc9000>.

Thomson                 Expires 19 November 2022                [Page 5]
Internet-Draft            Greasing the QUIC Bit                 May 2022

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/rfc/rfc2119>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.

6.2.  Informative References

   [DEMUX]    Petit-Huguenin, M. and G. Salgueiro, "Multiplexing Scheme
              Updates for Secure Real-time Transport Protocol (SRTP)
              Extension for Datagram Transport Layer Security (DTLS)",
              RFC 7983, DOI 10.17487/RFC7983, September 2016,
              <https://www.rfc-editor.org/rfc/rfc7983>.

   [QUIC-INVARIANTS]
              Thomson, M., "Version-Independent Properties of QUIC",
              RFC 8999, DOI 10.17487/RFC8999, May 2021,
              <https://www.rfc-editor.org/rfc/rfc8999>.

   [RFC8546]  Trammell, B. and M. Kuehlewind, "The Wire Image of a
              Network Protocol", RFC 8546, DOI 10.17487/RFC8546, April
              2019, <https://www.rfc-editor.org/rfc/rfc8546>.

   [USE-IT]   Thomson, M. and T. Pauly, "Long-Term Viability of Protocol
              Extension Mechanisms", RFC 9170, DOI 10.17487/RFC9170,
              December 2021, <https://www.rfc-editor.org/rfc/rfc9170>.

Author's Address

   Martin Thomson
   Mozilla
   Email: mt@lowentropy.net

Thomson                 Expires 19 November 2022                [Page 6]