Internet-Draft SRv6-INT Closed-Loop Control September 2026
Yan, et al. Expires 13 March 2027 [Page]
Workgroup:
Spring
Internet-Draft:
draft-yan-spring-srv6-int-resource-control-00
Published:
Intended Status:
Standards Track
Expires:
Authors:
X. Yan, Ed.
University of Science and Technology of China
X. Chen, Ed.
University of Science and Technology of China
Z. Zhu, Ed.
University of Science and Technology of China

SRv6-INT: Protocol Extensions to Segment Routing over IPv6 for In-Band Network Telemetry in Support of Closed-Loop Resource Control

Abstract

This document defines SRv6-INT, a protocol extension that integrates In-band Network Telemetry (INT) with Segment Routing over IPv6 (SRv6) packet processing. The extension reuses the Segment List entry associated with each SRv6-INT endpoint to carry an equal-length telemetry record, thereby preventing telemetry collection along the path from further increasing the packet header length. A collector obtains the resulting telemetry and provides it to local and global controllers for closed-loop resource control.

Status of This Memo

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 13 March 2027.

Table of Contents

1. Introduction

Segment Routing over IPv6 (SRv6) uses the Segment Routing Header (SRH) to carry an ordered list of Segment Identifiers (SIDs) in IPv6 packets [RFC8754]. Packets are forwarded according to the Segment List in the SRH, and each segment endpoint executes the behavior bound to the active SID [RFC8986].

Telemetry data can be recorded in data packets as they traverse a network. In-band Network Telemetry (INT) [INT] and In Situ Operations, Administration, and Maintenance (IOAM) [RFC9197] are related but independent telemetry frameworks that use this measurement approach.

This document defines SRv6-INT, a protocol extension that integrates INT telemetry collection with SRv6 packet processing. When a packet reaches the endpoint associated with the active SID, the endpoint replaces the Segment List entry containing that SID with equal-length node telemetry data, referred to as INT Metadata. Reusing this header space prevents the packet header from growing as telemetry data is collected at successive segment endpoints [Yan23].

INT Metadata can contain a device identifier, timestamps, processing latency, queue occupancy, and traffic counters. The collected metadata can be used to monitor application traffic and provide feedback for closed-loop resource control [Yan24].

Section 4.2 defines the scope and non-goals of this document.

2. Requirements Language

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.

3. Terminology

This document uses the terminology defined in [RFC8754] and [RFC8986], including SRH, Segment List, Segment Identifier, SR Policy, Segments Left, Last Entry, FIB, and SRv6 Endpoint behavior. It also defines the following terms:

This document does not mandate any specific implementation of the collector, local controller, or global controller.

4. Problem Statement and Scope

4.1. Problem Statement

An SRv6 packet already carries a Segment List in its SRH. If a separate telemetry header is inserted and each endpoint appends a telemetry record, the packet length increases as the packet traverses the path. This growth increases the risk of exceeding the maximum transmission unit (MTU) and adds data-plane processing overhead.

To avoid this growth, each SRv6-INT endpoint replaces its corresponding Segment List entry with the telemetry data it collects.

The collector then obtains the resulting telemetry data, which the local and global controllers use as feedback for closed-loop resource control.

4.2. Scope and Non-Goals

This document defines:

  • The SRv6-INT protocol extension and associated control information;

  • The reuse of Segment List entries to carry INT Metadata;

  • The SRv6-INT processing behaviors defined in Section 6; and

  • How the collector obtains telemetry data and how the local controller and global controller consume the data for closed-loop resource control.

This document does not define resource-control algorithms used by the local and global controllers, APIs used for resource control, or encapsulation formats and transport protocols for delivering telemetry data to the collector.

4.3. Applicability

SRv6-INT applies within an SRv6-INT domain. An SRv6-INT domain is a portion of an SRv6 network in which SRv6-INT is enabled. Only configured SRv6-INT ingress nodes and SRv6-INT endpoints perform SRv6-INT processing. Ordinary IPv6 transit nodes may forward packets between these nodes without examining or modifying SRv6-INT fields.

SRv6-INT can be applied to all application traffic or only to traffic selected according to a local policy. This document does not define the selection criteria. The amount of traffic subject to SRv6-INT can be limited according to device capacity, packet overhead, and operational constraints.

5. SRv6-INT Protocol Extension

This document applies only to SRHs that contain a complete Segment List. SRv6-INT processing of a Reduced SRH is outside the scope of this document.

5.1. SRv6-INT Packet Format

This section specifies the SRv6-INT packet format and the additional semantics assigned to SRH fields. Except as specified in this document, SRH fields are used as defined in [RFC8754]. IPv6 packet processing follows [RFC8200].

The format and semantics of the SRv6-INT fields are the same whether the SRH is added during encapsulation or included when an IPv6 packet is originated [RFC8754].

Figure 1 presents the encapsulation context and the SRH format. The encapsulation in Figure 1(a) is schematic and is not drawn to scale. Figure 1(b) shows a Segment List entry after it has been reused for INT Metadata as specified in Section 5.2.

    +---------------------------------------------------------------+
    |                        Ethernet Header                        |
    +---------------------------------------------------------------+
    |                   IPv6 Header (Next Header = 43)              |
    +---------------------------------------------------------------+
    |            Segment Routing Header (expanded below)            |
    +---------------------------------------------------------------+
    |                         Inner Packet                          |
    +---------------------------------------------------------------+

                      (a) Encapsulation (schematic)

     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  | Routing Type  | Segments Left |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  Last Entry   |     Flags     |              Tag              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                                                               |
    |            Segment List[0] (128-bit IPv6 address)             |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                                                               |
    |            Segment List[1] (128-bit IPv6 address)             |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                                                               |
                                   ...
    |                                                               |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                       INT Metadata[0]                         |
    |               (replaced Segment List[Last Entry])             |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         SRv6-INT TLV                          |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   (b) Segment Routing Header (SRH)
Figure 1: SRv6-INT Packet Format

where:

Next Header: Defined in Section 4.4 of [RFC8200].

Hdr Ext Len: Defined in Section 4.4 of [RFC8200].

Routing Type: 4.

Segments Left: Defined in Section 4.4 of [RFC8200].

Last Entry: In a complete Segment List, identifies the entry containing the first segment of the SR Policy, as specified in Section 2 of [RFC8754].

Flags: An 8-bit field defined in [RFC8754]. Section 5.1.1 defines the use of one bit for SRv6-INT.

Tag: A 16-bit field defined in [RFC8754]. Its use for SRv6-INT is defined in Section 5.1.1.

Segment List[0..n]: A list of 128-bit IPv6 addresses encoded in reverse SR Policy order, as specified in Section 2 of [RFC8754]. In a complete Segment List, Segment List[0] contains the last segment of the SR Policy.

SRv6-INT TLV: An SRH TLV defined in Section 5.1.1. It follows the Segment List and MUST be fully contained within the SRH, as determined by Hdr Ext Len, in accordance with Section 2.1 of [RFC8754].

5.1.1. SRv6-INT Control and Feedback Fields

SRv6-INT uses one bit in the SRH Flags field, the SRH Tag field, and an SRv6-INT TLV to carry control and feedback information.

SRv6-INT Flag: A one-bit flag in the SRH Flags field that identifies an SRv6-INT packet. The SRv6-INT ingress sets this flag when constructing the packet, and it remains unchanged within the SRv6-INT domain. A packet without this flag set MUST NOT undergo SRv6-INT processing. Its bit position is TBD1; the existing implementation uses 0x80 for testing.

Tag: Indicates the SRv6-INT processing mode associated with the local SID. Plain mode applies when the SID has no associated service node. Service mode applies when the SID is associated with a service node. This mode includes packet delivery to and return from that node. In Service mode, Tag also distinguishes the endpoint-processing state from the service-processing state. The existing implementation uses the following values:

Table 1
Tag Value Processing Mode and State
0x0000 Plain mode.
0x4000 Service mode (endpoint-processing state), used at the SRv6-INT endpoint before delivery to the associated service node and after the packet returns.
0x8000 Service mode (service-processing state), used after delivery to the associated service node and before the packet returns to the SRv6-INT endpoint.

The Tag values for these modes and states are TBD. Section 6.1 specifies how Tag is initialized and updated.

SRv6-INT TLV: A packet with the SRv6-INT Flag set MUST carry an SRv6-INT TLV after the Segment List.

Following the alignment convention in Section 2.1 of [RFC8754], the SRv6-INT TLV has no alignment requirement. The TLV has the following 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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Type      |    Length     |            MapInfo            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                              PF                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

where:

Type: 8 bits. The value TBD2 identifies the SRv6-INT TLV. The IANA request is specified in Section 9.2.

Length: 8 bits. The length of the Value in octets, excluding the Type and Length fields. Its value is 6; the total TLV length is 8 octets.

MapInfo: A 16-bit bitmap in which each set bit selects a telemetry data category to be collected by SRv6-INT endpoints. The bits are assigned as follows:

bit 0: Device ID
bit 1: Time Information
bit 2: Queue Information (Queue ID and Queue Length)
bit 3: Port Counter
bits 4-15: Reserved; MUST be zero on transmission and
           ignored on receipt

PF (Performance Feedback): A 32-bit field carrying performance feedback in Service mode. In this document, PF carries the result of the most recently completed Service_Delay measurement for the local SID, as defined in Section 5.1.2. The endpoint stores this result locally and sets PF to the stored value before delivering a subsequent packet to the associated service node.

Future specifications may extend PF to carry other performance metrics. Any such extension MUST define how each metric is identified and specify its semantics, units, and encoding.

PF is the only field in the SRv6-INT TLV that may change along the path. Type, Length, and MapInfo MUST remain unchanged.

5.1.2. INT Metadata Format

Each INT Metadata record is 128 bits, equal in length to a Segment List entry. Plain mode and Service mode share the following format. Only the interpretation of the time fields differs between the two modes.

     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   Device ID   |                 Time Field 1                  ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~ Time Field 1  |                 Time Field 2                  ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~ Time Field 2  |Queue ID |          Queue Length               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Port Counter                          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

~ marks continuation across rows; the two parts bearing the same time-field name form a single 32-bit field.

where:

Device ID: 8 bits. Identifies the SRv6-INT endpoint that writes the record.

Time Field 1 and Time Field 2: Two 32-bit time fields. Their interpretation is shown below:

Table 2
Processing Mode and State Time Field 1 Time Field 2
Plain mode In_Time Out_Time
Service mode (service-processing state) In_Time Out_Time
Service mode (endpoint-processing state after service return) Service_Delay Hop_Delay

The table uses the following field definitions:

  • In_Time: The time of the packet's first arrival at the SRv6-INT endpoint.

  • Out_Time: The time at which the packet leaves the SRv6-INT endpoint in Plain mode or is transmitted to the associated service node in Service mode.

  • Service_Delay: The interval from transmission to the service node until the packet returns to the same SRv6-INT endpoint.

  • Hop_Delay: The interval from the packet's first arrival at the SRv6-INT endpoint until it is forwarded toward the next segment after returning from the service node.

Queue ID: 5 bits. Identifies the queue.

Queue Length: 19 bits. The queue length.

Port Counter: 32 bits. The traffic count.

5.2. Segment List Entry Reuse

The endpoint associated with the SID in Segment List[0] uses Plain mode.

When an SRv6-INT endpoint receives a packet destined to a local SID, it reuses only the Segment List entry corresponding to that SID. Section 5.1.2 defines the INT Metadata format and field semantics.

In Plain mode, the endpoint writes INT Metadata into that entry once. In Service mode, the endpoint writes INT Metadata into the entry for transmission to the associated service node and updates the same entry after the packet returns. Section 6 specifies the write sequence.

The endpoint MUST NOT modify any other Segment List entry. Once it has completed SRv6-INT processing, the INT Metadata in the corresponding entry MUST NOT be modified or interpreted as a SID.

Entry reuse MUST NOT change the number of entries in the Segment List, the 128-bit length of each entry, Last Entry, Hdr Ext Len, or the order or value of any SID that remains to be processed.

6. SRv6-INT Processing Model

This section defines SRv6-INT processing behaviors and their operation within an SRv6-INT domain.

6.1. SRv6-INT Processing Behaviors

6.1.1. SRv6-INT Packet Validation

A packet processed by End.T.INT or End.DT.INT MUST meet the following requirements:

  • The SRv6-INT Flag is set.

  • Each SRv6-INT TLV in the packet conforms to the format specified in Section 5.1.1.

  • The Tag field indicates one of the processing modes and states defined in Section 5.1.1.

  • The packet does not contain the HMAC TLV (Type 5) defined in [RFC8754]. Section 8 explains this restriction.

6.1.2. H.Encaps.INT Behavior

H.Encaps.INT extends the H.Encaps behavior defined in Section 5.1 of [RFC8986]. An SRv6-INT ingress/headend applies it to selected traffic.

For each selected packet, the SRv6-INT ingress/headend performs the following operations:

S01. Construct an outer IPv6 header and an SRH containing the
     complete Segment List of the SR Policy applied to the packet.
     Set the outer IPv6 fields, except Payload Length, as specified
     by H.Encaps.
S02. Decrement the inner IPv6 Hop Limit or IPv4 TTL.

S03. Set the SRv6-INT Flag and initialize Tag to indicate Plain mode.
S04. Insert the SRv6-INT TLV, set MapInfo from local configuration,
     and initialize PF to 0.

S05. Update Hdr Ext Len and the outer IPv6 Payload Length.
S06. Submit the packet to IPv6 forwarding.

6.1.3. End.T.INT Behavior

End.T.INT extends the End.T behavior defined in Section 4.3 of [RFC8986]. Each instance is associated with an IPv6 FIB table T and may also be associated with a service node.

In the procedure below, M holds the 128-bit INT Metadata constructed or updated for the local SID. Time Field 1 and Time Field 2 refer to fields in M.

When a packet's IPv6 Destination Address matches a local End.T.INT SID, the SRv6-INT endpoint performs the following operations:

S01. Apply the checks in lines S05 through S11 of
     the End behavior in Section 4.1 of [RFC8986].

     Apply the checks in Section 6.1.1. Verify that
     0 < Segments Left <= Last Entry.
     If any check fails, handle the error according to
     Section 6.1.5 and stop processing.

S02. If (Tag does not indicate Service mode in the
     service-processing state) {
S03.     If the local SID is associated with a service node:
             Set Tag to indicate Service mode in the
             endpoint-processing state;
         Else:
             Set Tag to indicate Plain mode.
S04.     Initialize M to 0. Obtain Device ID, Queue ID, Queue
         Length, and Port Counter as selected by MapInfo, and store
         them in M.
S05. }

S06. If (Tag indicates Plain mode) {
S07.     If MapInfo selects Time Information:
             Time Field 1 = In_Time;
             Time Field 2 = Out_Time.

S08. } Else If (Tag indicates Service mode in the
                endpoint-processing state) {
S09.     If MapInfo selects Time Information:
             Time Field 1 = In_Time;
             Time Field 2 = Out_Time.
S10.     If a Service_Delay is stored locally for the local SID:
             PF = the Service_Delay stored for that SID.
S11.     Write M to Segment List[Segments Left].
S12.     Set Tag to indicate Service mode in the service-processing
         state; leave Segments Left and the IPv6 Destination Address
         unchanged.
S13.     Forward the packet to the service node associated with the
         local SID and stop processing.

S14. } Else If (Tag indicates Service mode in the
                service-processing state) {
S15.     Read Segment List[Segments Left] into M.
S16.     If MapInfo selects Time Information:
             Service_Delay = return packet arrival time
                             - Time Field 2;
             Hop_Delay = packet departure time from this endpoint
                        - Time Field 1;
             Time Field 1 = Service_Delay; Time Field 2 = Hop_Delay;
             Store Service_Delay locally for the local SID.
S17.     Set Tag to indicate Service mode in the endpoint-processing
         state and set PF to 0.
S18. }

S19. Write M to Segment List[Segments Left].
S20. Decrement the IPv6 Hop Limit and Segments Left.
S21. Set IPv6 Destination Address to Segment List[Segments Left].
S22. Submit the packet to the egress IPv6 FIB lookup using table T.

The service node MUST return the packet to the same SRv6-INT endpoint without modifying the SRH. The packet's IPv6 Destination Address MUST continue to identify the same locally instantiated End.T.INT SID.

6.1.4. End.DT.INT Behavior

A locally instantiated SID bound to the End.DT.INT behavior MUST be the last segment of the SR Policy. Each such SID is associated with a local decapsulation and delivery context.

When a packet's IPv6 Destination Address matches a local End.DT.INT SID, the SRv6-INT endpoint performs the following operations:

S01. Apply the checks in Section 6.1.1. Verify that
     Segments Left == 0 and that Tag does not indicate
     Service mode in the service-processing state.
     If any check fails, handle the error according to
     Section 6.1.5 and stop processing.

S02. Set Tag to indicate Plain mode.
S03. Obtain Device ID, In_Time, Out_Time, Queue ID, Queue Length, and
     Port Counter as selected by MapInfo, and store them in M.
S04. Write M to Segment List[0].
S05. Construct a packet containing the complete SRH and transfer it
     to the collector through a deployment-defined local interface.

S06. Remove the outer IPv6 header and its extension headers.
S07. Forward the inner packet according to the instance's local
     decapsulation and delivery context.

6.1.5. Error Handling

Failures of checks inherited from [RFC8200], [RFC8754], or [RFC8986] are handled as specified for those checks in the cited document.

A failure of an SRv6-INT check specified in Section 6.1.1 or in the applicable End.T.INT or End.DT.INT procedure is an SRv6-INT processing error. The same applies in either of the following cases:

  • Telemetry data selected by MapInfo cannot be obtained or represented in the corresponding field defined in Section 5.1.2.

  • INT Metadata replacement violates Section 5.2.

On an SRv6-INT processing error, the node MUST stop SRv6-INT processing and discard the packet. It MUST NOT modify any further Segment List entries.

6.2. SRv6-INT Domain and Node Roles

Figure 2 shows an SRv6-INT domain. Packets steered by the SR Policy <S1, S2, S3> are processed by N1, N2, and N3 in that order. The nodes have the following roles:

  • H is the SRv6-INT ingress/headend executing H.Encaps.INT.

  • N1 executes End.T.INT for SID S1. No service node is associated with S1, so N1 uses Plain mode.

  • N2 executes End.T.INT for SID S2. S2 is associated with the service node shown, so N2 uses Service mode.

  • R is an ordinary IPv6 transit node between N2 and N3.

  • N3 executes End.DT.INT for the final SID S3.

         +--------------- SRv6-INT Domain ----------------+
Original |                                                | Forwarded
 Packet  |                                                |  Packet
     --->[H]-->[N1]-->[N2]---->[R]--------->[N3]-------------->
         |              ^                    :^           |
         |              |                    ::           |
         |              v                    ::           |
         |       +--------------+            ::           |
         |       | Service Node |            ::           |
         |       +--------------+            ::           |
         |              :^                   ::           |
         |       Local  ::         Complete  ::           |
         |    Telemetry ::         Telemetry ::           |
         |              v: Config            v: Config    |
         |  +-------------------+  +-------------------+  |
         |  |    Collector /    |  |    Collector /    |  |
         |  | Local Controller  |  | Global Controller |  |
         |  +-------------------+  +-------------------+  |
         |                                                |
         +------------------------------------------------+
Figure 2: Node Roles and Closed-Loop Resource Control in an SRv6-INT Domain

Solid arrows show packet forwarding, including delivery from N2 to the service node and return to N2. Dotted arrows show telemetry data provided by N2 and N3 to the corresponding collectors. Arrows labeled Config show resource configuration. A slash indicates that the collector and controller roles may be co-located.

The following requirements apply within an SRv6-INT domain:

  • Each non-final SID in an SR Policy used for SRv6-INT MUST be instantiated at an SRv6-INT endpoint and bound to the End.T.INT behavior. The final SID MUST be instantiated at an SRv6-INT endpoint and bound to the End.DT.INT behavior. For each non-final SID, the deployment configuration MUST identify any associated service node.

  • The collector MUST interpret the INT Metadata using information associated with the deployed SR Policy.

  • SRv6-INT endpoints whose In_Time or Out_Time values are compared MUST use clocks synchronized to a common time reference. Service_Delay and Hop_Delay MAY be computed using the local clock of the endpoint that writes them.

In the following example, H sets MapInfo to select telemetry data categories. N2 has stored a Service_Delay measurement obtained from an earlier packet. A_H denotes the Source Address in the outer IPv6 header constructed by H. M1 and M3 denote the INT Metadata written by N1 and N3, respectively. T2 denotes the INT Metadata written by N2 before delivery to the service node; M2 denotes that INT Metadata after N2 updates its time fields when the packet returns.

The notation follows Section 6.1 of [RFC8754]. (A_H,S1) lists the outer IPv6 Source and Destination Addresses. (S3,S2,S1;SL=2) lists the Segment List in encoding order. Other header fields and the inner packet are omitted.

When H receives a selected packet, it executes H.Encaps.INT as specified in Section 6.1.2, sets Tag to indicate Plain mode, and forwards the packet:

P1: (A_H,S1)(S3,S2,S1;SL=2)

N1 executes End.T.INT in Plain mode. It sets Tag to indicate Plain mode, writes M1 to Segment List[2], and forwards the packet to N2:

P2: (A_H,S2)(S3,S2,M1;SL=1)

N2 executes End.T.INT in Service mode. Before delivering the packet to the service node, N2 sets Tag to indicate the endpoint-processing state, writes the stored Service_Delay into PF, and writes T2 to Segment List[1]. It then sets Tag to indicate the service-processing state. The IPv6 Destination Address and SL remain unchanged:

P3: (A_H,S2)(S3,T2,M1;SL=1)

When the packet is delivered to the service node, the collector reads the INT Metadata denoted by T2 as local telemetry data and obtains the Service_Delay measured for the earlier packet from PF.

The service node returns the packet to N2 without modifying the SRH. As specified in Section 6.1.3, N2 replaces Time Field 1 and Time Field 2 in T2 with Service_Delay and Hop_Delay, respectively, producing M2. N2 stores Service_Delay locally for S2, restores Tag to indicate the endpoint-processing state, and sets PF to 0. It then writes M2 to Segment List[1], sets SL to 0 and the IPv6 Destination Address to S3, and forwards the packet:

P4: (A_H,S3)(S3,M2,M1;SL=0)

R forwards the packet to N3 using ordinary IPv6 forwarding, leaving the fields shown above unchanged. N3 executes End.DT.INT as specified in Section 6.1.4. It sets Tag to indicate Plain mode and writes M3 to Segment List[0]. Before decapsulation, the packet is:

P5: (A_H,S3)(M3,M2,M1;SL=0)

N3 provides the collector with a packet containing the complete SRH, then removes the outer IPv6 header and its extension headers and forwards the inner packet. The collector obtains the INT Metadata sequence M1, M2, M3.

7. Closed-Loop Resource-Control Framework

SRv6-INT supports local and global control loops using telemetry data collected according to MapInfo.

In the local loop, the collector obtains local telemetry data from packets delivered to a service node and provides the data to the local controller. The local controller uses these data to maintain a local performance view and produce configurations for the relevant service resources.

In the global loop, an SRv6-INT endpoint executing End.DT.INT provides the complete INT Metadata sequence to the collector. The collector provides these data to the global controller, which uses them to generate configurations for the relevant network or service resources.

Once applied, the resource configurations affect the processing of subsequent packets. SRv6-INT endpoints collect new telemetry data from those packets, and the controllers use these data to update their performance views and resource configurations, thereby closing the control loops.

Invalid telemetry data MUST NOT be used to generate resource configurations. This document does not define the algorithms used to derive performance views or resource configurations.

8. Security Considerations

Within an SRv6-INT domain, SRv6-INT-capable nodes are trusted to perform only those SRv6-INT processing operations authorized by their local configuration. The domain MUST apply the ingress filtering specified in Section 5.1 of [RFC8754]. Unless explicitly permitted by local policy, domain boundary nodes MUST discard any packet with the SRv6-INT Flag set that would otherwise cross the domain boundary in either direction.

The HMAC defined in [RFC8754] is calculated over all Segment List entries. Because SRv6-INT replaces these entries with INT Metadata, the RFC 8754 HMAC TLV is incompatible with the Segment List entry replacement mechanism. Therefore, an SRv6-INT packet MUST NOT contain this TLV.

SRv6-INT telemetry collection is subject to threats involving unauthorized modification of telemetry data, information disclosure, and denial of service, similar to those discussed for IOAM in Section 9 of [RFC9197]. Within this closed-loop framework, unauthorized manipulation of INT Metadata or PF can distort performance assessments and lead to inappropriate resource configurations. If the trust assumptions within the domain no longer hold, boundary filtering alone is insufficient to address these threats.

Deployments SHOULD enforce authorization controls on access to and transfer of telemetry data and on resource-configuration operations. They SHOULD also use mechanisms outside the scope of this document to protect the confidentiality and integrity of communications involving the Collector, Local Controller, and Global Controller.

9. IANA Considerations

If this document is approved, IANA is requested to make the assignments specified below. Unassigned values are denoted by TBD1 through TBD4.

9.1. SRH Flag Assignment

The requested assignment from the "Segment Routing Header Flags" registry is:

Table 3
Bit Description Reference
TBD1 SRv6-INT Flag This document

Section 5.1.1 defines the flag semantics and identifies the value used for testing.

9.2. SRv6-INT TLV Type Assignment

The requested assignment from the mutable range (128-251) of the "Segment Routing Header TLVs" registry is:

Table 4
Type Description Reference
TBD2 SRv6-INT TLV This document

Section 5.1.1 defines the TLV format and field mutability.

9.3. SRv6 Endpoint Behavior Assignments

The requested assignments from the "SRv6 Endpoint Behaviors" registry are:

Table 5
Value Endpoint Behavior Reference
TBD3 End.T.INT This document
TBD4 End.DT.INT This document

No code point in this registry is requested for H.Encaps.INT.

The values used in the SRH Tag field are not SRv6 Endpoint Behavior code points, and this document requests no IANA action for them. Section 5 and Section 6 specify their semantics and when the field is updated.

10. References

10.1. Normative References

[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/rfc/rfc8174>.
[RFC8200]
Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", STD 86, RFC 8200, DOI 10.17487/RFC8200, , <https://www.rfc-editor.org/rfc/rfc8200>.
[RFC8754]
Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header (SRH)", RFC 8754, DOI 10.17487/RFC8754, , <https://www.rfc-editor.org/rfc/rfc8754>.
[RFC8986]
Filsfils, C., Ed., Camarillo, P., Ed., Leddy, J., Voyer, D., Matsushima, S., and Z. Li, "Segment Routing over IPv6 (SRv6) Network Programming", RFC 8986, DOI 10.17487/RFC8986, , <https://www.rfc-editor.org/rfc/rfc8986>.

10.2. Informative References

[INT]
P4.org Applications Working Group, "In-band Network Telemetry (INT) Dataplane Specification", Version 2.1, , <https://p4.org/wp-content/uploads/sites/53/p4-spec/docs/INT_v2_1.pdf>.
[RFC9197]
Brockners, F., Ed., Bhandari, S., Ed., and T. Mizrahi, Ed., "Data Fields for In Situ Operations, Administration, and Maintenance (IOAM)", RFC 9197, DOI 10.17487/RFC9197, , <https://www.rfc-editor.org/rfc/rfc9197>.
[Yan23]
Yan, X., Xu, Z., Chen, B., and Z. Zhu, "SRv6-INT: Runtime Monitoring for Green Service Function Chaining in B5G-MEC", IEEE, ICC 2023 - IEEE International Conference on Communications pp. 3145-3150, DOI 10.1109/ICC45041.2023.10278740, , <https://doi.org/10.1109/ICC45041.2023.10278740>.
[Yan24]
Yan, X., da Fonseca, N. L. S., and Z. Zhu, "Self-Adaptive SRv6-INT-Driven System Adjustment in Runtime for Reliable Service Function Chaining", Institute of Electrical and Electronics Engineers (IEEE), IEEE Transactions on Network and Service Management vol. 21, no. 5, pp. 4962-4973, DOI 10.1109/TNSM.2024.3404461, , <https://doi.org/10.1109/TNSM.2024.3404461>.

Contributors

Xuefeng Yan, Xiaoliang Chen, and Zuqing Zhu contributed to the content of this document.

Authors' Addresses

Xuefeng Yan (editor)
University of Science and Technology of China
100 Fuxing Road
Hefei
Anhui, 230093
China
Xiaoliang Chen (editor)
University of Science and Technology of China
100 Fuxing Road
Hefei
Anhui, 230093
China
Zuqing Zhu (editor)
University of Science and Technology of China
100 Fuxing Road
Hefei
Anhui, 230093
China