<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY bom    "&#65279;">
  <!ENTITY wd     "&#x2011;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902"
     docName="draft-li-quic-qos-optimization-00"
     category="info" submissionType="IETF" consensus="true" version="3"
     xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="QUIC QoS Optimization">Fine-Grained QoS Optimization for QUIC Based on Connection ID Priority Mapping</title>
    <seriesInfo name="Internet-Draft" value="draft-li-quic-qos-optimization-00"/>

    <author fullname="Zhiqiang Li" initials="Z." surname="Li">
      <organization>China Mobile</organization>
      <address>
        <postal><city>Beijing</city><code>100053</code>
        <country>China</country></postal>
        <email>lizhiqiangyjy@chinamobile.com</email>
      </address>
    </author>
    <author fullname="Zongpeng Du" initials="Z." surname="Du">
      <organization>China Mobile</organization>
      <address>
        <postal><city>Beijing</city><code>100053</code>
        <country>China</country></postal>
        <email>duzongpeng@chinamobile.com</email>
      </address>
    </author>
    <author fullname="Junjie Wang" initials="J." surname="Wang">
      <organization>Centec</organization>
      <address>
        <postal><city>Shanghai</city><code>201203</code>
        <country>China</country></postal>
        <email>wangjj@centec.com</email>
      </address>
    </author>
    <author fullname="Wei Cheng" initials="W." surname="Cheng">
      <organization>Centec</organization>
      <address>
        <postal><city>Shanghai</city><code>201203</code>
        <country>China</country></postal>
        <email>chengw@centec.com</email>
      </address>
    </author>
    <author fullname="Guoying Zhang" initials="G." surname="Zhang">
      <organization>Centec</organization>
      <address>
        <postal><city>Shanghai</city><code>201203</code>
        <country>China</country></postal>
        <email>zhanggy@centec.com</email>
      </address>
    </author>
    <author fullname="Xun Sun" initials="X." surname="Sun">
      <organization>Inesa</organization>
      <address>
        <postal><city>Shanghai</city><code>200030</code>
        <country>China</country></postal>
        <email>sunxun@inesa.com</email>
      </address>
    </author>
    <author fullname="Chunhao Zhao" initials="C." surname="Zhao">
      <organization>SAIA</organization>
      <address>
        <postal><city>Shanghai</city><code>200125</code>
        <country>China</country></postal>
        <email>chunhao.zhao@sh-aia.com</email>
      </address>
    </author>

    <date year="2026" month="July" day="4"/>
    <area>TSV</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>QUIC</keyword>
    <keyword>QoS</keyword>
    <keyword>DSCP</keyword>
    <keyword>Connection ID</keyword>
    <keyword>traffic engineering</keyword>
    <keyword>priority mapping</keyword>
    <abstract>
      <t>This document defines a fine-grained, dynamically adaptive QoS mechanism for QUIC transport. The mechanism encodes a priority mapping table index in the QUIC Destination Connection ID (DCID), enabling host NICs or user gateways to translate QUIC-layer service priority information into network-layer QoS mechanisms (DSCP/ToS per RFC 2474) and traffic engineering policies (SRv6 TE, MPLS TE, etc.) for end-to-end QoS enforcement. Stream IDs carry endpoint priority information for local scheduling. The mechanism supports host-side, network-side, and coordinated deployment modes with no intrusion into the host protocol stack.</t>
    </abstract>
  </front>

  <middle>
<section anchor="introduction" numbered="true" toc="include"><name>Introduction</name>
<t>Vertical industry services (connected vehicles, remote healthcare, etc.) and AI-driven applications increasingly demand differentiated network service quality. QUIC <xref target="RFC9000"/>, as a modern transport protocol, provides encryption, multiplexing, and connection migration, but currently lacks mechanisms for end-to-end QoS enforcement across the network path.</t>
<t>QUIC's existing stream priority mechanism operates only at the endpoints. Intermediate network devices (routers, switches) do not inspect or act on QUIC priority markings because they are encrypted within the QUIC payload. Additionally, QUIC Datagrams <xref target="RFC9221"/> are typically excluded from priority scheduling mechanisms.</t>
<t>This document proposes a mechanism that bridges the gap between QUIC transport-layer priorities and network-layer QoS enforcement by leveraging the Destination Connection ID field, which remains visible in the QUIC header even under encryption, as a carrier for priority mapping table indices.</t>
<section anchor="requirements-language" numbered="true" toc="include"><name>Requirements Language</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>
</section></section>
<section anchor="terminology" numbered="true" toc="include"><name>Terminology</name>
<dl><dt>DCID (Destination Connection ID):</dt><dd>The Connection ID field in QUIC packet headers used to identify the destination endpoint of a connection.</dd>
<dt>Stream:</dt><dd>A QUIC stream, an ordered byte-stream transport channel within a QUIC connection.</dd>
<dt>Datagram:</dt><dd>A QUIC unreliable datagram as defined in <xref target="RFC9221"/>.</dd>
<dt>DSCP (Differentiated Services Code Point):</dt><dd>A field in the IP header for packet classification and per-hop behavior selection, defined in <xref target="RFC2474"/>.</dd>
<dt>TE Policy:</dt><dd>Traffic Engineering policy, including MPLS TE, SRv6 TE <xref target="RFC8754"/>, SDN-based TE, and cross-layer coordination TE.</dd>
<dt>Priority Mapping Table:</dt><dd>A lookup table that maps index Connection IDs to real Connection IDs and associated QoS parameters.</dd>
<dt>Index Prefix:</dt><dd>A specific byte pattern (e.g., AAB00000, configurable) used to identify that a DCID is a mapping table index rather than a real Connection ID.</dd>
<dt>Priority Controller:</dt><dd>A component responsible for generation, update, and management of the priority mapping table.</dd></dl>
</section>
<section anchor="problem-statement" numbered="true" toc="include"><name>Problem Statement</name>
<section anchor="quic-priorities" numbered="true" toc="include"><name>QUIC Priorities Limited to Endpoints</name>
<t>QUIC stream priorities are enforced through application-layer marking, transport-layer scheduling, and congestion control coordination. High-priority streams receive preferential packet encapsulation, loss retransmission, and potentially larger congestion windows. However, these priorities are effective only at the endpoints. Intermediate network devices do not process QUIC priority information, and the network layer has no awareness of QUIC-layer priorities, preventing end-to-end precise QoS enforcement.</t>
</section>
<section anchor="datagram-gap" numbered="true" toc="include"><name>Datagram Priority Gap</name>
<t>Per <xref target="RFC9000"/> and <xref target="RFC9221"/>, QUIC priority mechanisms are primarily designed for streams. Datagrams, as an unreliable transport mode, are typically not included in priority scheduling mechanisms.</t>
</section>
<section anchor="missing-qos" numbered="true" toc="include"><name>Missing Network-Layer QoS Integration</name>
<t>QUIC transport-layer priority information cannot be directly mapped to network-layer DSCP/ToS mechanisms or traffic engineering policies, resulting in a broken end-to-end QoS enforcement chain.</t>
</section></section>
<section anchor="cid-priority-mapping" numbered="true" toc="include"><name>Connection ID Priority Mapping Mechanism</name>
<section anchor="arch-overview" numbered="true" toc="include"><name>Architecture Overview</name>
<t>The core idea is to use the QUIC Destination Connection ID (DCID) as a carrier for priority information. Service priority is encoded as an index value in the DCID. A priority mapping table on the host NIC or user gateway translates this index into the real Connection ID and corresponding network-layer QoS parameters.</t>
</section>
<section anchor="dcid-encoding" numbered="true" toc="include"><name>Destination Connection ID Encoding</name>
<t>The DCID is structured as follows: DCID = Index_Prefix | Frame_Type | Stream_ID | Priority. Index Prefix: configurable byte pattern (e.g., 0xAAB00000) identifying this DCID as a mapping table index. Frame Type: 0 = STREAM frame, 1 = DATAGRAM frame. Stream ID: identifies the associated stream. Priority: optional application-specified fine-grained priority (e.g., differentiating CSS, JS, HTML objects within a web page).</t>
</section>
<section anchor="mapping-table" numbered="true" toc="include"><name>Priority Mapping Table</name>
<t>An implementation MUST construct a priority mapping table. The table deployment location depends on the deployment mode: on the host NIC for host-side deployment, or on the user gateway/router for network-side deployment. Each mapping table entry contains: Index (the DCID index value); Real DCID (the actual Connection ID used in network transmission); ToS/DSCP (network-layer QoS marking per <xref target="RFC2474"/>); TE Policy (traffic engineering policy identifier); Reserved (set to 0, reserved for future finer-grained QoS constraints).</t>
</section>
<section anchor="host-workflow" numbered="true" toc="include"><name>Host-Side Workflow</name>
<t>In host-side deployment mode: (1) The application issues a QUIC connection request via API, specifying service priority requirements. (2) Before the API request enters the host protocol stack, a mapping table index is generated and replaces the original DCID. This step MUST NOT intrude upon the host protocol stack. (3) The host QUIC stack processes the connection normally; outbound QUIC packets carry the index value as DCID. (4) The host NIC (or NIC driver) intercepts outbound packets, looks up the priority mapping table using the DCID index: replaces the DCID with the real Connection ID, sets the IP header ToS/DSCP field, and selects the corresponding TE Policy path. (5) Packets traverse the network with QoS and TE enforcement.</t>
</section>
<section anchor="priority-controller" numbered="true" toc="include"><name>Priority Controller</name>
<t>The Priority Controller is responsible for generation, update, and management of the priority mapping table. It MAY be deployed as: a standalone component; a functional module within a network controller (e.g., SDN controller); integrated within the NIC or user gateway/router. Applications MAY configure whether the ToS/TC/DSCP and TE Policy values in the mapping table are allowed to auto-adjust dynamically based on network quality feedback.</t>
</section>
<section anchor="deployment-modes" numbered="true" toc="include"><name>Deployment Modes</name>
<t>Host-Side Deployment: Priority mapping table resides on the host NIC; no network-side changes required. Network-Side Deployment: Priority mapping table resides on the user gateway/router; no host-side changes required. Coordinated Deployment: Host-side and network-side collaborate on priority mapping.</t>
</section></section>
<section anchor="security-considerations" numbered="true" toc="include"><name>Security Considerations</name>
<t>Mapping Table Confidentiality: The priority mapping table contains real Connection IDs and QoS policy information, which constitute sensitive data. Storage and transmission of mapping table information MUST be encrypted. Index Prefix Collision: If a third party can guess the index prefix, non-mechanism traffic could be incorrectly intercepted and processed. The index prefix SHOULD have sufficient randomness or be negotiated out-of-band. Priority Escalation Attack: Malicious applications may attempt to forge high-priority identifiers to obtain unwarranted QoS treatment. The Priority Controller MUST authenticate and authorize application priority requests. Stack Non-Intrusion Safety: The DCID replacement at the API layer SHOULD NOT introduce new attack surfaces. Implementations SHOULD ensure the security of the index generation process.</t>
</section>
<section anchor="iana-considerations" numbered="true" toc="include"><name>IANA Considerations</name>
<t>This document requests IANA consideration for: (1) If a standardized index prefix value is adopted, reserved space or a registered prefix within the QUIC Connection ID format may be needed. (2) If the DCID encoding format requires interoperation with the QUIC standard, registration of a new QUIC transport parameter type may be required.</t>
</section>
  </middle>

  <back>
      <references title="Normative References">
    <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
      <front>
        <title>Key words for use in RFCs to Indicate Requirement Levels</title>
        <author initials="S." surname="Bradner" fullname="Scott Bradner"/>
        <date year="1997" month="March"/>
      </front>
      <seriesInfo name="BCP" value="14"/>
      <seriesInfo name="RFC" value="2119"/>
      <seriesInfo name="DOI" value="10.17487/RFC2119"/>
    </reference>
    <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
      <front>
        <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
        <author initials="B." surname="Leiba" fullname="Barry Leiba"/>
        <date year="2017" month="May"/>
      </front>
      <seriesInfo name="BCP" value="14"/>
      <seriesInfo name="RFC" value="8174"/>
      <seriesInfo name="DOI" value="10.17487/RFC8174"/>
    </reference>
    <reference anchor="RFC9000" target="https://www.rfc-editor.org/info/rfc9000">
      <front>
        <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
        <author initials="J." surname="Iyengar" fullname="Jana Iyengar, Ed."/>
        <author initials="M." surname="Thomson" fullname="Martin Thomson, Ed."/>
        <date year="2021" month="May"/>
      </front>
      <seriesInfo name="RFC" value="9000"/>
      <seriesInfo name="DOI" value="10.17487/RFC9000"/>
    </reference>
    <reference anchor="RFC9221" target="https://www.rfc-editor.org/info/rfc9221">
      <front>
        <title>An Unreliable Datagram Extension to QUIC</title>
        <author initials="T." surname="Pauly" fullname="Tommy Pauly"/>
        <author initials="E." surname="Kinnear" fullname="Eric Kinnear"/>
        <author initials="D." surname="Schinazi" fullname="David Schinazi"/>
        <date year="2022" month="March"/>
      </front>
      <seriesInfo name="RFC" value="9221"/>
      <seriesInfo name="DOI" value="10.17487/RFC9221"/>
    </reference>
    <reference anchor="RFC2474" target="https://www.rfc-editor.org/info/rfc2474">
      <front>
        <title>Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers</title>
        <author initials="K." surname="Nichols" fullname="Kathleen Nichols"/>
        <author initials="S." surname="Blake" fullname="Steven Blake"/>
        <author initials="F." surname="Baker" fullname="Fred Baker"/>
        <author initials="D." surname="Black" fullname="David Black"/>
        <date year="1998" month="December"/>
      </front>
      <seriesInfo name="RFC" value="2474"/>
      <seriesInfo name="DOI" value="10.17487/RFC2474"/>
    </reference>
    <reference anchor="RFC8754" target="https://www.rfc-editor.org/info/rfc8754">
      <front>
        <title>IPv6 Segment Routing Header (SRH)</title>
        <author initials="C." surname="Filsfils" fullname="Clarence Filsfils, Ed."/>
        <author initials="D." surname="Dukes" fullname="Daniel Dukes, Ed."/>
        <author initials="S." surname="Previdi" fullname="Stefano Previdi"/>
        <author initials="J." surname="Leddy" fullname="John Leddy"/>
        <author initials="S." surname="Matsushima" fullname="Satoru Matsushima"/>
        <author initials="D." surname="Voyer" fullname="Daniel Voyer"/>
        <date year="2020" month="March"/>
      </front>
      <seriesInfo name="RFC" value="8754"/>
      <seriesInfo name="DOI" value="10.17487/RFC8754"/>
    </reference>
      </references>
  </back>
</rfc>
