<?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-rfc version 1.7.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-edm-protocol-greasing-04" category="info" consensus="true" submissionType="IAB" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="Protocol Greasing">Maintaining Protocols Using Grease and Variability</title>
    <seriesInfo name="Internet-Draft" value="draft-edm-protocol-greasing-04"/>
    <author fullname="Lucas Pardue">
      <organization>Cloudflare</organization>
      <address>
        <email>lucas@lucaspardue.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="21"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 38?>

<t>Long-term interoperability of protocols is an important goal of the network
standards process. Deployment success can depend on supporting change, which
can include modifying how the protocol is used, extending the protocol, or
replacing the protocol. This document presents concepts, considerations, and
techniques related to protocol maintenance, such as greasing or variability. The
intended audience is protocol designers and implementers.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://intarchboard.github.io/draft-protocol-greasing/draft-edm-protocol-greasing.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-edm-protocol-greasing/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/intarchboard/draft-protocol-greasing"/>.</t>
    </note>
  </front>
  <middle>
    <?line 48?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Long-term interoperability of protocols is an important goal of the network
standards process <xref target="MAINTENANCE"/>. Protocol deployment success
<xref target="SUCCESS"/> can depend on supporting change, which
can include modifying how the protocol is used, extending the protocol, or
replacing the protocol.</t>
      <t>Greasing, a technique initially designed for TLS <xref target="GREASE"/> and later
adopted by other protocols such as QUIC <xref target="QUIC"/>, can help support the
long-term viability of protocol extension points. In these protocols, extension
codepoints are reserved only for greasing and when received must be ignored.
Greasing is suitable for many protocols but not all; <xref section="3.3" sectionFormat="of" target="VIABILITY"/> discusses the applicability and limitations of greasing.
<xref target="grease-considerations"/> provides additional protocol maintenance
considerations.</t>
      <t>Applications are built with the intent of serving user needs <xref target="END-USERS"/>, which might only
require support for a subset of protocol features. Adapting to changing user
needs is a maintenance activity. For example, an HTTP deployment focused on
downloads might want to add support for uploads. Changing use of the application
and transport protocol features can affect the deployment's network traffic
profile. If expectations have been formed around historical patterns of use
i.e., ossification, introducing change might lead to deployment problems. <xref target="variability"/> presents
considerations about how intentionally increasing the variability of protocols
can mitigate some of these concerns.</t>
      <t>Protocol extensions can provide longevity in the face of changing needs or
environment. However, a replacment protocol might be preferred when extensions
are not adequate or feasible. A protocol replacement could aggregate common
extensions and possibly make them mandatory, effectively defining a new baseline
that can simplify deployment and interoperability. A replacement protocol
version may or may not be compatible with other versions. A protocol may or may
not have a mechanism for version selection or agility. <xref target="versions"/> presents
considerations about designing for and/or implementing version negotiation and
migration.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="grease-considerations">
      <name>Considerations for Applying Greasing</name>
      <t>Greasing can take many forms, depending on the protocol and the nature of its
extension points.</t>
      <t>Many protocols register values, codepoints, or numbers in a limited space. A
common approach that has developed in more recent protocols is to reserve a subset of the space for greasing (see
<xref target="GREASE"/>, <xref section="18.1" sectionFormat="of" target="QUIC"/>, or <xref section="7.2.8" sectionFormat="of" target="RFC9114"/>). Values
reserved for the purpose of greasing are herein referred to as grease values.
Implementations that receive grease values are required to ignore them. More
background to this approach is given in <xref section="3.3" sectionFormat="of" target="VIABILITY"/>.
This section provides concrete suggestions for its usage.</t>
      <section anchor="dont-handle-grease-values-as-a-special-case">
        <name>Don't Handle Grease Values as a Special Case</name>
        <t>It is assumed that endpoints should implement robust and broad extension
handling. A receiver or a parser implementation should not treat grease values
as individually special. Instead of identifying each grease value explicitly,
it is better to have a "catch all" mechanism that can handle receipt of unknown
extensions, whether grease values or not, gracefully or without error.</t>
      </section>
      <section anchor="use-unpredictable-grease-values">
        <name>Use Unpredictable Grease Values</name>
        <t>It is recommended that senders pick an unpredictable grease value to include in
relevant protocol elements. This ensures that receiver greasing requirements are
exercised. Using predictable grease values risks ossification. To increase the
variety of grease values, it is advised to reserve a large range. However, the
specific size and distribution of the grease range needs to accommodate the
protocol constraints. For instance, protocols that use 8-bit fields may find it
too costly to dedicate many grease values, while 32-bit or 64-bit fields are
likely to have no limitations.</t>
      </section>
      <section anchor="use-grease-values-at-unpredictable-times">
        <name>Use Grease Values at Unpredictable Times</name>
        <t>It is recommended that senders use grease values at unpredictable times or
sequence points during protocol interactions. This avoids receivers
unintentionally ossifying on the occurrence of greasing in the temporal or
spatial domain.</t>
      </section>
      <section anchor="define-and-register-grease-value-ranges">
        <name>Define and Register Grease Value Ranges</name>
        <t>It is recommended that large grease value sets are allocated in protocol
documents by defining a unique algorithm, to increase the chance that
receiver greasing requirements are exercised. However, the choice of algorithm
needs to consider the spread of values and the size of contiguous blocks between
grease values. It is common for protocol extension designers to want to reserve
a contiguous block of code points in order to aid iteration and experimentation.
Small contiguous blocks increase the chance that such reservations might
unintentionally use grease values, which could lead to interoperability
failures.</t>
        <section anchor="iana-tips">
          <name>Effectively Instructing IANA about grease</name>
          <t>Protocol designers might ask IANA to create new registries for their extension
points. When greasing, it is recommended that only a single entry for the entire
grease value set is registered. When an algorithm has been used, it should be
included in the entry; see for example
https://www.iana.org/assignments/http3-parameters/http3-parameters.xhtml#http3-parameters-frame-types.</t>
          <t>Grease values must not be used or registered for any other purpose. Registries
should include a label to identify the protected grease value range; a label of
"reserved" may be confused with other ranges that are reserved for private or
experimental extensions. An implementer that conflates these two meanings may
cause a new class of interoperability failure. Therefore a label such as
"reserved for greasing" may help to avoid the confusion.</t>
        </section>
      </section>
    </section>
    <section anchor="variability">
      <name>Considerations for Increasing Protocol Variability</name>
      <t>Greasing can maintain protocol extensibility by falsifying active use of its
extension points. However, greasing alone does not ensure positive use of extension mechanisms. A protocol may
define a wide-ranging extension capability that remains unused in the absence of
real use cases. This can lead to ossification that does not expect extensions,
leading to interoperability problems later on.</t>
      <t>Long-term maintenance and interoperability can be ensured by exercising
extension points positively. To some extent this can be thought of as protocol
fuzzing. This might be difficult to exercise because varying the protocol
elements might change the outcome of interactions, leading to real errors.
However, some protocols allow elements to be be safely changed, as shown in the
following examples.</t>
      <section anchor="example-quic-frames">
        <name>Example: QUIC frames</name>
        <t>QUIC packets contain frames. Receivers might build expectations on the
longitudinal aspects of packets or frames - size, ordering, frequency, etc. A
sender can quite often manipulate these parameters and stay compliant to the
requirements of the QUIC protocol.</t>
        <t>A QUIC stream is an ordered reliable byte stream that is serialized as a
sequence of STREAM frames with a length and offset. Receivers are expected to
reassemble frames, which could arrive in any order, into an ordered reliable
byte stream that is readable by applications.</t>
        <t>A form of positive testing is for a sender to unpredictably order the STREAM
frames that it transmits. For example, varying the sequence order of offset
values. This allows to exercise the QUIC reassembly features of the receiver
with the expectation that no failure would occur. However, doing this may
introduce delay or stream head-of-line blocking that affects the performance
aspects of a transmission, which may not be acceptable for a given use case. As
such, positive testing might be most appropriate to use in a subset of
connections, or phases within a connection.</t>
      </section>
    </section>
    <section anchor="versions">
      <name>Considerations for Protocol Versions</name>
      <t>There are intrinsic and well-documented issues related to testing version
negotiation of protocols; see <xref target="EXTENSIBILITY"/> and Sections <xref target="VIABILITY" section="2.1" sectionFormat="bare"/> and <xref target="VIABILITY" section="3.2" sectionFormat="bare"/> of <xref target="VIABILITY"/>. This section will be expanded with advice for protocol
designers and implementers about how to approach these problems.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The considerations in <xref target="MAINTENANCE"/>, <xref target="GREASE"/>, <xref target="END-USERS"/>, and
<xref target="VIABILITY"/> all apply to the topics discussed in this document.</t>
      <t>The use of protocol features, extensions, and versions can already allow
fingerprinting <xref target="PRIVCON"/>. Any techniques that change parameters  in any way, including but
not limited to those discussed in this document, can affect fingerprinting. A
deeper analysis of this topic has been deemed out of scope.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions itself. Guidance on how other documents can effectively
instruct IANA about protocol greasing is provided in <xref target="iana-tips"/></t>
    </section>
  </middle>
  <back>
    <displayreference target="RFC9114" to="HTTP/3"/>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <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"/>
            <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 anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9114">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="MAINTENANCE">
          <front>
            <title>Maintaining Robust Protocols</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="June" year="2023"/>
            <abstract>
              <t>The main goal of the networking standards process is to enable the long-term interoperability of protocols. This document describes active protocol maintenance, a means to accomplish that goal. By evolving specifications and implementations, it is possible to reduce ambiguity over time and create a healthy ecosystem.</t>
              <t>The robustness principle, often phrased as "be conservative in what you send, and liberal in what you accept", has long guided the design and implementation of Internet protocols. However, it has been interpreted in a variety of ways. While some interpretations help ensure the health of the Internet, others can negatively affect interoperability over time. When a protocol is actively maintained, protocol designers and implementers can avoid these pitfalls.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9413"/>
          <seriesInfo name="DOI" value="10.17487/RFC9413"/>
        </reference>
        <reference anchor="SUCCESS">
          <front>
            <title>What Makes for a Successful Protocol?</title>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <date month="July" year="2008"/>
            <abstract>
              <t>The Internet community has specified a large number of protocols to date, and these protocols have achieved varying degrees of success. Based on case studies, this document attempts to ascertain factors that contribute to or hinder a protocol's success. It is hoped that these observations can serve as guidance for future protocol work. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5218"/>
          <seriesInfo name="DOI" value="10.17487/RFC5218"/>
        </reference>
        <reference anchor="GREASE">
          <front>
            <title>Applying Generate Random Extensions And Sustain Extensibility (GREASE) to TLS Extensibility</title>
            <author fullname="D. Benjamin" initials="D." surname="Benjamin"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This document describes GREASE (Generate Random Extensions And Sustain Extensibility), a mechanism to prevent extensibility failures in the TLS ecosystem. It reserves a set of TLS protocol values that may be advertised to ensure peers correctly handle unknown values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8701"/>
          <seriesInfo name="DOI" value="10.17487/RFC8701"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <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="VIABILITY">
          <front>
            <title>Long-Term Viability of Protocol Extension Mechanisms</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <date month="December" 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="RFC" value="9170"/>
          <seriesInfo name="DOI" value="10.17487/RFC9170"/>
        </reference>
        <reference anchor="END-USERS">
          <front>
            <title>The Internet is for End Users</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="August" year="2020"/>
            <abstract>
              <t>This document explains why the IAB believes that, when there is a conflict between the interests of end users of the Internet and other parties, IETF decisions should favor end users. It also explores how the IETF can more effectively achieve this.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8890"/>
          <seriesInfo name="DOI" value="10.17487/RFC8890"/>
        </reference>
        <reference anchor="EXTENSIBILITY">
          <front>
            <title>Design Considerations for Protocol Extensions</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="B. Aboba" initials="B." role="editor" surname="Aboba"/>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <date month="September" year="2012"/>
            <abstract>
              <t>This document discusses architectural issues related to the extensibility of Internet protocols, with a focus on design considerations. It is intended to assist designers of both base protocols and extensions. Case studies are included. A companion document, RFC 4775 (BCP 125), discusses procedures relating to the extensibility of IETF protocols. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6709"/>
          <seriesInfo name="DOI" value="10.17487/RFC6709"/>
        </reference>
        <reference anchor="PRIVCON">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author fullname="A. Cooper" initials="A." surname="Cooper"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="J. Morris" initials="J." surname="Morris"/>
            <author fullname="M. Hansen" initials="M." surname="Hansen"/>
            <author fullname="R. Smith" initials="R." surname="Smith"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications. It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices. It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>
      </references>
    </references>
    <?line 237?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This work is a summary of the topics discussed during EDM meetings. The
contributors at those meetings are thanked.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
3aV3wswPpnDPz1z+G6JWkcoVKgAA

-->

</rfc>
