<?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.6.17 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-iab-protocol-maintenance-10" category="info" submissionType="IAB" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <front>
    <title>Maintaining Robust Protocols</title>
    <seriesInfo name="Internet-Draft" value="draft-iab-protocol-maintenance-10"/>
    <author initials="M." surname="Thomson" fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94043</code>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2022" month="December" day="06"/>
    <workgroup>EDM</workgroup>
    <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>
    <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-maintenance/draft-iab-protocol-maintenance.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-iab-protocol-maintenance/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        EDM IAB Program mailing list (<eref target="mailto:edm@iab.org"/>),
        which is archived at <eref target="https://www.iab.org/mailman/listinfo/edm"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/edm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/intarchboard/draft-protocol-maintenance"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The robustness principle has been hugely influential in shaping the design of
the Internet. As stated in the IAB document on Architectural Principles of the
Internet <xref target="RFC1958"/>, the robustness principle advises to:</t>
      <blockquote>
        <t>Be strict when sending and tolerant when receiving.  Implementations must
  follow specifications precisely when sending to the network, and tolerate
  faulty input from the network.  When in doubt, discard faulty input silently,
  without returning an error message unless this is required by the
  specification.</t>
      </blockquote>
      <t>This simple statement captures a significant concept in the design of
interoperable systems.  Many consider the application of the robustness
principle to be instrumental in the success of the Internet as well as the
design of interoperable protocols in general.</t>
      <t>As described above, the robustness principle covers three scenarios:</t>
      <dl>
        <dt>Robustness to software defects:</dt>
        <dd>
          <t>No software is perfect, and failures can lead to unexpected behavior.
Well-designed software strives to be resilient to such issues, whether they
occur in the local software, or in software that it communicates with. In
particular, it is critical for software to gracefully recover from these issues
without aborting unrelated processing.</t>
        </dd>
        <dt>Robustness to attacks:</dt>
        <dd>
          <t>Since not all actors on the Internet are benevolent, networking software needs
to be resilient to input that is intentionally crafted to cause unexpected
consequences. For example, software must ensure that invalid input doesn't allow
the sender to access data, change data, or perform actions that it would otherwise not be allowed to.</t>
        </dd>
        <dt>Robustness to the unexpected:</dt>
        <dd>
          <t>It can be possible for an implementation to receive inputs that the
specification did not prepare it for. This scenario excludes those cases where a
the specification explicitly defines how a faulty message is handled. Instead,
this refers to cases where handling is not defined or where there is some
ambiguity in the specification. In this case, some interpretations of the
robustness principle advocate that the implementation tolerate the faulty input
and silently discard it. Some interpretations even suggest that a faulty or
ambiguous message be processed according to the inferred intent of the sender.</t>
        </dd>
      </dl>
      <t>The facets of the robustness principle that protect against defects or attack
are understood to be necessary guiding principles for the design and
implementation of networked systems. However, an interpretation that advocates
for tolerating unexpected inputs is no longer considered best practice in all
scenarios.</t>
      <t>Time and experience shows that negative consequences to interoperability
accumulate over time if implementations silently accept faulty input. This
problem originates from an implicit assumption that it is not possible to effect
change in a system the size of the Internet. When one assumes that changes to
existing implementations are not presently feasible, tolerating flaws feels
inevitable.</t>
      <t>Many problems that this third aspect of the robustness principle was intended to
solve can instead be better addressed by active maintenance. Active protocol
maintenance is where a community of protocol designers, implementers, and
deployers work together to continuously improve and evolve protocol
specifications alongside implementations and deployments of those protocols. A
community that takes an active role in the maintenance of protocols will no
longer need to rely on the robustness principle to avoid interoperability issues.</t>
      <t>There is good evidence to suggest that many important protocols are routinely
maintained beyond their inception. In particular, a sizeable proportion of IETF
activity is dedicated to the stewardship of existing protocols. This document
serves primarily as a record of the hazards in applying the robustness principle
too broadly, and offers an alternative strategy for handling interoperability
problems in deployments.</t>
      <t>Ideally, protocol implementations can be actively maintained so that unexpected
conditions are proactively identified and resolved. Some deployments might still
need to apply short-term mitigations for deployments that cannot be easily
updated, but such cases need not be permanent. This is discussed further in
<xref target="active"/>.</t>
    </section>
    <section anchor="applicability">
      <name>Applicability</name>
      <t>The guidance in this document is intended for protocols that are deployed to the
Internet. There are some situations in which this guidance might not apply to a
protocol due to conditions on its implementation or deployment.</t>
      <t>In particular, this guidance depends on an ability to update and deploy
implementations. Being able to rapidly update implementations that are deployed
to the Internet helps managing security risk but in reality some software
deployments have lifecycles that make software updates either rare or altogether
impossible.</t>
      <t>Where implementations are not updated, there is no opportunity to apply the
practices that this document recommends. In particular, some practices - such as
those described in <xref target="intolerance"/> - only exist to support the development of
protocol maintenance and evolution. Employing this guidance is therefore only
applicable where there is the possibility of improving deployments through
timely updates of their implementations.</t>
      <section anchor="extensibility">
        <name>Extensibility</name>
        <t>Good extensibility <xref target="EXT"/> can make it easier to respond to new use
cases or changes in the environment in which the protocol is deployed.</t>
        <t>The ability to extend a protocol is sometimes mistaken for an application of the
robustness principle. After all, if one party wants to start using a new feature
before another party is prepared to receive it, it might be assumed that the
receiving party is being tolerant of new types of input.</t>
        <t>A well-designed extensibility mechanism establishes clear rules for the handling
of elements like new messages or parameters. This depends on specifying the
handling of malformed or illegal inputs so that implementations behave
consistently in all cases that might affect interoperation. New messages or
parameters thereby become entirely expected. If extension mechanisms and error
handling are designed and implemented correctly, new protocol features can be
deployed with confidence in the understanding of the effect they have on
existing implementations.</t>
        <t>In contrast, relying on implementations to consistently apply the robustness
principle is not a good strategy for extensibility. Using undocumented or
accidental features of a protocol as the basis of an extensibility mechanism can
be extremely difficult, as is demonstrated by the case study in <xref section="A.3" sectionFormat="of" target="EXT"/>.  It is better and easier to design a protocol for extensibility
initially than to retrofit the capability (see also <xref target="EDNS0"/>).</t>
      </section>
      <section anchor="flexibility">
        <name>Flexible Protocols</name>
        <t>A protocol could be designed to permit a narrow set of valid inputs, or it could
be designed to treat a wide range of inputs as valid.</t>
        <t>A more flexible protocol is more complex to specify and implement: variations -
especially those that are not commonly used - can create potential
interoperability hazards. In the absence of strong reasons to be flexible, a
simpler protocol is more likely to successfully interoperate.</t>
        <t>Where input is provided by users, allowing flexibility might serve to make the
protocol more accessible, especially for non-expert users. HTML authoring
<xref target="HTML"/> is an example of this sort of design.</t>
        <t>In protocols where there are many participants that might generate messages
based on data from other participants some flexibility might contribute to
resilience of the system. A routing protocol is a good example of where this
might be necessary.</t>
        <t>In BGP <xref target="BGP"/>, a peer generates UPDATE messages based on messages it
receives from other peers. Peers can copy attributes without validation,
potentially propagating invalid values. RFC 4271 <xref target="BGP"/> mandated a session
reset for invalid UPDATE messages, a requirement that was not widely
implemented. In many deployments, peers would treat a malformed UPDATE in less
stringent ways, such as by treating the affected route as having been withdrawn.
Ultimately, RFC 7606 <xref target="BGP-REH"/> documented this practice and provided
precise rules, including mandatory actions for different error conditions.</t>
        <t>A protocol can explicitly allow for a range of valid expressions of the same
semantics, with precise definitions for error handling. This is distinct from a
protocol that relies on the application of the robustness principle. With the
former, interoperation depends on specifications that capture all relevant
details; whereas - as noted in <xref target="ecosystem"/> - interoperation in the latter
depends more extensively on implementations making compatible decisions.</t>
      </section>
    </section>
    <section anchor="fallibility-of-specifications">
      <name>Fallibility of Specifications</name>
      <t>The context from which the robustness principle was developed provides valuable
insights into its intent and purpose. The earliest form of the principle in the
RFC series (the Internet Protocol specification <xref target="RFC0760"/>) is preceded by a
sentence that reveals a motivation for the principle:</t>
      <blockquote>
        <t>While the goal of this specification is to be explicit about the protocol
  there is the possibility of differing interpretations.  In general, an
  implementation should be conservative in its sending behavior, and liberal in
  its receiving behavior.</t>
      </blockquote>
      <t>This formulation of the principle expressly recognizes the possibility that the
specification could be imperfect. This contextualizes the principle in an
important way.</t>
      <t>Imperfect specifications are unavoidable, largely because it is more important
to proceed to implementation and deployment than it is to perfect a
specification. A protocol benefits greatly from experience with its use. A
deployed protocol is immeasurably more useful than a perfect protocol
specification. This is particularly true in early phases of system design, to
which the robustness principle is best suited.</t>
      <t>As demonstrated by the IAB document on Successful Protocols <xref target="RFC5218"/>,
success or failure of a protocol depends far more on factors like usefulness
than on technical excellence. Timely publication of protocol specifications,
even with the potential for flaws, likely contributed significantly to the
eventual success of the Internet.</t>
      <t>This premise that specifications will be imperfect is correct. However, ignoring
faulty or ambiguous input is almost always the incorrect solution to the problem.</t>
    </section>
    <section anchor="harmful-consequences-of-tolerating-the-unexpected">
      <name>Harmful Consequences of Tolerating the Unexpected</name>
      <t>Problems in other implementations can create an unavoidable need to temporarily
tolerate unexpected inputs. However, this course of action carries risks.</t>
      <section anchor="decay">
        <name>Protocol Decay</name>
        <t>Tolerating unexpected input might be an expedient tool for systems in early
phases of deployment, such as was the case for the early Internet. Being lenient
in this way defers the effort of dealing with interoperability problems and
prioritizes progress. However, this deferral can amplify the ultimate cost of
handling interoperability problems.</t>
        <t>Divergent implementations of a specification emerge over time. When variations
occur in the interpretation or expression of semantic components,
implementations cease to be perfectly interoperable.</t>
        <t>Implementation bugs are often identified as the cause of variation, though it is
often a combination of factors. Using a protocol in ways that were not
anticipated in the original design, or ambiguities and errors in the
specification are often contributing factors. Disagreements on the
interpretation of specifications should be expected over the lifetime of a
protocol.</t>
        <t>Even with the best intentions to maintain protocol correctness, the pressure to
interoperate can be significant. No implementation can hope to avoid having to
trade correctness for interoperability indefinitely.</t>
        <t>An implementation that reacts to variations in the manner recommended in the
robustness principle enters a pathological feedback cycle. Over time:</t>
        <ul spacing="normal">
          <li>Implementations progressively add logic to constrain how data is transmitted,
or to permit variations in what is received.</li>
          <li>Errors in implementations or confusion about semantics are permitted or
ignored.</li>
          <li>These errors can become entrenched, forcing other implementations to be
tolerant of those errors.</li>
        </ul>
        <t>A flaw can become entrenched as a de facto standard. Any implementation of the
protocol is required to replicate the aberrant behavior, or it is not
interoperable. This is both a consequence of tolerating the unexpected, and a
product of a natural reluctance to avoid fatal error conditions. Ensuring
interoperability in this environment is often referred to as aiming to be "bug
for bug compatible".</t>
        <t>For example, in TLS <xref target="TLS"/>, extensions use a tag-length-value format
and can be added to messages in any order. However, some server implementations
terminated connections if they encountered a TLS ClientHello message that ends
with an empty extension. To maintain interoperability with these servers, which
were widely deployed, client implementations were required to be aware of this
bug and ensure that a ClientHello message ends in a non-empty extension.</t>
        <t>Overapplication of the robustness principle therefore encourages a chain
reaction that can create interoperability problems over time. In particular,
tolerating unexpected behavior is particularly deleterious for early
implementations of new protocols as quirks in early implementations can affect
all subsequent deployments.</t>
      </section>
      <section anchor="ecosystem">
        <name>Ecosystem Effects</name>
        <t>From observing widely deployed protocols, it appears there are two stable points
on the spectrum between being strict versus permissive in the presence of
protocol errors:</t>
        <ul spacing="normal">
          <li>If implementations predominantly enforce strict compliance with
specifications, newer implementations will experience failures if they do not
comply with protocol requirements. Newer implementations need to fix
compliance issues in order to be successfully deployed. This ensures that most
deployments are compliant over time.</li>
          <li>Conversely, if non-compliance is tolerated by existing implementations,
non-compliant implementations can be deployed successfully. Newer
implementations then have strong incentive to tolerate any existing
non-compliance in order to be successfully deployed. This ensures that most
deployments are tolerant of the same non-compliant behavior.</li>
        </ul>
        <t>This happens because interoperability requirements for protocol implementations
are set by other deployments. Specifications and test suites - where they exist -
can guide the initial development of implementations.  Ultimately, the
need to interoperate with deployed implementations is a de facto conformance
test suite that can supersede any formal protocol definition.</t>
        <t>For widely used protocols, the massive scale of the Internet makes large-scale
interoperability testing infeasible for all but a privileged few. The cost of
building a new implementation using reverse engineering increases as the number
of implementations and bugs increases. Worse, the set of tweaks necessary for
wide interoperability can be difficult to discover. In the worst case, a new
implementer might have to choose between deployments that have diverged so far
as to no longer be interoperable.</t>
        <t>Consequently, new implementations might be forced into niche uses, where the
problems arising from interoperability issues can be more closely managed.
However, restricting new implementations into limited deployments risks causing
forks in the protocol. If implementations do not interoperate, little prevents
those implementations from diverging more over time.</t>
        <t>This has a negative impact on the ecosystem of a protocol. New implementations
are key to the continued viability of a protocol. New protocol implementations
are also more likely to be developed for new and diverse use cases and are often
the origin of features and capabilities that can be of benefit to existing users.</t>
        <t>The need to work around interoperability problems also reduces the ability of
established implementations to change. An accumulation of mitigations for
interoperability issues makes implementations more difficult to maintain and can
constrain extensibility (see also the IAB document on the Long-Term Viability of
Protocol Extension Mechanisms <xref target="RFC9170"/>).</t>
        <t>Sometimes what appear to be interoperability problems are symptomatic of issues
in protocol design. A community that is willing to make changes to the protocol,
by revising or extending specifications and then deploying those changes,
makes the protocol better.
Tolerating unexpected input instead conceals problems, making it harder, if not
impossible, to fix them later.</t>
      </section>
    </section>
    <section anchor="active">
      <name>Active Protocol Maintenance</name>
      <t>The robustness principle can be highly effective in safeguarding against flaws
in the implementation of a protocol by peers. Especially when a specification
remains unchanged for an extended period of time, incentive to be tolerant of
errors accumulates over time. Indeed, when faced with divergent interpretations
of an immutable specification, the only way for an implementation to remain
interoperable is to be tolerant of differences in interpretation and
implementation errors. However, when official specifications fail to be
updated then deployed implementations - including their quirks - often become
a substitute standard.</t>
      <t>Tolerating unexpected inputs from another implementation might seem logical,
even necessary. But that conclusion relies on an assumption that existing
specifications and implementations cannot change. Applying the robustness
principle in this way disproportionately values short-term gains over the
negative effects on future implementations and the protocol as a whole.</t>
      <t>For a protocol to have sustained viability, it is necessary for both
specifications and implementations to be responsive to changes, in addition to
handling new and old problems that might arise over time. For example, when an
implementer discovers a scenario where a specification defines some input as
faulty but does not define how to handle that input, the implementer can provide
significant value to the ecosystem by reporting the issue and helping evolve the
specification.</t>
      <t>When a discrepancy is found between a specification and its implementation, a
maintenance discussion inside the standards process allows reaching consensus on
how best to evolve the specification. Subsequently updating implementations to
match evolved specifications ensures that implementations are consistently
interoperable and removes needless barriers for new implementations. Maintenance
also enables continued improvement of the protocol. New use cases are an
indicator that the protocol could be successful <xref target="RFC5218"/>.</t>
      <t>Protocol designers are strongly encouraged to continue to maintain and evolve
protocol specifications beyond their initial inception and definition. This
might require the development of revised specifications, extensions, or other
supporting material that evolves in concert with implementations. Involvement of
those who implement and deploy the protocol is a critical part of this process,
as they provide input on their experience with how the protocol is used.</t>
      <t>Most interoperability problems do not require revision of protocols or protocol
specifications, as software defects can happen even when the specification is
unambiguous. For instance, the most effective means of dealing with a
defective implementation in a peer could be to contact the developer
responsible. It is far more efficient in the long term to fix one isolated bug
than it is to deal with the consequences of workarounds.</t>
      <t>Early implementations of protocols have a stronger obligation to closely follow
specifications as their behavior will affect all subsequent implementations. In
addition to specifications, later implementations will be guided by what
existing deployments accept. Tolerance of errors in early deployments is most
likely to result in problems. Protocol specifications might need more frequent
revision during early deployments to capture feedback from early rounds of
deployment.</t>
      <t>Neglect can quickly produce the negative consequences this document describes.
Restoring the protocol to a state where it can be maintained involves first
discovering the properties of the protocol as it is deployed, rather than the
protocol as it was originally documented. This can be difficult and
time-consuming, particularly if the protocol has a diverse set of
implementations. Such a process was undertaken for HTTP <xref target="HTTP"/> after
a period of minimal maintenance. Restoring HTTP specifications to relevance took
significant effort.</t>
      <t>Maintenance is most effective if it is responsive, which is greatly affected by
how rapidly protocol changes can be deployed. For protocol deployments that
operate on longer time scales, temporary workarounds following the spirit of the
robustness principle might be necessary. For this, improvements in software
update mechanisms ensure that the cost of reacting to changes is much lower than
it was in the past. Alternatively, if specifications can be updated more readily
than deployments, details of the workaround can be documented, including the
desired form of the protocols once the need for workarounds no longer exists and
plans for removing the workaround.</t>
      <section anchor="intolerance">
        <name>Virtuous Intolerance</name>
        <t>A well-specified protocol includes rules for consistent handling of aberrant
conditions. This increases the chances that implementations will have consistent
and interoperable handling of unusual conditions.</t>
        <t>Choosing to generate fatal errors for unspecified conditions instead of
attempting error recovery can ensure that faults receive attention. This
intolerance can be harnessed to reduce occurrences of aberrant implementations.</t>
        <t>Intolerance toward violations of specification improves feedback for new
implementations in particular. When a new implementation encounters a peer that
is intolerant of an error, it receives strong feedback that allows the problem
to be discovered quickly.</t>
        <t>To be effective, intolerant implementations need to be sufficiently widely
deployed that they are encountered by new implementations with high probability.
This could depend on multiple implementations deploying strict checks.</t>
        <t>Interoperability problems also need to be made known to those in a position to
address them. In particular, systems with human operators, such as user-facing
clients, are ideally suited to surfacing errors.  Other systems might need to
use less direct means of making errors known.</t>
        <t>This does not mean that intolerance of errors in early deployments of protocols
has the effect of preventing interoperability. On the contrary, when existing
implementations follow clearly-specified error handling, new implementations or
features can be introduced more readily as the effect on existing
implementations can be easily predicted; see also <xref target="extensibility"/>.</t>
        <t>Any intolerance also needs to be strongly supported by specifications, otherwise
they encourage fracturing of the protocol community or proliferation of
workarounds; see <xref target="exclusion"/>.</t>
        <t>Intolerance can be used to motivate compliance with any protocol requirement.
For instance, the INADEQUATE_SECURITY error code and associated requirements in
HTTP/2 <xref target="H2"/> resulted in improvements in the security of the
deployed base.</t>
        <t>A notification for a fatal error is best sent as explicit error messages to the
entity that made the error. Error messages benefit from being able to carry
arbitrary information that might help the implementer of the sender of the
faulty input understand and fix the issue in their software. QUIC error frames
<xref target="QUIC"/> are an example of a fatal error mechanism that helped
implementers improve software quality throughout the protocol lifecycle.
Similarly, Extended DNS Errors <xref target="EDE"/> has recently been
effective in providing better descriptions of DNS resolution errors to clients.</t>
        <t>Stateless protocol endpoints might generate denial-of-service attacks if they
send an error messages in response to every message that is received from an
unauthenticated sender. These implementations might need to silently discard
these messages.</t>
      </section>
      <section anchor="exclusion">
        <name>Exclusion</name>
        <t>Any protocol participant that is affected by changes arising from maintenance
might be excluded if they are unwilling or unable to implement or deploy changes
that are made to the protocol.</t>
        <t>Deliberate exclusion of problematic implementations is an important tool that
can ensure that the interoperability of a protocol remains viable. While
backward compatible changes are always preferable to incompatible ones, it is
not always possible to produce a design that protects the ability of all current
and future protocol participants to interoperate. Developing and deploying
changes that risk exclusion of previously interoperating implementations
requires some care, but changes to a specification should not be blocked on the
grounds of the risk of exclusion alone.</t>
        <t>Exclusion is a direct goal when choosing to be intolerant of errors (see
<xref target="intolerance"/>). Exclusionary actions are employed with the deliberate intent
of protecting future interoperability.</t>
        <t>Excluding implementations or deployments can lead to a fracturing of the
protocol system that could be more harmful than any divergence that might arise
from tolerating the unexpected. The IAB document on Uncoordinated Protocol
Development Considered Harmful <xref target="RFC5704"/> describes how conflict or
competition in the maintenance of protocols can lead to similar problems.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Careless implementations, lax interpretations of specifications, and
uncoordinated extrapolation of requirements to cover gaps in specification can
result in security problems. Hiding the consequences of protocol variations
encourages the hiding of issues, which can conceal bugs and make them difficult
to discover.</t>
      <t>The consequences of the problems described in this document are especially acute
for any protocol where security depends on agreement about semantics of protocol
elements. For instance, use of unsafe security mechanisms, such as weak
primitives <xref target="MD5"/> or obsolete mechanisms <xref target="SSL3"/>, are good
examples of where forcing exclusion (<xref target="exclusion"/>) can be desirable.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <displayreference target="H2" to="HTTP/2"/>
    <references>
      <name>Informative References</name>
      <reference anchor="HTML" target="https://html.spec.whatwg.org/">
        <front>
          <title>HTML</title>
          <author>
            <organization/>
          </author>
          <date year="2019" month="March" day="08"/>
        </front>
        <seriesInfo name="WHATWG" value="Living Standard"/>
      </reference>
      <reference anchor="H2">
        <front>
          <title>HTTP/2</title>
          <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
            <organization/>
          </author>
          <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield">
            <organization/>
          </author>
          <date month="June" year="2022"/>
          <abstract>
            <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
            <t>This document obsoletes RFCs 7540 and 8740.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9113"/>
        <seriesInfo name="DOI" value="10.17487/RFC9113"/>
      </reference>
      <reference anchor="RFC1958">
        <front>
          <title>Architectural Principles of the Internet</title>
          <author fullname="B. Carpenter" initials="B." role="editor" surname="Carpenter">
            <organization/>
          </author>
          <date month="June" year="1996"/>
          <abstract>
            <t>The Internet and its architecture have grown in evolutionary fashion from modest beginnings, rather than from a Grand Plan. While this process of evolution is one of the main reasons for the technology's success, it nevertheless seems useful to record a snapshot of the current principles of the Internet architecture. This is intended for general guidance and general interest, and is in no way intended to be a formal or invariant reference model.  This memo provides information for the Internet community.  This memo does not specify an Internet standard of any kind.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="1958"/>
        <seriesInfo name="DOI" value="10.17487/RFC1958"/>
      </reference>
      <reference anchor="EXT">
        <front>
          <title>Design Considerations for Protocol Extensions</title>
          <author fullname="B. Carpenter" initials="B." surname="Carpenter">
            <organization/>
          </author>
          <author fullname="B. Aboba" initials="B." role="editor" surname="Aboba">
            <organization/>
          </author>
          <author fullname="S. Cheshire" initials="S." surname="Cheshire">
            <organization/>
          </author>
          <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="EDNS0">
        <front>
          <title>Extension Mechanisms for DNS (EDNS0)</title>
          <author fullname="P. Vixie" initials="P." surname="Vixie">
            <organization/>
          </author>
          <date month="August" year="1999"/>
          <abstract>
            <t>The Domain Name System's wire protocol includes a number of fixed fields whose range has been or soon will be exhausted and does not allow clients to advertise their capabilities to servers.  This document describes backward compatible mechanisms for allowing the protocol to grow.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="2671"/>
        <seriesInfo name="DOI" value="10.17487/RFC2671"/>
      </reference>
      <reference anchor="BGP">
        <front>
          <title>A Border Gateway Protocol 4 (BGP-4)</title>
          <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter">
            <organization/>
          </author>
          <author fullname="T. Li" initials="T." role="editor" surname="Li">
            <organization/>
          </author>
          <author fullname="S. Hares" initials="S." role="editor" surname="Hares">
            <organization/>
          </author>
          <date month="January" year="2006"/>
          <abstract>
            <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
            <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems.  This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
            <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR).  These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP.  BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
            <t>This document obsoletes RFC 1771.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4271"/>
        <seriesInfo name="DOI" value="10.17487/RFC4271"/>
      </reference>
      <reference anchor="BGP-REH">
        <front>
          <title>Revised Error Handling for BGP UPDATE Messages</title>
          <author fullname="E. Chen" initials="E." role="editor" surname="Chen">
            <organization/>
          </author>
          <author fullname="J. Scudder" initials="J." role="editor" surname="Scudder">
            <organization/>
          </author>
          <author fullname="P. Mohapatra" initials="P." surname="Mohapatra">
            <organization/>
          </author>
          <author fullname="K. Patel" initials="K." surname="Patel">
            <organization/>
          </author>
          <date month="August" year="2015"/>
          <abstract>
            <t>According to the base BGP specification, a BGP speaker that receives an UPDATE message containing a malformed attribute is required to reset the session over which the offending attribute was received. This behavior is undesirable because a session reset would impact not only routes with the offending attribute but also other valid routes exchanged over the session.  This document partially revises the error handling for UPDATE messages and provides guidelines for the authors of documents defining new attributes.  Finally, it revises the error handling procedures for a number of existing attributes.</t>
            <t>This document updates error handling for RFCs 1997, 4271, 4360, 4456, 4760, 5543, 5701, and 6368.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7606"/>
        <seriesInfo name="DOI" value="10.17487/RFC7606"/>
      </reference>
      <reference anchor="RFC0760">
        <front>
          <title>DoD standard Internet Protocol</title>
          <author fullname="J. Postel" initials="J." surname="Postel">
            <organization/>
          </author>
          <date month="January" year="1980"/>
        </front>
        <seriesInfo name="RFC" value="760"/>
        <seriesInfo name="DOI" value="10.17487/RFC0760"/>
      </reference>
      <reference anchor="RFC5218">
        <front>
          <title>What Makes for a Successful Protocol?</title>
          <author fullname="D. Thaler" initials="D." surname="Thaler">
            <organization/>
          </author>
          <author fullname="B. Aboba" initials="B." surname="Aboba">
            <organization/>
          </author>
          <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="TLS">
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla">
            <organization/>
          </author>
          <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="RFC9170">
        <front>
          <title>Long-Term Viability of Protocol Extension Mechanisms</title>
          <author fullname="M. Thomson" initials="M." surname="Thomson">
            <organization/>
          </author>
          <author fullname="T. Pauly" initials="T." surname="Pauly">
            <organization/>
          </author>
          <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="HTTP">
        <front>
          <title>HTTP Semantics</title>
          <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
            <organization/>
          </author>
          <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
            <organization/>
          </author>
          <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
            <organization/>
          </author>
          <date month="June" year="2022"/>
          <abstract>
            <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes. </t>
            <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="97"/>
        <seriesInfo name="RFC" value="9110"/>
        <seriesInfo name="DOI" value="10.17487/RFC9110"/>
      </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">
            <organization/>
          </author>
          <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
            <organization/>
          </author>
          <date month="May" year="2021"/>
          <abstract>
            <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9000"/>
        <seriesInfo name="DOI" value="10.17487/RFC9000"/>
      </reference>
      <reference anchor="EDE">
        <front>
          <title>Extended DNS Errors</title>
          <author fullname="W. Kumari" initials="W." surname="Kumari">
            <organization/>
          </author>
          <author fullname="E. Hunt" initials="E." surname="Hunt">
            <organization/>
          </author>
          <author fullname="R. Arends" initials="R." surname="Arends">
            <organization/>
          </author>
          <author fullname="W. Hardaker" initials="W." surname="Hardaker">
            <organization/>
          </author>
          <author fullname="D. Lawrence" initials="D." surname="Lawrence">
            <organization/>
          </author>
          <date month="October" year="2020"/>
          <abstract>
            <t>This document defines an extensible method to return additional information about the cause of DNS errors. Though created primarily to extend SERVFAIL to provide additional information about the cause of DNS and DNSSEC failures, the Extended DNS Errors option defined in this document allows all response types to contain extended error information. Extended DNS Error information does not change the processing of RCODEs.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8914"/>
        <seriesInfo name="DOI" value="10.17487/RFC8914"/>
      </reference>
      <reference anchor="RFC5704">
        <front>
          <title>Uncoordinated Protocol Development Considered Harmful</title>
          <author fullname="S. Bryant" initials="S." role="editor" surname="Bryant">
            <organization/>
          </author>
          <author fullname="M. Morrow" initials="M." role="editor" surname="Morrow">
            <organization/>
          </author>
          <author>
            <organization>IAB</organization>
          </author>
          <date month="November" year="2009"/>
          <abstract>
            <t>This document identifies problems that may result from the absence of formal coordination and joint development on protocols of mutual interest between standards development organizations (SDOs).  Some of these problems may cause significant harm to the Internet.  The document suggests that a robust procedure is required prevent this from occurring in the future.  The IAB has selected a number of case studies, such as Transport MPLS (T-MPLS), as recent examples to describe the hazard to the Internet architecture that results from uncoordinated adaptation of a protocol.</t>
            <t>This experience has resulted in a considerable improvement in the relationship between the IETF and the ITU-T.  In particular, this was achieved via the establishment of the "Joint working team on MPLS-TP".  In addition, the leadership of the two organizations agreed to improve inter-organizational working practices so as to avoid conflict in the future between ITU-T Recommendations and IETF RFCs.</t>
            <t>Whilst we use ITU-T - IETF interactions in these case studies, the scope of the document extends to all SDOs that have an overlapping protocol interest with the IETF.  This memo provides information for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5704"/>
        <seriesInfo name="DOI" value="10.17487/RFC5704"/>
      </reference>
      <reference anchor="MD5">
        <front>
          <title>Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms</title>
          <author fullname="S. Turner" initials="S." surname="Turner">
            <organization/>
          </author>
          <author fullname="L. Chen" initials="L." surname="Chen">
            <organization/>
          </author>
          <date month="March" year="2011"/>
          <abstract>
            <t>This document updates the security considerations for the MD5 message digest algorithm.  It also updates the security considerations for HMAC-MD5.  This document is not an Internet Standards Track  specification; it is published for informational purposes.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6151"/>
        <seriesInfo name="DOI" value="10.17487/RFC6151"/>
      </reference>
      <reference anchor="SSL3">
        <front>
          <title>Deprecating Secure Sockets Layer Version 3.0</title>
          <author fullname="R. Barnes" initials="R." surname="Barnes">
            <organization/>
          </author>
          <author fullname="M. Thomson" initials="M." surname="Thomson">
            <organization/>
          </author>
          <author fullname="A. Pironti" initials="A." surname="Pironti">
            <organization/>
          </author>
          <author fullname="A. Langley" initials="A." surname="Langley">
            <organization/>
          </author>
          <date month="June" year="2015"/>
          <abstract>
            <t>The Secure Sockets Layer version 3.0 (SSLv3), as specified in RFC 6101, is not sufficiently secure.  This document requires that SSLv3 not be used.  The replacement versions, in particular, Transport Layer Security (TLS) 1.2 (RFC 5246), are considerably more secure and capable protocols.</t>
            <t>This document updates the backward compatibility section of RFC 5246 and its predecessors to prohibit fallback to SSLv3.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7568"/>
        <seriesInfo name="DOI" value="10.17487/RFC7568"/>
      </reference>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Constructive feedback on this document has been provided by a surprising number
of people including, but not limited to: <contact fullname="Bernard Aboba"/>, <contact fullname="Brian Carpenter"/>, <contact fullname="Stuart Cheshire"/>, <contact fullname="Mark Nottingham"/>, <contact fullname="Russ Housley"/>,
<contact fullname="Eric Rescorla"/>, <contact fullname="Henning Schulzrinne"/>, <contact fullname="Job Snijders"/>, <contact fullname="Robert Sparks"/>, <contact fullname="Brian Trammell"/>, <contact fullname="Dave Thaler"/>, and <contact fullname="Anne Van Kesteren"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA619W5PbRpLue/0KhPxwZjbYtOTruDdmd9pSe6RdW+NVt8bn
PG0UgSJZ2yDAwaUpWqH/fvLLzLoAYOvMw4mwLYsNoqqy8vLlta+urszgh9pd
F89+sb4Z6F/f7Ip37Wbsh+LXrh3asq37Z6Zqy8Ye6Lmqs9vhytvN1VF/enXA
N11jm9JdvXhuSju4XdudrwvfbFvTj5uD73vfNsP5SC94c/Ojebwuvjan3XVx
++oX8+ia0V2both17XiUz4oiPoxd7Dp7oM9oofq6cNXhL7T+uu129Jntyv11
sR+GY3/95Zen02mtP/sSTx9s82Xt+wE7+ZK+SF/o3LFNX9j5YT9u1mV7+BLH
p5dtWttVX8oxLx2RXlHTCfshvST/5lrf6NvPvOPLz1NxvR8OtTF2HPZtR5S5
ojWLQuj/i+3oNMX9vj30bcM/oMPS5+3vvq4tf+CEUIfhL3V7cs3QtcfzunHD
9E2v7KOvirty7xv7u09v+mvb7mpX/PzzS/6sHzrn6LAvvnv+vLg5HPd0Pmfp
w+JX2z2c7JmfKv1wxiZG5qHi796d+PPO7ejmr4uXN/JYW9HKP3zz/Juv9e/0
BbDK+8YPjnYzgLRFu6WVXOfLyXmqXve69m7Y/mWHT3FzxuB6u4Md/CMz0uv7
X36+5m8G5sYnz/iTiha4Lr56/uKHq+dfXz3/k5yR1nI93iJfK4rfXt/c//bX
6+Jn/wiBoH01Fd2uvNR2O1DkWbh/XNe6P7pyfdrb4bRj9sNyr7+S9/35unj3
08sfXryQU1e+P9aWTv36/v7XL78yxlxdXRV2Q6S25WDM/d6B15ti19oaxCCK
F3R/p7Z7wG563U1fEPeUru8L3xdDWxD3bOjm8HTd0nOD6w4GXEUM4Dq78TXd
Et4XmK5fEyPRd0m6xwMxSlG5vuz8hq6ANkLUjE+ajD1XhS0Ozja8pi3pBo4k
Y3ta1w685XXx47lwj23NtANh/JbuciBOoBc3lfH0DYcF5bNV4Qcc4diSnuAT
tMQ41Vi6wh42fjfyth9dR/d5cHhDUXbEg/S/hnixHva0XNn2535wh7XQr2MV
1oA4x843pacVV3R2OkNx3He2J26zffFs44gJG2KAR2Yf0lkFLrE4tyOxRVOt
DJariSYd3UX+Uzq5Ow7PVsWe3sP0po1W9FrQnwjpdw1vdXpYQ+R/gyuh+8zv
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

-->

</rfc>
