<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" docName="draft-ietf-sidrops-rrdp-same-origin-04" number="9674" ipr="trust200902" xml:lang="en" symRefs="true" sortRefs="true" submissionType="IETF" consensus="true" updates="8182" obsoletes="" tocInclude="true" prepTime="2024-12-04T16:01:17" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-sidrops-rrdp-same-origin-04" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9674" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="RRDP Same-Origin Policy">Same-Origin Policy for the RPKI Repository Delta Protocol (RRDP)</title>
    <seriesInfo name="RFC" value="9674" stream="IETF"/>
    <author fullname="Job Snijders" initials="J." surname="Snijders">
      <organization showOnFrontPage="true">Fastly</organization>
      <address>
        <postal>
          <city>Amsterdam</city>
          <country>Netherlands</country>
        </postal>
        <email>job@fastly.com</email>
      </address>
    </author>
    <date month="12" year="2024"/>
    <area>OPS</area>
    <workgroup>sidrops</workgroup>
    <keyword>same-origin</keyword>
    <keyword>RPKI</keyword>
    <keyword>RRDP</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">
        This document describes a Same-Origin Policy (SOP) requirement for Resource Public Key Infrastructure (RPKI) Repository Delta Protocol (RRDP) servers and clients.
        Application of a SOP in RRDP client/server communication isolates resources such as Delta and Snapshot files from different Repository Servers, reducing possible attack vectors.
        This document updates RFC 8182.
      </t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9674" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2024 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-implications-of-cross-origi">Implications of Cross-Origin Resource Requests in RRDP</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-changes-to-rfc-8182">Changes to RFC 8182</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-new-requirements-for-rrdp-r">New Requirements for RRDP Repository Servers</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-new-requirements-for-relyin">New Requirements for Relying Parties Using RRDP</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-deployability-in-the-intern">Deployability in the Internet's Current RPKI</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-address">Author's Address</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="intro" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">
        This document specifies a Same-Origin Policy (SOP) requirement for RPKI Repository Delta Protocol (RRDP) servers and clients.
        The SOP concept is a security mechanism to restrict how a document loaded from one origin can cause interaction with resources from another origin.
        See <xref target="RFC6454" format="default" sectionFormat="of" derivedContent="RFC6454"/> for an overview of the concept of an "origin".
        Application of a SOP in RRDP client/server communication isolates resources such as Delta and Snapshot files from different Repository Servers, reducing possible attack vectors.
        Another way to avoid undesirable implications (as described in <xref target="issue" format="default" sectionFormat="of" derivedContent="Section 2"/>) would be for a future version of RRDP to use relative URIs instead of absolute URIs.
        This document updates <xref target="RFC8182" format="default" sectionFormat="of" derivedContent="RFC8182"/>.
      </t>
      <section anchor="requirements" numbered="true" removeInRFC="false" toc="include" pn="section-1.1">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-1.1-1">
          The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
    </section>
    <section anchor="issue" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-implications-of-cross-origi">Implications of Cross-Origin Resource Requests in RRDP</name>
      <t indent="0" pn="section-2-1">
        The first RRDP specification did not explicitly disallow 'cross-origin' URI references from the Update Notification file (<xref target="RFC8182" section="3.5.1" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8182#section-3.5.1" derivedContent="RFC8182"/>) towards Delta (<xref target="RFC8182" section="3.5.3" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8182#section-3.5.3" derivedContent="RFC8182"/>) and Snapshot (<xref target="RFC8182" section="3.5.2" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8182#section-3.5.2" derivedContent="RFC8182"/>) files, and it was silent on the topic of HTTP Redirection (<xref target="RFC9110" section="15.4" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9110#section-15.4" derivedContent="RFC9110"/>).
      </t>
      <t indent="0" pn="section-2-2">
        The implication of cross-origin references in Update Notification files is that one Repository Server can reference RRDP resources on another Repository Server and in doing so inappropriately increase the resource consumption for both RRDP clients and the referenced Repository Server.
        An adversary could also employ cross-origin HTTP Redirects towards other Repository Servers, causing similar undesirable behavior.
      </t>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-changes-to-rfc-8182">Changes to RFC 8182</name>
      <t indent="0" pn="section-3-1">
        To overcome the issue described in <xref target="issue" format="default" sectionFormat="of" derivedContent="Section 2"/>, RRDP Repository Servers and Clients <bcp14>MUST</bcp14> apply a Same-Origin Policy to both the URIs referenced in an Update Notification File and any HTTP Redirects.
      </t>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-3.1">
        <name slugifiedName="name-new-requirements-for-rrdp-r">New Requirements for RRDP Repository Servers</name>
        <t indent="0" pn="section-3.1-1">
          The following checklist items are added to <xref target="RFC8182" section="3.5.1.3" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8182#section-3.5.1.3" derivedContent="RFC8182"/>:
        </t>
        <t indent="0" pn="section-3.1-2">NEW</t>
        <blockquote pn="section-3.1-3">
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.1-3.1">
            <li pn="section-3.1-3.1.1">The "uri" attribute in the snapshot element and optional delta
            elements <bcp14>MUST</bcp14> be part of the same origin (i.e.,
            represent the same principal), meaning referenced URIs
            <bcp14>MUST</bcp14> have the same scheme, host, and port as the
            URI for the Update Notification File specified in the referring
            RRDP SIA AccessDescription.</li>
            <li pn="section-3.1-3.1.2">The Repository Server <bcp14>MUST NOT</bcp14> respond with
            HTTP Redirects towards locations with an origin different from the
            origin of the Update Notification File specified in the referring
            RRDP SIA AccessDescription.</li>
          </ul>
        </blockquote>
      </section>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-3.2">
        <name slugifiedName="name-new-requirements-for-relyin">New Requirements for Relying Parties Using RRDP</name>
        <t indent="0" pn="section-3.2-1">
          The following adds to <xref target="RFC8182" section="3.4.1" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8182#section-3.4.1" derivedContent="RFC8182"/>:
        </t>
        <t indent="0" pn="section-3.2-2">NEW</t>
        <blockquote pn="section-3.2-3">
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2-3.1">
            <li pn="section-3.2-3.1.1">The Relying Party <bcp14>MUST</bcp14> verify whether the
            "uri" attributes in the Update Notification File are of the same
            origin as the Update Notification File itself.  If this
            verification fails, the file <bcp14>MUST</bcp14> be rejected and
            RRDP cannot be used; see Section <xref target="RFC8182" section="3.4.5" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8182#section-3.4.5" derivedContent="RFC8182"/>
            for considerations.  Implementations <bcp14>SHOULD</bcp14> log a
            message when cross-origin referrals are detected.
            </li>
            <li pn="section-3.2-3.1.2">The Relying Party <bcp14>MUST NOT</bcp14> follow HTTP
            Redirection that results from attempts to download Update
            Notification, Delta, and Snapshot files if the target origin is
            different from the origin of the Update Notification File
            specified in the referring RRDP SIA AccessDescription.  If this
            verification fails, the RRDP session <bcp14>MUST</bcp14> be
            rejected and RRDP cannot be used; see Section <xref target="RFC8182" section="3.4.5" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8182#section-3.4.5" derivedContent="RFC8182"/> for considerations.  Implementations
            <bcp14>SHOULD</bcp14> log a message when cross-origin redirects
            are detected.
            </li>
          </ul>
        </blockquote>
      </section>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-deployability-in-the-intern">Deployability in the Internet's Current RPKI</name>
      <t indent="0" pn="section-4-1">
        Analyzing the <xref target="rpkiviews" format="default" sectionFormat="of" derivedContent="rpkiviews"/> archives for the period from April to September 2024, only one RRDP server (reached following the Trust Anchor Locators (TALs)  of the five Regional Internet Registries) employed a same-origin HTTP redirect.
        In the period October 2021 - October 2024 no RRDP Repository Servers were observed that employed cross-origin URIs in Update Notification Files.
      </t>
      <t indent="0" pn="section-4-2">
        This means that imposing a requirement for the application of a Same-Origin Policy does not cause any existing commonly used RRDP Repository Server operations to become non-compliant.
      </t>
    </section>
    <section anchor="security" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-5-1">
        This document addresses an oversight in the original RRDP specification: Cross-origin requests are detrimental as they allow one repository operator to increase resource consumption for other repository operators and RRDP clients.
      </t>
    </section>
    <section anchor="iana" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-6-1">
        This document has no IANA actions.
      </t>
    </section>
  </middle>
  <back>
    <references pn="section-7">
      <name slugifiedName="name-references">References</name>
      <references pn="section-7.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC6454" target="https://www.rfc-editor.org/info/rfc6454" quoteTitle="true" derivedAnchor="RFC6454">
          <front>
            <title>The Web Origin Concept</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="December" year="2011"/>
            <abstract>
              <t indent="0">This document defines the concept of an "origin", which is often used as the scope of authority or privilege by user agents. Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites. In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string. It also defines an HTTP header field, named "Origin", that indicates which origins are associated with an HTTP request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6454"/>
          <seriesInfo name="DOI" value="10.17487/RFC6454"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8182" target="https://www.rfc-editor.org/info/rfc8182" quoteTitle="true" derivedAnchor="RFC8182">
          <front>
            <title>The RPKI Repository Delta Protocol (RRDP)</title>
            <author fullname="T. Bruijnzeels" initials="T." surname="Bruijnzeels"/>
            <author fullname="O. Muravskiy" initials="O." surname="Muravskiy"/>
            <author fullname="B. Weber" initials="B." surname="Weber"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <date month="July" year="2017"/>
            <abstract>
              <t indent="0">In the Resource Public Key Infrastructure (RPKI), Certificate Authorities (CAs) publish certificates, including end-entity certificates, Certificate Revocation Lists (CRLs), and RPKI signed objects to repositories. Relying Parties retrieve the published information from those repositories. This document specifies a new RPKI Repository Delta Protocol (RRDP) for this purpose. RRDP was specifically designed for scaling. It relies on an Update Notification File which lists the current Snapshot and Delta Files that can be retrieved using HTTPS (HTTP over Transport Layer Security (TLS)), and it enables the use of Content Distribution Networks (CDNs) or other caching infrastructures for the retrieval of these files.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8182"/>
          <seriesInfo name="DOI" value="10.17487/RFC8182"/>
        </reference>
        <reference anchor="RFC9110" target="https://www.rfc-editor.org/info/rfc9110" quoteTitle="true" derivedAnchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t indent="0">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 indent="0">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>
      </references>
      <references pn="section-7.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="rpkiviews" target="https://www.rpkiviews.org" quoteTitle="true" derivedAnchor="rpkiviews">
          <front>
            <title>rpkiviews</title>
            <author fullname="Job Snijders" initials="J" surname="Snijders"/>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgements" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">
        The author wishes to thank
        <contact fullname="Theo Buehler"/>,
        <contact fullname="Claudio Jeker"/>,
        <contact fullname="Alberto Leiva"/>,
        <contact fullname="Tim Bruijnzeels"/>,
        <contact fullname="Ties de Kock"/>,
        <contact fullname="Martin Hoffmann"/>,
        and
        <contact fullname="Mikhail Puzanov"/>
        for their helpful feedback, comments, and implementation work.
        The author wishes to thank
        <contact fullname="Keyur Patel"/>,
        <contact fullname="Meral Shirazipour"/>,
        <contact fullname="Niclas Comstedt"/>,
        <contact fullname="Dan Harkins"/>,
        <contact fullname="Erik Kline"/>,
        <contact fullname="Roman Danyliw"/>,
        and
        <contact fullname="Éric Vyncke"/>
        for their review.
      </t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-address">Author's Address</name>
      <author fullname="Job Snijders" initials="J." surname="Snijders">
        <organization showOnFrontPage="true">Fastly</organization>
        <address>
          <postal>
            <city>Amsterdam</city>
            <country>Netherlands</country>
          </postal>
          <email>job@fastly.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
