<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.2 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-zmlk-quic-te-01" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="quic-te">QUIC-enabled Service Differentiation for Traffic Engineering</title>
    <seriesInfo name="Internet-Draft" value="draft-zmlk-quic-te-01"/>
    <author fullname="Zhilong Zheng">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>zhiyou.zzl@alibaba-inc.com</email>
      </address>
    </author>
    <author fullname="Yunfei Ma">
      <organization>Uber Technologies Inc.</organization>
      <address>
        <email>yunfei.ma@uber.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="November" day="08"/>
    <area>Transport</area>
    <workgroup>TODO</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 60?>

<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 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>
    <?line 64?>

<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 raises 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 service 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 each packet's priority without the kernel's special support. (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 server (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.</t>
      <t>In this draft, QUIC paths can share the same perceived 4-tuple, but as long as their underlying physical 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 translated 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>
            <t>Cloud WAN: The backbone network provided and controlled by a Cloud provider, or the backbone network operated by an application service provider.</t>
          </li>
          <li>
            <t>Edge router: Edge router of a backbone network.</t>
          </li>
          <li>
            <t>QUIC path: The path described in Multipath QUIC protocol, which is a logical end-to-end transmission path created by the client.</t>
          </li>
          <li>
            <t>Routing path: The network path that a packet physically traverses, also specified as the Cloud WAN path in this document.</t>
          </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. Destination 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="sec_parameters">
        <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>
            <t><tt>0, 1</tt>: Only one path is available, i.e., multiple priority levels are not considered.</t>
          </li>
          <li>
            <t><tt>n (n &gt; 1)</tt>: <tt>n</tt> paths are available, i.e., <tt>n</tt> priority levels are available for use.</t>
          </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 the server, i.e., the server determines how many 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.</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 and Parsing</name>
      <section anchor="overview-of-end-to-end-network">
        <name>Overview of End-to-end Network</name>
        <figure anchor="fig-overview-e2e">
          <name>End-to-end network</name>
          <artwork><![CDATA[
  +--------+
  | Server |
  +--------+
       |
       | Cloud DCN
       |
+------+------+
| CID parser2 |
+------+------+
       |
       | Cloud WAN
       |
+------+------+
| CID parser2 |
+------+------+
       |
       | Internet access
       | network
       |
  +----+---+
  | Client |
  +--------+


]]></artwork>
        </figure>
        <t>QUIC packets traverse the end-to-end network as described in <xref target="fig-overview-e2e"/>. This network includes three parts: internet access network, Cloud WAN, and Cloud DCN.</t>
        <t>The Cloud WAN has various routing paths with different performances, thus priority scheduling is applied. The client and server assign different priorities to the CIDs they generate and send. At the Cloud WAN edge, two CID parsers are responsible for parsing the priority of incoming packets and forwarding them to the appropriate routing path.</t>
      </section>
      <section anchor="cid-generation-on-the-server-side">
        <name>CID Generation on the Server Side</name>
        <t>There are two purposes for encoding the CID: 1. The client and server can understand the priority represented by the CID; 2. There MUST NOT be a correlation between the CID and its priority, which is important to prevent privacy leaks if an attacker observes.</t>
        <t>Their CIDs are generated on the server side for packets from the client to the server. The format of an encoded CID on the server side is defined below:</t>
        <artwork><![CDATA[
CID {
  Random Bits (32 .. 152),
  Priority Bits (8),
}
]]></artwork>
        <t>To prevent the priority value from being observed by an attacker, the server uses encryption (e.g., AES-128-ECS cipher) to obscure the CID, which is similar to <xref target="QUIC-LB"/>. The encryption key and length are pre-configured on the server.</t>
        <t>Note that when the generated CID is sent to the client through NEW_CONNECTION_ID frame, the Sequence Number in this frame needs to satisfy <tt>priority = sequence_number % n</tt> (<tt>n</tt> is described in <xref target="sec_parameters"/>). The client will use Sequence Number to calculate priority.</t>
      </section>
      <section anchor="cid-generation-on-the-client-side">
        <name>CID Generation on the Client Side</name>
        <t>Their CIDs are generated on the client side for packets from the server to the client. Its format is the same as the definition in <xref target="RFC9000"/>, which is completely random.</t>
        <t>When the server sends QUIC packets with these CIDs, an additional byte is appended before the first byte of a CID to indicate the priority. The CID parser 2 will remove this byte after receiving these packets from the server. Therefore, CIDs within these packets remain completely random as they were generated on the client side. As they traverse through the Cloud WAN and internet access network, the priority cannot be observed. Moreover, the DCN operates as a private network that attackers typically cannot access.</t>
      </section>
      <section anchor="cid_parsing">
        <name>CID Parsing</name>
        <t>CID parser 1 parses QUIC packets sent from the client to the server. These packets contain encrypted CIDs. Thus, parser 1 initially decrypts the CIDs (using the same encryption key as the server, which is also pre-configured). For each CID, it only needs to be decrypted once. It then reads the last byte of the CID, which indicates the priority and forwards the packets.</t>
        <t>CID Parser 2 parses QUIC packets from the server to the client. It extracts the first byte of the CID, which represents the priority, then removes it and forwards the packets.</t>
        <t>When forwarding a packet, its priority is translated to an SRv6 SID or an MPLS label to map it to the appropriate routing path. Thus, both parsers record 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>Based on the parsed priority, 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 matching, removing bytes, and inserting new headers, they can be efficiently offloaded to hardware.</t>
      </section>
    </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 ser^er   | |(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 parser2 +-+                  |
|                 | +-------------+ |                  |
|         C+DCID0 |                 |C+DCID1           |
|                 |                 |                  |
|              +--v-+            +--v-+                |
|              | R1 |            | R2 |                |
|              +--+-+            +--+-+                |
|    Regular link |                 | Premium link     |
|                 |                 |                  |
|                 | +-------------+ |                  |
|                 +-> CID parser1 <-+                  |
|                   +-----+-------+                    |
|                         |                            |
+------------------------------------------------------+
                          |
                     +----v-----+
                     | ISP edge |
                     +----------+
                  C+DCID0 || C|DCID1
                +-----^--------^------+
                |                     |
                | +-----------------+ |
                | | Multipath QUIC  | |
                | +-----------------+ |
                | |   APP client    | |
                | +-----------------+ |
                | Mobile de^ice       |
                +---------------------+

]]></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>
            <t>Where to deploy?</t>
          </li>
          <li>
            <t>Translating QUIC CID to SRv6 segment identifiers or MPLS labelling?</t>
          </li>
        </ul>
        <t>For the first one, the 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="sec_parameters"/></td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-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="RFC8986">
        <front>
          <title>Segment Routing over IPv6 (SRv6) Network Programming</title>
          <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
          <author fullname="P. Camarillo" initials="P." role="editor" surname="Camarillo"/>
          <author fullname="J. Leddy" initials="J." surname="Leddy"/>
          <author fullname="D. Voyer" initials="D." surname="Voyer"/>
          <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
          <author fullname="Z. Li" initials="Z." surname="Li"/>
          <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"/>
          <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"/>
          <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"/>
          <author fullname="S. Dhesikan" initials="S." surname="Dhesikan"/>
          <author fullname="C. Jennings" initials="C." surname="Jennings"/>
          <author fullname="D. Druta" initials="D." surname="Druta"/>
          <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"/>
          <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
          <date month="May" year="2021"/>
          <abstract>
            <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9000"/>
        <seriesInfo name="DOI" value="10.17487/RFC9000"/>
      </reference>
      <reference anchor="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>
    </references>
  </back>
  <!-- ##markdown-source:
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
xbz+jAJcmt9wlRnTOfBG79/0/henu3N3w0kAAA==

-->

</rfc>
