<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-model href="rfc7991bis.rnc"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     ipr="trust200902"
     docName="draft-li-spring-fine-grained-qoe-enhancement-00"
     category="std"
     submissionType="IETF"
     consensus="true"
     xml:lang="en"
     tocInclude="true"
     sortRefs="true"
     symRefs="true"
     version="3">

  <front>
    <title abbrev="Fine-grained QoE Enhancement">Fine-grained QoE Enhancement using Semantic Tables</title>
    
    <seriesInfo name="Internet-Draft" value="draft-li-spring-fine-grained-qoe-enhancement-00"/>
    
    <author fullname="Zhiqiang Li" initials="Z." surname="Li">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <street>32 Xuanwumen West Street</street>
          <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>
          <street>32 Xuanwumen West Street</street>
          <city>Beijing</city>
          <code>100053</code>
          <country>China</country>
        </postal>
        <email>duzongpeng@chinamobile.com</email>
      </address>
    </author>
    <author fullname="Wei Cheng" initials="W." surname="Cheng">
      <organization>Centec Networks</organization>
      <address>
        <postal>
          <city>Suzhou</city>
          <code>215000</code>
          <country>China</country>
        </postal>
        <email>chengw@centec.com</email>
      </address>
    </author>
    <author fullname="Junjie Wang" initials="J." surname="Wang">
      <organization>Centec Networks</organization>
      <address>
        <postal>
          <city>Suzhou</city>
          <code>215000</code>
          <country>China</country>
        </postal>
        <email>wangjj@centec.com</email>
      </address>
    </author>
    <author fullname="Guoying Zhang" initials="G." surname="Zhang">
      <organization>Centec Networks</organization>
      <address>
        <postal>
          <city>Suzhou</city>
          <code>215000</code>
          <country>China</country>
        </postal>
        <email>zhanggy@centec.com</email>
      </address>
    </author>

<date year="2026" month="February" day="28"/>
    
    <area>Routing</area>
    <workgroup>SPRING</workgroup>
    
    <keyword>QoE</keyword>
    <keyword>SLA</keyword>
    <keyword>semantic table</keyword>
    <keyword>fine-grained</keyword>
    <keyword>SRv6</keyword>
    
    <abstract>
      <t>This document describes a fine-grained Quality of Experience (QoE)
        enhancement mechanism using semantic tables deployed at network
        forwarding nodes. The mechanism enables application-level SLA
        (Service Level Agreement) guarantees by carrying address indices
        and high-frequency-changing information in packets while maintaining
        low-frequency-changing semantic information at network nodes. This
        approach overcomes the limitations of traditional Application-aware
        Networking (APN) solutions, including excessive packet header
        overhead. The mechanism supports collaborative optimization across 
        network, computing, and energy dimensions, and can be deployed over 
        MPLS, IPv4/v6, SRv6, and other protocol data planes.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>To provide better Quality of Experience (QoE) for users, networks
        need to offer fine-grained or even application-level Service Level
        Agreement (SLA) guarantees.</t>
      <t>Current approaches have the following limitations:</t>
      <dl newline="true" spacing="normal">
        <dt>SDN-based Centralized Approach:</dt>
        <dd>Uses orchestrators to perceive application requirements and
            arrange paths. This approach has long decision paths, making
            it unsuitable for latency-sensitive applications, and faces
            difficulties in interfacing between multiple systems.</dd>
        
        <dt>Traditional Network Packets:</dt>
        <dd>Traditional network packets cannot carry sufficient information
            to indicate the diverse applications or services and their SLA
            requirements.</dd>
      </dl>
      <t>To address these issues, the industry proposed the Application-aware
        Networking (APN) mechanism <xref target="I-D.ietf-apn-framework"/>. 
        APN supports inserting APN information (such as ID information and 
        SLA information) into IPv6 packet extension headers. Network nodes, 
        such as headend nodes, can parse this APN information and provide 
        services on demand.</t>
      <t>While APN provides a valuable framework, certain deployment scenarios may benefit from alternative approaches that address the following considerations:</t>
      <ol spacing="normal" type="1">
        <li>Large Packet Header Modifications: Requires defining entirely
            new packet header formats.</li>
        <li>High Overhead: Application/service, user, and network
            requirements must be carried per-packet.</li>
        <li>Lack of Computing-Network Collaboration: Does not consider
            computing-related information and cannot perform computing-network 
            collaborative optimization.</li>
      </ol>
      <t>This document proposes a solution using semantic tables to enable
        fine-grained QoE enhancement while addressing these limitations.</t>
      
      <section anchor="requirements-language">
        <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">
      <name>Terminology</name>
      <t>This document uses the following terminology:</t>
      <dl newline="true" spacing="normal">
        <dt>Semantic Table:</dt>
        <dd>A data structure deployed at network forwarding nodes containing
            user/service/application information and their SLA guarantee
            requirements.</dd>
        
        <dt>Address Index (ADDR):</dt>
        <dd>An identifier used to retrieve semantic tables at transit nodes,
            identifying specific application/user groups.</dd>
        
        <dt>High-Frequency-Changing Information:</dt>
        <dd>Dynamic information such as network, computing, and energy
            parameters that change frequently.</dd>
        
        <dt>Low-Frequency-Changing Information:</dt>
        <dd>Static configuration information that changes infrequently,
            such as user/application identifiers and bandwidth
            requirements.</dd>
        
        <dt>QoE (Quality of Experience):</dt>
        <dd>The degree of delight or annoyance of the user of an application
            or service, resulting from the fulfillment of expectations with
            respect to the utility and/or enjoyment of the application or
            service.</dd>
        
        <dt>SLA (Service Level Agreement):</dt>
        <dd>A commitment between a service provider and a client regarding
            aspects of the service such as quality, availability, and
            responsibilities.</dd>
      </dl>
    </section>

    <section anchor="problem-statement">
      <name>Problem Statement</name>
      <t>Current approaches for providing fine-grained QoE guarantees face
        the following core issues:</t>
      <ol spacing="normal" type="1">
        <li>Packet Overhead: Each packet carries complete application/user
            information and SLA requirements, leading to excessive packet
            header overhead.</li>
        <li>Security Issues: Sensitive user/application information is
            transmitted in plaintext across the network, posing privacy
            leak risks.</li>
        <li>Lack of Flexibility: Cannot distinguish between high-frequency-changing 
            and low-frequency-changing information; all information
            must be carried per-packet.</li>
        <li>Computing-Network Separation: Existing solutions mainly focus
            on network resources and lack awareness and collaborative
            optimization capabilities for computing resources.</li>
      </ol>
      <t>The design goals of this mechanism include:</t>
      <ul spacing="normal">
        <li>Reduce packet header overhead by carrying only necessary
            indices and high-frequency-changing information in packets</li>
        <li>Improve security by keeping sensitive information within
            network nodes</li>
        <li>Support collaborative optimization across network, computing,
            and energy dimensions</li>
        <li>Maintain compatibility with existing protocol data planes
            (MPLS, IPv4/v6, SRv6, etc.)</li>
      </ul>
    </section>

    <section anchor="solution-overview">
      <name>Solution Overview</name>
      <t>This mechanism proposes a fine-grained QoE enhancement method
        based on semantic tables:</t>
      <ul spacing="normal">
        <li>Packets carry address indices and high-frequency-changing
            information (or only address indices)</li>
        <li>Specific semantics of low-frequency-changing information are
            maintained at forwarding nodes</li>
        <li>Packets passing through transit nodes trigger semantic table
            lookups using the address index to execute corresponding
            policies</li>
      </ul>
      
      <section anchor="info-classification">
        <name>Information Classification</name>
        <t>This mechanism classifies QoE-related information into two
          categories:</t>
        <t>Low-Frequency-Changing Information (deployed in semantic tables):</t>
        <ul spacing="normal">
          <li>User/service/application identification information</li>
          <li>Bandwidth requirements</li>
          <li>Delay tolerance</li>
          <li>Jitter tolerance</li>
          <li>Computing capacity requirements</li>
          <li>Other relatively stable SLA parameters</li>
        </ul>
        <t>High-Frequency-Changing Information (carried in packets):</t>
        <ul spacing="normal">
          <li>DSCP value adjustments</li>
          <li>Queue priority</li>
          <li>Queue buffer depth</li>
          <li>Process priority</li>
          <li>Other dynamically changing parameters</li>
        </ul>
      </section>
      
      <section anchor="distribution-methods">
        <name>Semantic Table Distribution Methods</name>
        <t>This mechanism supports the following semantic table distribution
          methods:</t>
        <dl newline="true" spacing="normal">
          <dt>Centralized:</dt>
          <dd>Semantic actions for fine-grained SLA guarantees at transit
              nodes are distributed via the southbound interface of a
              centralized controller (such as an SDN controller).</dd>
          
          <dt>Distributed:</dt>
          <dd>Semantic actions for fine-grained SLA guarantees at transit
              nodes are advertised via distributed routing protocols
              (such as OSPF, BGP, etc.).</dd>
          
          <dt>Hybrid:</dt>
          <dd>Centralized distribution within domains and distributed
              advertisement between domains.</dd>
          
          <dt>Manual Configuration:</dt>
          <dd>Administrators directly configure semantic tables on each
              node (not recommended for large-scale deployments).</dd>
        </dl>
      </section>
      
      <section anchor="content-acquisition">
        <name>Semantic Table Content Acquisition</name>
        <t>This mechanism does not restrict how semantic table content is
          acquired. Methods include:</t>
        <ul spacing="normal">
          <li>Active notification by users/applications/services through
              the northbound interface of controllers/orchestrators</li>
          <li>Active advertisement to network nodes via distributed
              routing protocols</li>
          <li>Passive detection by network edge nodes through DPI (Deep
              Packet Inspection) and subsequent advertisement to network
              nodes</li>
        </ul>
      </section>
    </section>

    <section anchor="protocol-specification">
      <name>Protocol Specification</name>
      
      <section anchor="semantic-table-structure">
        <name>Semantic Table Structure</name>
        <t>Each node's semantic table MUST contain the following mandatory
          fields:</t>
        <table anchor="mandatory-fields-table">
          <name>Mandatory Fields in Semantic Table</name>
          <thead>
            <tr>
              <th>Field Name</th>
              <th>Length</th>
              <th>Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>ADDR</td>
              <td>32 bits</td>
              <td>Address index carried in packets for identifying application/user groups</td>
            </tr>
            <tr>
              <td>APP-Group-ID</td>
              <td>Variable</td>
              <td>Application group identification</td>
            </tr>
            <tr>
              <td>USER-Group-ID</td>
              <td>Variable</td>
              <td>User group identification</td>
            </tr>
          </tbody>
        </table>
        <t>The semantic table MAY contain the following optional fields:</t>
        <table anchor="optional-fields-table">
          <name>Optional Fields in Semantic Table</name>
          <thead>
            <tr>
              <th>Field Name</th>
              <th>Length</th>
              <th>Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Bandwidth</td>
              <td>32 bits</td>
              <td>Required bandwidth guarantee (in Kbps)</td>
            </tr>
            <tr>
              <td>Delay</td>
              <td>32 bits</td>
              <td>Maximum tolerable delay for user/service (in microseconds)</td>
            </tr>
            <tr>
              <td>Jitter</td>
              <td>32 bits</td>
              <td>Maximum tolerable jitter for user/service (in microseconds)</td>
            </tr>
            <tr>
              <td>Computing-Capacity</td>
              <td>32 bits</td>
              <td>Minimum computing resources required by user/service</td>
            </tr>
            <tr>
              <td>Priority</td>
              <td>8 bits</td>
              <td>Service priority level (0-255, higher is more important)</td>
            </tr>
          </tbody>
        </table>
      </section>
      
      <section anchor="packet-format">
        <name>Packet Format</name>
        <t>The packet format defined in this mechanism uses a TLV
          (Type-Length-Value) structure for flexible extension:</t>
        <figure anchor="tlv-format">
          <name>TLV Packet Format</name>
          <artwork type="ascii-art"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            ADDR                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Type              |            Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Value                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             ...                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>Field Definitions:</t>
        <dl newline="true" spacing="normal">
          <dt>ADDR (4 bytes):</dt>
          <dd>Used to retrieve the semantic table at transit nodes, finding
              the application/user information that the TLV should act
              upon. A value of 0x00000000 is reserved and MUST NOT be used.</dd>
          
          <dt>Type (2 bytes):</dt>
          <dd>Indicates the type of high-frequency-changing service/resource
              that needs to be guaranteed for the application/user
              corresponding to ADDR, such as DSCP, queue priority, queue
              buffer depth, process priority, etc.</dd>
          
          <dt>Length (2 bytes):</dt>
          <dd>Indicates the length of the Value field in bytes.</dd>
          
          <dt>Value (Length bytes):</dt>
          <dd>Contains the specific value of the service/resource indicated
              by the Type field. The length is determined by the Length field.</dd>
        </dl>
      </section>
      
      <section anchor="tlv-types">
        <name>TLV Type Definitions</name>
        <t>This section defines the TLV Type field values. The Value field
          is dynamically specified based on the specific requirements of
          the user, service, or application.</t>
        <table anchor="tlv-types-table">
          <name>TLV Type Definitions</name>
          <thead>
            <tr>
              <th>Type (16bit)</th>
              <th>Length (16bit)</th>
              <th>Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>0x0000</td>
              <td>-</td>
              <td>Reserved</td>
            </tr>
            <tr>
              <td>0x0001</td>
              <td>0x0001</td>
              <td>DSCP adjustment: Value specifies the target DSCP value (0-63) for the transmission path</td>
            </tr>
            <tr>
              <td>0x0002</td>
              <td>0x0001</td>
              <td>Queue priority adjustment: Value specifies the target queue priority level at network node ports</td>
            </tr>
            <tr>
              <td>0x0003</td>
              <td>0x0004</td>
              <td>Queue buffer depth: Value specifies the buffer depth in bytes</td>
            </tr>
            <tr>
              <td>0x0004</td>
              <td>0x0001</td>
              <td>Process priority: Value specifies the computing process priority level</td>
            </tr>
            <tr>
              <td>0x0005-0xFFFE</td>
              <td>Variable</td>
              <td>Reserved for future use</td>
            </tr>
            <tr>
              <td>0xFFFF</td>
              <td>0x0000</td>
              <td>TLV terminator, payload follows</td>
            </tr>
          </tbody>
        </table>
        <t>The above Type values (0x0001-0x0004) are examples. Additional
          Type values can be defined based on deployment requirements and
          registered through IANA.</t>
      </section>

      <section anchor="srv6-extension">
        <name>SRv6 Protocol Extension</name>
        <t>The packet format can be carried over MPLS, IPv4/v6, SRv6, and
          other protocol data planes. This section describes the SRv6
          protocol extension as an example.</t>
        <t>SRv6 <xref target="RFC8754"/> is a source routing technology. 
          The SRH extension header supports multiple SIDs, with each SID 
          being 128 bits and containing Locator, Function, and Argument 
          parts. The bit width of each part can be flexibly defined, 
          providing good programmability.</t>
        <t>In this mechanism:</t>
        <ul spacing="normal">
          <li>The ADDR in the packet occupies the Function and Argument
              parts of one SID, totaling 32 bits</li>
          <li>The remaining 96 bits are used for the Locator</li>
          <li>The TLV in the packet is carried via the Optional TLV
              variable field in the SRH extension header</li>
        </ul>
        <figure anchor="srv6-sid-format">
          <name>SRv6 SID Format with ADDR</name>
          <artwork type="ascii-art"><![CDATA[
 0                                                             127
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Locator (96 bits)                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Function (16 bits)        |      Argument (16 bits)      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|<------------------------ ADDR (32 bits) -------------------->|
]]></artwork>
        </figure>
      </section>
    </section>

    <section anchor="protocol-operations">
      <name>Protocol Operations</name>
      
      <section anchor="centralized-flow">
        <name>Centralized Control Flow</name>
        <t>Using a client-server pair with two intermediate network nodes
          and a centralized controller as an example:</t>
        <figure anchor="control-flow-figure">
          <name>Centralized Control Flow</name>
          <artwork type="ascii-art"><![CDATA[
  client        node1         node2        server     controller
     |            |             |            |              |
     | (1) Request fine-grained SLA semantic actions        |
     |----------------------------------------------------->|
     |            |             |            |              |
     |            | (2) Semantic table distribution         |
     |            |<----------------------------------------|
     |            |             |            |              |
     |            |             | (2) Semantic table distribution
     |            |             |<--------------------------|
     |            |             |            |              |
     | (3) Service packet with ADDR + TLV    |              |
     |----------->|             |            |              |
     |            | (4) Lookup  |            |              |
     |            | semantic    |            |              |
     |            | table       |            |              |
     |            | Execute TLV |            |              |
     |            | actions     |            |              |
     |            |------------>|            |              |
     |            |             | (4) Lookup |              |
     |            |             | semantic   |              |
     |            |             | table      |              |
     |            |             | Execute TLV|              |
     |            |             | actions    |              |
     |            |             |----------->|              |
     |            |             |            |              |
]]></artwork>
        </figure>
      </section>
      
      <section anchor="detailed-steps">
        <name>Detailed Operation Steps</name>
        <ol spacing="normal" type="1">
          <li>
            <t>Client Request Phase:</t>
            <t>The client sends a request to the controller, with the 
            request type being "semantic action request for fine-grained 
            or application-level SLA guarantee at transit nodes."</t>
          </li>
          <li>
            <t>Semantic Table Distribution Phase:</t>
            <t>The controller sends semantic tables to each node.</t>
          </li>
          <li>
            <t>Service Packet Transmission Phase:</t>
            <t>The client sends service packets carrying the mechanism header.</t>
          </li>
          <li>
            <t>Node Processing Phase:</t>
            <t>Each node receives the packet, looks up the semantic table,
            and executes the actions indicated by the packet TLV.</t>
          </li>
        </ol>
      </section>
      
      <section anchor="error-handling">
        <name>Error Handling</name>
        <t>Implementations MUST handle the following error conditions:</t>
        <ul spacing="normal">
          <li>Unknown ADDR: If a packet contains an ADDR that is not present
              in the local semantic table, the node SHOULD forward the packet
              using default QoS settings and MAY log the event.</li>
          <li>Invalid TLV: If a TLV with an unknown Type is encountered, the
              node SHOULD skip to the next TLV using the Length field and
              continue processing.</li>
          <li>Malformed Packet: If the packet structure is invalid (e.g.,
              truncated TLV), the node SHOULD drop the packet and MAY
              increment an error counter.</li>
        </ul>
      </section>
    </section>

    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The semantic table mechanism introduces the following
      security considerations:</t>

      <t>Semantic tables contain user and application identification
      information that may be sensitive. Unauthorized access to
      semantic table contents could reveal service topology and
      user behavior patterns. Implementations MUST enforce access
      control for semantic table read and write operations.
      Semantic table distribution channels SHOULD be protected
      using authentication and encryption mechanisms.</t>

      <t>The ADDR field carried in packets serves as an index into
      semantic tables. An attacker who can observe ADDR values may
      infer application or user group membership. When operating
      across trust domain boundaries, implementations SHOULD
      consider encrypting or obfuscating ADDR values.</t>

      <t>Malicious injection of packets with crafted ADDR and TLV
      values could cause nodes to apply incorrect QoS policies.
      Implementations SHOULD validate that incoming packets
      originate from authorized sources before applying semantic
      table actions. BCP 38 ingress filtering SHOULD be applied
      at network boundaries.</t>
    </section>
    
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests IANA to create a new registry
      titled "Fine-grained QoE TLV Types" under an appropriate
      registry group.</t>

      <t>The initial contents of the registry are defined in
      <xref target="tlv-types"/>. The registration policy for
      new entries is Specification Required
      <xref target="RFC8126"/>.</t>

      <t>If the SRv6 extension defined in
      <xref target="srv6-extension"/> is used, the SRv6 SID
      Function value used for semantic table lookup is allocated
      from the SRv6 Endpoint Behaviors registry defined in
      RFC 8986. This document does not request a specific
      allocation at this time; allocation will be requested
      when the mechanism is further specified.</t>
    </section>

  </middle>

  <back>
    <references>
      <name>References</name>
      
      <references>
        <name>Normative References</name>
        
        <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 fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
          </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 fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        
        <reference anchor="RFC8754" target="https://www.rfc-editor.org/info/rfc8754">
          <front>
            <title>IPv6 Segment Routing Header (SRH)</title>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils" role="editor"/>
            <author fullname="D. Dukes" initials="D." surname="Dukes" role="editor"/>
            <author fullname="S. Previdi" initials="S." surname="Previdi"/>
            <author fullname="J. Leddy" initials="J." surname="Leddy"/>
            <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
            <author fullname="D. Voyer" initials="D." surname="Voyer"/>
            <date month="March" year="2020"/>
          </front>
          <seriesInfo name="RFC" value="8754"/>
          <seriesInfo name="DOI" value="10.17487/RFC8754"/>
        </reference>
      </references>
      
      <references>
        <name>Informative References</name>
        
        <reference anchor="I-D.ietf-apn-framework" target="https://datatracker.ietf.org/doc/html/draft-ietf-apn-framework">
          <front>
            <title>Application-aware Networking (APN) Framework</title>
            <author fullname="Peng Liu" initials="P." surname="Liu">
              <organization>China Mobile</organization>
            </author>
            <author fullname="Shuping Peng" initials="S." surname="Peng">
              <organization>Huawei</organization>
            </author>
            <author fullname="Zhenbin Li" initials="Z." surname="Li">
              <organization>Huawei</organization>
            </author>
            <author fullname="Cong Li" initials="C." surname="Li">
              <organization>China Telecom</organization>
            </author>
            <date month="October" year="2024"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-apn-framework-10"/>
        </reference>
      </references>
    </references>
    
    <section anchor="acknowledgements" numbered="false">
      <name>Acknowledgements</name>
      <t>The authors would like to thank the members of the SPRING working
        group for their valuable feedback and discussions.</t>
    </section>
    
    <section anchor="contributors" numbered="false">
      <name>Contributors</name>
      <t>The following individuals contributed to this document:</t>
      <contact fullname="[Contributor Name]">
        <organization>[Organization]</organization>
        <address>
          <email>[email@example.com]</email>
        </address>
      </contact>
    </section>
  </back>
</rfc>