<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-edm-protocol-greasing-06" category="info" consensus="true" submissionType="IAB" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Protocol Greasing">Considerations For Maintaining Protocols Using Grease and Variability</title>
    <seriesInfo name="Internet-Draft" value="draft-edm-protocol-greasing-06"/>
    <author fullname="Lucas Pardue">
      <organization>Cloudflare</organization>
      <address>
        <email>lucas@lucaspardue.com</email>
      </address>
    </author>
    <author fullname="Tommy Pauly">
      <organization>Apple</organization>
      <address>
        <email>tpauly@apple.com</email>
      </address>
    </author>
    <author fullname="Dave Thaler">
      <organization>Armidale Consulting</organization>
      <address>
        <email>dave.thaler.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="October" day="20"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 46?>

<t>Active use and maintenance of network protocols is an important way to
ensure that protocols remain interoperable and extensible over time.
Techniques such as intentionally exercising extension points with
non-meaningful values (referred to as "grease") or adding variability
to how protocol elements are used help generate this active use.</t>
      <t>Grease and variability are used across various protocols developed
by the IETF. This document discusses considerations when designing
and deploying grease and variability mechanisms, and provides
advice for making them as effective as possible.</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 59?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref section="3" sectionFormat="of" target="VIABILITY"/> discusses "active use" as a category
of techniques that protocol designers and implementers employ to ensure
that protocol extension mechanisms are exercised and can be used in the
future. This ability to change (to handle protocol updates and extensions)
is an important factor in the success of protocol deployment, as discussed
in <xref target="SUCCESS"/>.</t>
      <t>Active use of protocol features and extensions often requires intentional
efforts beyond what would organically occur in deployments. Some extension
points do not frequently see new values being used, but are still important
to be usable in the future. Some patterns of protocol usage might be
relatively static without specific efforts to ensure that they can change
in the future.</t>
      <t>One key techique for intentional use is "grease", or "greasing".
Greasing was initially designed for TLS <xref target="GREASE"/> and was later
adopted by other protocols such as QUIC <xref target="QUIC"/>. In these protocols,
extension codepoints are reserved only for greasing and must be ignored
upon receipt. Greasing is suitable for many protocols but not all; <xref section="3.3" sectionFormat="of" target="VIABILITY"/> discusses the applicability and limitations of greasing.</t>
      <t>While it is becoming more common, designing and applying grease is not
necessarily trivial. There are best practices, and some common pitfalls to
avoid, that have been developed by the protocols using grease thus far.
<xref target="grease-considerations"/> takes these learnings and provides considerations
for new protocol design and deployment.</t>
      <t>Separate from greasing using reserved values, protocol deployments can
intentionally add variability to ensure that network endpoints and
middleboxes do not end up ossifying certain patterns. 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="grease-considerations">
      <name>Considerations for Greasing Protocols</name>
      <t>Greasing can take many forms, depending on the protocol and the nature of its
extension points. The common pattern across forms of greasing is that values
are generated that have no useful meaning to the protocol and are meant to
be ignored upon receipt. Such values used for the purpose of greasing are
referred to as "grease values" within this document.</t>
      <t>More background to this approach is given in <xref section="3.3" sectionFormat="of" target="VIABILITY"/>.</t>
      <t>This section provides some practical considerations for how to define and
use greasing, and avoid possible pitfalls.</t>
      <section anchor="define">
        <name>Define and Register Grease Value Ranges</name>
        <t>Many protocols that use greasing have a limited set of possible values or
codepoints that can be used in a particular extension point. A common
approach is to reserve a subset of the registrable space for greasing.</t>
        <t>The following are some examples of protocols that have reserved codepoints for grease values:</t>
        <ul spacing="normal">
          <li>
            <t>TLS (<xref target="GREASE"/>)</t>
          </li>
          <li>
            <t>QUIC (<xref section="18.1" sectionFormat="of" target="QUIC"/>)</t>
          </li>
          <li>
            <t>HTTP/3 (<xref section="7.2.8" sectionFormat="of" target="RFC9114"/>)</t>
          </li>
          <li>
            <t>Privacy Pass (<xref target="PRIVACYPASS"/>)</t>
          </li>
        </ul>
        <t>The specifics of how to reserve values depends on the nature of the
available space. For protocols with large possible spaces, it is useful
to have a large set of grease values to increase the chance that
receiver greasing requirements are exercised. 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 such limitations.</t>
        <t>It is recommended to use an algorithm to reserve large sets of values.
For example, <xref target="QUIC"/> uses an algorithm of <tt>31 * N + 27</tt> to allocate
grease values for transport parameters.</t>
        <t>One possible problem with some algorithms is that they will spread out
values over the space, and impact the ability to use or reserve contiguous
blocks of non-grease values. It is common for protocol extension designers
to want to reserve contiguous blocks of codepoints in order to aid
iteration and experimentation. Reserved grease values can end up being
in spaces that would otherwise be used for such contiguous blocks.</t>
        <t>Codepoints being used for new reservations, or experimentation, need
to be careful to not unintentionally use grease values. Doing so could
lead to interoperability failures.</t>
        <section anchor="iana-tips">
          <name>Recommendations for IANA Considerations</name>
          <t>IANA registries that contain reserved grease values need to indicate that
the values are reserved in order to prevent them from being allocated
for other uses. The specifics of how to represent the reservations
is up to the documents that define the registries.</t>
          <t>Some registries list out the reserved grease values individually, marked as
"Reserved". For example, the TLS registry uses this approach
(https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml).</t>
          <t>If an algorithm or pattern is used to define grease values, it is recommended
when possible to instead only define a single entry for the entire grease value
set. This entry should include the pattern or algorithm. This approach is used by
the QUIC registry (https://www.iana.org/assignments/quic/quic.xhtml) and the
HTTP/3 registry (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. This is in
contrast to other potentially "reserved" values that might be reused or
claimed for a new purpose in the future. To avoid confusion, it is recommended
to label the reservation with a clear identifier, such as "reserved for greasing".</t>
        </section>
      </section>
      <section anchor="use-unpredictable-grease-values">
        <name>Use Unpredictable Grease Values</name>
        <t>In order to gain the benefits of active use and avoid ossification, grease values
used in actual packets
need to be sent in ways that won't become a predictable pattern that receiver and
middlebox implementations
and deployments ossify around.</t>
        <t>Implementations that generate grease values should pick unpredictable entries
from the set of reserved grease values. It is most important that values be
unpredictable across the set of all protocol participants for particular deployments.
This can be achieved in multiple ways: for example, an individual sender
might pick random values from the grease value space on each interaction;
alternatively, a single sender could pick a specific grease value to use, while
other senders pick other values.</t>
        <t>In order to support picking unpredictable values, the set of reserved values
should be large, when possible. See <xref target="define"/> for a discussion of how to allocate
grease values.</t>
      </section>
      <section anchor="use-grease-values-unpredictably">
        <name>Use Grease Values Unpredictably</name>
        <t>In addition to selecting unpredictable values, the inclusion of grease itself
can be made unpredictable. Implementations can vary their behavior by including
no grease values, one grease value, or multiple grease values for a given protocol
extension point.</t>
        <t>How consistently and frequently to use grease values is a choice that implementations
and deployments need to consider and weigh against several factors.</t>
        <t>Deployments of greasing should consider how they expect errors exposed by
using grease values to be noticed and measured.</t>
        <t>If grease values are sent too infrequently, so that errors due to sending
grease values blend in with the noise of other errors, it is likely that
no one will notice failures, thus defeating the purpose of greasing.
When grease values are sent more frequently, they will be noticed more.
However, if grease values are sent too consistently, receiver implementations
might end up special-casing grease values.</t>
        <t>The patterns for sending grease values can be made more effective by
coordinating between devices sending the values. One example of coordination
is having a "flag day" where implementations start sending grease values
broadly, and measure to see where errors occur.  See <xref section="3" sectionFormat="of" target="TRANSITION"/>
for more considerations concerning the use of a flag day.</t>
      </section>
      <section anchor="dont-handle-grease-values-as-a-special-case">
        <name>Don't Handle Grease Values as a Special Case</name>
        <t>Implementations that read and process grease values must ignore the values.
"Ignoring" a value upon receipt can have multiple dimensions, however.
Simply not performing any protocol action based on the grease value isn't
enough to ensure that the protocol will remain extensible. The ignoring
must be handled as a general case of "unknown" or "unhandled" values,
not as a special case for ignored grease values.</t>
        <t>This means that grease values can only meaningfully be used for protocol elements
where all unknown values are ignored by default. (Protocols may have ways
to indicate that some specific values are "mandatory" or "critical" in order
to have the protocol interaction succeed, but these must not be marked
for any grease values.)</t>
        <t>One pitfall that implementations may encounter when building logic to
handle the receipt of grease values is related to cases where some recognized
non-grease values need to be handled as errors. Consider the following abstract
example:</t>
        <ol spacing="normal" type="1"><li>
            <t>A protocol element has values 1, 2, 3, and 4 defined and registered for
use. The values 13 and 42 are reserved as grease values.</t>
          </li>
          <li>
            <t>In a specific scenario, only the known values 1 and 2 are valid; 3 and 4
are considered errors.</t>
          </li>
          <li>
            <t>An implementation might naively choose to check for the value being 1 or 2, handle
those cases, and send an error otherwise.</t>
          </li>
          <li>
            <t>When grease values are used, the previous logic will flag an error for the grease value.
If this is detected, implementations might choose to work around this by updating
the logic to check for the value being 1 or 2, then check for grease values to ignore,
and then send an error otherwise. This logic is also incorrect since it doesn't
allow for new extensibility.</t>
          </li>
        </ol>
        <t>The correct logic for the above scenario would be to check for the value being 1 or 2,
then explicitly check for the value being 3 or 4 (to handle the error), with a
catch-all for ignored values.</t>
        <t>In pseudo-code, the correct logic would work like this, where the grease values
would fall into the final <tt>else</tt> case as ignored values.</t>
        <artwork><![CDATA[
if is_valid_case_one(value):
  handle_case_one()
else if is_valid_case_two(value):
  handle_case_two()
else if is_known_invalid_case(value):
  handle_error()
else:
  ignore_value()
]]></artwork>
        <t>Implementations need to take care when implementing such logic. Protocol specification
designers should emphasize that grease values must not be special-cased. It is also
recommended to provide example logic or pseudocode in specifications, similar to the example
above, as guidance to implementers on how to correctly process protocol elements like these.
Documents can also provide test vectors, when applicable, that include grease values
to ensure they are processed correctly.</t>
        <t>One limitation of greasing is that it only exercises grease values. It does not check whether
other values that are reserved for future use are correctly treated as ignored or errors.
As such, ossification remains a possibility for non-grease values. The goal of greasing
is to increase the chances of correct implementation, and there by reduce (but not
eliminate) the possibility of ossification.</t>
      </section>
    </section>
    <section anchor="deployment-considerations-and-incentives-for-greasing">
      <name>Deployment Considerations and Incentives for Greasing</name>
      <t>Greasing can be used as a tool to improve the active use of existing protocol
elements (which weren't necessarily designed with greasing to begin with, or
weren't deployed with greasing); or as part of new protocol design and deployments.</t>
      <t>When greasing isn't used from the beginning of protocol deployment, starting to use
greasing comes with the risk of triggering failures or anomalies. These failures might be innocuous,
but they also might be very impactful and visible to users. This risk creates a
disincentive to deploy greasing in existing systems, since generally the change that
triggers failures is often blamed for the failure. The risk is highest when
adding greasing to a particular protocol flow that doesn't require any
change of behavior or adoption to hit the greasing behavior. For example,
if a service migrates to use a new web server implementation that enables
greasing, while the previous server didn't, some new failures may be hit
if clients react poorly to greasing.</t>
      <t>Some approaches to avoid failures due to greasing include:</t>
      <ul spacing="normal">
        <li>
          <t>Designing, implementing, and using greasing very early on in protocol development
and deployment. This avoids the aforementioned risk of adding greasing late in a deployment.</t>
        </li>
        <li>
          <t>Enabling greasing along with other major protocol feature changes or deployment changes.
For example, when upgrading to a new protocol version that requires implementation updates
on multiple systems, greasing can be added for the new version specifically. This approach
works well for situations where the protocol participants are known and already need
to cooperate (such as within an encrypted protocol between two endpoints). This approach
applies less well for situations where non-cooperating entities (such as middleboxes)
are the source of ossification.</t>
        </li>
        <li>
          <t>Using heuristics to disable greasing when errors are encountered. For example,
if a client-initiated protocol operation fails multiple times when grease values are used, it can be retried
without any grease values. Alternatively, if a server recognizes a property of a client that always fails
when greasing is used, it could choose to disable greasing when that client is detected.
This reduces the effectiveness of grease values in removing
existing ossification, but can still have benefits for flagging issues in new implementations
when they receive grease values.</t>
        </li>
      </ul>
      <section anchor="discouraging-ossification">
        <name>Discouraging Ossification</name>
        <t>Greasing alone can help ensure that middleboxes tolerate unrecognized extensions rather than
crashing, but one common middlebox behavior is to simply drop all unrecognized extensions.
Techniques such as disabling greasing when errors are encountered can enable communication
but may not provide enough incentive to discourage ossification.</t>
        <t>One approach to preserving the incentive to grease without being blamed for doing so,
while still potentially discouraging ossification, is to make any such ossification visible.
For example, a sender can log and report ossification issues on a given path
when falling back to non-grease values. Similarly, a receiver can log and report communication
that does not include grease values.  Such reports might be used in social feedback
(e.g., public product or service reviews), or in contractual business relationship (e.g., SLA)
discussion, in order to provide an incentive to implementers or deployers of ossified implementations.</t>
      </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 (see <xref section="3.3" sectionFormat="of" target="VIABILITY"/>). 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 example.</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, the sender can vary the sequence order of offset
values. This allows exercising 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><xref target="TRANSITION"/> discusses considerations around planning for transitioning
from an existing protocol, or protocol version, to a new one.
There are also 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"/>.</t>
      <t>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-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="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="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="PRIVACYPASS">
        <front>
          <title>The Privacy Pass HTTP Authentication Scheme</title>
          <author fullname="T. Pauly" initials="T." surname="Pauly"/>
          <author fullname="S. Valdez" initials="S." surname="Valdez"/>
          <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
          <date month="June" year="2024"/>
          <abstract>
            <t>This document defines an HTTP authentication scheme for Privacy Pass, a privacy-preserving authentication mechanism used for authorization. The authentication scheme specified in this document can be used by Clients to redeem Privacy Pass tokens with an Origin. It can also be used by Origins to challenge Clients to present Privacy Pass tokens.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9577"/>
        <seriesInfo name="DOI" value="10.17487/RFC9577"/>
      </reference>
      <reference anchor="TRANSITION">
        <front>
          <title>Planning for Protocol Adoption and Subsequent Transitions</title>
          <author fullname="D. Thaler" initials="D." role="editor" surname="Thaler"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>Over the many years since the introduction of the Internet Protocol, we have seen a number of transitions throughout the protocol stack, such as deploying a new protocol, or updating or replacing an existing protocol. Many protocols and technologies were not designed to enable smooth transition to alternatives or to easily deploy extensions; thus, some transitions, such as the introduction of IPv6, have been difficult. This document attempts to summarize some basic principles to enable future transitions, and it also summarizes what makes for a good transition plan.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8170"/>
        <seriesInfo name="DOI" value="10.17487/RFC8170"/>
      </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="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="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="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>
    <?line 407?>

<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:
H4sIAAAAAAAAA5VcbZPbNpL+jl+Bkj+s506S37KxM6mtZM52kqlKvD7PJLn9
lFAkJPFMkVqCHEWZ8v7266e7AYKUJtmrystIIoBGo1+efgEXi4Xpyq5yl3b2
uql9Wbg260r6y37TtPaHrKw7+resN/Z923RN3lTe/ujx+dvWZd7ZrC7sT1lb
ZquyKrvjzGSrVevuaL4wQJ6kITOTZ53bNO3x0pb1ujGmaPI629HiRZutu4Ur
dou9jlpsdNTi6efG96td6T3R1R339Pj11X+Zut+tXHtpCprz0uREsqt97y9t
1/bOEAEvzCOb0SSX9urD2yv6cGjaj5u26feX9udv7c/0SfZB35iP7kg/F5fG
LmztfuvsxtXKCnzV12XetPyn32ftxwoji9J3bbnqO1fYyhUb15o7V/dEzSNr
40L4IFSPV6Svd1lZ4ZGv3W/Zbl+5Zd7s8H3W5ttLu+26vb988iT58QlNR1OX
3bZfEYdxOPToqsna4omw8IR9MxpQEYt8RwPClOnApUy3LJuHpnjyB6ez3Ha7
amZM1nfbpgX7aD1r131Vycl+3+eZt+9pIToV/NS0m6wuf2fWXtrXVdMX64rO
iX90wpJZhVFf83/3PBS7n53Oftvsdkeava+OZya/2hPfRvN2ezz6dbZXhp6Z
8k125+ztNqvoOM9M2e7Kgn6z0Ja+6ogFowUKGr3sePSydN366w1+kKVM3bQ7
mueOJMRAAeInaz988/qLZ88+u+TJSLD2VUZa8t3t7fsnL4xZLBY2W5G0ZXln
zFWOUbZX7dtBSV2d1bmzzZqkt4Og233U19LTc7bc7Zu2y+rOHrKj7RoDdWmd
JWK75OEWO6Gnacq22ZMKrCpZhpSCRpT42Ny51nblzi3Nrcu3dfnP3nnr+3xr
6ayZGnArq6ojDXNtXrLF0Bma2u4besjbA0keMaVe7FwGG0OHYO+yCpM9bt3a
tS1pVtdg0hkLnJtd0HnYrCgw391gdgw9tW0OcR/WVW7nsAZJFjhV2K2r9kGr
sWtwJTJyaUxiz5KJh/FZ3jbe829N7xOOFe7OVcSqwqyIr1tnr9/efrMkEaIV
yMD1oANHmvfe087ysZk9bF1NU/hyAw4YLF+4fdUcscPNeZp2xHRimN/5Of9G
tNzRlN5kxV1JUkCSRVLBtobo2YF/br12slv6sKeN4CCXIlkk0QXpCVme67pr
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
fuf/AC0/zjnsTwAA

-->

</rfc>
