| Internet-Draft | CATS SCI Functional Implementation | July 2026 |
| Zhang | Expires 28 January 2027 | [Page] |
The Computing-Aware Traffic Steering (CATS) framework introduces the concept of a Service Contact Instance (SCI) as the client-facing entity responsible for receiving and dispatching service requests. While existing drafts define the framework and metrics, the concrete functional behavior of a Service Contact Instance remains underspecified.¶
This document fills that gap by defining the functional implementation of a CATS Service Contact Instance. Specifically, it specifies how an SCI collects, aggregates, and reports service instance metrics to the CATS Service Metric Agent (C-SMA); how it monitors the health and status of underlying service instances; how it dispatches client requests to the most appropriate service instance based on local policy and real-time conditions; and how it maintains affinity and handles failure scenarios. This document complements [I-D.ietf-cats-framework] and [I-D.zhangb-cats-service-metrics-op] by providing the operational execution layer for the SCI.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 28 January 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
The Computing-Aware Traffic Steering (CATS) framework [I-D.ietf-cats-framework] defines a Service Contact Instance (SCI) as a client-facing function responsible for receiving requests in the context of a given service. The framework states that an SCI may dispatch service requests to one or more service instances and that steering beyond an SCI is hidden to both clients and CATS components.¶
However, the framework does not specify:¶
How an SCI collects and aggregates metrics from its underlying service instances.¶
How an SCI monitors the health and availability of service instances.¶
How an SCI dispatches incoming requests to the appropriate service instance.¶
How an SCI reports metrics to the CATS Service Metric Agent (C-SMA).¶
This document defines the functional implementation of a CATS Service Contact Instance to address these gaps. It specifies the internal architecture, metric collection mechanisms, health monitoring, request dispatch logic, and reporting interfaces required for an SCI to operate within the CATS framework.¶
The SCI acts as the boundary between the CATS-aware network and the service site. It is responsible for:¶
Collecting per-service-instance metrics (CPU, memory, GPU, throughput, queue depth, etc.).¶
Aggregating these metrics into service-oriented abstractions (e.g., Global Available Slots, Computing Time) as defined in [I-D.zhangb-cats-service-metrics-op].¶
Monitoring service instance health and adjusting reported metrics accordingly.¶
Receiving client requests from the Egress CATS-Forwarder and dispatching them to the most suitable service instance.¶
Reporting aggregated metrics and status to the C-SMA.¶
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 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
This document makes use of the terms defined in [I-D.ietf-cats-framework] and [I-D.zhangb-cats-service-metrics-op]. In particular:¶
CS-ID (CATS Service ID): An identifier for a service.¶
CSCI-ID (CATS Service Contact Instance ID): An identifier for a service contact instance. In this document, it is interpreted operationally as a locator (e.g., IP address and port).¶
Global Available Slots (GAS): The maximum number of concurrent requests a service site is willing and able to serve for a specific CS-ID at a given time.¶
Computing Time: The time required for the site to perform one service request.¶
C-SMA (CATS Service Metric Agent): The functional entity that collects service metrics and advertises them to C-PSes.¶
Additionally, the following terms are used in this document:¶
Service Instance (SI): A collection of running resources that are orchestrated following a service logic. An SCI may manage one or more SIs for the same CS-ID.¶
Service Instance ID (SI-ID): A local identifier for a service instance within the scope of an SCI.¶
Instance Metric: A raw or derived metric specific to a single service instance (e.g., instance CPU utilization, instance queue length).¶
Health Status: A qualitative assessment of a service instance's operational state (e.g., healthy, degraded, failed).¶
An SCI is logically composed of the following internal functional components:¶
+-------------------------------------------------------------+
| Service Contact Instance (SCI) |
| +------------------+ +------------------+ +-------------+|
| | Metric Collector | | Health Monitor | | Dispatcher ||
| | (MC) | | (HM) | | (DP) ||
| +--------+---------+ +--------+---------+ +------+------+|
| | | | |
| +--------v---------+ +--------v---------+ +----v------+|
| | Metric Aggregator| | Failure Handler | | Session ||
| | (MA) | | (FH) | | Manager ||
| +--------+---------+ +--------+---------+ +------+------+|
| | | | |
| +--------v---------------------v------------------v------+|
| | Reporting Interface (RI) ||
| +---------------------------+-----------------------------+|
| | |
+------------------------------v------------------------------+
|
+-------v--------+
| C-SMA |
+----------------+
The internal components of an SCI are defined as follows:¶
The SCI sits at the boundary between the CATS network and the service site. Its relationships with other CATS components are:¶
The SCI receives traffic from the Egress CATS-Forwarder.¶
The SCI reports metrics to the C-SMA, which may be co-located with or adjacent to the SCI.¶
The C-SMA advertises the SCI's metrics (along with the CSCI-ID) to the C-PS.¶
The C-PS uses these metrics to make traffic steering decisions.¶
The SCI does not directly interact with the C-PS or C-NMA; all control-plane communication goes through the C-SMA.¶
The SCI is transparent to the client. The client sees only the CSCI-ID (e.g., an IP address and port) and is unaware of the internal service instances managed by the SCI.¶
The Metric Collector (MC) gathers the following categories of information from each service instance:¶
The MC collects these metrics at a configurable sampling interval (e.g., every 5-10 seconds). The specific collection mechanism (e.g., Prometheus scraping, SNMP, gRPC, HTTP health endpoints) is deployment-specific and outside the scope of this document.¶
The MC SHOULD support multiple collection methods to accommodate different service instance types:¶
The MC MUST support at least one of these methods. In mixed deployments, the MC MAY use different methods for different service instances.¶
The Metric Aggregator (MA) combines instance-level metrics into service-oriented metrics that are meaningful for CATS traffic steering. The key aggregated metrics are:¶
GAS = SUM_over_instances(max_capacity_i - active_sessions_i) for all healthy instances i¶
The MA MAY apply a local policy factor (e.g., a safety margin of 80%) to prevent over-subscription.¶
The derivation algorithm is a local matter and is not standardized by this document. However, the MA MUST ensure that the reported metrics are consistent and comparable across updates.¶
The Health Monitor (HM) performs the following types of health checks on each service instance:¶
The HM SHOULD perform these checks at regular intervals (e.g., every 5-10 seconds for liveness, every 30 seconds for readiness and performance). The intervals and thresholds SHOULD be configurable.¶
The HM classifies each service instance into one of the following health states:¶
HEALTHY: The instance is fully operational and accepting requests.¶
DEGRADED: The instance is operational but experiencing performance issues (e.g., high latency, high error rate). New requests MAY be steered away, but existing sessions are maintained.¶
UNHEALTHY: The instance is not operational or not ready. No new requests are dispatched to this instance. Existing sessions MAY be migrated or terminated based on policy.¶
UNKNOWN: The HM cannot determine the instance's status (e.g., network partition). The instance is treated as UNHEALTHY until status is confirmed.¶
State transitions trigger the following actions:¶
HEALTHY -> DEGRADED: The HM notifies the MA to reduce the instance's contribution to GAS. The DP reduces or stops sending new requests to the instance.¶
DEGRADED -> UNHEALTHY: The HM notifies the MA to set the instance's contribution to GAS to 0. The DP stops sending new requests. The SM initiates session migration or graceful termination for affected sessions.¶
UNHEALTHY -> HEALTHY: The HM notifies the MA to restore the instance's contribution to GAS. The DP resumes sending requests.¶
The HM MUST implement a hysteresis mechanism (e.g., require N consecutive failed checks before marking UNHEALTHY, and M consecutive passed checks before marking HEALTHY) to avoid flapping.¶
When the HM detects a health state change, the MA MUST adjust the aggregated metrics accordingly:¶
When an instance becomes DEGRADED, the MA MAY reduce its max_capacity by a configured degradation factor (e.g., 50%) or set it to 0 based on local policy.¶
When an instance becomes UNHEALTHY, the MA MUST set its contribution to GAS to 0.¶
When an instance recovers to HEALTHY, the MA MUST restore its contribution to GAS based on current load.¶
The Computing Time estimate MUST be recalculated to exclude UNHEALTHY instances and weight DEGRADED instances lower.¶
These adjustments are reflected in the next metric report to the C-SMA. The MA SHOULD batch rapid health changes to avoid excessive updates.¶
The Dispatcher (DP) receives client requests from the Egress CATS-Forwarder and selects a service instance to handle each request. The dispatch decision is based on:¶
Affinity Requirements: If the request belongs to an existing session with affinity, the DP MUST dispatch to the same service instance (if healthy).¶
Health Status: The DP MUST NOT dispatch to UNHEALTHY instances. It SHOULD avoid DEGRADED instances unless no HEALTHY instances are available.¶
Load Balancing Policy: The DP selects among HEALTHY instances using a local load balancing algorithm. Supported algorithms include:¶
Round-robin: Distribute requests evenly across instances.¶
Least-connections: Send to the instance with the fewest active sessions.¶
Weighted response time: Send to the instance with the lowest observed response time.¶
Resource-aware: Send to the instance with the lowest resource utilization (CPU, memory, GPU).¶
Slot-based: Send to the instance with the most available slots (max_capacity - active_sessions).¶
Local Policy: The DP MAY apply additional policies such as cost optimization, security labels, or instance preference.¶
The DP MUST handle the case where no HEALTHY instances are available. In this case, it MAY:¶
The Session Manager (SM) maintains affinity bindings between client flows and service instances. Affinity is identified by a flow key (e.g., 5-tuple: source IP, destination IP, source port, destination port, protocol).¶
When a new request arrives:¶
The SM checks if the flow key has an existing binding.¶
If yes, and the bound instance is HEALTHY, the DP dispatches to that instance.¶
If yes, but the bound instance is UNHEALTHY, the SM removes the binding and the DP selects a new instance.¶
If no binding exists, the DP selects an instance and the SM creates a new binding.¶
Affinity bindings have a configurable timeout. After the timeout expires with no activity, the SM removes the binding.¶
The SM MUST support affinity at the flow level. It MAY also support affinity at the session level (e.g., for HTTP sessions identified by cookies or session IDs).¶
The SM tracks the lifecycle of each session:¶
The SM notifies the MA of session allocation and release events so that GAS can be updated. However, per-session changes do not necessarily trigger immediate reports to the C-SMA; the MA applies local aggregation and threshold policies.¶
The Reporting Interface (RI) communicates with the C-SMA to report aggregated metrics and status updates.¶
The RI SHOULD use a reliable transport (e.g., TCP, QUIC, or HTTP/2) to ensure metric delivery. The specific protocol is deployment-specific.¶
In centralized deployments (e.g., SDN controller), the RI MAY use a RESTful API (e.g., RESTCONF [RFC8040]) or gRPC to push metrics to the C-SMA.¶
In distributed deployments, the RI MAY use a routing protocol extension (e.g., BGP-LS [RFC8571], GRASP [RFC8990]) or a dedicated CATS metric distribution protocol.¶
The RI applies the following policies to control update frequency:¶
The specific thresholds and intervals SHOULD be configurable via the CATS Management Plane.¶
The report message contains the following fields:¶
| Field | Description |
|---|---|
| CSCI-ID | Identifier of the reporting SCI |
| CS-ID | Identifier of the service |
| Timestamp | Time of metric generation (Unix epoch) |
| Sequence Number | Monotonically increasing sequence number |
| GAS | Global Available Slots (uint32) |
| Computing Time | Estimated processing time in milliseconds (uint32) |
| Health Summary | Number of HEALTHY/DEGRADED/UNHEALTHY instances |
| Optional Metrics | Cost, Reputation, Security Label, Capability (if applicable) |
| Instance Details | Per-instance status (optional, for debugging) |
The encoding details, including field lengths and wire format, are TBD and depend on the chosen transport protocol.¶
The SCI exposes a client-facing interface that is the CSCI-ID (e.g., an IP address and port). Clients send service requests to this interface, and the Egress CATS-Forwarder forwards traffic to it.¶
The SCI MUST support the following on the client-facing interface:¶
Accept incoming connections/requests from the Egress CATS-Forwarder.¶
Maintain transport-layer state (e.g., TCP connections) for the duration of the session.¶
Support the service protocol (e.g., HTTP, gRPC, RTP) required by the CS-ID.¶
The SCI MUST NOT expose internal service instance details (e.g., SI-IDs, internal IP addresses) to the client.¶
The SCI communicates with the Egress CATS-Forwarder via the underlay network. The Egress CATS-Forwarder is responsible for:¶
Decapsulating CATS overlay traffic and forwarding it to the SCI's CSCI-ID.¶
Receiving responses from the SCI and encapsulating them for return to the Ingress CATS-Forwarder.¶
The SCI does not need to be CATS-aware; it operates as a standard service endpoint from the network perspective. However, the SCI MAY support CATS-specific signaling (e.g., for affinity or session state synchronization) if defined by future documents.¶
The SCI handles client requests and manages internal service instances, making it a critical security boundary. The following security measures are REQUIRED:¶
This document has no IANA actions at this time.¶
The authors thank the CATS working group for their valuable feedback and contributions to this document.¶