| Internet-Draft | CATS Client Request Packet | July 2026 |
| Zhang & Dai | Expires 22 January 2027 | [Page] |
This document specifies two complementary mechanisms for carrying the CATS Service Identifier (CS-ID) and network/computing requirement parameters in client service request packets within the Computing-Aware Traffic Steering (CATS) framework.¶
Mode A uses IPv6 Extension Headers to carry CS-ID and requirement parameters as hop-by-hop or destination options, enabling in-band signaling that is visible to all CATS-aware network nodes along the path. Mode B uses a payload-based TLV structure that is transport-protocol agnostic and can be used with both IPv4 and IPv6, as well as with encrypted transports.¶
The document defines the Virtual Placeholder Address (VPA) prefix requirements, the CATS Service Request Extension Header (CSREH) format, the CATS Service Request TLV format, and the CATS_PACKET_IN process for handling these packets at ingress CATS-Forwarders.¶
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 22 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 an architecture for steering service requests to the most suitable service contact instance based on both network and computing metrics. Clients need a mechanism to express not only which service they want to access, but also the specific network and computing requirements that enable optimal instance selection.¶
This document addresses this gap by providing a standardized message format for clients to explicitly declare:¶
This document specifies two complementary mechanisms for carrying CS-ID and requirement parameters in client service request packets:¶
Mode A - Extension Header-Based Carriage: Leverages IPv6 Extension Headers [RFC8200] to carry CS-ID and requirement parameters as hop-by-hop or destination options. This mode provides in-band signaling that is visible to all CATS-aware network nodes along the path, enabling early classification and steering decisions at ingress CATS-Forwarders.¶
Mode B - Payload-Based Carriage: Encapsulates CS-ID and requirement parameters within a dedicated CATS Service Request TLV structure carried in the packet payload. This mode is transport-protocol agnostic and can be used with both IPv4 and IPv6, as well as with encrypted transports where extension headers may not be accessible.¶
Both modes MAY be used independently or in combination. When both modes are present in a single packet, the extension header information takes precedence for CATS-Forwarder processing, while the payload-based information is used as a fallback or for end-to-end service negotiation.¶
The Virtual Placeholder Address (VPA) serves as the destination address for all service requests, ensuring that packets addressed to it reach an ingress CATS-Forwarder for CATS_PACKET_IN processing.¶
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 uses the following terms defined in [I-D.ietf-cats-framework] and [I-D.zhangb-cats-service-metrics-op]:¶
CATS Service ID (CS-ID)¶
CATS Service Contact Instance ID (CSCI-ID)¶
CATS-Forwarder (Ingress/Egress)¶
CATS Path Selector (C-PS)¶
CATS Traffic Classifier (C-TC)¶
Global Available Slots (GAS)¶
Additionally, this document defines the following terms:¶
The VPA prefix MUST satisfy the following requirements:¶
Globally Unique: The VPA prefix MUST be globally unique within the CATS domain to avoid ambiguity in service request routing. Multiple CATS domains MAY use distinct VPA prefixes.¶
Non-Routable in Underlay: The VPA prefix MUST NOT be routable in the underlay IP infrastructure. This ensures that packets addressed to a VPA are not forwarded by standard IP routing but are instead intercepted by ingress CATS-Forwarders.¶
Sufficiently Large: The VPA prefix MUST be sufficiently large to allow sub-prefix allocation per service category if desired. The following prefix lengths are RECOMMENDED:¶
Administratively Scoped: The VPA prefix SHOULD be allocated from administratively scoped address space (e.g., RFC1918 for IPv4, Unique Local Addresses [RFC4193] for IPv6) to prevent conflicts with the global Internet.¶
Example VPA Prefix Allocations:¶
+----------------+------------------+----------------------------+ | Address Family | Recommended Prefix | Example Allocation | +----------------+------------------+----------------------------+ | IPv4 | 10.128.0.0/16 | 10.128.0.0/24 = AI Service | | | | 10.128.1.0/24 = Gaming | | | | 10.128.2.0/24 = Video | +----------------+------------------+----------------------------+ | IPv6 | fd00:cats::/48 | fd00:cats:1::/64 = AI | | | | fd00:cats:2::/64 = Gaming | | | | fd00:cats:3::/64 = Video | +----------------+------------------+----------------------------+¶
The VPA prefix SHOULD be configured on all ingress CATS-Forwarders as a "catch-all" route pointing to a local CPU/handling pipeline. This configuration triggers the CATS_PACKET_IN process when a packet with a VPA destination address arrives.¶
The catch-all route configuration MUST include the following:¶
Route destination: The configured VPA prefix.¶
Next hop: Local CPU/handling pipeline (not a remote next hop).¶
Action: Trigger CATS_PACKET_IN and invoke C-TC classification.¶
The CATS_PACKET_IN process performs the following operations:¶
A client service request packet has the following general structure:¶
+---------------------------------------------------------------+ | IP Header (IPv4 or IPv6) | | Source: Client's real IP address | | Destination: VPA within configured prefix | +---------------------------------------------------------------+ | [Optional] IPv6 Extension Headers (Mode A) | | - CATS Service Request Extension Header | +---------------------------------------------------------------+ | Transport Header (TCP/UDP/QUIC/etc.) | +---------------------------------------------------------------+ | [Optional] CATS Service Request TLV (Mode B) | | - Carried in transport payload | +---------------------------------------------------------------+ | Application Payload | +---------------------------------------------------------------+¶
The packet MUST contain a CS-ID, carried via either Mode A (extension header) or Mode B (payload), or both.¶
This document defines a new IPv6 Extension Header called the "CATS Service Request Extension Header" (CSREH). The CSREH is a Hop-by-Hop Options Header [RFC8200] that carries CATS-specific information visible to all CATS-aware nodes along the forwarding path.¶
The CSREH uses the Next Header value TBD1 (to be assigned by IANA).¶
CSREH Format:¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Header | Hdr Ext Len | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option Type | Opt Data Len | CS-ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CS-ID (cont.) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option Type | Opt Data Len | Network Req Parameters... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option Type | Opt Data Len | Computing Req Parameters... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
Fields:¶
The CSREH MUST contain exactly one CS-ID Option. It MAY contain zero or one Network Requirement Option and zero or one Computing Requirement Option.¶
The CS-ID Option carries the CATS Service Identifier.¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0|0|0|1|0|0|0|0| Opt Data Len | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + CS-ID (variable) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
Length of the CS-ID field in octets. RECOMMENDED values:¶
The Network Requirement Option carries network performance constraints requested by the client.¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0|0|0|1|0|0|0|1| Opt Data Len | Num Req | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ~ Network Requirement Entries ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
Network Requirement Entry Format:¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Req Type | Req Flags | Value | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Value (cont.) | Unit Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
Identifies the type of network requirement:¶
+--------+--------------------------------+-----------+ | Value | Requirement Type | Unit Code| +--------+--------------------------------+-----------+ | 0x01 | Maximum Latency | 0x01=ms | | 0x02 | Minimum Bandwidth | 0x02=Mbps | | 0x03 | Maximum Packet Loss Rate | 0x03=% | | 0x04 | Maximum Jitter | 0x04=ms | | 0x05 | Minimum Throughput | 0x05=Mbps | | 0x06 | Maximum Path Hops | 0x06=count| | 0x07 | Path Diversity Required | 0x07=bool | | 0x08 | Encryption Required | 0x08=bool | | 0x09-0xFF | Reserved for future use | | +--------+--------------------------------+-----------+¶
The numerical value of the requirement. Interpretation depends on the Req Type and Unit Code. The value zero is reserved as a qualitative indicator for all requirement types. It Indicates that the client requires the optimal services for the corresponding requirement type. For example:¶
Maximum Latency=0: selecting the minimum latency among all candidates¶
Minimum Bandwidth=0: selecting the maximum bandwidth among all candidates¶
Maximum Packet Loss Rate=0: selecting the minimum Packet Loss Rate among all candidates¶
Maximum Jitter=0: selecting the minimum Jitter among all candidates¶
Specifies the unit of the Value field:¶
+--------+---------------------+--------+-------------------+ | Value | Unit | Value | Unit | +--------+---------------------+--------+-------------------+ | 0x0001 | Milliseconds (ms) | 0x0007 | Gbps | | 0x0002 | Megabits/sec (Mbps) | 0x0008 | Bytes/sec (Bps) | | 0x0003 | Percentage (%) | 0x0009 | Kbps | | 0x0004 | Count (integer) | 0x000A | Hops (count) | | 0x0005 | Boolean (0/1) | 0x000B | Reserved | | 0x0006 | Microseconds (us) | 0x000C | Reserved | +--------+---------------------+--------+-------------------+¶
The Computing Requirement Option carries computing service constraints requested by the client.¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0|0|0|1|0|0|1|0| Opt Data Len | Num Req | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ~ Computing Requirement Entries ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
Computing Requirement Entry Format:¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Req Type | Req Flags | Value | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Value (cont.) | Unit Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
Identifies the type of computing requirement:¶
+--------+--------------------------------+------------+ | Value | Requirement Type | Unit Code | +--------+--------------------------------+-----------+ | 0x01 | Minimum GAS | 0x01=count| | 0x02 | Maximum Computing Time | 0x02=ms | | 0x03 | Maximum Cost | 0x03=count| | 0x04 | Minimum Reputation | 0x04=count| | 0x05 | Minimum Security Label | 0x05=count| | 0x06 | Minimum Capability | 0x06=count| | 0x07-0xFF | Reserved for future use | | +--------+--------------------------------+------------+¶
The numerical value of the requirement. Interpretation depends on the Req Type and Unit Code. The value zero is reserved as a qualitative indicator for all requirement types. It Indicates that the client requires the optimal services for the corresponding requirement type. For example:¶
Minimum GAS=0: selecting the maximum GAS among all candidates¶
Maximum Computing Time=0: selecting the minimum Computing Time among all candidates¶
Maximum Cost=0: selecting the minimum Cost among all candidates¶
Minimum Reputation=0: selecting the maximum Reputation among all candidates¶
Minimum Security Label=0: selecting the maximum Security Label among all candidates¶
A CATS-Forwarder receiving a packet with a CSREH MUST process the CS-ID Option. If the CS-ID Option is absent, the packet MUST be dropped and an ICMP Parameter Problem message MAY be sent to the source.¶
If the CSREH contains multiple CS-ID Options, only the first one MUST be processed; subsequent CS-ID Options MUST be ignored.¶
Network and Computing Requirement Options are OPTIONAL. If absent, the C-PS SHOULD use default policies or service-specific profiles configured by the operator.¶
A CATS-Forwarder that does not recognize the CSREH Next Header value MUST pass the packet to the next header processor without modification (standard IPv6 extension header behavior).¶
The CSREH MUST be removed by the Egress CATS-Forwarder before delivering the packet to the service contact instance, unless the service contact instance is explicitly configured to receive CATS signaling.¶
Mode B uses a Type-Length-Value (TLV) structure carried in the transport payload. This mode is independent of the IP version and can be used with any transport protocol.¶
The CATS Service Request TLV structure is placed at the beginning of the transport payload, before any application-specific data. A magic number identifies the presence of the CATS TLV block.¶
Overall Structure:¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Magic Number | | (0x43415453 = "CATS") | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version | Flags | Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ~ TLV Block(s) ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ~ Application Payload ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
TLV Block Format:¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TLV Type | TLV Flags | TLV Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ~ TLV Value ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
+--------+---------------------------+--------------------------------+ | Type | Name | Description | +--------+---------------------------+--------------------------------+ | 0x01 | CS-ID TLV | CATS Service ID | | 0x02 | Network Requirements TLV | Network params | | 0x03 | Computing Requirements TLV| Computing params | | 0x04 | Service Contact Instance ID| CSCI-ID (optional) | | 0x05 | Client Capability TLV | Client capabilities | | 0x06 | Request Timestamp TLV | Request time | | 0x07 | Request Nonce TLV | Anti-replay nonce | | 0x08 | Service Affinity TLV | Affinity hint | | 0x09 | QoS Class TLV | Traffic class | | 0x0A-0x7F | Reserved for CATS use | | | 0x80-0xFF | Private/Experimental | | +--------+---------------------------+--------------------------------+¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 0x01 | TLV Flags | TLV Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID Length | | +-+-+-+-+-+-+-+-+ + | | ~ CS-ID ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 0x02 | TLV Flags | TLV Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Num Req | | +-+-+-+-+-+-+-+-+ + | | ~ Network Requirement Entries ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
Network Requirement Entry (TLV Mode):¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Req Type | Req Flags | Unit Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Value | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 0x03 | TLV Flags | TLV Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Num Req | | +-+-+-+-+-+-+-+-+ + | | ~ Computing Requirement Entries ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
Computing Requirement Entry (TLV Mode):¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Req Type | Req Flags | Unit Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Value | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
A CATS-Forwarder processing a packet in payload mode MUST scan the transport payload for the Magic Number 0x43415453.¶
If the Magic Number is found, the CATS-Forwarder MUST parse the TLV block to extract the CS-ID and requirement parameters.¶
If the Magic Number is not found and the packet is addressed to a VPA, the CATS-Forwarder MAY attempt deep packet inspection or MAY drop the packet depending on local policy.¶
The CATS TLV block SHOULD be removed by the Egress CATS-Forwarder before delivering the packet to the service contact instance, unless the service contact instance is configured to receive it.¶
If both Mode A and Mode B are present, the CATS-Forwarder MUST use the Mode A (extension header) information for CATS processing and MAY validate consistency with Mode B information.¶
This section defines the behavior when both Mode A and Mode B are present in a single packet.¶
+-----------------+-----------------+-------------------------------------------+ | Mode A Present | Mode B Present | CATS-Forwarder Behavior | +-----------------+-----------------+------------------------------------------+ | Yes | Yes | Use Mode A; validate consistency | | Yes | No | Use Mode A | | No | Yes | Use Mode B | | No | No | Drop or DFI | +-----------------+-----------------+-------------------------------------------+¶
DFI = Deep Flow Inspection (operator-configured fallback)¶
Consistency Validation:¶
When both modes are present, the CATS-Forwarder SHOULD verify that the CS-ID values match. If they do not match, the packet MUST be dropped and a CATS error notification MAY be logged.¶
The CATS_PACKET_IN process is triggered when an ingress CATS-Forwarder receives a packet destined to a VPA. The process consists of the following steps:¶
Step 1: Packet Interception¶
The ingress CATS-Forwarder matches the destination address against the configured VPA catch-all route and redirects the packet to the local CPU/handling pipeline.¶
Step 2: CS-ID Extraction¶
The C-TC examines the packet for CS-ID:¶
Step 3: Requirement Parameter Extraction¶
Extract network and computing requirement parameters from the same source as the CS-ID (Mode A or Mode B).¶
Step 4: Path Selection¶
The C-PS performs path selection using:¶
Step 5: Flow State Installation¶
Install forwarding state in the CATS-Forwarder to ensure all subsequent packets of this flow are steered to the selected service contact instance.¶
Step 6: Packet Forwarding¶
Encapsulate the packet (if needed) and forward it along the CATS-computed path to the selected Egress CATS-Forwarder.¶
Flow Identification:¶
For flow state installation, the flow is typically identified by the 5-tuple (source IP, destination IP, source port, destination port, protocol). The CATS-Forwarder MAY use additional fields (e.g., flow label) for finer-grained identification.¶
This section describes security considerations for the CATS client service request packet format.¶
An attacker could forge a packet with a legitimate CS-ID to redirect traffic to an unauthorized service contact instance.¶
To mitigate this:¶
An attacker could modify requirement parameters to cause denial of service (e.g., requesting impossible resource combinations) or to steer traffic to overloaded instances.¶
Mitigations:¶
Maliciously crafted extension headers with excessive options could cause processing overhead.¶
Mitigations:¶
The CATS client service request packet format raises the following privacy considerations:¶
The CS-ID may allow on-path observers to infer which service a client is accessing. This is particularly relevant for Mode A, where the CS-ID is carried in a visible extension header.¶
Mitigation: Clients concerned about service fingerprinting SHOULD use Mode B with encrypted transports, or request that the operator deploy per-client VPAs.¶
Computing requirement parameters may reveal sensitive information about the client's workload type or data sensitivity.¶
Mitigation: Requirement parameters SHOULD be encrypted when transmitted over untrusted networks. Mode B with TLS provides this protection.¶
The source IP address in the service request packet reveals the client's network location. This is inherent to IP networking and not specific to CATS.¶
Mitigation: Standard IP privacy techniques (e.g., VPNs, proxies) may be used in conjunction with CATS.¶
This document requests IANA to make the following assignments:¶
A new IPv6 Next Header value for the CATS Service Request Extension Header (CSREH):¶
+--------+-----------------------------+-----------+ | Value | Protocol | Reference | +--------+-----------------------------+-----------+ | TBD1 | CATS Service Request EH | This doc | +--------+-----------------------------+-----------+¶
Three new IPv6 Hop-by-Hop Option Types:¶
+--------+-----------------------------------+-----------+ | Value | Name | Reference | +--------+-----------------------------------+-----------+ | TBD2 | CS-ID Option | This doc | | TBD3 | Network Requirement Option | This doc | | TBD4 | Computing Requirement Option | This doc | +--------+-----------------------------------+-----------+¶
A new registry for CATS Service Request TLV Types:¶
Registry Name: CATS Service Request TLV Types¶
Registration Procedure: Standards Action for 0x00-0x7F, Expert Review for 0x80-0xFF¶
Initial assignments:¶
+--------+---------------------------+-----------+ | Type | Name | Reference | +--------+---------------------------+-----------+ | 0x00 | Reserved | This doc | | 0x01 | CS-ID TLV | This doc | | 0x02 | Network Requirements TLV | This doc | | 0x03 | Computing Requirements TLV| This doc | | 0x04 | CSCI-ID TLV | This doc | | 0x05 | Client Capability TLV | This doc | | 0x06 | Request Timestamp TLV | This doc | | 0x07 | Request Nonce TLV | This doc | | 0x08 | Service Affinity TLV | This doc | | 0x09 | QoS Class TLV | This doc | | 0x0A-0x7F | Unassigned | | | 0x80-0xFF | Private/Experimental | This doc | +--------+---------------------------+-----------+¶
Two new registries for Network and Computing Requirement Types:¶
Registry Name: CATS Network Requirement Types; Registration Procedure: Expert Review¶
Registry Name: CATS Computing Requirement Types; Registration Procedure: Expert Review¶
Initial assignments as specified in Sections 5.3 and 5.4.¶
Client requests an AI inference service with specific cost requirements using IPv6 extension headers.¶
IPv6 Header:¶
Source: 2001:db8:client::1¶
Destination: fd00:cats:1::1 (VPA for AI services)¶
Next Header: TBD1 (CSREH)¶
CATS Service Request Extension Header:¶
Next Header: 6 (TCP)¶
Hdr Ext Len: 3 (32 octets)¶
Option 1 - CS-ID Option (Type 0x10):¶
Option 2 - Network Requirement Option (Type 0x11):¶
Option 3 - Computing Requirement Option (Type 0x12):¶
TCP Header + Application Payload follows.¶
Client requests a cloud gaming service using payload-based TLVs over UDP.¶
IPv4 Header:¶
UDP Header:¶
CATS TLV Block:¶
Magic: 0x43415453 ("CATS")¶
Version: 0x01¶
Flags: 0x00¶
Total Length: 28¶
TLV 1 - CS-ID TLV (Type 0x01):¶
TLV 2 - Network Requirements TLV (Type 0x02):¶
TLV 3 - Computing Requirements TLV (Type 0x03):¶
Application Payload follows.¶
Client sends a request with both Mode A and Mode B for redundancy and compatibility.¶
IPv6 Header:¶
Source: 2001:db8:client::2¶
Destination: fd00:cats:3::1 (VPA for Video services)¶
Next Header: TBD1 (CSREH)¶
CSREH (Mode A):¶
UDP Header:¶
Destination Port: 554 (RTSP)¶
CATS TLV Block (Mode B):¶
Magic: 0x43415453¶
Flags: 0x01 (EXT_HEADER_PRESENT)¶
Contains: CS-ID=0x00030001, Min Bandwidth=25Mbps¶
RTSP Payload follows.¶
This appendix provides a simplified YANG data model for configuring and managing CATS client request parameters.¶
module ietf-cats-request {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-cats-request";
prefix cats-req;
import ietf-inet-types {
prefix inet;
}
organization
"IETF CATS Working Group";
description
"YANG data model for CATS client service request parameters.";
revision 2026-07-07 {
description
"Initial revision.";
}
typedef cs-id {
type binary {
length "2..16";
}
description
"CATS Service Identifier.";
}
typedef req-type {
type uint8 {
range "1..255";
}
description
"Requirement type identifier.";
}
typedef unit-code {
type uint16;
description
"Unit code for requirement values.";
}
grouping requirement-entry {
leaf req-type {
type req-type;
mandatory true;
}
leaf req-flags {
type bits {
bit hard {
position 0;
}
bit soft {
position 1;
}
bit preference {
position 2;
}
}
default "hard";
}
leaf value {
type uint32;
mandatory true;
}
leaf unit-code {
type unit-code;
mandatory true;
}
}
grouping network-requirements {
list network-req {
key "req-type";
uses requirement-entry;
}
}
grouping computing-requirements {
list computing-req {
key "req-type";
uses requirement-entry;
}
}
container cats-service-request {
leaf cs-id {
type cs-id;
mandatory true;
}
leaf mode {
type enumeration {
enum extension-header;
enum payload-based;
enum dual-mode;
}
default "dual-mode";
}
uses network-requirements;
uses computing-requirements;
}
}
¶
The authors would like to thank the CATS Working Group for their valuable feedback and contributions to this document.¶