<?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-03" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="spring-mpte-sr">Multipath Traffic Engineering for Segment Routing</title>
    <seriesInfo name="Internet-Draft" value="draft-stone-spring-mpte-sr-03"/>
    <author fullname="Andrew Stone">
      <organization>Nokia</organization>
      <address>
        <email>andrew.stone@nokia.com</email>
      </address>
    </author>
    <author fullname="Vishnu Pavan Beeram">
      <organization>HPE</organization>
      <address>
        <email>vishnupavan.ietf@gmail.com</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>
    <author fullname="Zafar Ali">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <email>zali@cisco.com</email>
      </address>
    </author>
    <author fullname="Siva Sivabalan">
      <organization>Ciena Corporation</organization>
      <address>
        <email>ssivabal@ciena.com</email>
      </address>
    </author>
    <author fullname="Jie Dong">
      <organization>Huawei Technologies</organization>
      <address>
        <email>jie.dong@huawei.com</email>
      </address>
    </author>
    <date/>
    <area>Routing</area>
    <workgroup>Source Packet Routing in Networking</workgroup>
    <abstract>
      <?line 64?>

<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 68?>

<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="6" month="July" 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, allowing for some "slack" to admit more paths.
   The load balancing at each hop is optimally weighted to each next hop
   rather than always being equally weighted.  Moreover, traffic can
   enter and leave an MPTE construct via multiple ingresses and
   egresses.  The proposal includes several choices of control and data
   planes.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kompella-teas-mpte-03"/>
        </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 454?>

<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:
H4sIAAAAAAAAA71923bbyJXoO76ijvvhSB2QtmS729HKZJq62cqybI0lu+2O
81AEiyRiEGAAULLadtb8wzzN23zLfMp8yexb3QBQdnpmjbLS5qVQtWvXvl+K
o9EoafO2MAfq3vmmaPO1bpfqqtbzeZ6pk3KRl8bUeblQ86pWl2axMmWrXlWb
Fj67l+jptDbX8GyzxkGj1bo1o6a+l2S6NYuqvj1QeTmvkmRWZaVewSozmLod
NW1VwsDoodGDh0mzma7ypsmrsr1dw+izk6vTpNyspqY+SGYw54H6dDy5OvmS
ZFXZmLLZNAeqrTcmASAeJro2GoBx4N1U9YdFXW3W8OFltakzoy509sG4HQB0
6oVpcRw9kOhNu6xgLTVKFPzNN0XBcE/KWW1u1CUCTl9V9UKX+a+6BWAP1Ivq
Q67pc7PSeXGgNI0f00Z/KvHbcVat+vO+yZtluQGwrnWpDgHXejUw/bOLk3Dy
a3pojc+Mc9POf1rg58MLvMizD+pwU+tFkVcDU5+Upl7cqsssN2VmGouOcLmp
PP0T0MCNrmeAqnWhSzMuTdtf8HKpqznsyJSLgeV+uTpRR1W9rmr6IFxmDU+M
G3r6p19bg9sZZ2V/gV/0XNdqUuQD0x/lTVapy9umNasmVWdlNg6X+FUX+U8Z
jhlG1mV+rek/Uw0bHJzflHrbBoBw6cmfEJdbzvtPuVHH1SBqnm30jcnVlcmW
ZVVUi9w04ex/zc14Bk/+tKRxNH1SVvUKHr82QLLqbHQ8Zv76UK3Wpij0qDW6
IQbD71+dHj159GBfXv5+//EP8vLxo0cP7ID9h3t2wOPHduyPT574AU9+9DP8
3r588vhxDALS5Sif1aOGhcaoZpYDkEbrqsiz2y3jp4v1qGhQINhhCcqQYJ8E
2/4j+CJJRqOR0tOmrXXWJsnVMm8UyJoNiamZabI6nwJRa7UCrAKum5VqK6Wz
ZW6ujfqHJZ6a6sbMVMk80ox5/VU+mxUmSb4DemvrarbJiDKST5/uOpEvX0D6
8HCG0AHTCjAmAAbkXWbWrWqXuoU3qyl808A7o6amNPO8bVQ1V9MKHj/520YX
o6OqaYMN7pwcnV/sJp6DUULZlUZ2Jdgbjm7GijCp1+u6AmSpTUMgHue1yVoY
NMluMzgb9bTWa5j7ePJ0V1ATLOBQnqqbHLcFwMJI1eSLUhcwFk5ires2zxBE
fELwqsoKjm4Mp2ncvgEaGL6qrnHDtxXA3uSrdWEU7ouBVtNbwGhmeRNPi9CB
A3CzZVWOgtE3yxweb9q8KJSeLRnNsMYW7COJwXmBUEGw6+o6n5lEz2awj9o0
eYHi81Ym1UUDY0y9yluGw7StqQGLemHwmIq8/AD4Kmc3+axdjnt0CwJq0zDK
M/igBqn1K6wDx77etCQtaEOMyAjVTLSvRj067axQweRl1eJG1lVjYOSNMh9b
0KgwOaEaT6tL/TC6rbKqEHwAnfPUxs+smwZeMGWCNp7BtmHhuV4BhkBqEyF8
+iSS6MuXlN+gLMI3uKuvcQ2s+N136pX52waoEdds1HNdLjaAW4blg4FzqOpZ
AybN68ureyn/q168pNevTv7l9dmrk2N8ffls8vy5e5HIiMtnL18/P/av/JNH
L8/PT14c88PwqYo+Su6dT97d413ce3lxdfbyxeT5PbQx2gj7YKYghqcGBYCp
17VBntJNYgXWDJ85PLr4z//YewT4+H+Aof29vd+DxOA3T/Z+fARvbpam5NWq
sriVt4D42wQY1wC2YRYN1J3pdd4CTcLYRjXL6qZUQO4GEPn9nxEzfzlQf5hm
671Hf5QPcMPRhxZn0YeEs/4nvYcZiQMfDSzjsBl93sF0DO/kXfTe4j348A//
DExi1GjvyT//MWEaAeQqwC2QClPKpmGkt4MKhKjZfFyz8Juapb7Ogc+Ak/GL
mEVRpBcFkD3JV/j6T5uS9AFLtQRPCTkDxrMUVucXYBOhYNw0+MnlK3VBio9m
OMxLEqaXZ8cklYG2kXyQd5F4yhnLUadJiJPrkDmqksDYwNC6uI1WSJOLo5OL
VB0+5f+Mnl+mYJSoFydXRy9fnDp+J3ZeNaa4RrEMeu4KZRsZKbegAtUpPEO7
aP3nqtmA4gCCwy+OU9xgqs6P4P9n8C5CCpMwLFEDeRrzLRKA14SNRCvSs062
iDRx4oUgJzCvG9G2IKsBsSCPm7ZJkrP2/zcoOUBEgZ6rFiUfEUlCdyjOFgHg
VwB8ARtdg8YBTIMGqFjz2clZ06C4Vu2mLGGwbmk+GAVaAzgSdBYfex8gEpZ5
mYC9CTvJ0f0BPwH0hZrcrYkzTUdeG4AU1SWSLq5GQgZ1ChIoox9ImGBMlUE9
Dwe+AA9kZUc2BhQ0rJsIvA64sXpW3YAJVafMMvZ7EkQOD0uYBFhjhkpv3jiK
QASwU+fWJ5jBVbshpZaD/tVlizIN9cWC9tYAg4ElYfLFEjc+L6qbBBZYkhvX
oLrFgzEiDGM8qx1kGPiMdjkDCQjqy+gVkd9u6nh1pT/mq81Kic0KAmCNttP5
5fGutwEaVVSoDAlussdm5jrH05nX1YrmASFbtwYMMBwEdHdiMSI2ENBZYCjl
okxJ9eqsrhrGUWwcxXIEKJQNxxiZ3XNqaGugBKqbJgEUjYjfGIlIkjA+tbjK
0GKEOcCoyXEhDaTd4rZyliBiTZAUUtmyyjMkrvbGgECTdUeEe4s9DwA+jpyX
oJhj28SbLIBkkGNOUA3ZX6FAS52ZCGgAYknJnLpPVu7KtHWeNf5Ayd4k5G5I
4YkAEKuSWaxr5nSNJbGRrLUNqPTPo7kFypblKk2NOrdEeWHK67yuSpyCTRYS
hKx+6CVS7UqXYLfMUAx0bT2rSFLHN5rYH7xPbwaeFIQUtQOCfBdohyhFWOz8
CI4KQCfZiDYlGM/1bcwrLHtY9IusBK8PTTG2ZAGeskHpZgFS5Pl70zNBN4Hd
KcQ4OHmLZQD8qKrBMEZ+9brEbmfrZi6smYm7uthluNBHdfYieqki4AH2+w7+
f8T95Mm+wQFFzUGHdiQWuAEC44MTSgPkAt1N8RsyuCLe9upCrGrm35i5hcWs
KUDoByzhs+6L4/E3uJQNGCkgPo1IJs0KNpieyA58l7LFYUR56DyeXVz/AHKt
Wk919gFFALJzV8p7C5YECtsVDbk0Wj3cH01zdC1aPG7wQcExApyDXAJZhNQL
mqyAtyX58YgMUZy49iM0O2YbFjkAgPNc2BG91sUG/QlUY2TU4MpLdC9QujGw
DAVtdxC3gFZA4ISo/6smRioS0VtzHdZCLMKqaxDZ+RQYhQRBQ8pLxPw5brtE
qzJjyeW+oFMA2fs32BMMAvyi18VCwkl5EUpJ5AXTFrtD6ECt/UfWYGS3ei8R
oQlIM7Rjdccic1JMDuIAMKf+aoc0buEDNMXYmnXSxNtKzk1kOQv2BHwPyIrt
GeCh0MwNTTZxbgxSxwqNmVi1wFbDLzt6ncIzGCbIC/CFMOwDXuMaANMR9kTq
7T/CUwcettIxUtGss+CpogK6puhgRopJo6GFvIZGvZucVka1DozCzzHTB3wH
lORQ/gK/JO9sZuag9MgV+SYrWCJBM0ZwiIw/dQ7LWRbaIZHYEwnG6ohqpXMS
UyR3QteErVdY8hLI2QwR4UqD4cfGBwZqrDXbPRNmLGDbdQU061yoqmZmmnUI
CGCY4qm3TnhuQL6yONh5MKb/Ee+hDEnVwYF988MuCW22gdMQ4Cbgmp4Y/IMI
lRSN5Kr+I9hGItnHlhPhYwGA9Dd42jML3B/It3nD/PxHQBpigGQA2cHZB14o
Fi1jdDxwRODhWuG9KCqgtYI5CUge4Q4hmBr2XO3RAm66ByOKAO0Wjm85LsRz
JRrFE61qHteY+tqQj7BawSQ8pmUbxlou1pfJxW+GLVnK0+WtOz5UQjx/i9Yx
sUE4ztqqllcnw0Rl9wirOKpyZq5fKrVBuRlvhETfZsq+A+glYWZQE9cSk9og
YpulrsX+AuSFoLMwy9sUJXixceY7EiOTbV6TCkBXCnBm4t1cLftg3g5pjbzM
ET80vZi+cNBs9wLqK2fHCiGBlqkyRqhI1ZAinI7Ex/Ew0UqXEyTDvSvEU2t3
kwMOLhsQPxl1tGYgAr0wp8Dris06UuzBBgWkQxDkiASv5JmUVbVuQSBzyoMH
r/QHM5oSn46mICg+gL91eLgLIw2nWCLJ1UZeTnj8bYc7LdH0GUKiT7N8Pocd
O6cteLixgmlgpYR5syYexmBn7UajicEGC1qEuawrxtLAVBy5Yf/HkL/LZqU7
OEcIbI2bUk8LexYiDoYUeuBDstVzFRszA1SIkr+F/weZgeyDJXlLci7wbFbI
1Bn4W5qegP1H2Pu6PPImmukYaBkoA9xOcYvGtSc20dp8dqhR2kGUInz9NUm1
ZhUK5FkQvZawh01PAENjcFQMMouKIp8bjLIYp/56AXZH5Wx+30YBHREMFOud
68yJFj37K7wrs9sRWj1A2gw8GgMU7kuTKHxoZeL55J1IJJTT1tFX6DveMm6d
WgvCXKDqF5WIFAFjrM5K5+wjKfYATb/ub/gcm7cz7bGES12FrkJvT9UqF6Me
PH4yUtEKG7kJXPwpMGYbr8mc9SjTgdKGY2W9HEkn0VhjNQHK3KzFMAEfdZGX
JFGdBMZpSFkGBkxkryUbGxJo9AosDAGltzUWRuzOkVjtAEtBiZdW1pEP8NSU
8LZAjUhRjTDvg5EQDCyhvmYtPDOFWWgx3VsKndGbvHG7iA2ONKTS0GS0SEYq
DLUZ8CEZD8QmQSoMH7SSqgA3sVAanmIfft2Llo45rGI3gKrdIZ6FsHZxJOs5
xpEnXA+sAdLzyKAGPW+Mg4LgvM41Pj+5OOtvWFYWfG3BZoBGOIyW4nxMPt5G
mjub+EqiuTby4RKcPZXfl742iOAUO1sBHvcoNgX/1lBu2K3jaLeJBau4Fk6I
Sm5pI+lYDqpZ+70DC/NTo4YkzU6zSxiAtfpWPKCkJhvD7RyUGAqbFR6nQL+s
1jQeZ4KNJVJnA5zHplhb4b8R3th8Uh0wkVjELcNwYVHdsliHTWOAGsYUofln
ajLOy4pFkFWwQI9whKKibOSyaw+B0LPBwwAAlzDdrMlvDUHegLAtGE0BaGgg
zJAZZhjwAhnYgMGJtv6gAARHB2efGplDZBehoxeLEB0I9hIIOrNas7HrFwcg
+Wl4Zp4vNjVYDbfOtbQxbh80rjFqSkbrMWGK5QK4uhkYbGufi+qo4jgpHoOI
Ssp8NBnQOcCBprbCbyi45Hw+AQ4no7RTzsqN7CUckpCRoEO8SvI9Ay0xZPBz
aNfJJwQoLzc229rAUg16e7DTAROhDpBP2mVTgiwF6dCzbgfDGKLVB+KcPsfm
c2vk76CVrCjhykkaNGFQmIlYQpepjsolevnEIO5EykSdzbtHUdk4NZ8nJ9zo
CZiTmCElzCMYNzonFPOaidOQHVmjpyCexWDqxxlYEqEtZW0Ol41gxqZts17E
856yv8meonxuHV8Abe6hBWsekHn/yKuypKqtk6jFoPdKF4Ai8y7S25gmJ08n
b//rX/+9iSbvYo5lJ+MtngTMFVPMMbODC0QRL1YdoV4Ntv+zlZbmIwb0JAXX
FZ+O65swP+mMvha0LdIlKEUfzbA2X90c0OL4HJ564B8IAQ1ZND4NWxqnNLbY
Mjt4frsW7o5qGCeYmHVqGfBRcqKyxJzTtKobiSXLqZF7YQ1hxFgp5q+Dwj44
ppRvhxKdL4bSs79qmgTJLLSpLcGRckRCRwdLkm1UGMqWDqh5qhQieIKqoa+h
ELl6TSL0o5pY+UQesvmoqVzJBdsQ2aA+8MzD5J7lIo4Gi5nBfnIn+HGflexv
yAnENgx4RcUM/P5r04+vAJD3kYo7rozEOPA8glSPBDIQsTSzaAVXprDFvETj
QOJ8XqB3TTgfgO0oIdkbuqLtspqxhGmMJa+u8LSWpG4StymBNsxI0Hcj53QA
ceo6r2ByYndrSALQ6NJoDkqe2Jgmc0lvNt4ynCshP4oCWCIOHBGySFlhg2Dy
GU80tllXtbdrUE8YwypycJ+sxSC6KbIn7YcdoxIUXIHvh1VWWAiC61F5GBxO
gp4i5rNNmCl2pwyU0eIeLEvg8c5jQuGz7Lo2nJyhREklIfBLqVJ4NN5PvXXL
2JcDBiPoW6KDEpbxSWcbuwyOiY35yHWPrNLweFzQSE4mTQCAG30bGDeOcsXf
o5Mgx9SGVbZEhDQciBmZjxRCWnAKe6lrF38Ed1MiesxK1kVgkfG80rORS1Ak
yc9Yb6SteHPWOulgp/u6pkWQWQKRanJ0cTCw0HaSFhyi4JybzZq4Cg2UnAZr
UbmyAAs2Rr0i0SBSZHqlC51I5xCIYUrPp40s4eyP9/ZSsjnmWCAcqNs5xeT6
sdQF7LWM0kyIhJv7lzeYk0XH4oai+UtXRSETyiMJPYLncukGNmBtyyh+puk8
5IyjCu0CUvIBisi19YKuG6VJODZIYd/62lJJ8Lyrf8A0iAAtBtJc/WrqSqLK
ESnEGZkQTiYzzNEbqXOeNCqqXPx6cpXTqIBMFCx3BMp2kBieI3J2U7HFONGL
Zoobx/W0zkVjrUpmqERzZnW1Rr9OKnc0m2fd5fxquzDHisw4XYBWkZKGBUo2
rPpCNs+yjVgkotlT64E7Dc+VlvCpNwlSth6PUHeAHC0w6mOijbHr9tAChztr
wlJtoNOikKplOWO1s65QGuSkDGyQRqDd7bmcBAEWM9bS8QH+mc6LTc0BDs+I
vPaOz35g0mbtzl0MNKweppG75EYQeGwJADTJtAC5s6wKX9bD3rLzLMShYAvO
peI6IhQwAgeCtd9E2gCtmXX9ICuQJeBdSYEUfVbnDbmd4JBg0QZg3+oMUYxE
QIKFQV9W0hasgQJ3FPNGNus/4FNSORRAz7tkMw49AsoXBzQY8ReGZTkZQ7Wp
7AJFdRwIxFLL9EOknCaY8RJwYHo4AKyJw7Omih741nuPper7eS6SitUtnrFI
FQyWIIg/9BsZ4gRFEAaBnW7ltYjqBqBqkNRo94iGvZBi4fCf42mGhCrBxWF3
lpIwbbPVpm+sdeqCfezoOwXtaqzOfCoH1HC1Hp3WxqhJUPSyc3U2en46kZIm
bJoBZeWMEhRR63WBPIAKLdCHKJT67qxVgYqzEoJrfACNrlyGu+fFRbwVd8d5
M0kJpt3W7YP6JJgV94NghcO0MGAJg69NiU900v0Qa1QJ+h3b23DbQNyFZTJB
lHDJazfl2a127k4+s9WwQUARHif/3sQWnJQftPCEiIrn5N6HUeG5dUMDGqLM
1zYKEhDnoOIwoZbCbknEIJWiAGywYy+f5kXe3rqcLtdCci8LWYNYdktlpNsd
dE/3H0pbgEWn1zeLJl0RFni9ayxvpiC0wogc6Bw0Qame1feVSPzBDrCK2BoI
fVTEruuzHJRbnS1vOeYsuZ+BbKBvx+KUs3Cbrchfyjzo60QNcwyqGMYwNTzr
o7pAKqO2GmF5mLh3ANUpxdk5mE/SSZquRtg3qqyfO3Lxfiu40rgEiSsGaDlx
QjLMRgrX4lypjUBYa2wKgtzUkTshMfGOJ0xFK43h2aWOm0tg2ryVlNaC41dI
pURjRJnBhrEq3ob7TzHCakBC5lEUAs3Pmyj3HMSwrsQfJrH5TIrsJgSsfXco
dfdctoClm7yLt0B3nYQJnSlpPiyI23vwwB6wjf9SRwWfGp2D4IozQGB/TA5f
7Sbwn9Geq+q1q3HMRfGXPS0hOTfGeZBuWeqBNJzLGaaI2MQiCt2kEQBNYQVb
TIQTubwrLLgNR0ElP8VYJDhIPpMwnNoxHw9IB2ISeEQ72WV7B2U3vIezm1cY
EWeDJQIorByn2gg6MnrSQgFT0SQJh3moMw11WckWRu+oUmVyR14hfRAD10L9
QFl///vfqTuV/0b/k79gns/qrr+vfPu/O8/vBLrffes8MPb9wDx20Gf7NZ37
3vA8MMd9fB/OZeeRI/3Mw+K1wnl4Dj6S9/TifReeSXfRYDbe9+/sHPfDzeHn
/PWdOHITfrYrBiCNRrwDB8E3nBt22X4mQv48SGvwIMuEb54LD8AN+AyEj0zl
H3yrvkYHI4sbwZeKtmw3q2J8OVqIBt0P58UNvpdv3svS92XsVlqIZgiWsOdK
KJJXNDaghUNFtMlTEG3u9+ZRAtTnaJKv4mhoHgdUBPVv5N3e1v+XZYBd5Lf/
JQOTH1Od7f0Jaru9u7/eT4Ym8H9Ovx+oV2bToGlOOg6ImSQ0mWLH/WxMpymx
F8JBFeWKUrAqn83glOIDoQvZsB2Fa4qR6ULuElEbME29R0R56SDnHPiLZPBx
+Saq1auTThcQGjD95KNYZOQJ++1ydUgiSje1oFkFbUN7oWJmjxbnS3wsTCpC
bG4IYLrgBi+q4fGVjRKJzToFj9bZiIogwapAOwdm5toCcbM68fyOy0q3AEjS
xDXz4K4wMct4wohEVlEtHRmnbnaOuLqoW7d8xGZQwvpLKXYEDxLNtUbPKY1K
j2DZOHo/iW9BDWKP2FFCbhf7Q2TVaO8ImbrerHmN2PPDzCqbYBQVK3poa2wN
HHUgnINXsN4U2hncEuZ0jTlB5LeflYYJsDFAZ9KQ6zx7Z+QJvZD9T1AgNOAT
7JjxYmzL+aj11ucy8WE00QntZJWHGcTYa6M2xDHAMZnN/FxueXFrETTvLUit
n3jHTK26m47Ena0qiaN4co8rJ1xCmdwcsv56SPIRUXL674K110wid1YQM0qG
Ax8J3NxmMx0xq7tCOdzVrWkDmRWUQoctfT9zo9oQzTZZte7wkUut5zXHuLPW
hjVccJejqyJtlAbcm1IajDicX4NzwiIrAgYzY/q6ymeuHSdigZj4m2aDaanY
J+VsuFRkcj9TiFsEzoJF7pPrLLMFMDjcITMRNOoCb2K4pZrboFQ5dUX/eXA8
CC74EcaMh6QVC1jrRcB2bLdKgyUr1BoyJF7GitJQ5Jk0rVm7cuNgPcmIE44o
n4GH2WJpd8JpSV6Og+QsyrDEkc4qEE4sKmAcSD0mkCAmScLiqJCq5c06iulQ
i6QlNk+R7H1ZwUJxaETKPHrWHREVR0jxGQa26NoPM9u1TR75CnONmiuZ4HCE
O/oCTqpZxA0fqp7PS3d6QYiWqSMoYSbKG/nCWSEAHwOLuGlrfw+lAqXPS4ot
/T0C3ZA5VoPWFGp3stTdHeLDnV7nDfXneC2ShA3SNnm0LQbNgEoThOt4d5Va
JIMDXePrNJlECZ6uHogf56TnNOhYs3dmIIXCkXMnF4lP4BPx/Un/uSRIw/SE
jTnBPFjjCWTfzZH4PgMUaqJQxsml44pyQS3nuA6iymCLmuEaeYuBAQJKWThY
2ivx+M8t28ZbbqRKJKycscUNFQmjFWB8idfHXJshbR10kgImbH2yUCvH+bjm
T7ojhX5RgnGtwYzEAw6Sr3xfpch6MTupEjvrbyAcExIAUi3qYmGLsG5Xauko
4d7p+6oN911RdQUK3Q6FYQuI1BKmTjD3qLAolFR9+l5BASuwoajjOmGa4NIx
IUtKgjaSGpulKswIddayNXLcqoRxyoDwqTTCqU4aK2At8WpAvKYiMtKXABgq
xU4tDqbiQ8teEle+Kq+DQ8TgVuRYgCXyBQS3qKzt4WnJJhwlH6oRQxUapE0l
ZAAjhDOIdlGauDMNWU+EyhaWFxxxZllcHrxFg8rQU/gcL1exKgJ3w0RQmiJf
cEYAKcWpzuu8KvBWjc59Sly0yu0xdbXMsZ2aVF9UKivNZTYYmQ/3Dg4olMhX
wHtHrKiL45nzuxCRRh2voZnTP8MmrIY79NVw5k7DnrMHT/viKkkGPvQhZpEl
KKm2+jzovG65VOOFvXIsb7jAuGlE89PdbL0eNbr6xfqNLAKsYPIWVigGOM+F
VkqPicdbmgV3sA1GCoN2bTFJgYa6kZsSpNLfaoTEJwKPiNfmuQHKZ1slvMJm
huYu4AVhXBmsA2+W+Tq1+bbgVopYsadDeiTZ0sZnjTIxHMGwgu3lLS3MWLF0
008hEb9xBnlTE4fJ6bYS9eamUlwddkdGclBERQBJg/1R0JdmXdvu+Kj0W1oe
YsoYvFIgsb5d1EmLOLQ13d36ItsWGPW7S0OCVDBUnCiLaMTOzYUNq7zkWgRL
cNkScETr0oV3LGapc01PTSHmw5pV/hZx4Y+44XJClmS2RQCvW83A7eEmRYeq
cN+NK9gl2SoZKPUaJaOiayoJEvZtmlRu6bFuGUt2SonaXYnYJiSM1fGmlg5Z
DD2JIYjWh9RBy1ON2iGKZVhdwggPHBhtN9AFYiGOhUA8uuQ4XH3hhgtPM1+U
Dh+iv0wcR/XskR7pVpRFxEGEwa60L3mf8d4GzCa+kIAeEjNPxg6wIXvW5H6G
NS9y7wm7oVEaSywNEceJnoIVITq7U+w+QP64q+/2Unda3+25bgu265GMy1jH
suZHTLun9tkQ4DiC447+Q73aB6m2fkkcF7JrM9jP0WXq4C6CMClL0AhT0/GF
7nfDoTrDNz+08cG76MCgPAtiHUIzkXwuIyDIr81qoHKkB+Kqbl+40LXc8HUX
UQ0RClUYEcdrDAaFElIJtXfEXyKxXcsNtbPKKVU5x+vEOspEBYENuiYBoGmw
VIWu4yjEZwxPWsK/fT1INpONP9kN9nvZqGW5CbSfbUZmZNmAjytq5Os4Eb8I
udzWYi9jUb2oQWC8Pn7wQP3Xv/6bMAG9fOP4oDd2z4/d/9rY/a3z7kspr5hw
wdmyZGjSSIhLjxhekV1LjGFAq1H5ZTXjujuxar31hPgIOs3BKiixnpmJjiS2
tx+R7BHs+BDH1ocSN99ZVmCpi1DhLp9O/MB2uME7KkBxSwSldxwuarUTY6ws
E6AOmwWxYobMmrB2Oao+kYid26lcXDHUWR9atEeD/R0gBQZYjm8eI6vKBgCP
IuuIjF7pa8I5Ti2k9kqto9AFoA0xc2y/89jGGAI74o6bebbeIWFN2fMOg7hW
eD9l5N1JsTyqS1e6FTa6ikxLnEwjz5NrXKT2A+uVgwMnMYcOYcYRI16wJrXI
YWPyBcPW1+C2EilLOgvu48LtHOtWq3M05vEygPFijBdUHiJTbApMjF29PH7J
2RwsDEfAj42tCSNLryrztqJkS+KGzExYI2v7bQBVwW7obkRs4MIYNd5iv4zu
6Dy7CGt/49YH13z2HbYISZESGP+gXaif4/D0WO1cjuAfKTTE67vxuunY8LM6
VZZCXgAjO/tAFh7V14VlsS5FFABpC6QkdqbpgWSBwUhUeClVDAvQBA8oRLrd
XwLWtUZqEqueFqMTJHlPzvwOXunp0iWShNzttQeL5D97euGLTUUqcjMv+CaN
DfdTBSufDuWw2C/R9a0gFBHNJVCDJxp4d7YTZQM2KGwESyuDMqzhJoeuAJbT
9ddaBnEf66xjb8lw5Sc2kYoFHePXlUNbdlv6eiALvm0c4Q4ddnXRZMNLNW1/
jhU/Ljd45nqVZcd0koZuFuw0cBCB0Rc9c9KWJuvim4IZtPne7PNhpKh6U5K0
x2LjDtUFubde3+LL0mOPSZ70PpKaplpXTOLZxclJrj+Q1pSgGusjCsV59Ltz
pZRxY1pMnA23gKNAKG2Mq98Mw/ZPjvd1Dka/p1jSSVzKM6Su/o1caFG5wJCJ
CtIWIXok9MR1q/bKcLyGw66V0jssQOMmF3s7/IplYCOnHbae2Ps9gpBIdN8N
fCF3uHIjj5YYW9pNdnLqi+vP+ZYpAp3bmhqu0KSwps9xmjomPP6Ik8vA52+I
fhHKI8kDBrdw0N5F3gT3sb+cnNsb1s8vnl+qHbmN8smPX76AWJpIfTRreKC2
y1fXP8gg/LEEGCQX2VP947Wprdk132D+BXbIN1swMvhyUtpn0Ay392D8EPvh
nO+MQMFJTE2f6z1bS1j4Dt6Oa/3NR1NnOZDCP8LaJI/Cmy50aS8bVmvnt4Cw
NqThXTy1og617ZQ21U0urYwLAGQhTTMrrqXWalnhMHCQrnN09IPLmE7kVmNM
h+h6YVp7sy7s37owNo/mSScsbnWJ1S018iTSxIcICDbFEHQgGweYAu+1RBpk
27vDFY5FLXsMXYlhry/xeBzN8GqmGSf9mFsIUdjtU824X3QsDXGcsUXzTEQF
+nIgO5GeXOCSILW9Z3C+h1LZzvl2vOO4YYEbbYB/bqF1ujX3NzJL+yL5cJLw
tmc64/PDnUmprEITGlH2AT73dw3PcrC7sbFwZTT6NxIzdMmrRgLMyO90DTP6
OYFWGfgJATjJlxTYvnDNsLiJU6eo6KZaYKESbwq/cs1rPioGsnvo7nWup/At
tuj1+0kzN6mYpyuQaMRe8js8kVBiWxQlATj3Az6EHXA2eTHpffkC+Z8OAUVQ
vjL84yXoXuEzSL9SctMt7rV/tpax83Zg5Gf3z94DNVjoKYV1+BUVIEq5JLw9
UVSPGI+9H8/aWeS9Hwzr3b8LWHj5HgaFs/sKws8Mbu8vmF+FRYtDY/34GILt
8HQwGe9y655VB62fbVUvTQXvjlSE1lNFaOU3z8LH5B/cejD94/DL8Ls79sbF
pve3703QE2Dw82P+hND6+PPOBQgTM9uFWcIjeh88wGvIR/4IgvH7D/hbBwdN
/j4C636HCHiNbftXHXgUES98fqwiJD9VjOQ+S2w5x/7AbUwWjJSiz311YDnW
96ChPsT7yJGfmY8TN5wivMrdoaxFTnqfCU0b7qz1lwcE7YXhrRGGwiw5WROd
OyBZv3QuCiXTZILgPeN0F/d+qOhG52k+4lYuFo7sEUrHtHjSup7mYEGARuW7
3tXOGV6sc3WSgmNe4B20bYY9ry+4tEZugsLff2qWToMcweAUOAL39xS1rZQL
PiaNQV2EigkxvHOaojxUcziTjmO+5qFz6dDOPOyBtDcqgMbbYLwjJ1vd/vQP
QHrGXjXdK8/6MPxJi0+v0zdfIiAwr9VDkt3Ya9rSGz6BcJ7J7K9kTr1919lR
XK9Ip/QWN/Vu7LtS3nZv3nZ3tNiKxrdo+QXXBWMAmxvMyOO02pyj24fpUXqc
nqSn6VPf18/Bjk9P09MvwJuf4LsvQBt4BBLo5Yv3v3JtU+eWD1ewxEGugXtK
h29yEnijqyA6rfqWvnx5GHmLP0tVbBcLqZQBiu8sSa1+MoZZ1DGkx0xeKnfq
6tNReig/bwKodK9O3StAHhknmE0s4/s12aOlg+POy0+HcBbPvthy4rB2ahpk
6Oy1lPjrI+4UbIXnia3YtBU9476DehiVDtpm3x3dqTy3bs7j8cNdyn5hSqbN
+RyJnwP+UutNTb/NQBtzS56y/WpnFd7CybDtOiwfcGVNvjKi9ZcwBBN2Wo4D
qUgMSIGqEHQCCHh7TfdOSFK+03PW2OvO7EVIZBtTBFUKTuw2fVTXV9Mchrlj
Li+dietJi//sr5oYjJ+gWMTD8BasnIkjEg6wbk3LcNGNC4LLlSQunjsQ7E2D
pJWE+DFay4l6d/GEDyOLJ9dLpyVUb5Y3YXy6tb+4ZuPv/YKEIIpPirFPovjr
gpSQOaAOCkVIPuCmu0N463qp9w7Un518fPaXgblO75rrtDuXlc+ng3M9vWuu
p9vmejo419Fdcx1tm+voMBUs/CUcsh8OOZUhp9GQh+GQpzLkaTTkUYjMYxly
PAT88V3AH28D/ngYshD44wAyVDcl1dnQFcT+muGoPjD4aRRv5QQ9rU6zhQri
rF/j87qJ6pCsaNgNdvoYN9pRUfQjnVv2O4kOa8uOJ0cy6KgzKDywSXgaxDOU
OQYnFbiPyknmgdqiTl8dVGxGqCtjbIRufPyrDr1SU6eS4rXGZORhoGXlRIX9
eR6ZgetS6ZevROFbNYZBb1QIuKT71tlCrGL4PkYrhEVqDByh/Qi1w//o3OBI
Qm4KhcKd5xgyT0jRoSTYfsbbJrgLgkffAPbRXRA8/oYJDk/865PuBD90CD6U
xtHAHzv0/E0IerLtoQ5SiCdsq1fYAeZjKVcR1bviRwmixRcC9s1bn0moKN1g
LYLoFhXfLaW4auCSfxvV6XpOv1u9PmCa+boX9h3ck6GWk9L6QmeWYxy+/rzt
zBxgXNlwJB0jfYRZ4Pp2Rmix2OIcfyPQp6/KQPVlrF6i4eb5hy/octxgi2e6
PQGdgtY70Rf3e1B/FN0p3ZrwJm4Buj8FUpHUtw6TEVFaP0DwfxBW+sXHOODd
uzji8VYFYaWfw8d+y2q/cW/8FzTEf44+COJ0w1ElO+J9d3wc9ImDSvxJHFS6
M6LU3fpwROmNivD7Wv0fRpQeqgNLhOeHh73gkhDh999fYgvXA4UODl30pS6x
qvf7712s6SHdozd88WngXMvlILblD8sGsbhgUXWKZ0hp/2IroK2E4Nt8e549
OxBgHT6IC1l07+dQaIKf7bRB8maccFXWPk6S+5tDOjUwd/ymjzqLq5LklxTD
5jtb1Mc3EZKcvzHcQGmoLo+TKDVHWJpqQz/wJDGUd/TtWxbWs1wvXCwosbEg
HvKazNIgSdGKfKKz7Mmhd3uB/YLbj03sd3vbbOx3b0Xevt3bamS/e+N1w5vX
Q/b927uXf7t1+bc/b1317Wu/6msY1rfgYqdim9E2uO4v71KLma0A/BJtOwYm
ZKg9YKhjimTFRaTWFkD+mnTjF7rIqO8ZgzF4J6Ftquq4xrYxjSyO8CbBEsxl
pEAmQKYy6kysqYGFm8mwxD4iRP8DmxHtqS7thQVZ/YJNvjnPXW+IJTyZ5bu9
4P7nG9eWHhhSw3W2UTQw77ocdLNQ9w5yfkhuvdl+GzhdNe4vZpfvKfrVu8HA
9fXkdEOwixZiEea8pe6ZOMFK07xzNWFDd6oHvyWHv0lFlf4YuSbhqW1BpvVS
jl6dTK5O+nbG6/2YwfZiBnu9v43QXwN/T47/9DVmIwbbtvi7uxd/t3Xxd9+2
+LvXqd3GHVC8uRuKN1uheON4fX8rCG9CEELm3gfmfs1FsFGtNzL11ZYazV5L
YWD9WvfBcQf7wj6CRtUS5W3YkNArq7dVRUI0ry+OEWO/UT5+VULu3+HFoowU
9Md4e0hCkcxo5rfQyu4zCqITHz8+eX4ySIJf1W9bH/26bhJncJLh5XzAqxKs
/HTAfTRm9k/35rpozL0veOYaw/pwkue6hZ3dqEOQ33mqXgE/42UP904rONH6
nqJ/WeCe02+uqDf5ogIra/ORZKRUJ1EBV9X5Bftx8t/8MqUy4YkAAA==

-->

</rfc>
