<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-iab-protocol-greasing-00" 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-iab-protocol-greasing-00"/>
    <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="2026" month="March" day="02"/>
    <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-iab-protocol-greasing.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-iab-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 that they remain
usable in the future is important. 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 technique for intentional use is "grease" (an acronym for
Generate Random Extensions And Sustain Extensibility), 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 thereby 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>
        <t>Similar techniques can be used to encourage greasing and variability by others, to
provide further discouragements against ossification in the future.
Having a receiver log and report communication that does not include grease values,
as noted above, can also be used to report on senders that do not support greasing.
It is useful, however, to be able to distinguish between the sender not supporting greasing,
versus the sender supporting greasing but only non-greased messages arriving at the
receiver.  Protocols defining greasing mechanisms should consider whether receivers
can distinguish between these two cases.</t>
        <t>It is not generally recommended to use more drastic incentives to require greasing
such as degrading performance or reliability for senders that don't support greasing.
While this is possible, the benefits of greasing are longer term, rather than immediate,
and the incentives are often not aligned. <xref section="2.1.1" sectionFormat="of" target="SUCCESS"/> explains that success
most easily comes when those who are required to make a change are the ones who gain
the most benefit, and the benefit is noticeable.  If the sending implementation does
not plan to use new extensions in the future, it would not see any benefit from being
pushed to add greasing.</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 safely changed, as shown in the
following examples. The principles in these examples are not limited to
the protocols mentioned, but also arise in many other protocols as well
(e.g., the Session Initiation Protocol (SIP) <xref target="SIP"/>).</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 anchor="example-post-quantum-key-exchange-in-tls">
        <name>Example: Post-quantum key exchange in TLS</name>
        <t>Post-quantum key exchange in TLS (such as defined in
<xref target="PQTLS"/>) expands the key sizes sent in Client Hello
messages in TLS 1.3 <xref target="TLS"/>. Before using these algorithms,
Client Hello messages would generally fit within a single packet (either in
TCP or QUIC). However, with these larger keys, Client Hello messages need to be
split across two (or more) separate packets. Initial deployments of these keys uncovered
many buggy server and middlebox implementations that did not correctly handle
Client Hello messages being split across multiple packets.</t>
        <t>This is a case in which adding variability to how TLS Client Hello messages were
sent could have helped avoid ossification and buggy implementations. Variations
could include intentionally splitting the messages across packets without increasing
message size, and also adding other values to messages to force them to exceed
the length that can fit within a single packet.</t>
      </section>
      <section anchor="example-ipv6">
        <name>Example: IPv6</name>
        <t>The IPv6 protocol <xref target="IPV6"/> defines the ability to use extension headers,
and further defines the ability to include options in two of those headers. It
also defines a recommended (but not required) order of such headers.</t>
        <t>If the same headers tend to appear in the same order, and with the same size
and offset most of the time, middleboxes can begin to incorrectly rely on assumptions
that those will always be the case, and lead to ossification and inability to
use new headers or options or differing orders in the future.</t>
        <t>IPv6 did not define grease values, but a sender may vary some aspects of the
protocol, such as varying the order of options within an extension header,
or even including a Destination Options Header with only Pad1 or PadN options
between other headers.</t>
        <t>While doing such variations can discourage ossification, they might also have
a negative performance impact if done indiscriminately. For example, making packets
larger as a result might result in fragmentation.</t>
        <t>Finally, there may be security or gateway middleboxes already deployed that
incorrectly rely on assumptions about header order, size, or location in a packet.
Introducing variability might then cause operational problems in such networks and
result in a disincentive to use the protocol or device or application using it.</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>One way to grease protocol versions is to have a protocol pass
a list of supported versions or features (e.g., cipher suites), along with a grease
value, such that the grease value will not impact the actual version
or features chosen, since it will not be selected by the receiving entity.</t>
      <t>Another method is to have a protocol include a recovery mechanism (e.g., an extra
round trip to try with another option) for cases when an unsupported version or feature
is attempted.  In this case, a grease value might be attempted at some
frequency or opportunity that would not adversely affect performance.</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="SIP">
        <front>
          <title>SIP: Session Initiation Protocol</title>
          <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
          <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
          <author fullname="G. Camarillo" initials="G." surname="Camarillo"/>
          <author fullname="A. Johnston" initials="A." surname="Johnston"/>
          <author fullname="J. Peterson" initials="J." surname="Peterson"/>
          <author fullname="R. Sparks" initials="R." surname="Sparks"/>
          <author fullname="M. Handley" initials="M." surname="Handley"/>
          <author fullname="E. Schooler" initials="E." surname="Schooler"/>
          <date month="June" year="2002"/>
          <abstract>
            <t>This document describes Session Initiation Protocol (SIP), an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants. These sessions include Internet telephone calls, multimedia distribution, and multimedia conferences. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="3261"/>
        <seriesInfo name="DOI" value="10.17487/RFC3261"/>
      </reference>
      <reference anchor="PQTLS">
        <front>
          <title>Post-quantum hybrid ECDHE-MLKEM Key Agreement for TLSv1.3</title>
          <author fullname="Kris Kwiatkowski" initials="K." surname="Kwiatkowski">
            <organization>PQShield</organization>
          </author>
          <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
            <organization>AWS</organization>
          </author>
          <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
            <organization>Cloudflare</organization>
          </author>
          <author fullname="Douglas Stebila" initials="D." surname="Stebila">
            <organization>University of Waterloo</organization>
          </author>
          <date day="8" month="February" year="2026"/>
          <abstract>
            <t>   This draft defines three hybrid key agreement mechanisms for TLS 1.3
   - X25519MLKEM768, SecP256r1MLKEM768, and SecP384r1MLKEM1024 - that
   combine the post-quantum ML-KEM (Module-Lattice-Based Key
   Encapsulation Mechanism) with an ECDHE (Elliptic Curve Diffie-
   Hellman) exchange.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-tls-ecdhe-mlkem-04"/>
      </reference>
      <reference anchor="TLS">
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
          <date month="August" year="2018"/>
          <abstract>
            <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
            <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8446"/>
        <seriesInfo name="DOI" value="10.17487/RFC8446"/>
      </reference>
      <reference anchor="IPV6">
        <front>
          <title>Internet Protocol, Version 6 (IPv6) Specification</title>
          <author fullname="S. Deering" initials="S." surname="Deering"/>
          <author fullname="R. Hinden" initials="R." surname="Hinden"/>
          <date month="July" year="2017"/>
          <abstract>
            <t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="86"/>
        <seriesInfo name="RFC" value="8200"/>
        <seriesInfo name="DOI" value="10.17487/RFC8200"/>
      </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 477?>

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

-->

</rfc>
