<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?rfc strict="yes"?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-fu-cats-flow-lb-03" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" version="3">

  <!-- xml2rfc v2v3 conversion 3.14.0 -->
  <!-- ***** FRONT MATTER ***** -->
 <front>
     <title abbrev="Flow-Level Load Balancing of Computing-Aware Traffic Steering (CATS) ">Flow-Level Load Balancing of Computing-Aware Traffic Steering (CATS)  </title>
    <seriesInfo name="Internet-Draft" value="draft-fu-cats-flow-lb-03"/>
 
    <!-- Another author who claims to be an editor -->
  <author fullname="Huakai Fu" initials="H." surname="Fu">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city>Wuhan</city>
          <region/>
          <code/>
          <country>China</country>
        </postal>
       <email>fu.huakai@zte.com.cn</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>

 
  <author fullname="Daniel Huang" initials="D.H." surname="Huang">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city>Nanjing</city>
          <region/>
          <code/>
          <country>China</country>
        </postal>
          <email>huang.guangping@zte.com.cn</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
  

 
<author fullname="Wei Duan" initials="W." surname="Duan">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city>Nanjing</city>
          <region/>
          <code/>
          <country>China</country>
        </postal>
       
        <email>duan.wei1@zte.com.cn</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>

<author fullname="Bin Tan" initials="B." surname="Tan">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city>ShangHai</city>
          <region/>
          <code/>
          <country>China</country>
        </postal>
       
        <email>tan.bin@zte.com.cn</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>

     <date day="26" month="Feb" year="2026"/>
    <area>Routing</area>
    <workgroup>CATS</workgroup>
    <keyword>Flow-Level Load Balancing of Computing-Aware Traffic Steering (CATS)</keyword>
    <abstract>
      <t>This document specifies a flow-level load balancing mechanism for Computing-Aware Traffic Steering (CATS) that reduces control plane overhead and improves resource utilization through data plane autonomous flow distribution.</t>
    </abstract>
  </front>

  <!-- ***** MIDDLE MATTER ***** -->
  <middle>
    <section numbered="true" toc="default">
      <name>Introduction</name>

<t>Computing-Aware Traffic Steering (CATS) <xref target="I-D.ldbc-cats-framework"/>  directs traffic between service clients and providers based on real-time computing and network status. While CATS operates as an overlay system for selecting optimal service instances, the framework does not assume specific data plane or control plane solutions.</t>

<t>This document defines a flow-level load balancing mechanism addressing two operational challenges: control plane scalability limitations caused by reactive path computation, and resource utilization imbalances resulting from coarse-grained status reporting. The mechanism enables the control plane to pre-compute multiple viable forwarding alternatives while allowing the data plane to autonomously distribute traffic across these alternatives using flow-based affinity.</t>
    </section>

    <section numbered="true" toc="default">
      <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" format="default"/> <xref target="RFC8174" format="default"/> when,
    and only when, they appear in all capitals, as shown here.</t>
    </section>
    <section numbered="true" toc="default">
      <name>Terminology</name>
      <t>This document makes use of the terms defined in  <xref target="I-D.ldbc-cats-framework"/>.</t>  
       <ul spacing="normal">
        <li>CATS Routing Table: Control plane structure containing service identifiers, network paths, service instances, and load sharing weights.</li>
        <li>CATS Forwarding Table: Data plane structure derived from CATS Routing Table via UCMP-to-ECMP expansion.</li>
        <li>Flow Affinity Table: Data plane table maintaining flow-to-forwarding-entry bindings.</li>
      </ul>
    </section>

    <section numbered="true" toc="default">
      <name>Problem Statement </name>
       <t>Current CATS implementations rely on periodic or threshold-triggered resource status reports to optimize service instance and path selection. This approach creates uneven computing resource utilization when status updates lag behind actual load changes, potentially directing multiple requests to already overloaded instances. Additionally, frequent metric fluctuations trigger repeated control plane path recalculation and policy updates, creating scalability constraints that incremental calculation alone cannot resolve. </t>     
    </section>

    <section numbered="true" toc="default">
      <name>Architectural Model </name>

        <t>The Flow-Level Load Balancing of Computing-Aware Traffic Steering is constructed based on the framework established in the CATS architecture <xref target="I-D.ldbc-cats-framework"/>(Figure 1 for a visual representation).</t>
        <figure>
          <name> CATS-Functional-Components </name>
            <artwork><![CDATA[
    +-----+              +------+           +------+
  +------+|            +------+ |         +------+ |
  |client|+            |client|-+         |client|-+
  +---+--+             +---+--+           +---+--+
      |                    |                  |
      | +----------------+ |            +-----+----------+
      +-+    C-TC#1      +-+      +-----+    C-TC#2      |
        |----------------|        |     |----------------|
        |     |C-PS#1    |    +------+  |CATS-Forwarder 4|
  ......|     +----------|....|C-PS#2|..|                |...
  :     |CATS-Forwarder 2|    |      |  |                |  .
  :     +----------------+    +------+  +----------------+  :
  :                                                         :
  :                                            +-------+    :
  :                         Underlay           | C-NMA |    :
  :                      Infrastructure        +-------+    :
  :                                                         :
  :                                                         :
  : +----------------+                +----------------+    :
  : |CATS-Forwarder 1|  +-------+     |CATS-Forwarder 3|    :
  :.|                |..|C-SMA#1|.... |                |....:
    +---------+------+  +-------+     +----------------+
              |         |             |   C-SMA#2      |
              |         |             +-------+--------+
              |         |                     |
              |         |                     |
           +------------+               +------------+
          +------------+ |             +------------+ |
          |  Service   | |             |  Service   | |
          |  Contact   | |             |  Contact   | |
          |  Instance  |-+             |  Instance  |-+
          +------------+               +------------+
           service site 1              service site 2
         ]]></artwork>
        </figure>


        <t>The mechanism operates through three functional entities: the Path Selector (C-PS) situated in the control plane collecting metrics via Metric Agents (C-SMA and C-NMA) and computing forwarding alternatives; the Forwarder operating in the data plane performing flow identification, affinity maintenance and packet forwarding; and the Metric Agents reporting service instance and network status to enable path computation.</t>
        <t>The Path Selector maintains the CATS Routing Table containing for each CS-ID a set of Forwarding Alternatives comprising network path identifiers, service instance identifiers, and load sharing weights representing desired traffic distribution proportions. The Forwarder generates the CATS Forwarding Table through UCMP-to-ECMP expansion, creating a uniform lookup structure where each Forwarding Alternative appears in proportion to its weight, and maintains the Flow Affinity Table binding flow identifiers to specific forwarding entries.</t>
      </section>

      <section numbered="true" toc="default">
        <name>Control plane Operation</name>
        <t>The Path Selector identifies for each CS-ID the Service Instance Set containing all Forwarding Alternatives satisfying SLA requirements, computing load sharing weights based on service instance metrics, network path characteristics and policy objectives. The resulting CATS Routing Table is translated into a CATS Forwarding Table and distributed to Forwarders..</t>

       <t>Figure 2 shows an example of a representation of multi-next-hop CATS routing table designed for a specific CS-ID1.</t>
       <figure>
          <name> An example of CATS routing table </name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
+-------+-------+--------------------------------------------------+
|       |       |              NEXT HOP                            |
|VRF-ID |PREFIX +-----------------+-----------+--------------------+
|       |       |SR-Policy        |Service SID| Load Sharing Ratio |
+-------+-------+-----------------+-----------+--------------------+
|100    |CS-ID1 |SR-Policy1(2ms)  |END.DX-1   | 20%                |
|       |       +-----------------+-----------+--------------------+
|       |       |SR-Policy1(2ms)  |END.DX-2   | 30%                |
|       |       +-----------------+-----------+--------------------+
|       |       |SR-Policy2(1.5ms)|END.DX-3   | 30%                |
|       |       +-----------------+-----------+--------------------+
|       |       |SR-Policy2(1.5ms)|END.DX-4   | 20%                |
+-------+-------+-----------------+-----------+--------------------+
         ]]></artwork>
        </figure>
      <t keepWithPrevious="true"/>

    <t>Figure 3 shows an example of the CATS forwarding table following the changes.</t>

       <figure>
          <name> An example of CATS forwarding table  </name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
+-------+-------+-----------------+-----------+--------+   
|VRF-ID |PREFIX |SR-Policy        |Service SID| offset |   
+-------+-------+-----------------+-----------+--------+   
|100    |CS-ID1 |SR-Policy1(2ms)  |END.DX-1   | 0      |   
|       |       +-----------------+-----------+--------+   
|       |       |SR-Policy1(2ms)  |END.DX-1   | 1      |   
|       |       +-----------------+-----------+--------+   
|       |       |SR-Policy1(2ms)  |END.DX-2   | 2      |   
|       |       +-----------------+-----------+--------+   
|       |       |SR-Policy1(2ms)  |END.DX-2   | 3      |   
|       |       +-----------------+-----------+--------+   
|       |       |SR-Policy1(2ms)  |END.DX-2   | 4      |   
|       |       +-----------------+-----------+--------+   
|       |       |SR-Policy2(1.5ms)|END.DX-3   | 5      |   
|       |       +-----------------+-----------+--------+   
|       |       |SR-Policy2(1.5ms)|END.DX-3   | 6      |   
|       |       +-----------------+-----------+--------+   
|       |       |SR-Policy2(1.5ms)|END.DX-3   | 7      |   
|       |       +-----------------+-----------+--------+   
|       |       |SR-Policy2(1.5ms)|END.DX-4   | 8      |   
|       |       +-----------------+-----------+--------+   
|       |       |SR-Policy2(1.5ms)|END.DX-4   | 9      |   
+-------+-------+-----------------+-----------+--------+   
         ]]></artwork>
        </figure>
      <t keepWithPrevious="true"/>

        <t>To minimize control plane load, the Path Selector regenerates the CATS Routing Table only when metric changes cross predefined thresholds rather than reacting to every fluctuation, optionally employing hysteresis mechanisms to prevent rapid oscillation between configurations.</t>
      </section>

      <section numbered="true" toc="default">
        <name>Data Plane Operation</name>
        <t>Upon receiving a packet the Forwarder extracts the CS-ID and computes the flow identifier, typically derived from the five-tuple. The Forwarder queries the Flow Affinity Table and if an existing binding is found forwards the packet using the bound entry. For unbound flows the Forwarder computes a hash over the flow identifier, selects the CATS Forwarding Table entry at the resulting index, creates a Flow Affinity Entry binding the flow to this entry, and forwards the packet.</t>

        <t>The CATS Forwarding Table remains stable during flow affinity establishment ensuring consistent forwarding for all packets of a flow. Table updates received from the Path Selector apply only to new flows while existing bindings remain valid until flow termination or timeout.</t>
      </section>



    <section numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The mechanism introduces potential denial of service vulnerabilities through Flow Affinity Table exhaustion if an attacker generates excessive new flows, mitigated by implementing binding creation rate limits. Predictable flow identifiers could enable binding hijacking requiring cryptographically robust hash functions. CATS Forwarding Tables distributed from Path Selector to Forwarder may expose topology information warranting protection during transmission.</t>
    </section>
    <section anchor="Acknowledgements" numbered="true" toc="default">
      <name>Acknowledgements</name>
      <t>To be added upon contributions, comments and suggestions.</t>
    </section>
    <section anchor="IANA" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>TBA</t>
    </section>
  </middle>
  <!--  *****BACK MATTER ***** -->

<back>
<references title="References">

<references title="Normative References">
<?rfc include='reference.RFC.2119'?>
<?rfc include='reference.RFC.8174'?>
<?rfc include='reference.RFC.8402'?>
<?rfc include='reference.RFC.8754'?>
<?rfc include='reference.RFC.8986'?>
</references>

<references title="Informative References">
<?rfc include='reference.I-D.ldbc-cats-framework'?>
<?rfc include='reference.I-D.ietf-cats-usecases-requirements'?>
<?rfc include='reference.I-D.li-dyncast-architecture'?>
<?rfc include='reference.I-D.huang-service-aware-network-framework'?>
<?rfc include='reference.I-D.lbdd-cats-dp-sr'?>
<?rfc include='reference.I-D.fu-cats-muti-dp-solution'?>
<?rfc include='reference.I-D.fu-cats-hybrid-fwd'?>
<?rfc include='reference.RFC.7094'?>
</references>

</references>
</back>
</rfc>
