<?xml version="1.0" encoding="utf-8"?>
<?xml-model href="rfc7991bis.rnc"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
    category="info"
    docName="draft-ajp-spring-srv6-mpte-01"
    ipr="trust200902"
    submissionType="IETF"
    xml:lang="en"
    version="3"
    consensus="true">
    <front>
        <title abbrev="SRv6 for MPTE">SRv6 for Multipath Traffic Engineering</title>
        <seriesInfo name="Internet-Draft" value="draft-ajp-spring-srv6-mpte-01" />

        <author fullname="Abhishek Chakraborty" initials="A." surname="Chakraborty">
            <organization>HPE</organization>
            <address>
                <postal>
                    <street>Sy. No. 192, Whitefield Road, Mahadevapura</street>
                    <city>Bengaluru</city>
                    <region>Karnataka</region>
                    <code>560048</code>
                    <country>India</country>
                </postal>
                <email>abhishek.chakraborty.ietf@gmail.com</email>
            </address>
        </author>

        <author fullname="Jayant Kumar Agarwal" initials="J.K." surname="Agarwal">
            <organization>HPE</organization>
            <address>
                <postal>
                    <street>Sy. No. 192, Whitefield Road, Mahadevapura</street>
                    <city>Bengaluru</city>
                    <region>Karnataka</region>
                    <code>560048</code>
                    <country>India</country>
                </postal>
                <email>jayant.agarwal.ietf@gmail.com</email>
            </address>
        </author>

        <author fullname="Vishnu Pavan Beeram" initials="V.P." surname="Beeram">
            <organization>HPE</organization>
            <address>
                <postal>
                    <street>1133 Innovation Way</street>
                    <city>Sunnyvale</city>
                    <region>CA</region>
                    <code>94089</code>
                    <country>United States of America</country>
                </postal>
                <email>vishnupavan.ietf@gmail.com</email>
            </address>
        </author>

        <author fullname="Siva Sivabalan" initials="S." surname="Sivabalan">
            <organization>Ciena</organization>
            <address>
                <postal>
                    <city>Ottawa</city>
                    <country>Canada</country>
                </postal>
                <email>ssivabal@ciena.com</email>
            </address>
        </author>

        <date year="2026" month="July" day="20" />
        <area>Routing</area>
        <workgroup>SPRING</workgroup>
        <keyword>SRv6</keyword>
        <keyword>Multipath Traffic Engineering</keyword>
        <keyword>MPTE</keyword>
        <keyword>Segment Routing</keyword>
        <keyword>DAG</keyword>

        <abstract>
            <t>A Multipath Traffic Engineered Directed Acyclic Graph (MPTED) tunnel is a Traffic
                Engineering (TE) construct that enables weighted load balancing of unicast traffic
                across a constrained set of paths optimized for an objective.</t>
            <t>This document is informational and describes one realization approach for applying
                SRv6 semantics to MPTE, based on the Multipath Traffic Engineering as described
                in Internet-Draft (draft-kompella-teas-mpte). It summarizes associated procedures,
                lifecycle, management, and forwarding behavior.</t>
            <t>This document applies existing SRv6 architecture and semantics to MPTE without
                defining new SRv6 Endpoint Behaviors or signaling protocols. It focuses on
                data-plane realization using existing forwarding instructions.</t>
        </abstract>
    </front>

    <middle>
        <section>
            <name>Introduction</name>
            <t>The notions of Multipath Traffic Engineering (MPTE) and an MPTE Directed Acyclic
                Graph (MPTED) tunnel are introduced in <xref target="I-D.kompella-teas-mpte" />.</t>
            <t>MPTE SRv6 extension points are described in companion documents and aligned here for
                realization context.</t>
            <t>This document describes an approach in which each MPTED uses a unique DAG Locator and
                a unique DAG SID as SRv6 forwarding context to program and operate MPTE junction
                state.</t>
            <t>In this approach, transit junctions (non-penultimate hops) forward traffic using IPv6
                forwarding with weighted ECMP next hops, penultimate-hop junctions terminate the DAG
                SID, ingress nodes encapsulate traffic with DAG SID and service SID, and egress
                nodes perform service handling.</t>
            <t>The approach ensures there are not two SRv6 SID terminations at a single node.</t>
            <t>The forwarding semantics in this approach do not require additional SRv6
                encapsulation at transit junctions.</t>
            <t>This approach does not change or redefine existing SRv6 semantics and does not define
                new SRv6 forwarding instructions. It uses existing SRv6 architecture in an MPTE
                context.</t>
            <t>This approach also considers inter-domain use cases.</t>

            <t><xref target="I-D.stone-spring-mpte-sr" /> describes an approach for realizing MPTE
                in Segment Routing networks using SR Policy and Binding SID (BSID) constructs at
                each junction node, managed by a centralized controller. That approach is general to
                SR and applies to both SR-MPLS and SRv6 data planes. When a globally consistent BSID
                value is used across all junction nodes in <xref target="I-D.stone-spring-mpte-sr" />,
                this may appear structurally similar to the DAG Locator concept in this document, as
                both associate a single per-DAG identifier across junction nodes. However, the two
                constructs differ fundamentally in forwarding behavior: in <xref
                    target="I-D.stone-spring-mpte-sr" />, each transit junction resolves the BSID to
                invoke a per-junction SR Policy, whereas in this document, transit junctions perform
                plain IPv6 forwarding on the DAG Locator prefix and do not execute any Endpoint
                Behavior at transit nodes.</t>

            <t><xref target="I-D.saad-teas-rsvpte-ip-tunnels" /> in Section 3.9, SRv6-Tunnel
                describes the Egress Address Block (EAB) approach which uses an EAB address from a
                dedicated non-IGP-advertised SRv6 Locator at the egress. Transit nodes forward
                packets toward the EAB using standard IPv6 forwarding on signaling-programmed
                routes, without performing any SRv6 Endpoint Behavior. The DAG Locator concept in
                this document shares a related characteristic: like the EAB, it uses a privately
                scoped Locator that is absent from the IGP, with transit nodes performing plain IPv6
                forwarding on signaling-programmed routes.</t>

            <t>This document contributes an SRv6-native realization path for MPTE that is intended
                to align with ongoing WG direction and operational needs. Each MPTED uses a unique
                DAG Locator and a unique DAG SID as SRv6 forwarding context to program and operate
                MPTE junction state. This realization leverages native IPv6 forwarding semantics at
                transit junctions to forward on a DAG Locator prefix with weighted ECMP and SRv6
                semantics at penultimate-hop junctions to terminate a DAG SID. This approach
                natively supports multiple egress nodes within a single MPTED. No Binding SIDs or
                per-junction SR Policies are required, resulting in simpler per-node state and
                avoiding additional SRv6 encapsulation at transit junctions.</t>

            <section>
                <name>Requirements Language</name>
                <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>",
                    "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD
                    NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>
                    MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be
                    interpreted as described in BCP 14 <xref target="RFC2119" /> <xref
                        target="RFC8174" /> when, and only when, they appear in all capitals, as
                    shown here.</t>
                <t>Lowercase uses of these words are not to be interpreted as BCP 14 normative
                    requirements.</t>
            </section>

            <section>
                <name>Terminology</name>
                <t>This document reuses terminology from <xref target="I-D.kompella-teas-mpte" />, <xref
                        target="RFC8754" />, <xref target="RFC8986" />, and <xref target="RFC9800" />.</t>
                <dl newline="true">
                    <dt>DAG Locator:</dt>
                    <dd>A unique SRv6 Locator allocated for a specific MPTED within a domain. This
                        Locator represents the per-DAG transport context used by transit junctions
                        (non-penultimate hops) for IPv6 forwarding with weighted ECMP next hops
                        according to the DAG's signaled junction state.</dd>
                    <dt>DAG SID:</dt>
                    <dd>A unique SRv6 SID allocated for a specific MPTED, used for DAG termination
                        semantics at penultimate-hop junctions. In this realization, DAG SID
                        behavior is equivalent to END.X with Next-C-SID, PSP &amp; USD processing
                        semantics where applicable <xref target="RFC8986" /> <xref target="RFC9800" />,
                        with weighted ECMP next hops according to the DAG's signaled junction state.</dd>
                    <dt>Domain:</dt>
                    <dd>A network administrative domain within which DAG Locators and DAG SIDs are
                        unique and privately scoped, consistent with <xref target="RFC8402" />
                        Segment Routing Architecture concepts.</dd>
                    <dt>Allocation Function:</dt>
                    <dd>A logical function that owns SRv6 block space for MPTED use and allocates
                        unique DAG Locator and DAG SID values on request from the MC.</dd>
                </dl>
            </section>
        </section>

        <section>
            <name>Scope and Design Principles</name>
            <t>This document describes one realization approach for applying SRv6 semantics to MPTE
                and summarizes associated procedures, lifecycle, management, and forwarding
                behavior.</t>
            <t>This document does not define:</t>
            <ul>
                <li>a new SRv6 Endpoint Behavior,</li>
                <li>signaling protocol specific encodings for RSVP-TE, PCEP, BGP, or other signaling
                    families,</li>
                <li>MPTE control-plane role behavior, DAG computation procedures, or signaling
                    procedures defined by <xref target="I-D.kompella-teas-mpte" /> and companion
                    drafts.</li>
            </ul>
        </section>

        <section>
            <name>Overview of MPTET-SRv6 Functional Entities</name>

            <section>
                <name>Allocation Function</name>
                <t>The Allocation Function is a logical entity that allocates and manages the DAG
                    Locator and DAG SID. It is usually co-located with the MC for operational
                    simplicity, or <bcp14>MAY</bcp14> be implementation-specific and located
                    elsewhere.</t>
                <t>The MC requests dynamic allocation of unique DAG Locator and DAG SID values for
                    each DAG and, optionally, each DAG version.</t>
                <t>The mechanisms used for communication between MC and Allocation Function are out
                    of scope.</t>
            </section>

            <section anchor="mpte-dag-block">
                <name>MPTE-DAG Block</name>
                <t>Each Allocation Function is assigned one or more unique SRv6 block(s), referred
                    to in this document as DAG Blocks.</t>
                <t>It is <bcp14>RECOMMENDED</bcp14> to assign separate SRv6 blocks to each
                    Allocation Function for operational simplicity, and to use those blocks only for
                    MPTED purposes. Using best-effort or Flex-Algo SRv6 blocks for DAG Locator/SID
                    allocation <bcp14>MAY</bcp14> create loops and <bcp14>MAY</bcp14> raise security
                    concerns if stale or inconsistent state is not cleaned up properly.</t>
                <t>DAG blocks are private to a domain and <bcp14>MUST NOT</bcp14> be advertised to
                    other domains by any means. The same DAG Block can be reused by another domain.</t>
                <t>If every ingress behaves as MC and each MC is accompanied by an Allocation
                    Function, two deployment options are common: (1) each MC <bcp14>SHOULD</bcp14>
                    have its own unique DAG Block, or (2) multiple MCs <bcp14>MAY</bcp14> share a
                    common DAG Block with coordinated allocations. The choice depends on operational
                    and scaling requirements.</t>
            </section>

            <section>
                <name>DAG Locator and DAG SID</name>
                <t>For each MPTED, the implementation <bcp14>MUST</bcp14> associate one DAG Locator
                    and one DAG SID that are unique within the domain. <xref target="mpte-dag-block" />
                    describes one approach to allocation and <xref target="sec-working" /> describes
                    the corresponding programming workflow.</t>
                <t>An implementation <bcp14>MAY</bcp14> allocate a new DAG Locator and DAG SID per
                    DAG version, or <bcp14>MAY</bcp14> reuse the same values across versions when
                    safe update behavior is preserved.</t>
                <t>A unique DAG Locator and DAG SID per DAG provides clear DAG identification inside
                    a domain and improves operational debugging and tracing.</t>
                <t>DAG Locators and DAG SIDs in this realization are private transport identifiers
                    and <bcp14>MUST NOT</bcp14> be advertised in IGP or other routing protocols.
                    These identifiers <bcp14>MAY</bcp14> be carried only by the signaling protocol
                    used to program junction nodes for the DAG.</t>
            </section>

            <section>
                <name>Support for MC Roles</name>
                <t>As described in <xref target="I-D.kompella-teas-mpte" />, the MPTED Computer (MC)
                    is the entity that computes the MPTED. The MC can be either:</t>
                <ul>
                    <li>an ingress node, or</li>
                    <li>a Path Computation Element (PCE).</li>
                </ul>
                <t>This realization supports both MC models and does not constrain its functional
                    placement. TO, MC, and SS may co-reside on one node or be distributed across
                    multiple nodes, consistent with the base MPTE architecture.</t>
                <t>The residence and placement model of the MC influences the operational choice of
                    signaling protocol family (<xref target="sec-signaling" />) used to program DAG
                    junctions.</t>
            </section>

            <section anchor="sec-signaling">
                <name>Support for Signaling Protocols</name>
                <t>This document aligns with the signaling protocol direction of <xref
                        target="I-D.kompella-teas-mpte" /> and supports mapping SRv6 MPTE signaling
                    to the same companion protocol families:</t>
                <ul>
                    <li>RSVP-TE extensions,</li>
                    <li>PCEP extensions,</li>
                    <li>BGP-based signaling,</li>
                    <li>other MPTE-compatible signaling specifications.</li>
                </ul>
                <t>Protocol-specific details for these signaling families are specified in <xref
                        target="I-D.beeram-pce-pcep-mpted" />, <xref target="I-D.kbr-teas-mptersvp" />,
                    and <xref target="I-D.zzhang-idr-mpte-signaling" />. Independently of the chosen
                    signaling protocol, the signaling exchange is expected to carry SRv6 context
                    (for example DAG Locator/SID context) required by this realization.</t>
                <t>This document does not define protocol-specific signaling procedures.</t>
            </section>
        </section>

        <section anchor="sec-working">
            <name>Working Principles</name>

            <t>This section describes the end-to-end operational flow of the SRv6 MPTE realization
                defined in this document. The working principles are organized around the following
                functional roles.
            </t>
            <ul>
                <li>the MC computes the MPTED topology and requests a unique DAG Locator and DAG
                    SID from the Allocation Function;</li>
                <li>the Signaling Source distributes per-junction programming intent (PHOP/NHOP
                    state, DAG Locator/SID context) to each node in the DAG;</li>
                <li>ingress nodes encapsulate traffic using the DAG SID as the outer destination
                    address with service SID context in the SRH;</li>
                <li>transit junctions (non-penultimate hops) perform plain IPv6 forwarding on the
                    DAG Locator prefix with weighted ECMP next hops, invoking no SRv6 Endpoint
                    Behavior;</li>
                <li>penultimate-hop junctions terminate the DAG SID using END.X with PSP &amp; USD
                    semantics and forward toward egress per DAG NHOP intent; and</li>
                <li>egress nodes perform service SID handling without requiring any per-DAG
                    transport-route state.</li>
            </ul>
            <t>This realization uses only existing SRv6 behaviors and does not define new SRv6
                Endpoint Behaviors.</t>

            <section>
                <name>MPTED Computer</name>
                <t>The MPTED Computer (MC) computes the MPTED and its per-junction PHOP/NHOP state
                    according to <xref target="I-D.kompella-teas-mpte" />.</t>
                <t>For each DAG (and optionally each DAG version), the MC requests the Allocation
                    Function to provide a unique DAG Locator and DAG SID.</t>
                <t>The SRv6 realization programming intent derived from the DAG result is as
                    follows:</t>
                <ul>
                    <li>DAG Locator context is used for non-penultimate transit junction
                        programming,</li>
                    <li>DAG SID context is used for penultimate-hop termination programming,</li>
                    <li>no DAG transport Locator/SID programming is required at egress,</li>
                    <li>ingress tunnel encapsulation destination is set to DAG SID with service SID
                        stacking in SRH.</li>
                </ul>
                <t>The resulting junction programming intent is provided to the Signaling Source for
                    distribution. Detailed MPTE computation workflow and signaling procedures are
                    out of scope in this document. These procedures and workflows are specified in
                    companion MPTE documents.</t>
            </section>

            <section>
                <name>Allocation Function</name>
                <t>The Allocation Function allocates and manages DAG Locator and DAG SID values from
                    assigned DAG block space.</t>
                <t>The Allocation Function <bcp14>MAY</bcp14> be placed on any node or controller
                    entity. For operational simplicity, co-location with the MC is <bcp14>
                    RECOMMENDED</bcp14>.</t>
                <t>The Allocation Function returns the DAG Locator/DAG SID context needed for
                    signaling and forwarding realization. The mechanisms used for communication
                    between MC and Allocation Function are out of scope.</t>
            </section>

            <section>
                <name>Signaling Source</name>
                <t>The Signaling Source distributes the MC-provided per-junction intent using
                    signaling procedures defined by <xref target="I-D.kompella-teas-mpte" />, <xref
                        target="I-D.beeram-pce-pcep-mpted" />, <xref target="I-D.kbr-teas-mptersvp" />,
                    and <xref target="I-D.zzhang-idr-mpte-signaling" />.</t>
                <t>For SRv6 realization, the signaling payload carries DAG identity/version and SRv6
                    context (DAG Locator and DAG SID), together with PHOP/NHOP relationships needed
                    by receiving junction nodes.</t>
                <t>The base signaling workflow remains as defined in <xref
                        target="I-D.kompella-teas-mpte" />; this realization only identifies
                    SRv6-specific context used by programmed nodes.</t>
                <t>Protocol-specific signaling procedures remain out of scope in this document.</t>
            </section>

            <section anchor="sec-ingress">
                <name>Ingress Programming</name>
                <t>Ingress programming installs tunnel encapsulation context for the selected MPTED:</t>
                <ul>
                    <li>outer encapsulation destination is set to the DAG SID,</li>
                    <li>SRH carries service SID context,</li>
                    <li>forwarding next hops are programmed per MPTE DAG intent.</li>
                </ul>
                <t>Ingress does not require DAG-specific transit SID stacking for in-domain
                    transport beyond the DAG Locator/SID realization described in this document.</t>
            </section>

            <section anchor="sec-transit">
                <name>Transit Junction Programming</name>
                <t>Transit junctions (non-penultimate hops) are programmed with DAG Locator route
                    state toward MPTE-programmed NHOPs.</t>
                <t>Transit junctions perform IPv6 forwarding for this transport context with
                    weighted ECMP next hops. They do not perform DAG SID termination in this
                    realization.</t>
            </section>

            <section anchor="sec-penultimate">
                <name>Penultimate Junction Programming</name>
                <t>Penultimate-hop junction programming installs DAG SID termination state with
                    MPTE-programmed NHOPs toward egress.</t>
                <t>Upon match of the terminating DAG SID context, the node applies signaled SRv6
                    Endpoint Behavior and forwards toward egress according to DAG NHOP intent.</t>
            </section>

            <section anchor="sec-egress">
                <name>Egress Programming</name>
                <t>Egress programming does not require DAG transport-route state in this
                    realization.</t>
                <t>Egress performs service handling based on service SID context and local service
                    forwarding behavior.</t>
            </section>

            <section>
                <name>Versioning and Operational Behavior</name>
                <t>Implementations <bcp14>MAY</bcp14> either:</t>
                <ul>
                    <li>update PHOP/NHOP state while reusing an existing DAG Locator/SID, or</li>
                    <li>allocate new DAG Locator/SID values for a new DAG version and perform
                        make-before-break.</li>
                </ul>
                <t>In all cases, signaling and forwarding state <bcp14>MUST</bcp14> remain
                    consistent for DAG identity, version, and DAG Locator/SID context.</t>
            </section>

            <section>
                <name>Optimization and Deployment Simplification Approaches</name>
                <t>Deployments <bcp14>MAY</bcp14> simplify operations while preserving the working
                    principles described in this section. Two approaches are common:</t>
                <ul>
                    <li>Shared DAG Block architecture, where multiple logical Allocation Functions
                        share a common DAG Block with coordinated allocations.</li>
                    <li>Minimal DAG Block with per-allocation function Locator ownership, where a
                        minimal set of DAG Blocks is shared across all logical Allocation Functions,
                        each logical Allocation Function is assigned a unique DAG Locator, and each
                        logical Allocation Function allocates function codes from the shared DAG
                        Block in its local scope.</li>
                </ul>
                <t>For the second approach, additional programming semantics will be clarified in a
                    future version of this draft.</t>
            </section>
        </section>

        <section>
            <name>Forwarding Semantics</name>
            <t><xref target="sec-working" /> defines functional roles and programming intent. This
                section defines the resulting packet-forwarding behavior at each node type.</t>

            <section>
                <name>Ingress Behavior</name>
                <t>Ingress encapsulates packets into the SRv6 transport context associated with the
                    selected MPTED.</t>
                <t>The outer IPv6 header destination is the DAG SID, and SRH carries service SID
                    context. Ingress forwarding uses MPTE-programmed next hops for the DAG.</t>
            </section>

            <section>
                <name>Transit Junction Behavior</name>
                <t>Transit junctions (non-penultimate hops) forward packets by IPv6 lookup on DAG
                    Locator route context, performing IPv6 forwarding with weighted ECMP next hops.</t>
                <t>No DAG SID termination is performed at these transit nodes. Forwarding follows
                    MPTE-programmed NHOP sets.</t>
            </section>

            <section>
                <name>Penultimate Junction Behavior</name>
                <t>Penultimate-hop junctions match the DAG SID termination route, apply the signaled
                    Endpoint Behavior, and forward packets toward egress NHOPs programmed by MPTE.</t>
                <t>This model keeps DAG SID termination at penultimate context and avoids requiring
                    additional in-domain DAG-specific SID stacking.</t>
                <t>This model also avoids two terminations at any node in a domain.</t>
            </section>

            <section>
                <name>Egress Behavior</name>
                <t>Egress receives traffic after DAG transport realization and performs service SID
                    handling.</t>
                <t>Service SID semantics follow <xref target="RFC8986" /> SRv6 Network Programming
                    including DT4, DT6, End.X behaviors and <xref target="RFC9800" /> compressed
                    SRv6 Segment List processing.</t>
                <t>Egress does not require per-DAG transport-route programming for this realization
                    model.</t>
            </section>

            <section>
                <name>MTU Considerations</name>
                <t>Implementations <bcp14>SHOULD</bcp14> account for SRv6 encapsulation overhead
                    (outer IPv6 header, SRH, and service SID context) when programming ingress
                    encapsulation and service transport.</t>
                <t>Path-MTU validation <bcp14>SHOULD</bcp14> ensure that realized MPTED forwarding
                    does not introduce unintended fragmentation behavior.</t>
                <t>This realization does not require additional SRv6 encapsulation insertion at
                    transit and penultimate nodes beyond ingress encapsulation behavior.</t>
            </section>
        </section>

        <section>
            <name>Service Mapping Considerations</name>
            <t>Service mapping can be implemented in different ways and is outside the strict scope
                of this document.</t>
            <t>One possible model is to map services onto an SRv6 TE policy <xref target="RFC9256" />
                that triggers intent-based MPTED computation and signaling. Other mapping approaches
                are equally valid.</t>
        </section>

        <section>
            <name>Inter-AS Considerations</name>
            <t>For inter-AS or inter-domain end-to-end MPTET realization, the next-domain transport
                SID can be placed in the SRH to steer traffic across domain boundaries.</t>
            <t>Each domain maintains private DAG Locator/SID spaces. Inter-domain exchange <bcp14>
                SHOULD</bcp14> use explicitly intended interconnect SIDs or transport SIDs without
                leaking private DAG Locator Blocks.</t>
            <t>Full inter-domain forwarding mechanics and state synchronization requirements are
                subject to further clarification and will be detailed in a future revision of this
                document.</t>
        </section>

        <section>
            <name>Interoperability Considerations</name>
            <t>Interoperable behavior requires consistent interpretation of DAG identity/version and
                DAG Locator/SID context by all participating nodes.</t>
            <t>Interoperability of SRv6 forwarding behavior follows <xref target="RFC8754" />, <xref
                    target="RFC8986" />, and <xref target="RFC9800" />.</t>
        </section>

        <section anchor="IANA">
            <name>IANA Considerations</name>
            <t>This document has no IANA actions.</t>
        </section>

        <section anchor="Security">
            <name>Security Considerations</name>
            <t>Security considerations from <xref target="I-D.kompella-teas-mpte" /> apply.</t>
            <t>SRv6 and SRH security considerations in <xref target="RFC8754" />, <xref
                    target="RFC8986" />, and <xref target="RFC8402" /> apply.</t>
            <t>Because DAG Locator/SID spaces are private and signaling-scoped, implementations <bcp14>
                SHOULD</bcp14> enforce strict authorization and policy checks on
                junction-programming messages and <bcp14>SHOULD</bcp14> validate stale-state cleanup
                for safety.</t>
        </section>

        <section anchor="Contributors" numbered="false">
            <name>Contributors</name>
            <t>TBD</t>
        </section>
    </middle>

    <back>
        <references>
            <name>Normative References</name>
            <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml" />
            <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml" />
            <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8402.xml" />
            <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8754.xml" />
            <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8986.xml" />
            <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9800.xml" />
            <xi:include
                href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.kompella-teas-mpte.xml" />
        </references>

        <references>
            <name>Informative References</name>
            <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9256.xml" />
            <xi:include
                href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.beeram-pce-pcep-mpted.xml" />
            <xi:include
                href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.kbr-teas-mptersvp.xml" />
            <xi:include
                href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.zzhang-idr-mpte-signaling.xml" />
            <xi:include
                href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.stone-spring-mpte-sr.xml" />
            <xi:include
                href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.saad-teas-rsvpte-ip-tunnels.xml" />
        </references>

        <section numbered="true">
            <name>Deployment Example (Provisioning, Signaling, and Forwarding)</name>
            <t>This appendix illustrates one deployment realization aligned with the approach in
                this document.</t>

            <section numbered="true">
                <name>Topology</name>
                <artwork type="ascii-art"><![CDATA[
                              |-- T3 -- PHP1 -- Egress1
Ingress1 (MC1) --\            |          |         /
                 +-- T1 -- T2 |          |  |------/
Ingress2 (MC2) --/            |          |  |
                              |-- T4 -- PHP2 ------Egress2
]]></artwork>
                <t>For simplicity, each ingress acts as MC and TO/SS for DAGs sourced from that
                    ingress.</t>
            </section>

            <section numbered="true">
                <name>Example DAG Computation</name>
                <t>For a request sourced at Ingress1 and destined to Egress1, MC1 computes:</t>
                <ul>
                    <li>JCT Ingress1: PHOPs = none, NHOPs = {T1}</li>
                    <li>JCT T1: PHOPs = {Ingress1}, NHOPs = {T2}</li>
                    <li>JCT T2: PHOPs = {T1}, NHOPs = {T3, T4}</li>
                    <li>JCT T3: PHOPs = {T2}, NHOPs = {PHP1}</li>
                    <li>JCT T4: PHOPs = {T2}, NHOPs = {PHP2}</li>
                    <li>JCT PHP1: PHOPs = {T3}, NHOPs = {Egress1}</li>
                    <li>JCT PHP2: PHOPs = {T4}, NHOPs = {Egress1}</li>
                    <li>JCT Egress1: PHOPs = {T3, T4}, NHOPs = none</li>
                </ul>
                <t>MC1 requests allocation and receives, for example:</t>
                <ul>
                    <li>DAG Locator: 2001:db8:1::/48</li>
                    <li>DAG SID: 2001:db8:1:e001::</li>
                    <li>SID structure metadata: BL 32, LNL 16, LFL 16, AL 64</li>
                    <li>Endpoint behavior: END.X with Next-C-SID, PSP &amp; USD</li>
                </ul>
            </section>

            <section numbered="true">
                <name>Example Junction Signaling Intent</name>
                <t>For DAG1 version 1:</t>
                <ul>
                    <li>Ingress1: install encapsulation context with destination address
                        2001:db8:1:e001:: and service SID context in SRH (<xref target="sec-ingress" />
                        ).</li>
                    <li>T1/T2/T3/T4: install DAG Locator route 2001:db8:1::/48 with signaled NHOP
                        sets for forwarding at transit junctions (non-penultimate hops) (<xref
                            target="sec-transit" />).</li>
                    <li>PHP1/PHP2: install terminating route 2001:db8:1:e001::/80 with END.X with
                        Next-C-SID, PSP &amp; USD and NHOP to Egress1 for penultimate behavior (<xref
                            target="sec-penultimate" />). This /80 route performs DAG SID
                        termination with SRH operation if required. The same route with
                        2001:db8:1:e001::/64 prefix is also installed to handle termination with
                        END.X with Next-C-SID, PSP &amp; USD and no SRH operation.</li>
                    <li>Egress1: no per-DAG transport-route programming is required; service SID
                        handling is applied (<xref target="sec-egress" />).</li>
                </ul>

                <section numbered="true">
                    <name>SID Structure Example</name>
                    <t>In this deployment example, compressed SRv6 SID is used with:</t>
                    <artwork type="ascii-art"><![CDATA[
Locator Block Length (LBL): 32
Locator Node Length (LNL): 16
Locator Function Length (LFL): 16
Argument Length: 128 - (LBL + LNL + LFL)
]]></artwork>
                    <t>The same approach works with Traditional SRv6 SIDs. In that case, the route
                        prefixes and prefix-length follow Traditional SID requirements.</t>
                </section>
            </section>

            <section numbered="true">
                <name>Example Route Programming</name>
                <t>Ingress1 tunnel route example:</t>
                <ul>
                    <li>destination: Egress1 loopback prefix</li>
                    <li>tunnel encapsulation DA: 2001:db8:1:e001::</li>
                    <li>outgoing next hop: toward T1</li>
                </ul>
                <t>Transit route example:</t>
                <ul>
                    <li>2001:db8:1::/48 -&gt; NHOP set per DAG signaling (IPv6 forwarding with
                        weighted ECMP at transit junctions (non-penultimate hops))</li>
                </ul>
                <t>Penultimate route examples:</t>
                <ul>
                    <li>2001:db8:1:e001::/80 -&gt; NHOP Egress1, Endpoint Behavior END.X with
                        Next-C-SID, PSP &amp; USD (DAG SID termination at penultimate nodes, SRH
                        operation, forward on DAG programmed NHOPs)</li>
                    <li>2001:db8:1:e001::/64 -&gt; NHOP Egress1, Endpoint Behavior END.X with
                        Next-C-SID, PSP &amp; USD (DAG SID termination at penultimate nodes, forward
                        on DAG programmed NHOPs)</li>
                </ul>
            </section>

            <section numbered="true">
                <name>Packet Walk Example</name>
                <t>Ingress1 transmits:</t>
                <artwork type="ascii-art"><![CDATA[
[SA: Ingress1-lo0, DA: 2001:db8:1:e001::
 Next-Header: 43 TTL=64]
[SRH: SL=1, s[0]:2001:db8:1:9000:e111::]
[payload]
]]></artwork>
                <t>T1/T2/T3/T4 perform IPv6 forwarding with weighted ECMP and TTL decrement without
                    DAG SID termination.</t>
                <t>PHP1/PHP2 match 2001:db8:1:e001::/80, execute termination behavior, update SRH
                    state, and forward:</t>
                <artwork type="ascii-art"><![CDATA[
[SA: Ingress1-lo0, DA: 2001:db8:1:9000:e111::
 Next-Header: Payload TTL=60]
[payload]
]]></artwork>
                <t>Egress1 applies service SID processing (for example DT4 Behavior) and forwards to
                    service table. No additional in-domain DAG-specific SRv6 SID stacking is
                    required.</t>
            </section>

            <section numbered="true">
                <name>Update Behavior Example</name>
                <t>If T2-T4 fails, implementation may temporarily steer only via T3 while DAG1
                    version2 is signaled.</t>
                <t>If a better T2-T4 path appears, DAG1 version3 may include additional T4 adjacency
                    entries; updated junction state is signaled and applied with
                    implementation-specific make-before-break behavior.</t>
            </section>

            <section numbered="true">
                <name>Inter-AS Example</name>
                <t>For end-to-end multi-domain realization, ingress may include a next-domain
                    transport SID in SRH.</t>
                <artwork type="ascii-art"><![CDATA[
[SA: Ingress1-lo0, DA: 2001:db8:1:e001::
 Next-Header: 43 TTL=64]
[SRH: SL=2, s[0]:2001:db8:1:9000:e111::,
      s[1]:<next-domain-transport-sid>]
[payload]
]]></artwork>
                <t>Private DAG Locators are not leaked between domains.</t>
            </section>
        </section>

        <section anchor="Acknowledgments" numbered="false">
            <name>Acknowledgments</name>
            <t>The authors would like to acknowledge Shraddha Hegde, Bharath R and Rajesh
               Shetty for their valuable inputs.</t>
        </section>
    </back>
</rfc>