<?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.25 (Ruby 2.6.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-zmlk-quic-te-00" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="quic-te">QUIC-enabled Service Differentiation for Traffic Engineering</title>
    <seriesInfo name="Internet-Draft" value="draft-zmlk-quic-te-00"/>
    <author fullname="Zhilong Zheng">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>zhiyou.zzl@alibaba-inc.com</email>
      </address>
    </author>
    <author fullname="Yunfei Ma">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>yunfei.ma@alibaba-inc.com</email>
      </address>
    </author>
    <author fullname="Yanmei Liu">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>miaoji.lym@alibaba-inc.com</email>
      </address>
    </author>
    <author fullname="Mirja Kühlewind">
      <organization>Ericsson</organization>
      <address>
        <email>mirja.kuehlewind@ericsson.com</email>
      </address>
    </author>
    <date year="2023" month="May" day="05"/>
    <area>Transport</area>
    <workgroup>TODO</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines a method for supporting QUIC-enabled service differentiation for traffic engineering through multipath and QUIC connection identifier (CID) encoding. This approach enables end-host networking stacks and applications to select packet routing paths in a wide area network (WAN), potentially improving the end-to-end performance, cost, and reliability. The proposed method can be used in conjunction with segment routing traffic engineering technologies, such as SRv6 TE.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>This draft outlines a method that enables a WAN to manage packets from a single QUIC connection with differentiated traffic engineering policies at packet-level granularity. For instance, a WAN can offer two priority routing paths for packets from the same QUIC connection: (1) it directs first-time transmitted packets on a default-priority, low-cost path, and (2) it routes retransmitted packets and handshake packets on a high-priority (low-latency) but more expensive path. Consequently, this approach achieves cost-efficiency and reduces tail latency simultaneously.</t>
      <t>While there are existing solutions to support Differentiated Service (DiffServ), such as using Differentiated Services Code Point (DSCP) or opening multiple ports to enable QoS control, they have several limitations. For example, DSCP values may be modified by an ISP or a network service provider, and opening multiple ports rasies security concerns (more details as discussed in <xref target="alternatives"/>).</t>
      <t>The solution proposed in this draft can overcome these limitations, as it is designed with the following properties: (1) The serivce differentiation encoding is immune to modifications by middleboxes. (2) It provides traffic engineering control at packet-level granularity within a connection. (3) A user-space application can directly control the priority of each packet without special support from the kernel. (4) It does not change the deployment method, as current QUIC applications have.</t>
      <t>In a nutshell, this proposal establishes multiple routing paths at different priority levels inside a single QUIC connection and encodes a packet's routing priority in its CID. Specifically, this proposal reuses mechanisms from Multipath QUIC <xref target="Multipath-QUIC"/>, but makes two major changes:
(1) Multiple QUIC paths are allowed to be created between a single-homed client and sever (e.g., the client and server can both have only one (IP, port) address). (2) This proposal leverages different CIDs to describe various priority levels for QUIC packets that belong to the same connection. CID is unencrypted (or weakly encrypted via symmetric encryption <xref target="QUIC-LB"/>), allowing it to be parsed by a network node (e.g., an edge gateway).</t>
      <t>In this draft, QUIC paths can share the same perceived 4-tuple, but as long as their underlying phyiscal routing paths are not the same, they are treated as different paths. This proposal shares many key similarities to Multipath QUIC: (1) Senders manage per-path congestion status; (2) RTT measurements are per-path. (3) Each path uses a separate packet number space (PNS); (4) A path ID is the sequence number of the CID used to send packets. (5) Once multipath is negotiated, ACK_MP frame is used to acknowledge packets in multiple packet number spaces.</t>
      <t>The proposed solution is intended to work with edge routers that have segment routing capabilities, such as SRv6 <xref target="RFC8986"/>. Note that the QUIC CID is not intended to be directly used for routing in Cloud WAN, but SHOULD be tranlated to SRv6 SID or an MPLS label by an edge router for traffic engineering purposes.</t>
      <section anchor="definition">
        <name>Conventions and Definitions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP 14
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>
        <t>This document uses the following terms:</t>
        <ul spacing="normal">
          <li>Cloud WAN: The backbone network provided and controlled by a Cloud provider, or the backbone network operated by an application service provider.</li>
          <li>Edge router: Edge router of a backbone network.</li>
          <li>QUIC path: The path described in Multipath QUIC protocol, which is a logically end-to-end transmission path created by the client.</li>
          <li>Routing path: The network path that a packet physically traverses, also specified as the Cloud WAN path in this document.</li>
        </ul>
      </section>
    </section>
    <section anchor="alternatives">
      <name>Alternatives to support service differentiation in traffic engineering</name>
      <t>This section describes existing solutions that offer service differentiation in traffic engineering and their limitations when applied to the internet.</t>
      <t>The most commonly used solution is to use the DSCP packet marking <xref target="RFC8837"/> for traffic engineering. However, such a solution faces several limitations: (1) A DSCP marker is subject to modifications by an ISP or a network service provider. (2) Marking DSCP on mobile devices may require kernel changes. (3) DSCP is marked at the granularity of connection or session, which means packets with the same 4-tuple are treated with the same priority, and hence, it cannot support packet-level QoS control.</t>
      <t>The second solution is to use multiple ports, either source or destination ports, to differentiate QoS between two endpoints. When this solution is used, packets with different priorities are sent to sockets bound to different ports. However, such a solution also faces several drawbacks. Source ports may be modified by a NAT in the network, which changes the priority. Using destination ports to support QoS raises security concerns, as opening many ports increases the potential attack surface for cyber threats. Desination ports other than some well-known ports (e.g., 80, 433) may also be subject to blocking by firewalls.</t>
    </section>
    <section anchor="using-multipath-quic">
      <name>Using Multipath QUIC</name>
      <section anchor="new-transport-parameter">
        <name>New Transport Parameter</name>
        <t>This draft defines a new transport parameter to claim the adoption of priority paths. It is negotiated during QUIC handshake as described in <xref target="RFC9000"/>. The new parameter is defined as PRIORITY_PATHS. This parameter is used to indicate the number of priority levels:</t>
        <ul spacing="normal">
          <li>
            <tt>0, 1</tt>: Only one path is available, i.e., multiple priority levels are not considered.</li>
          <li>
            <tt>n (n &gt; 1)</tt>: <tt>n</tt> paths are available, i.e., <tt>n</tt> priority levels are available for use.</li>
        </ul>
        <t>When the client supports PRIORITY_PATHS, it sends a value greater than 1 to the server side. After receiving it, the server returns the configured value of PRIORITY_PATHS to the client. The PRIORITY_PATHS value that a client uses MUST be consistent with the returned value from server, i.e., the server determines how many of priority paths can be used.</t>
        <t>The server and CID parser share the same PRIORITY_PATHS values, which are configured by the control plane. After negotiation, the client obtains the same value as the server. Therefore, for the same CID, the client/CID parser/server can calculate the same priority value (see <xref target="cid_generation"/>).</t>
      </section>
      <section anchor="quic-connection-setup">
        <name>QUIC Connection Setup</name>
        <t>When a QUIC client starts a new connection, it uses a CID generated using the default priority (defined as <tt>0</tt>). If PRIORITY_PATHS is supported, a server SHOULD respond with a CID that represents the default priority and indicate to the client that it supports PRIORITY_PATHS.</t>
      </section>
      <section anchor="paths-setup-with-more-priorities">
        <name>Paths Setup with More Priorities</name>
        <t>After QUIC connection negotiation is completed, endpoints need to exchange CIDs with each other. These CIDs are generated using the method described in <xref target="cid_generation"/>. <xref target="fig-pathsetup"/> illustrates an example of this process. The client sends CIDs with priority 1 and priority 2 (C-CID1 and C-CID2), and the server also sends CIDs representing these two priority levels (S-CID1 and S-CID2).</t>
        <figure anchor="fig-pathsetup">
          <name>An example of CID exchange and path setup</name>
          <artwork><![CDATA[
Client                                                  Server

  (CID exchange)
  NEW_CONNECTION_ID[C-CID1]
  NEW_CONNECTION_ID[C-CID2]        --->
                                     NEW_CONNECTION_ID[S-CID1]
                          <---       NEW_CONNECTION_ID[S-CID2]

  (New path init with priority 1)
  PATH_CHALLENGE[S-CID1]           --->
                   <---   PATH_RESPONSE,PATH_CHALLENGE[C-CID1]

  PATH_RESPONSE[S_CID1]            --->
]]></artwork>
        </figure>
        <t>After the CID exchange is completed, the client selects S-CID1 to establish a new path of priority 1 via PATH_CHALLENGE frame. Even though the packet that uses S-CID1 comes from the same 4-tuple as the default path (i.e., priority 0), the server SHOULD treat it as a new path establishment request and respond with PATH_RESPONSE and PATH_CHALLENGE frames using a CID of the same path priority, i.e., C-CID1.</t>
      </section>
      <section anchor="effect-of-cid-rotation">
        <name>Effect of CID rotation</name>
        <t>When an endpoint rotates to a new CID on an existing path, it will not send PATH_CHALLENGE frame and the new CID does not change the path priority, so the peer will not treat this new CID as an attempt to create a new path.</t>
      </section>
    </section>
    <section anchor="cid_generation">
      <name>CID Generation with Given Priorities</name>
      <t>Once transport parameter is negotiated and PRIORITY_PATHS is supported, the endpoint will generate several CIDs that are used to represent the priority and be ready for path creation. All QUIC packets described in this document MUST NOT use zero-length CID. The configuration in QUIC server defines how many priority levels (i.e., <tt>n</tt>) are adopted. For a given priority level <tt>p</tt>, where <tt>0 &lt;= p &lt;= n-1</tt>.  A CID is generated as <tt>CID = random_num * n + p</tt>.</t>
      <t>When an endpoint receives CIDs from its peer, it obtains the priority of a CID via the following simple modulo calculation: <tt>priority = CID % n</tt>.</t>
      <t>Note that the above addition, multiplication and division operations are in the finite field.</t>
    </section>
    <section anchor="cid_parsing">
      <name>CID Parsing in Cloud WAN</name>
      <t>This section describes CID parsing in a network node, which is called a CID parser. This paser is usually located at the edge of Cloud WAN. It receives traffic from datacenters or mobile carrier networks.</t>
      <t>The CID parser stores a configuration file，described below:</t>
      <artwork><![CDATA[
(QUIC server IP and port) ==> (CID length, priority levels n)
]]></artwork>
      <t>This configuration specifies packets from/to which QUIC servers require routing on priority paths, the CID length, and priority levels <tt>n</tt>. It also records the mapping of priority levels to specific traffic engineering policies. The configuration file is issued by the control plane and can be updated during runtime.</t>
      <t>In the case of SRv6 TE, such a priority level is mapped to SRv6 SIDs as shown below:</t>
      <artwork><![CDATA[
(priority 0） ==> (SRv6 SID 0)
(priority 1） ==> (SRv6 SID 1)
(priority 2） ==> (SRv6 SID 2)
]]></artwork>
      <t>When a parser receives a QUIC packet, according to the configuration file, it first parses the source IP (from server to client) or destination IP (from client to server) of the packet to check whether it needs to further parse the CID. If necessary, the parser then uses the corresponding <tt>n</tt> to calculate the priority via modulo calculation. Based on the calculated result, the parser adds the corresponding SRv6 SID to the packet, so that the packet can be routed on the desired priority path. As these operations only include <tt>match</tt>, <tt>insert new header</tt>, and <tt>modulo calculation</tt>，they can be efficiently offloaded to hardware.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <section anchor="packet-flow-from-server-to-client">
        <name>Packet Flow from Server to Client</name>
        <t><xref target="fig-overview"/> shows a typical example that how the packets from a server to a client are routed on different Cloud WAN routing paths according to different CIDs (priorities).</t>
        <figure anchor="fig-overview">
          <name>An example of packet flow from server to client</name>
          <artwork><![CDATA[
                +--------------------+
                | Cloud VM           |
                | +----------------+ |API: priority description
                | |   APP server   | |(retrans_pkts: high_priority)
                | +----------------+ |(other_pkts: default_priority)
                | | Multipath QUIC | |
                | +----------------+ |
                |                    |
                +-------+----+-------+
                        |    |
         Path1[C-DCID0] |    | Path2[C-DCID1]
         (other_pkts)   |    | (retrans_pkts)
+-----------------------+----+-------------------------+
|                       |    |              Cloud WAN  |
|                   +---v----v---+                     |
|                 +-+ CID parser +-+                   |
|                 | +------------+ |                   |
|         C-DCID0 |                | C-DCID1           |
|                 |                |                   |
|              +--v-+            +-v--+                |
|              | R1 |            | R2 |                |
|              +--+-+            +--+-+                |
|    Regular link |                 | Premium link     |
|                 |                 |                  |
|                 |     +----+      |                  |
|                 +-----> R3 <------+                  |
|                       +-+--+                         |
|                         |                            |
+-------------------------+----------------------------+
                          |
                     +----v-----+
                     | ISP edge |
                     ++--------++
                  C-DCID0 || C-DCID1
                +-----v--------v------+
                |                     |
                | +-----------------+ |
                | | Multipath QUIC  | |
                | +-----------------+ |
                | |   APP client    | |
                | +-----------------+ |
                | Mobile device       |
                +---------------------+
]]></artwork>
        </figure>
        <t>The app first describes its priority requirements through the API to the QUIC layer. As shown in this figure, it describes that retransmitted packets should be routed on a high-priority path, while other packets are routed on a default-priority path.</t>
        <t>When these QUIC packets arrive at the edge of Cloud WAN, the CID parser parses each packet and extracts the priority encoded in the CIDs as described in <xref target="cid_parsing"/>. Based on the priority, packets are sent on different routing paths via added SRv6 SIDs. For example, low-priority packets will be routed on a default low-cost path, while high-priority packets will routed on a preimum low-latency path.</t>
        <t>Since packets using different CIDs belong to the same QUIC connection, they will be combined into a complete and ordered stream by QUIC and then submitted to the upper-layer application.</t>
      </section>
      <section anchor="deployment-of-cid-parser">
        <name>Deployment of CID Parser</name>
        <t>This section discusses some experiences regarding the deployment of CID parsers in a Cloud WAN. Two issues should be considered in the actual deployment:</t>
        <ul spacing="normal">
          <li>Where to deploy?</li>
          <li>Translating QUIC CID to SRv6 segment identifiers or MPLS labeling?</li>
        </ul>
        <t>For the first one, parser is usually deployed on the edge of Cloud WAN. For uplink traffic, it is deployed at the intersection of the ISP network; for downlink traffic, it is deployed at the edge routers of a datacenter region.</t>
        <t>For the second one, this document recommends using SRv6 because it has better scalability and flexibility.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>The following entry in Table <xref target="tab-new-transport-parameter"/> should be added to the "QUIC Transport Parameters" registry under the "QUIC Protocol" heading:</t>
      <table anchor="tab-new-transport-parameter">
        <name>New Transport Parameter</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Parameter Name.</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD (experiments use 0x5052494f52495459)</td>
            <td align="left">PRIORITY_PATHS</td>
            <td align="left">
              <xref target="cid_generation"/></td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="Multipath-QUIC">
        <front>
          <title>Multipath Extension for QUIC</title>
          <author fullname="Yanmei Liu" initials="Y." surname="Liu">
            <organization>Alibaba Inc.</organization>
          </author>
          <author fullname="Yunfei Ma" initials="Y." surname="Ma">
            <organization>Alibaba Inc.</organization>
          </author>
          <author fullname="Quentin De Coninck" initials="Q." surname="De Coninck">
            <organization>UCLouvain</organization>
          </author>
          <author fullname="Olivier Bonaventure" initials="O." surname="Bonaventure">
            <organization>UCLouvain and Tessares</organization>
          </author>
          <author fullname="Christian Huitema" initials="C." surname="Huitema">
            <organization>Private Octopus Inc.</organization>
          </author>
          <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
            <organization>Ericsson</organization>
          </author>
          <date day="13" month="March" year="2023"/>
          <abstract>
            <t>   This document specifies a multipath extension for the QUIC protocol
   to enable the simultaneous usage of multiple paths for a single
   connection.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the QUIC Working Group
   mailing list (quic@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/quic/.

   Source for this draft and an issue tracker can be found at
   https://github.com/mirjak/draft-lmbdhk-quic-multipath.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-quic-multipath-04"/>
      </reference>
      <reference anchor="QUIC-LB">
        <front>
          <title>QUIC-LB: Generating Routable QUIC Connection IDs</title>
          <author fullname="Martin Duke" initials="M." surname="Duke">
            <organization>Google</organization>
          </author>
          <author fullname="Nick Banks" initials="N." surname="Banks">
            <organization>Microsoft</organization>
          </author>
          <author fullname="Christian Huitema" initials="C." surname="Huitema">
            <organization>Private Octopus Inc.</organization>
          </author>
          <date day="24" month="October" year="2022"/>
          <abstract>
            <t>   QUIC address migration allows clients to change their IP address
   while maintaining connection state.  To reduce the ability of an
   observer to link two IP addresses, clients and servers use new
   connection IDs when they communicate via different client addresses.
   This poses a problem for traditional "layer-4" load balancers that
   route packets via the IP address and port 4-tuple.  This
   specification provides a standardized means of securely encoding
   routing information in the server's connection IDs so that a properly
   configured load balancer can route packets with migrated addresses
   correctly.  As it proposes a structured connection ID format, it also
   provides a means of connection IDs self-encoding their length to aid
   some hardware offloads.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-quic-load-balancers-15"/>
      </reference>
      <reference anchor="RFC8986">
        <front>
          <title>Segment Routing over IPv6 (SRv6) Network Programming</title>
          <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils">
            <organization/>
          </author>
          <author fullname="P. Camarillo" initials="P." role="editor" surname="Camarillo">
            <organization/>
          </author>
          <author fullname="J. Leddy" initials="J." surname="Leddy">
            <organization/>
          </author>
          <author fullname="D. Voyer" initials="D." surname="Voyer">
            <organization/>
          </author>
          <author fullname="S. Matsushima" initials="S." surname="Matsushima">
            <organization/>
          </author>
          <author fullname="Z. Li" initials="Z." surname="Li">
            <organization/>
          </author>
          <date month="February" year="2021"/>
          <abstract>
            <t>The Segment Routing over IPv6 (SRv6) Network Programming framework enables a network operator or an application to specify a packet processing program by encoding a sequence of instructions in the IPv6 packet header.</t>
            <t>Each instruction is implemented on one or several nodes in the network and identified by an SRv6 Segment Identifier in the packet.</t>
            <t>This document defines the SRv6 Network Programming concept and specifies the base set of SRv6 behaviors that enables the creation of interoperable overlays with underlay optimization.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8986"/>
        <seriesInfo name="DOI" value="10.17487/RFC8986"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner">
            <organization/>
          </author>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba">
            <organization/>
          </author>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="RFC8837">
        <front>
          <title>Differentiated Services Code Point (DSCP) Packet Markings for WebRTC QoS</title>
          <author fullname="P. Jones" initials="P." surname="Jones">
            <organization/>
          </author>
          <author fullname="S. Dhesikan" initials="S." surname="Dhesikan">
            <organization/>
          </author>
          <author fullname="C. Jennings" initials="C." surname="Jennings">
            <organization/>
          </author>
          <author fullname="D. Druta" initials="D." surname="Druta">
            <organization/>
          </author>
          <date month="January" year="2021"/>
          <abstract>
            <t>Networks can provide different forwarding treatments for individual packets based on Differentiated Services Code Point (DSCP) values on a per-hop basis.  This document provides the recommended DSCP values for web browsers to use for various classes of Web Real-Time Communication (WebRTC) traffic.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8837"/>
        <seriesInfo name="DOI" value="10.17487/RFC8837"/>
      </reference>
      <reference anchor="RFC9000">
        <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>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
