<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-stone-spring-mpte-sr-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="spring-mpte-sr">Multipath Traffic Engineering for Segment Routing</title>
    <seriesInfo name="Internet-Draft" value="draft-stone-spring-mpte-sr-02"/>
    <author fullname="Andrew Stone">
      <organization>Nokia</organization>
      <address>
        <email>andrew.stone@nokia.com</email>
      </address>
    </author>
    <author fullname="Vishnu Pavan Beeram">
      <organization>Juniper Networks</organization>
      <address>
        <email>vbeeram@juniper.net</email>
      </address>
    </author>
    <author fullname="Nick Buraglio">
      <organization>Energy Sciences Network</organization>
      <address>
        <email>buraglio@forwardingplane.net</email>
      </address>
    </author>
    <author fullname="Shaofu Peng">
      <organization>ZTE Corporation</organization>
      <address>
        <email>peng.shaofu@zte.com.cn</email>
      </address>
    </author>
    <date/>
    <area>Routing</area>
    <workgroup>Source Packet Routing in Networking</workgroup>
    <abstract>
      <?line 52?>

<t>This document describes a mechanism to achieve Multipath Traffic Engineering for Segment Routing based networks.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Source Packet Routing in Networking Working Group mailing list (spring@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/spring/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/astone282/draft-stone-spring-mpte-sr"/>.</t>
    </note>
  </front>
  <middle>
    <?line 56?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="I-D.draft-kompella-teas-mpte"/> introduces a multipath traffic engineering concept that combines the benefits of both Equal-Cost Multipath (ECMP)
forwarding and traffic-engineered paths. This approach uses a Directed Acyclic Graph (DAG) based forwarding mechanism, with the DAG signaled to participating network nodes.
The concept is to move beyond simple ECMP paths by incorporating both ECMP and non-ECMP paths while still adhering to traffic engineering constraints, to provide
added resiliency while also permitting better usage of link bandwidth.</t>
      <t>This document discusses a centralized computation and signaling mechanism for SR-based networks.</t>
      <t>This document does not propose new extensions to the Segment Routing protocol constructs.</t>
      <t>The document assumes the reader is familiar with <xref target="RFC8402"/>, <xref target="RFC9256"/>, and <xref target="I-D.draft-kompella-teas-mpte"/>.</t>
      <section anchor="requirements-language">
        <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>
        <?line -18?>

<t>The BCP 14 keywords used in this document describe the expected behavior of the centralized controller and the Junction nodes
when realizing an MPTE DAG using SR Policy and Binding SIDs. They are not intended to introduce new requirements on the underlying SR Policy,
PCEP, BGP, BGP-LS, or NETCONF protocols themselves.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <ul spacing="normal">
        <li>
          <t>For MPTE terminology such as MPTED, DAG, MC, MID, Junction node and others see <xref target="I-D.draft-kompella-teas-mpte"/>.</t>
        </li>
        <li>
          <t>For SR terminology see <xref target="RFC8402"/> and <xref target="RFC9256"/>.</t>
        </li>
      </ul>
    </section>
    <section anchor="mpte-vs-multiple-sid-lists">
      <name>MPTE vs multiple SID lists</name>
      <t>It's worth recognizing the SR Policy information model supports encoding multiple paths on a tunnel at the ingress, by using multiple SID lists within
a Candidate Path. A Directed Acyclic Graph (DAG) can therefore be expressed as a collection of paths, each programmed as a separate
ingress SID list. However, this ingress only encoding has trade offs such as the number of paths can grow significantly with graph size, weighted flow
hashing is performed only at the ingress (not at each downstream node), and the maximum segment depth (MSD) constrains long paths that deviate from the shortest path.</t>
      <t>Encoding the DAG's forwarding instructions across the participating Junction nodes reduces the number of ingress SID lists and allows
per-node weight tuning, at the cost of additional state in the network. The choice between ingress-only segment lists and the MPTE
DAG based mechanism depends on the traffic engineering requirements, network design, link/path metrics, and the DAG structure.</t>
    </section>
    <section anchor="mpte-concepts-with-segment-routing">
      <name>MPTE concepts with Segment Routing</name>
      <t>This document proposes the below concepts for applying MPTE in an SR environment.</t>
      <section anchor="mpted">
        <name>MPTED</name>
        <t>The MPTED is managed by a centralized controller, such as a Path Computation Element (PCE) acting as the MC. Topology discovery is performed using BGP-LS <xref target="RFC9552"/>, while transport control plane signaling
is achieved through controller-oriented protocols such as Path Computation Element Protocol (PCEP) <xref target="RFC5440"/>, <xref target="RFC8231"/> and BGP/BGP-LS <xref target="I-D.draft-ietf-idr-segment-routing-te-policy"/>, <xref target="I-D.draft-ietf-idr-bgp-ls-sr-policy"/>.
The MC computes, manages, and distributes all forwarding information to the nodes participating in the MPTE DAG, which form the MPTED.</t>
        <t><xref target="I-D.draft-kompella-teas-mpte"/> specifies that a node in the MPTED is identified by its IPv6 loopback address. However, this document allows the use of a 32-bit dotted quad router ID as an
alternative to support IPv4 or dual stack networks. This value represents the headend address of a node participating in the DAG.</t>
        <t>As per <xref target="I-D.draft-kompella-teas-mpte"/>, the controller acting as the MC is responsible for assigning the MID and incrementing the MPTED unique ID version.</t>
      </section>
      <section anchor="junction-segment">
        <name>Junction Segment</name>
        <t>The concept of a Junction Segment is introduced to describe the signaling and forwarding behavior of a Junction node in an SR network:</t>
        <t>A junction segment is:</t>
        <ul spacing="normal">
          <li>
            <t>realized using SR Policy construct with a single Candidate Path, a Binding SID <xref target="RFC9256"/> and one or more segment lists to one or more downstream nodes.</t>
          </li>
          <li>
            <t>similar to a Replication Segment <xref target="RFC9524"/>, but performs forwarding based on load balancing rather than replication.</t>
          </li>
          <li>
            <t>installed on nodes identified as Junction Nodes, as defined in <xref target="I-D.draft-kompella-teas-mpte"/>.</t>
          </li>
          <li>
            <t>combined with one or more Junction segments across a segment routed topology domain to form an MPTE DAG tunnel.</t>
          </li>
        </ul>
        <t>Since a Junction Segment may egress to multiple downstream nodes, the endpoint of the corresponding SR Policy can be set to the null value (0.0.0.0 for IPv4, :: for IPv6).
Therefore, a Junction segment is identified by its &lt;headend, color&gt; attribute.</t>
        <t>The color value is mapped to the &lt;MID, Version&gt; tuple and is tracked by the controller.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that a globally consistent color value be used across all Junction Segments that belong to a single DAG instance or that serve a common DAG intent.</t>
        <t>The MPTE tunnel is used by one or many SR Policies instantiated on one or many ingress nodes.</t>
        <t>A Junction Segment may be used by multiple ingress SR Policies, provided that the subgraph it forwards over is fully shared by all SR Policies using it, including the set of their respective egress nodes.</t>
        <t>The ingress SR Policy is responsible for initiating traffic steering into the DAG and is associated with a color value representing service intent. The junction segment, on the other hand,
is a DAG forwarding construct implemented as an SR Policy with a BSID.</t>
        <t>To support global optimization with make-before-break (MBB) operations across a set of ingress SR Policies, the color value used by Junction Segments <bcp14>SHOULD</bcp14> differ from the color values of the ingress SR Policies
that are consumers of the DAG. This distinction allows ingress SR Policies to independently manage service steering while enabling consistent forwarding behavior across the DAG.</t>
        <t>The controller is responsible for maintaining and tracking the association and semantic meaning of color values across all Junction Segments that participate in the DAG.</t>
        <t>Accordingly, an implementation <bcp14>SHOULD</bcp14> treat ingress SR Policies and Junction Segments as decoupled constructs, each with their own versioning and lifecycle.</t>
        <t>Since SR-based networks support specifying multiple egress interfaces using adjacency-SID sets and Node SIDs,
the Junction Segment <bcp14>MAY</bcp14> include a SID list entry that identifies multiple outgoing interfaces. In addition to egress interfaces,
<xref target="I-D.draft-kompella-teas-mpte"/> describes signaling ingress interfaces. The use of a Junction Segment omits the need for per-interface
ingress signaling as a single Binding Segment attached to an SR Policy is used. All upstream originated traffic sent to a downstream Junction Node
uses the same, single Junction Segment value which is a Binding Segment.</t>
      </section>
    </section>
    <section anchor="operation">
      <name>Operation</name>
      <section anchor="general">
        <name>General</name>
        <t>A path computation request or tunnel delegation notification is sent to the controller, specifying one or more ingress and egress nodes, along with constraints or service level agreement policy information.
This request may originate from an ingress router in the network or be provisioned directly via an API to the controller.
This tunnel computation request or delegation pertains to an instance of an MPTE Tunnel achieved with the ingress SR Policy.</t>
        <t>The controller computes the DAG for ingress and all egress endpoints to determine all Junction nodes in the DAG to be used for the tunnel.</t>
        <t>The controller signals the Junction Segment(s) to all downstream nodes, starting with the penultimate egress hop node(s) and
working upwards toward the ingress nodes. The controller may perform deployments in parallel provided there is no interdependency of values between junction segments,
and the controller does not update the ingress until all deployments are deemed successful.</t>
        <t>If a Junction Segment cannot be deployed to a node, the controller <bcp14>SHOULD</bcp14> re-attempt the deployment up to a configurably defined maximum number of retries.</t>
        <t>Depending on local policy and implementation constraints, the controller <bcp14>MAY</bcp14> execute a full rollback of the configuration, or it <bcp14>MAY</bcp14> allow the
partial deployment to proceed, provided that the TE constraints continue to be satisfied.</t>
        <t>Junction Segments are deployed as a unicast SR Policy with a single Candidate Path using protocols such as PCEP, BGP, or NETCONF.</t>
        <t>A BSID <bcp14>MUST</bcp14> be explicitly requested or signaled to the Junction node for assignment. If the controller opts for local node assigned value, it <bcp14>MUST</bcp14> wait to signal
upstream Junction nodes about their Junction segments in their outgoing SID lists. The BSID value <bcp14>MAY</bcp14> be a constant value globally, if assigned by PCE/Controller,
or may be a different value on each Junction Node whether it’s assigned by the controller or the local Junction Node itself.</t>
        <t>Each SR Policy contains one or more SID lists. With the exception of the penultimate node, these SID lists
include at least two segment identifiers: one SID for forwarding to the downstream Junction node and one for the Junction Segment value (BSID) of the downstream node.
For directly connected neighbors, this may be the adjacency or node SID for the neighbor. For Junction nodes that are not directly connected,
additional SIDs <bcp14>MAY</bcp14> be used to steer the packet along an ECMP or non-ECMP path to the downstream Junction node.</t>
        <t>Appendix A provides an example topology and resulting Junction segments.</t>
      </section>
      <section anchor="tunnel-with-multiple-ingressegress">
        <name>Tunnel with multiple ingress/egress</name>
        <t><xref target="I-D.draft-kompella-teas-mpte"/> specifies that an MPTE Tunnel could have multiple ingress and/or multiple egress nodes.
For controller-initiated tunnels, the intended ingress and egress node(s) can be provided to the controller based on implementation specific methods. These may be signaled to the network as
multiple tunnels to support multi-ingress scenarios. Each tunnel can use a null Endpoint value to support multi-egress.</t>
        <t>MPTE SR Policies that are originated or defined by network devices are typically limited to a single ingress and a single egress endpoint unless protocols such as PCEP or NETCONF are extended
to encode additional intended destination node(s) for controller-based path computation.</t>
        <t>As mentioned in Section 4.2, the DAG tunnel may be re-used by multiple ingress SR Policies. This mechanism is used to support achieving multiple ingress nodes originated from the network,
by way of the controller binding and attaching the ingress SR Policies to a pre-existing DAG sharing the same intent and endpoints.</t>
      </section>
      <section anchor="load-balancing">
        <name>Load-balancing</name>
        <t>When a packet with the BSID assigned to the Junction Segment is received at its Junction Node,
the node performs weighted non-equal cost flow-based forwarding across all egress SID lists associated with the Junction Segment.</t>
        <t>As per <xref target="RFC9256"/> Section 2.11, The fraction of the flows associated with a given segment list is w/Sw, where w is the weight of the segment
list and Sw is the sum of the weights of the segment lists. To exclude forwarding via a specific egress interface
while preserving the forwarding structure, a weight value of zero is assigned to the corresponding segment list.</t>
      </section>
      <section anchor="protection">
        <name>Protection</name>
        <t>As described in <xref target="I-D.draft-kompella-teas-mpte"/>, as there are multiple egress interfaces (SID Lists), the loss of one interface link does not result in traffic drops,
as long as one egress interface (SID List) remains although congestion may occur. For example, in the topology shown in Appendix A, Node C can
tolerate the loss of up to 3 egress links and traffic will still forward (potentially with congestion).</t>
        <t>If a Junction Node experiences a failure of all egress links (including any protection for those links), it will initially
blackhole traffic until upstream nodes are notified by the controller to remove the failed Junction node from the DAG.</t>
        <t>To reduce the risk of outages caused by single link failure, the controller <bcp14>MAY</bcp14> optimize DAG deployment by assigning
Junction Segments only to nodes with more than one egress segment list. In other words, if a node in the DAG has only one egress interface,
it functions solely as a transit node for an upstream Junction Segment and does not receive a Junction Segment itself.
For example, in the topology shown in Appendix A, Node E is omitted from receiving a Junction Segment as it only has 1 egress link.</t>
        <t>Link protection from an upstream Junction node to its downstream Junction nodes can be achieved using existing Topology Independent Loop-Free Alternative (TI-LFA) <xref target="RFC9855"/> mechanisms,
applied per egress SID List on each Junction Segment. Since the top SID(s) in each SID List identify the path to the
next downstream Junction node, TI-LFA is applicable. Effectively, TI-LFA is used to protect traffic between Junction Segments along a path
within the DAG and is not intended to protect traffic directed toward the DAG’s egress nodes or the entire DAG.</t>
        <t>Local computation for node protection on an upstream Junction node is not feasible, because it lacks visibility into the
DAG beyond the immediate downstream Junction node as it only knows the next Junction Segment.
A controller <bcp14>MAY</bcp14> be used to precompute backup SR Paths and signal these backup SID Lists to the upstream Junction segments.</t>
      </section>
      <section anchor="hierarchy">
        <name>Hierarchy</name>
        <t>The use of Junction Segments to achieve a DAG can be used in hierarchical organization and sharing of DAGs between end-to-end tunnels.</t>
        <t>For instance, in a multi-area or multi-instance topology, one or more shared DAGs may be created per area, connecting the border ingress node(s) and egress node(s).
These DAGs can then be stitched together for use in an end-to-end SR tunnel.</t>
        <t>Figure 1 is an example of two independent SR Policy Tunnels from Headend A and Headend B terminating on Egress X.
An instance of a DAG with MID 100 can be configured between area border routers (ABR)
ABR-1 and the Egress X node. ABR-1 Junction Segment which ingresses the DAG has a Binding Segment attached, for
example BSID-100. Therefore, the SID list on Headend A and Headend B SID lists would contain
the SR Path (ex: Node-SID-ABR-1) to reach ABR 1 followed by BSID-100. The instruction set from each Headend to ABR 1
could also be another instance of a DAG, either for independent use or shared.</t>
        <artwork><![CDATA[
          -------------------------------------------------------------
          |                             |                             |
          |                             |                             |
     +-------+                          |             ---\            |
     |       |--\     Path 1            |         ---/  | ---\        |
     |Headend|   ----\                  |     ---/   -----\   --\     |
     |   A   |         ----\         +-----+-/   ---/      ---\  --+------+
     +-------+              ----\    |     |  --/   -------|   --  |      |
          |                      --- | ABR |  -------------------  |Egress|
          |                      --- |  1  |        |DAG-100       |  X   |
     +-------+              ----/    +-----+ --\    |        ----- +------+
     |       |        -----/            |  -\   ----\-------/     --  |
     |Headend|   ----/                  |    --\     ---       --/    |
     |   B   |--/     Path 2            |       -\   |      --/       |
     +-------+                          |         --\    --/          |
          |                             |            ---/             |
          |                             |                             |
          -------------------------------------------------------------
                   Domain/Area 1                  Domain/Area 2

                             Figure 1 : Reusable DAG 100
]]></artwork>
      </section>
      <section anchor="directly-connected-junction-nodes">
        <name>Directly connected Junction nodes</name>
        <t>As described in the Operational section, all transit nodes in a DAG <bcp14>MAY</bcp14> be signaled with a Junction Segment.
Alternatively depending on the topological graph and TE requirements, two Junction segments may be interconnected via an
SR Path, with a SID list, where the SR Path itself may
correspond to an ECMP or TE Path.</t>
      </section>
    </section>
    <section anchor="optimization">
      <name>Optimization</name>
      <section anchor="local-optimization">
        <name>Local optimization</name>
        <t>Local optimization refers to updates applied to a single Junction node that can be performed without requiring
coordinated updates across multiple nodes in the DAG. These operations are considered safe when they do not
introduce forwarding loops or cause reachability interruptions within the DAG.</t>
        <t>Examples of local optimizations include:</t>
        <ul spacing="normal">
          <li>
            <t>Manipulating the weight distribution of the outgoing SID lists</t>
          </li>
          <li>
            <t>Replacing an existing SID list with a more optimal one (e.g. using a new adjacency SID or updated SR path to the next Junction node).</t>
          </li>
          <li>
            <t>Adding a new SID list toward an egress node that is not itself a Junction node.</t>
          </li>
          <li>
            <t>Removing a SID list, provided that at least one other outgoing SID list remains active.</t>
          </li>
          <li>
            <t>Adding a new SID list to a Junction node that connects to a new downstream sub-graph which is not yet connected to the DAG structure.</t>
          </li>
        </ul>
        <t>While these operations are scoped to a single node, their correct application may still require awareness of the surrounding DAG structure
to avoid introducing loops or reachability issues. For instance, the addition of a new SID list may require confirmation that the new sub-graph
is not already part of the DAG, or that it connects loop free.</t>
        <t>Local optimizations may also be chained in sequence across multiple nodes. When each step maintains loop free and reachable properties,
such a chain of updates is still considered local in nature.</t>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>Cleaning up an upstream disconnected sub-graph following the removal of an upstream SID list (BSID is no longer used)</t>
          </li>
        </ul>
        <t>It is important to note that local optimization differs from global optimization in that it does not require versioning or re-signaling of the entire DAG structure.</t>
        <t>Since a Junction Segment is realized via an SR Policy, the controller leverages existing protocol mechanisms to update a Junction segment forwarding
instructions, as the Junction Segment itself is represented as a candidate path within the SR Policy. When updating an existing candidate path,
the binding SID <bcp14>MUST NOT</bcp14> change, as doing so would cause traffic using that binding SID to drop until upstream consumers are updated.
Such a change should instead be treated as a global optimization, not a local one.</t>
        <t>Multiple candidate paths could be used to support more comprehensive local optimizations. However, caution is required in how the MPTED version
is encoded and how version increments are signaled, since candidate paths are signaled within the context of the SR Policy.</t>
        <t>If the same color value is reused and a new candidate path is deployed, the new candidate path will not be installed in the forwarding plane
until the existing one is removed, as only one candidate path may be active per SR Policy. This operation may not be hitless, depending on hardware implementation.</t>
        <t>Alternatively, if a different color value is used, the new candidate path may be allowed to go active. However, it will still fail to do so since it should be using
the same binding SID as the existing candidate path. This results in a collision, rendering the new path ineligible, and may also violate
protocol constraints that prohibit such configurations.</t>
        <t>Therefore, it is <bcp14>RECOMMENDED</bcp14> that local optimization be performed by updating the SID list of the existing candidate path, rather than introducing new candidate paths.</t>
        <t>Appendix B provides examples of local optimization.</t>
      </section>
      <section anchor="global-optimization">
        <name>Global optimization</name>
        <t>Global optimization of a DAG requires coordinated updates across all participating Junction Nodes.
This process follows a make-before-break model, where a new version of the DAG is deployed alongside the existing one.
The ingress SR Policy (or policies) is the last element to be updated.</t>
        <t>Since the Color field of an SR Policy indicates DAG membership, and is managed by the controller, global optimization
with make-before-break considerations necessitates deploying new Junction segments. This, in turn, requires the instantiation
of new SR Policies with unique Color values. These new SR Policies are deployed to all Junction Nodes participating in the
updated DAG instance and <bcp14>MUST</bcp14> be associated with distinct Binding SID values from those of the existing instance.</t>
        <t>To minimize version churn and both color and label consumption, it is <bcp14>RECOMMENDED</bcp14> that controllers limit the number of
concurrently deployed DAG instances for the same tunnel. Under normal conditions, only a single active
DAG version should exist. During transitions, at most two versions (the current and the new one) should be present. Color and label values may be reused once globally released.</t>
        <t>The Binding SID associated with a DAG instance <bcp14>MUST</bcp14> remain constant during local optimizations, but <bcp14>MUST</bcp14> change during global optimizations to avoid the risk of routing loops. Therefore, in the example
above, if a Junction Node is participating in DAG #1, version #1 continues to use one binding SID value and version #2 is using a distinct binding SID value on each Junction node.</t>
        <t>Once all Junction segments are deployed to all Junction nodes, the ingress node is updated with new SID lists referencing the Binding SIDs of the new Junction segments downstream.</t>
        <t>The Color field on ingress nodes is critical for traffic steering and therefore <bcp14>MUST</bcp14> remain constant during global optimizations. In contrast, Color values used on Junction Nodes
<bcp14>MAY</bcp14> be reused or encoded to reflect DAG membership or instance mappings. Similarly, the binding SID on the ingress SR Policy also remains constant.</t>
        <t>The controller tracks the Color values and their corresponding usage for DAG ID and version. For example:</t>
        <ul spacing="normal">
          <li>
            <t>Color value 500 – DAG #1 – Version #1</t>
          </li>
          <li>
            <t>Color value 501 – DAG #2 – Version #1</t>
          </li>
          <li>
            <t>Color value 502 – DAG #1 – Version #2</t>
          </li>
        </ul>
        <t>When performing global changes, controllers <bcp14>SHOULD</bcp14> ensure that all Junction Nodes are modified in a coordinated and consistent manner before activating the new DAG on the ingress.
If the update process fails partially, the controller <bcp14>SHOULD</bcp14> roll back the new deployment and retain the existing
stable DAG version and its Junction Segments to avoid inconsistencies in forwarding behavior.</t>
        <t>Appendix C provides an example of global optimization.</t>
      </section>
    </section>
    <section anchor="manageability-considerations">
      <name>Manageability Considerations</name>
      <section anchor="control-of-function-through-configuration-and-policy">
        <name>Control of Function through Configuration and Policy</name>
        <t>This document describes using the existing SR Policy construct with a color value representing the DAG MID and version.
Since SR Policy color value is originally intended for ingress traffic
steering on matched routers, a deployment <bcp14>MUST</bcp14> allocate a color range which will be used for MPTE tunnels.</t>
      </section>
      <section anchor="information-and-data-models-eg-mib-modules">
        <name>Information and Data Models, e.g., MIB modules</name>
        <t>TODO</t>
      </section>
      <section anchor="liveness-detection-and-monitoring">
        <name>Liveness Detection and Monitoring</name>
        <t>Liveness detection for an MPTE SR deployment has two scopes: the underlying IP links and the DAG tunnel itself.</t>
        <section anchor="topology">
          <name>Topology</name>
          <t>Seamless BFD (S-BFD) <xref target="RFC7880"/> is <bcp14>RECOMMENDED</bcp14> on each IP link to quickly detect link failures in the underlying topology. When a link
goes down, any tunnel S-BFD session that traverses the link will also fail (see the next section). The controller tracks IGP topology changes
and takes corrective action when necessary.</t>
        </section>
        <section anchor="dag-tunnel">
          <name>DAG Tunnel</name>
          <t>Liveness detection of the DAG tunnel must verify end-to-end forwarding across all Junction Nodes and the weighted forwarding performed
by each Junction Segment.</t>
          <t>A single S-BFD session from the ingress headend to the DAG endpoint(s) follows one hashed path through the DAG. It cannot verify that every egress SID list on every Junction Node is functional.</t>
          <t>Therefore, it is <bcp14>RECOMMENDED</bcp14> that each egress SID list of each Junction Segment run its own S-BFD session to the next downstream node.
On session failure:</t>
          <ul spacing="normal">
            <li>
              <t>The affected SID list is marked inactive and removed from the weighted ECMP set.</t>
            </li>
            <li>
              <t>If a Junction Segment has no active egress SID lists remaining, the Junction Segment becomes inactive, which in turn fails any
upstream S-BFD sessions that use it.</t>
            </li>
          </ul>
          <t>This per-Junction, per-SID-list approach monitors every forwarding segment of the DAG independently of hashing.</t>
          <t>As a result, an egress node may receive many S-BFD packets, one per SID list, per Junction Node, per DAG.</t>
        </section>
      </section>
      <section anchor="verifying-correct-operation">
        <name>Verifying Correct Operation</name>
        <t>This section discusses OAM for SR-MPLS (<xref target="RFC8287"/>). Applicability to SRv6 (<xref target="RFC9259"/>) is to be covered in a future revision.</t>
        <t>As with S-BFD in Section 10.3.2, a single OAM probe from the ingress follows only one hashed path through the DAG and does not exercise every egress SID list on every Junction Node.</t>
        <t>A controller can collect ping and traceroute results on a per-Junction, per-SID-list basis and aggregate them into a holistic view of the DAG. Each probe targets the path encoded in that SID list, terminating at the next downstream Junction Node or DAG egress node, so that every forwarding segment is verified independently of upstream hashing. The controller may request results on-demand or receive them periodically. The frequency in which to run OAM is deployment specific.</t>
        <t>Because these tests run independently and not necessarily at the same instant, the aggregated view may contain timing skew between individual measurements. Multiple samples per test are <bcp14>RECOMMENDED</bcp14>.</t>
      </section>
      <section anchor="requirements-on-other-protocols-and-functional-components">
        <name>Requirements on Other Protocols and Functional Components</name>
        <t>There are currently no new requirements on other protocols or functional components.</t>
      </section>
      <section anchor="impact-on-network-operation">
        <name>Impact on Network Operation</name>
        <t>TODO</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>None at this time</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.draft-kompella-teas-mpte">
          <front>
            <title>Multipath Traffic Engineering</title>
            <author fullname="Kireeti Kompella" initials="K." surname="Kompella">
              <organization>HPE</organization>
            </author>
            <author fullname="Luay Jalil" initials="L." surname="Jalil">
              <organization>Verizon</organization>
            </author>
            <author fullname="Mazen Khaddam" initials="M." surname="Khaddam">
              <organization>Cox Communications</organization>
            </author>
            <author fullname="Andy Smith" initials="A." surname="Smith">
              <organization>Arrcus, Inc.</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   Shortest path routing offers an easy-to-understand, easy-to-implement
   method of establishing loop-free connectivity in a network, but
   offers few other features.  Equal-cost multipath (ECMP), a simple
   extension, uses multiple equal-cost paths between any two points in a
   network: at any node in a path (really, Directed Acyclic Graph),
   traffic can be (typically equally) load-balanced among the next hops.
   ECMP is easy to add on to shortest path routing, and offers a few
   more features, such as resiliency and load distribution, but the
   feature set is still quite limited.

   Traffic Engineering (TE), on the other hand, offers a very rich
   toolkit for managing traffic flows and the paths they take in a
   network.  A TE network can have link attributes such as bandwidth,
   colors, risk groups and alternate metrics.  A TE path can use these
   attributes to include or avoid certain links, increase path
   diversity, manage bandwidth reservations, improve service experience,
   and offer protection paths.  However, TE typically doesn't offer
   multipathing as the tunnels used to implement TE usually take a
   single path.

   This memo proposes multipath traffic-engineering (MPTE), combining
   the best of ECMP and TE.  The multipathing proposed here need not be
   strictly equal-cost, nor the load balancing equally weighted to each
   next hop.  Moreover, the desired destination may be reachable via
   multiple egresses.  The proposal includes a protocol for signaling
   MPTE paths using various types of tunnels, some of which are better
   suited to multipathing.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kompella-teas-mpte-02"/>
        </reference>
        <reference anchor="RFC8402">
          <front>
            <title>Segment Routing Architecture</title>
            <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
            <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
            <author fullname="L. Ginsberg" initials="L." surname="Ginsberg"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
            <author fullname="R. Shakir" initials="R." surname="Shakir"/>
            <date month="July" year="2018"/>
            <abstract>
              <t>Segment Routing (SR) leverages the source routing paradigm. A node steers a packet through an ordered list of instructions, called "segments". A segment can represent any instruction, topological or service based. A segment can have a semantic local to an SR node or global within an SR domain. SR provides a mechanism that allows a flow to be restricted to a specific topological path, while maintaining per-flow state only at the ingress node(s) to the SR domain.</t>
              <t>SR can be directly applied to the MPLS architecture with no change to the forwarding plane. A segment is encoded as an MPLS label. An ordered list of segments is encoded as a stack of labels. The segment to process is on the top of the stack. Upon completion of a segment, the related label is popped from the stack.</t>
              <t>SR can be applied to the IPv6 architecture, with a new type of routing header. A segment is encoded as an IPv6 address. An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing header. The active segment is indicated by the Destination Address (DA) of the packet. The next active segment is indicated by a pointer in the new routing header.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8402"/>
          <seriesInfo name="DOI" value="10.17487/RFC8402"/>
        </reference>
        <reference anchor="RFC9256">
          <front>
            <title>Segment Routing Policy Architecture</title>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="K. Talaulikar" initials="K." role="editor" surname="Talaulikar"/>
            <author fullname="D. Voyer" initials="D." surname="Voyer"/>
            <author fullname="A. Bogdanov" initials="A." surname="Bogdanov"/>
            <author fullname="P. Mattes" initials="P." surname="Mattes"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>Segment Routing (SR) allows a node to steer a packet flow along any path. Intermediate per-path states are eliminated thanks to source routing. SR Policy is an ordered list of segments (i.e., instructions) that represent a source-routed policy. Packet flows are steered into an SR Policy on a node where it is instantiated called a headend node. The packets steered into an SR Policy carry an ordered list of segments associated with that SR Policy.</t>
              <t>This document updates RFC 8402 as it details the concepts of SR Policy and steering into an SR Policy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9256"/>
          <seriesInfo name="DOI" value="10.17487/RFC9256"/>
        </reference>
        <reference anchor="RFC5440">
          <front>
            <title>Path Computation Element (PCE) Communication Protocol (PCEP)</title>
            <author fullname="JP. Vasseur" initials="JP." role="editor" surname="Vasseur"/>
            <author fullname="JL. Le Roux" initials="JL." role="editor" surname="Le Roux"/>
            <date month="March" year="2009"/>
            <abstract>
              <t>This document specifies the Path Computation Element (PCE) Communication Protocol (PCEP) for communications between a Path Computation Client (PCC) and a PCE, or between two PCEs. Such interactions include path computation requests and path computation replies as well as notifications of specific states related to the use of a PCE in the context of Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) Traffic Engineering. PCEP is designed to be flexible and extensible so as to easily allow for the addition of further messages and objects, should further requirements be expressed in the future. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5440"/>
          <seriesInfo name="DOI" value="10.17487/RFC5440"/>
        </reference>
        <reference anchor="RFC8231">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE</title>
            <author fullname="E. Crabbe" initials="E." surname="Crabbe"/>
            <author fullname="I. Minei" initials="I." surname="Minei"/>
            <author fullname="J. Medved" initials="J." surname="Medved"/>
            <author fullname="R. Varga" initials="R." surname="Varga"/>
            <date month="September" year="2017"/>
            <abstract>
              <t>The Path Computation Element Communication Protocol (PCEP) provides mechanisms for Path Computation Elements (PCEs) to perform path computations in response to Path Computation Client (PCC) requests.</t>
              <t>Although PCEP explicitly makes no assumptions regarding the information available to the PCE, it also makes no provisions for PCE control of timing and sequence of path computations within and across PCEP sessions. This document describes a set of extensions to PCEP to enable stateful control of MPLS-TE and GMPLS Label Switched Paths (LSPs) via PCEP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8231"/>
          <seriesInfo name="DOI" value="10.17487/RFC8231"/>
        </reference>
        <reference anchor="RFC9552">
          <front>
            <title>Distribution of Link-State and Traffic Engineering Information Using BGP</title>
            <author fullname="K. Talaulikar" initials="K." role="editor" surname="Talaulikar"/>
            <date month="December" year="2023"/>
            <abstract>
              <t>In many environments, a component external to a network is called upon to perform computations based on the network topology and the current state of the connections within the network, including Traffic Engineering (TE) information. This is information typically distributed by IGP routing protocols within the network.</t>
              <t>This document describes a mechanism by which link-state and TE information can be collected from networks and shared with external components using the BGP routing protocol. This is achieved using a BGP Network Layer Reachability Information (NLRI) encoding format. The mechanism applies to physical and virtual (e.g., tunnel) IGP links. The mechanism described is subject to policy control.</t>
              <t>Applications of this technique include Application-Layer Traffic Optimization (ALTO) servers and Path Computation Elements (PCEs).</t>
              <t>This document obsoletes RFC 7752 by completely replacing that document. It makes some small changes and clarifications to the previous specification. This document also obsoletes RFC 9029 by incorporating the updates that it made to RFC 7752.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9552"/>
          <seriesInfo name="DOI" value="10.17487/RFC9552"/>
        </reference>
        <reference anchor="RFC7880">
          <front>
            <title>Seamless Bidirectional Forwarding Detection (S-BFD)</title>
            <author fullname="C. Pignataro" initials="C." surname="Pignataro"/>
            <author fullname="D. Ward" initials="D." surname="Ward"/>
            <author fullname="N. Akiya" initials="N." surname="Akiya"/>
            <author fullname="M. Bhatia" initials="M." surname="Bhatia"/>
            <author fullname="S. Pallagatti" initials="S." surname="Pallagatti"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document defines Seamless Bidirectional Forwarding Detection (S-BFD), a simplified mechanism for using BFD with a large proportion of negotiation aspects eliminated, thus providing benefits such as quick provisioning, as well as improved control and flexibility for network nodes initiating path monitoring.</t>
              <t>This document updates RFC 5880.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7880"/>
          <seriesInfo name="DOI" value="10.17487/RFC7880"/>
        </reference>
        <reference anchor="RFC8287">
          <front>
            <title>Label Switched Path (LSP) Ping/Traceroute for Segment Routing (SR) IGP-Prefix and IGP-Adjacency Segment Identifiers (SIDs) with MPLS Data Planes</title>
            <author fullname="N. Kumar" initials="N." role="editor" surname="Kumar"/>
            <author fullname="C. Pignataro" initials="C." role="editor" surname="Pignataro"/>
            <author fullname="G. Swallow" initials="G." surname="Swallow"/>
            <author fullname="N. Akiya" initials="N." surname="Akiya"/>
            <author fullname="S. Kini" initials="S." surname="Kini"/>
            <author fullname="M. Chen" initials="M." surname="Chen"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>A Segment Routing (SR) architecture leverages source routing and tunneling paradigms and can be directly applied to the use of a Multiprotocol Label Switching (MPLS) data plane. A node steers a packet through a controlled set of instructions called "segments" by prepending the packet with an SR header.</t>
              <t>The segment assignment and forwarding semantic nature of SR raises additional considerations for connectivity verification and fault isolation for a Label Switched Path (LSP) within an SR architecture. This document illustrates the problem and defines extensions to perform LSP Ping and Traceroute for Segment Routing IGP-Prefix and IGP-Adjacency Segment Identifiers (SIDs) with an MPLS data plane.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8287"/>
          <seriesInfo name="DOI" value="10.17487/RFC8287"/>
        </reference>
        <reference anchor="RFC9259">
          <front>
            <title>Operations, Administration, and Maintenance (OAM) in Segment Routing over IPv6 (SRv6)</title>
            <author fullname="Z. Ali" initials="Z." surname="Ali"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
            <author fullname="D. Voyer" initials="D." surname="Voyer"/>
            <author fullname="M. Chen" initials="M." surname="Chen"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This document describes how the existing IPv6 mechanisms for ping and traceroute can be used in a Segment Routing over IPv6 (SRv6) network. The document also specifies the OAM flag (O-flag) in the Segment Routing Header (SRH) for performing controllable and predictable flow sampling from segment endpoints. In addition, the document describes how a centralized monitoring system performs a path continuity check between any nodes within an SRv6 domain.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9259"/>
          <seriesInfo name="DOI" value="10.17487/RFC9259"/>
        </reference>
        <reference anchor="RFC9855">
          <front>
            <title>Topology Independent Fast Reroute Using Segment Routing</title>
            <author fullname="A. Bashandy" initials="A." surname="Bashandy"/>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="P. Francois" initials="P." surname="Francois"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <author fullname="D. Voyer" initials="D." surname="Voyer"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>This document presents Topology Independent Loop-Free Alternate (TI-LFA) Fast Reroute (FRR), which is aimed at providing protection of node and Adjacency segments within the Segment Routing (SR) framework. This FRR behavior builds on proven IP FRR concepts being LFAs, Remote LFAs (RLFAs), and Directed Loop-Free Alternates (DLFAs). It extends these concepts to provide guaranteed coverage in any two-connected networks using a link-state IGP. An important aspect of TI-LFA is the FRR path selection approach establishing protection over the expected post-convergence paths from the Point of Local Repair (PLR), reducing the operational need to control the tie-breaks among various FRR options.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9855"/>
          <seriesInfo name="DOI" value="10.17487/RFC9855"/>
        </reference>
        <reference anchor="I-D.draft-ietf-idr-segment-routing-te-policy">
          <front>
            <title>Advertising Segment Routing Policies in BGP</title>
            <author fullname="Stefano Previdi" initials="S." surname="Previdi">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Clarence Filsfils" initials="C." surname="Filsfils">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Ketan Talaulikar" initials="K." surname="Talaulikar">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Paul Mattes" initials="P." surname="Mattes">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Dhanendra Jain" initials="D." surname="Jain">
              <organization>Google</organization>
            </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   This document introduces a BGP SAFI with two NLRIs to advertise a
   candidate path of a Segment Routing (SR) Policy.  An SR Policy is an
   ordered list of segments (i.e., instructions) that represent a
   source-routed policy.  An SR Policy consists of one or more candidate
   paths, each consisting of one or more segment lists.  A headend may
   be provisioned with candidate paths for an SR Policy via several
   different mechanisms, e.g., CLI, NETCONF, PCEP, or BGP.  This
   document specifies how BGP may be used to distribute SR Policy
   candidate paths.  It defines sub-TLVs for the Tunnel Encapsulation
   Attribute for signaling information about these candidate paths.

   This documents updates RFC9012 with extensions to the Color Extended
   Community to support additional steering modes over SR Policy.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-segment-routing-te-policy-26"/>
        </reference>
        <reference anchor="I-D.draft-ietf-idr-bgp-ls-sr-policy">
          <front>
            <title>Advertisement of Segment Routing Policies using BGP Link-State</title>
            <author fullname="Stefano Previdi" initials="S." surname="Previdi">
              <organization>Individual</organization>
            </author>
            <author fullname="Ketan Talaulikar" initials="K." surname="Talaulikar">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Jie Dong" initials="J." surname="Dong">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Hannes Gredler" initials="H." surname="Gredler">
              <organization>RtBrick Inc.</organization>
            </author>
            <author fullname="Jeff Tantsura" initials="J." surname="Tantsura">
              <organization>Nvidia</organization>
            </author>
            <date day="6" month="March" year="2025"/>
            <abstract>
              <t>   This document describes a mechanism to collect the Segment Routing
   Policy information that is locally available in a node and advertise
   it into BGP Link-State (BGP-LS) updates.  Such information can be
   used by external components for path computation, re-optimization,
   service placement, network visualization, etc.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-bgp-ls-sr-policy-17"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9524">
          <front>
            <title>Segment Routing Replication for Multipoint Service Delivery</title>
            <author fullname="D. Voyer" initials="D." role="editor" surname="Voyer"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="R. Parekh" initials="R." surname="Parekh"/>
            <author fullname="H. Bidgoli" initials="H." surname="Bidgoli"/>
            <author fullname="Z. Zhang" initials="Z." surname="Zhang"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes the Segment Routing Replication segment for multipoint service delivery. A Replication segment allows a packet to be replicated from a replication node to downstream nodes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9524"/>
          <seriesInfo name="DOI" value="10.17487/RFC9524"/>
        </reference>
      </references>
    </references>
    <?line 442?>

<section anchor="dag-example">
      <name>DAG Example</name>
      <artwork><![CDATA[
                  +------+       +------+
                  |      |  10   |      |
              --- |  B   | ----- |  E   |--
             /    |      |       |      |  \
         10 /     +------+       +------+   \ 10
           /         | 10                    \
          /          |                        \
    +------+      +------+       +------+     +------+
    |      |      |      |       |      |     |      |
    |  A   | -----|  C   | ----- |  F   |---- |  H   |
    |      |  10  |      |   5   |      | 10  |      |
    +------+      +------+\     /+------+     +------+
          \         | |5    \ /    5|(Pruned)  /
           \        | |     / \     |         /
         20 \    +------+ /    \+------+     / 10
             \   |      |   5   |      |    /
              ---|  D   | ----- |  G   |---
                 |      |       |      |
                 +------+       +------+

          Figure 2 : Example Topology to apply DAG

]]></artwork>
      <t>Figure 2 above presents a sample topology for one ingress and one egress MPTE Tunnel established as an SR Policy. The MPTE tunnel is from A to H.
The figure presents the bi-directional link weights for an arbitrary metric (IGP, TE, Delay etc).</t>
      <t>Note there is a mesh between C, D, F and G of weight 5 per link. Pruned represents an excluded link due to TE constraints (for example, such as insufficient bandwidth).
In the below, the terminology {U,V} represents a unidirectional link between U and V. The terminology Adj-SID-XY represents an adjacency SID from X to Y. Node-SID-X represents the node SID path to X.</t>
      <t>An MPTE DAG is computed to contain nodes B,C,D,E,F,G with the links {G,F} / {F,G} pruned.</t>
      <t>The below Junction Segments are deployed to the network realized with an SR Policy with a single Candidate Path containing multiple segment lists. Note the following:</t>
      <ul spacing="normal">
        <li>
          <t>When the DAG is computed, loops cannot exist. Therefore, in the above topology the links in direction {C,B} and {C,D} and {C,F} and {C,G} are chosen in the DAG.</t>
        </li>
        <li>
          <t>The path along {B,E,H} can be represented by a single Node SID. A Junction on node E is not required. Junction Segment B may also be omitted (as described in Section 5.3) but is utilized here for example purposes.</t>
        </li>
        <li>
          <t>Junction F is described below, but an optimization could be performed to exclude Junction F as it only has one egress link (see Section 5.3).</t>
        </li>
        <li>
          <t>In practice the Binding Segments <bcp14>MAY</bcp14> all be the same value. This example describes different BSID values for readability.</t>
        </li>
        <li>
          <t>Weights of each egress SID list is also currently omitted.</t>
        </li>
        <li>
          <t>The color on the ingress SR Policy still provides intent steering for ingress traffic, therefore <bcp14>SHOULD</bcp14> be unique to the color value of the Junction segments
comprising the DAG to permit global make-before-break behavior.</t>
        </li>
      </ul>
      <artwork><![CDATA[
Junction Segment B:
  Color: 100
  BSID: BSID-B
  SID List 1: [Node-SID-H]

Junction Segment F:
  Color: 100
  BSID: BSID-F
  SID List 1: [Adj-SID-FH]

Junction Segment G:
  Color: 100
  BSID: BSID-G
  SID List 1: [Adj-SID-GH]

Junction Segment C:
  Color: 100
  BSID: BSID-C
  SID List 1: [Adj-SID-CB, BSID-B]
  SID List 2: [Adj-SID-CF, BSID-F]
  SID List 3: [Adj-SID-CG, BSID-G]
  SID List 4: [Node-SID-D, BSID-D]

Junction Segment D:
  Color: 100
  BSID: BSID-D
  SID List 1: [Adj-SID-DF, BSID-F]
  SID List 2: [Adj-SID-DG, BSID-G]

Then lastly, at ingress the SR Policy transport tunnel is configured with the following:

Ingress SR Policy (Using Junction Segments):
  Color: 50
  Candidate Path 1:
    SID List 1: [Adj-SID-AB, BSID-B]
    SID List 2: [Adj-SID-AC, BSID-C]
    SID List 3: [Adj-SID-AD, BSID-D]

]]></artwork>
      <t>In comparison, if the above DAG was encoded at ingress then the following individual segment lists could be used to represent the above DAG.
Note, some of the below could be compressed with a Node SID(s) but listed with adjacency for explicit example.</t>
      <artwork><![CDATA[
Ingress SR Policy (Ingress only):
  Color: 50
  Candidate Path 1:
    SID List 1: [Adj-SID-AC, Adj-SID-CF, Adj-SID-FH]
    SID List 2: [Adj-SID-AC, Node-SID-D, Adj-SID-DG, Adj-SID-GH]
    SID List 3: [Adj-SID-AC, Node-SID-D, Adj-SID-DF, Adj-SID-FH]
    SID List 4: [Adj-SID-AC, Adj-SID-CF, Adj-SID-CG, Adj-SID-GH]
    SID List 5: [Adj-SID-AC, Adj-SID-CF, Adj-SID-BE, Adj-SID-EH]
    SID List 6: [Adj-SID-AB, Node-SID-H]
    SID List 7: [Adj-SID-AD, Adj-SID-DG, Adj-SID-GH]
    SID List 8: [Adj-SID-AD, Adj-SID-DF, Adj-SID-FH]
]]></artwork>
    </section>
    <section anchor="local-optimization-example">
      <name>Local Optimization Example</name>
      <t>The following examples use the topology and Junction Segments from the worked example in Appendix A.</t>
      <t>Example 1 – Simple SID list update</t>
      <ul spacing="normal">
        <li>
          <t>The Junction Segment B is updated. The SID list [Node-SID-H] is replaced with SID List [Adj-SID-BE, Adj-SID-EH]</t>
        </li>
      </ul>
      <t>Example 2 – Chained Local Optimization</t>
      <ul spacing="normal">
        <li>
          <t>The ingress SR Policy SID list is updated to remove { SID List 1: [Adj-SID-AB, BSID-B] }. Only SID List 2 and SID List 3 remain in the SR Policy candidate path</t>
        </li>
        <li>
          <t>The Junction Segment B is no longer used.</t>
        </li>
        <li>
          <t>A delete is sent to remove Junction Segment B</t>
        </li>
      </ul>
    </section>
    <section anchor="global-optimization-example">
      <name>Global Optimization Example</name>
      <artwork><![CDATA[
    +------+      +------+       +------+     +------+
    |      |      |      |       |      |     |      |
    |  Z   | -----|  Y   | ----- |  X   |---- |  W   |
    |      |      |      |       |      |     |      |
    +------+      +------+       +------+     +------+
          \          |     \       |          /
           \         |      \      |         /
            \    +------+     \ +------+     /
             \   |      |       |      |    /
              ---|  V   | ----- |  U   |---
                 |      |       |      |
                 +------+       +------+

          Figure 3 : Global MBB Example Topology

]]></artwork>
      <t><strong>Step 0 - Initial State</strong></t>
      <t>Figure 3 gives an example topology containing a DAG which is to undergo optimization.
Node Z is the ingress Node with an SR Policy color 1000 representing a service intent. Node W is the egress node.
Color 2000 is the DAG MID and version tracked by the controller. In the existing state of the DAG, traffic flows from west to east, and north to south on nodes Y and X. The diagonal link
between Y and U is currently not used.</t>
      <artwork><![CDATA[
Junction Segment Y1:
  Color: 2000
  BSID: BSID-Y1
  SID List 1: [Adj-SID-YX, BSID-X1]
  SID List 2: [Adj-SID-YV, Adj-SID-VU]

Junction Segment X1:
  Color: 2000
  BSID: BSID-X1
  SID List 1: [Adj-SID-XW]
  SID List 2: [Adj-SID-XU, Adj-SID-UW]

Ingress SR Policy:
  Color: 1000
  Candidate Path 1:
  SID List 1: [Adj-SID-ZY, BSID-Y1]
  SID List 2: [Adj-SID-ZV, Adj-SID-VU, Adj-SID-UW]
]]></artwork>
      <t><strong>Step 1 - Deploy new Junction Segments</strong></t>
      <t>An optimization calculation occurs requiring the DAG to change, the traffic will now flow from south to north instead of north to south, and the diagonal link between Y and U will be used.</t>
      <t>The controller assigns and tracks color 2001 for the new DAG. The following new Junction segments are deployed in the following order. The BSID values are either assigned by the controller,
or requested by the node depending on the protocol in use. Note that after this deployment node Y has two Junction segments installed on it, both of which are active.</t>
      <artwork><![CDATA[
CREATE Junction Segment U2:
  Color: 2001
  BSID: BSID-U2
  SID List 1: [Adj-SID-UX, ADJ-SID-XW]
  SID List 2: [Adj-SID-UW]

CREATE Junction Segment Y2:
  Color: 2001
  BSID: BSID-Y2
  SID List 1: [Adj-SID-YX, ADJ-SID-XW]
  SID List 2: [Adj-SID-YU, BSID-U2]

CREATE Junction Segment V2:
  Color: 2001
  BSID: BSID-V2
  SID List 1: [Adj-SID-VY, BSID-Y2]
  SID List 2: [Adj-SID-VU, BSID-U2]
]]></artwork>
      <t><strong>Step 2 - Update ingress nodes</strong></t>
      <t>The existing SR Policy candidate path is updated to use the new DAG. Note, the color and any associated binding SID values remain.</t>
      <artwork><![CDATA[
UPDATE Ingress SR Policy:
  Color: 1000
  Candidate Path 1:
    SID List 1: [Adj-SID-ZY, BSID-Y2]
    SID List 2: [Adj-SID-ZV, BSID-V2]
]]></artwork>
      <t><strong>Step 3 - Delete the no longer used Junction segments</strong></t>
      <artwork><![CDATA[
DELETE Junction Segment Y1:
  Color: 2000
  BSID: BSID-Y1

DELETE Junction Segment X1:
  Color: 2000
  BSID: BSID-X1
]]></artwork>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Matthew Bocci, Richard "Footer" Foote, and Martin Vigoureux for discussions on this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA71923bbyJXoO76ijvvhSB2QtmS7u6OVyYS62cqybI0lue2O
81AEiyRiEGAAULJiO2v+YZ7mbb5lPmW+ZPatbgAoOz2zRllp81Ko2rVr3y/F
0WiUtHlbmAP14HxTtPlat0t1Vev5PM/USbnIS2PqvFyoeVWrS7NYmbJVr6tN
C589SPR0WpsbeLZZ46DRat2aUVM/SDLdmkVV3x2ovJxXSTKrslKvYJUZTN2O
mrYqYWD00OjRftJspqu8afKqbO/WMPrs5Oo0KTerqakPkhnMeaA+HU+uTr4k
WVU2pmw2zYFq641JAIjHia6NBmAceLdV/WFRV5s1fHhZberMqAudfTBuBwCd
emlaHEcPJHrTLitYS40SBX/zTVEw3JNyVptbdYmA01dVvdBl/jfdArAH6mX1
Idf0uVnpvDhQmsaPaaN/KPHbcVat+vO+yZtluQGwbnSpDgHXejUw/R83Zb42
tYW1CVe6mdJTf/gLjxmXpu0v8zLPPqjDTa0XRV4NLHBSmnpxpy6z3JSZaexC
4TpTefoPQAm3up4BwtaFLs3wgpdLXc1hX6ZcDCz3y9WJOqrqdVXTB+Eya3hi
3NDTf/hbaxBr46xMkrKqVzD4xsDhqLPR8Zgp6UO1Wpui0KPW6IZICb9/fXr0
05NH+/Lyt/tPf5CXT588eWQH7D/eswOePrVjf/zpJz/gpx/9DL+1L396+jQG
ITftfJTP6lHD7DGqmbgApNG6KvLsbsv46WI9KhokfTssQW4J9kmw7T+BL5Jk
NBopPW3aWmdtklwt80YBV22IIWemyep8Cgen1cpkS0B1s1JtpXS2zM2NUf8w
b6upbsxMlUJwY15/lc9mhUmS79RZ2dbVbJPR8SWfPt13Il++AJ/xcIbQAdMK
MCYABjg7M+tWtUvdwpvVFL5p4J1RU1Oaed42qpqraQWPn/x1o4vRUdW0wQZ3
To7OL3YTT6XIi3alkV0J9oajm7EiTOr1uq4AWWrTEIjHeW2yFgZNsrsMzkY9
q/Ua5j6ePNsV1AQLOJSn6jbHbQGwMFI1+aLUBYyFk1jrus0zBBGfELyqsoKj
G8NpGrdvgAaGr6ob3PBdBbA3+WpdGIX7YqDV9A4wmlkGwtMidOAA3GxZlaNg
9O0yh8ebNi8KpWdLRjOssQX7SGJwXk1KYNfVTT4ziZ7NYB+1afICRcSdTKqL
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

-->

</rfc>
