<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.16 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-bit-grease-02" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.11.1 -->
  <front>
    <title>Greasing the QUIC Bit</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-bit-grease-02"/>
    <author initials="M." surname="Thomson" fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <date year="2021" month="November" day="10"/>
    <area>TSV</area>
    <workgroup>quic</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document describes a method for negotiating the ability to send an
arbitrary value for the second-to-most significant bit in QUIC packets.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
  QUIC Working Group mailing list (quic@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/">https://mailarchive.ietf.org/arch/browse/quic/</eref>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/quicwg/quic-bit-grease">https://github.com/quicwg/quic-bit-grease</eref>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>QUIC <xref target="QUIC" format="default"/> intentionally describes a very narrow set
of fields that are visible to entities other than endpoints.  Beyond those
characteristics that are defined as invariant
<xref target="QUIC-INVARIANTS" format="default"/>, very little about the "wire
image" <xref target="RFC8546" format="default"/> of QUIC is visible.</t>
      <t>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 <xref target="QUIC" format="default"/>.  The purpose of
having a fixed value is to allow intermediaries and endpoints to efficiently
distinguish between QUIC and other protocols; see <xref target="DEMUX" format="default"/> for a
description of a scheme that QUIC can integrate with as a result.  As this bit
effectively identifies a packet as QUIC, it is sometimes referred to as the
"QUIC Bit".</t>
      <t>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.</t>
      <t>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
<xref target="USE-IT" format="default"/>.</t>
    </section>
    <section anchor="conventions-and-definitions" numbered="true" toc="default">
      <name>Conventions and Definitions</name>
      <t>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 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <t>This document uses terms and notational conventions from <xref target="QUIC" format="default"/>.</t>
    </section>
    <section anchor="the-grease-quic-bit-transport-parameter" numbered="true" toc="default">
      <name>The Grease QUIC Bit Transport Parameter</name>
      <t>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.</t>
      <t>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).</t>
      <t>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.</t>
      <section anchor="clearing-the-quic-bit" numbered="true" toc="default">
        <name>Clearing the QUIC Bit</name>
        <t>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 are affected, including Retry,
Initial, and Handshake packets.</t>
        <t>A client MAY also clear the QUIC Bit in Initial packets that are sent prior to
receiving transport parameters from the server.  A client can only clear the QUIC Bit if
such packets include a token provided by the server in a NEW_TOKEN frame on a
connection where the server also included the grease_quic_bit transport
parameter.  To allow for changes in server configuration, clients SHOULD set
the QUIC Bit if the token was provided more than 7 days prior.</t>
      </section>
      <section anchor="using-the-quic-bit" numbered="true" toc="default">
        <name>Using the QUIC Bit</name>
        <t>The purpose of this extension is to allow for the use of the QUIC Bit by later
extensions.</t>
        <t>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.  Endpoints MAY
send a signal prior to this negotiation completing, but any value carried by the
bit cannot be used until it is clear that the peer is using the extension.</t>
        <t>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.
Including both extensions allows for the QUIC Bit to be greased even if the
alternative use is not supported.</t>
        <t>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.</t>
        <t>Extensions that define semantics for the QUIC Bit can be negotiated without
using the grease_quic_bit transport parameter.</t>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>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.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document registers the grease_quic_bit transport parameter in the "QUIC
Transport Parameters" registry established in Section 22.2 of <xref target="QUIC" format="default"/>.  The
following fields are registered:</t>
      <dl>
        <dt>
Value:  </dt>
        <dd>
          <t>0x2ab2</t>
        </dd>
        <dt>
Parameter Name:  </dt>
        <dd>
          <t>grease_quic_bit</t>
        </dd>
        <dt>
Status:  </dt>
        <dd>
          <t>Permanent</t>
        </dd>
        <dt>
Specification:  </dt>
        <dd>
          <t>This document.</t>
        </dd>
        <dt>
Date:  </dt>
        <dd>
          <t>Date of registration.</t>
        </dd>
        <dt>
Contact:  </dt>
        <dd>
          <t>QUIC Working Group (quic@ietf.org)</t>
        </dd>
        <dt>
Change Controller:  </dt>
        <dd>
          <t>IETF (iesg@ietf.org)</t>
        </dd>
        <dt>
Notes:  </dt>
        <dd>
          <t>(none)</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="QUIC-INVARIANTS">
          <front>
            <title>Version-Independent Properties of QUIC</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the properties of the QUIC transport protocol that are common to all versions of the protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8999"/>
          <seriesInfo name="DOI" value="10.17487/RFC8999"/>
        </reference>
        <reference anchor="RFC8546">
          <front>
            <title>The Wire Image of a Network Protocol</title>
            <author fullname="B. Trammell" initials="B." surname="Trammell">
              <organization/>
            </author>
            <author fullname="M. Kuehlewind" initials="M." surname="Kuehlewind">
              <organization/>
            </author>
            <date month="April" year="2019"/>
            <abstract>
              <t>This document defines the wire image, an abstraction of the information available to an on-path non-participant in a networking protocol.  This abstraction is intended to shed light on the implications that increased encryption has for network functions that use the wire image.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8546"/>
          <seriesInfo name="DOI" value="10.17487/RFC8546"/>
        </reference>
        <reference anchor="DEMUX">
          <front>
            <title>Multiplexing Scheme Updates for Secure Real-time Transport Protocol (SRTP) Extension for Datagram Transport Layer Security (DTLS)</title>
            <author fullname="M. Petit-Huguenin" initials="M." surname="Petit-Huguenin">
              <organization/>
            </author>
            <author fullname="G. Salgueiro" initials="G." surname="Salgueiro">
              <organization/>
            </author>
            <date month="September" year="2016"/>
            <abstract>
              <t>This document defines how Datagram Transport Layer Security (DTLS), Real-time Transport Protocol (RTP), RTP Control Protocol (RTCP), Session Traversal Utilities for NAT (STUN), Traversal Using Relays around NAT (TURN), and ZRTP packets are multiplexed on a single receiving socket.  It overrides the guidance from RFC 5764 ("SRTP                Extension for DTLS"), which suffered from four issues described and fixed in this document.</t>
              <t>This document updates RFC 5764.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7983"/>
          <seriesInfo name="DOI" value="10.17487/RFC7983"/>
        </reference>
        <reference anchor="USE-IT">
          <front>
            <title>Long-term Viability of Protocol Extension Mechanisms</title>
            <author fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Tommy Pauly">
              <organization>Apple</organization>
            </author>
            <date day="12" month="October" year="2021"/>
            <abstract>
              <t>   The ability to change protocols depends on exercising the extension
   and version negotiation mechanisms that support change.  This
   document explores how regular use of new protocol features can ensure
   that it remains possible to deploy changes to a protocol.  Examples
   are given where lack of use caused changes to be more difficult or
   costly.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-iab-use-it-or-lose-it-04"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAIm2i2EAA51Z7W4buRX9z6dg3T8JIBmOmzaxFotdxdZujMYfleWki6Iw
qBlKIjJDTkmOFCXwu/RZ+mQ9lx+jkaPtZrtYIJJmSN577rnn3ksPh0Pmla/k
iB/9bKVwSi+5X0n+t/vLc/5G+SNWmkKLGi+UViz8UEm/GP6rVcVwrvxwSWvk
8OSUFcLLpbHbEXe+ZEw1dsS9bZ0/PTk5w3OBN0d8dveebYz9uLSmbUac9mEf
5RY/lSN+qb20WvrhBZ3EmPNClw+iMhqnb6VjjRrxf3hTDLgz1lu5cPi0renD
PxkTrV8ZO2J8yDj+U9qN+NUxn61M7YwOv0VHroT1Su89MHYptPosvDIaL5jP
qqpEeCJroaoRr/2PldlI7a1ptscwkjFtbI0FazmCu3rR+8aGwyEXc+etKPDi
bKUcB4xtjfW8lK6wai4dF7yWMLnkWMs10PMKO6QAiLmqlN9yb7iTuuRCA0JA
boXd8rWoWhmW0atOFkaXQ2+GtXGeO7XUaqEKgcOwAEDEaDai+Ci9O0721aos
K8nYHwl3a8q2IOcZC+9++fIH+vf76U/nZycnJ4+P2MXDerwhqmq758RawiIt
rDUbmOKZWfCFklXpYJzwHIHna+XUvJLkDG3iFRYamE72C43fysbgAHfM+Ru5
hTP43TjJipUgCKVVzquit2EpF0pLoOJg2FpYBWfZly8/kNHDy+v34+nl+Hp2
R/a/Pjs7e3wcRDMBKcgOcE3rA3ZHG2UlU7VYyiN4/QMt+PPLv8BhuBGgQOyS
+ccUyt+EG+to44WyeDjfekkBkOH0XhiwLes5sRJrCrzAsk/4JcY3Bw5rHYDn
L3JYHh8BFJnStLYBTjiTHd7BEeSIGEJDAbS1LBXQorgB5A73EJgFnFAIT7Vl
JeGtl61yKz6XfiNlMoVWxcA11iATTeW+AyCSoLuYXN3/nRB/dfb6TwCQ6ClY
ZEpDzCFoBHfFStYyhjLsCeSCcUsLCeEb5VeEiOBWurby8HRMgYcrQJfBSllQ
moGEqiQyLYI3GVaspE0HnIjvoBNIMVXjDYiEtBbIECC0oWRHncghsh/glOwh
IgIJ5VPYgtmubRoIED2vkdhcG0rrhtIUXtLWeeeDgR2EjM6J7qBJu4BHonQc
4bWxIbyV6gSBMob+d0g2oHO5gAY6L2vHC1OHHNvZ8uRcnAesPavVcgVyyrAA
2kXCn/IzkjKmtUtBC97E3PMead96IOGgjDpmpWE5PgDyEktsSakN5RILuWyF
hcS1voUnbSBrF85B/NTTRjqcwklHMoiddgHpBjqASEbBIEkrFRWcrAg7CSHM
NhDvgK5B1AsJssTtkgACJu2F0iEuel9MkxeQoW0XpFKBc5bMC2+67lWWPJB8
ZZqYbGQN/RD3JENgAioIIrFGHREEMi3fwUGqdX83GV7Ovr8cXhwjzEP8OkRt
NXZYmfAR+c5IqM+NXkcRjvy8ILhU+B6lCaWUUy11/Ojq/m52NIj/8uub8Hk6
AQ7TyQV9vns7fveu+8DSG3dvb+7fXew+7Vae31xdTa4v4mL8yvd+YkdX41/w
hKw6urmdXd5cj98dEaH3A0zajbDMU141FjElAWS5oJS05s357X/+/eIlyR3k
5PTFCwh4+vL6xauX+LIBkeNpRkMJ4lcAv2WiaaSwtAtkD9rSKC8q9AnIebcy
G80pzwnO/aoMzBE+ZHpEFhktYrEjtnSgL6ypYUjS4BATgj10Trueic863t5m
3sb4xHbpgdqeB6oVhwj+7OTTqZifPg+6OKdyQ4Vly+fQXV5UKsCoS+akRYqm
QnBoI5I/ejkqKlKkbnxi+3d7KUOsZa1GzoaOK6ntoS0DmdB4geUhsxofNV0b
PextTwEVBJyWoangUF6QnhJ/i0SZTcfXd7c309nD7Xg6vprMJtOHyXR6MwWi
4xJOedX1od+C2BM1yGlOzjOQLXjTOQueUpdCAhdMhVEnXSeVI5hQ7QJKTInF
msXa8fubgCyj2bpnAXXlBj29OPn08uQ5gcBjcCPeqIMNcOy9hwOQOWtlWgfy
oxKvUQrLzosnmB2UUbWgXURRyAbGnAynsxlV2kwwQgnbLWXvWKo1IatY7AAK
HALzQwLSSzAJkBdw1VLzGz9GHA5HLVTKorVBW1fEvJX4GHQU2VjGYkQpSfVo
Q5FN+ttPjLjLLnCUkxDKChrwdJRhbLLrd1aZwmv5zTwL2Y9OQ1Jkxr8wl9Dp
aEKtRVdQYFmONQlT7OIDHYmjMqRuZxBLcnt4S95qgAuS+1BA4v6trqQjtYrR
kJ/Qn1PBBkOJjeA/WEOcxJQhdKqHOw6lyMRqN4ZU9tOGY/6CZkWAYp0siWcF
Tgw7fY2OC9ouQnsmS/RfuqjaUD+n0tvtAH0BKpWoomq/7aK9m0r2yAfNNvhO
Ur6HB1BNG/XQTUNBsLyxitLA9Iw/aG0IZszkpKPd+cSvwOpD5y+Ya4tVd3h0
k/olbz6iueqScb7t7R7KEb+efHiY3fx1co3Dqemj/oz1VHITWtDeqgBCOqH8
3zRlnWukXbnnJ0XADKWXkizN2+LIhVq2NlS4QfLa8R0F2ROXYw4H/zbQv87H
0JyGfvQVL8XWRfBTDt5/dZcQa+BuZknKnIm7N61kLesaxp5BgLYSxM9uKdFn
0n2hXXYta2pod+3qU7HPepIncGpIIgShNafxIU0M36ISUSWDZySQoDsxUTWB
WVrK0qUGSOSGuzdrYehBYphafe5GuCQ64QsrMGVvCdbuvoE4VBRo+XoJ3sFC
CtNDhdAgPLPzjJwPJaZznZ4pG97KiYT9w6UEnaS3HY599UpqSLcUoRJScubV
AYnucgObYOZoKklbDjgmiZ5ikneqSx3qrik0NFzNZSwJLU6u0miXkzN13EGV
Q+nItNvBwNhPhhRS0MmD0Pt0pIujUDf1/PrI4XLBYaIsQ9Od8f42VsxWpl2u
vlJg1pe2rCqpMgUoUsHJI1tsXvohty0KQdefJN3pHIxtcVoeBAV79FgmukIR
e++9fv0Yqp1lPPSfu4yLeXogmyK7IyYlzbM6KQgTFd3vhUuywDAihummaVki
TtNdxTlcgqm36Icvk9o9SWnTVkBPstxJBM2zdSoWEdJ0cG7oIq+7q6XUWfST
aWaYWBtV9lOij2Xk/mB/XZAXK8EOm249ukuGrzuIr3I5BjcpYC+olDklXWns
bGHxumInDGFy2XZp82uNWI5gX4hZZuATYf1/BZVmENNiyvg9jX0csO4kWkS6
+MD061B2YtlyTwc4lS4xJZEKR9NdZFpY7C0M5u7ueQzKSL6SDO7FcKH6m96I
VBhM+HED8OCt2dA9Tbq9iAWW1+hm4r2SF+4jhSzdTwXBDtiEeknXCapoK59B
6W9Oy/q3oeQj211i0dU53V+02kubKdL5uTTIb9pBS09v8ritQbezWZnsFMtP
i4o6RRpasphlg7EtzXguBuByfD3+DfCtXKKKUVv17TNbvH4NdejAvOyO0qZ2
y6Wjvhf1MWblXWqXTk+PT8nbbh4PQxtbGBImwjzdQlNrmA2U5Yix9yS/Izbi
cdJmrDuVX9MfCPDk6QjF7rzwraNHt5hIhKbZkt2lDjv+2QDPZvviyS5Afvqd
/iVTk0uRR4yd00VU4emNwI8PCAsZ/jP9dYQ/o9N/pL+3HGMSe47XI9FolYWT
0tLCy8nsJ/4M7F32X702GIfp8TOM5vI5+y9ruOTD6BkAAA==

-->

</rfc>
