<?xml version="1.0" encoding="US-ASCII"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd">

<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>

<rfc number="7855" category="info" submissionType="IETF" consensus="yes"
     ipr="trust200902">

  <front>
    <title abbrev="SPRING Problem Statement">Source Packet Routing in
    Networking (SPRING) Problem&nbsp;Statement&nbsp;and&nbsp;Requirements</title>

    <author fullname="Stefano Previdi" initials="S." 
            surname="Previdi" role="editor">
      <organization>Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street>Via Del Serafico, 200</street>

          <city>Rome</city>

          <code>00142</code>

          <country>Italy</country>
        </postal>

        <email>sprevidi@cisco.com</email>
      </address>
    </author>

    <author fullname="Clarence Filsfils" initials="C." role="editor"
            surname="Filsfils">
      <organization>Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street/>

          <city>Brussels</city>

          <region/>

          <code/>

          <country>Belgium</country>
        </postal>

        <email>cfilsfil@cisco.com</email>
      </address>
    </author>

    <author fullname="Bruno Decraene" initials="B." surname="Decraene">
      <organization>Orange</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country>France</country>
        </postal>

        <email>bruno.decraene@orange.com</email>
      </address>
    </author>

    <author fullname="Stephane Litkowski" initials="S." surname="Litkowski">
      <organization>Orange</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country>France</country>
        </postal>

        <email>stephane.litkowski@orange.com</email>
      </address>
    </author>

    <author fullname="Martin Horneffer" initials="M." surname="Horneffer">
      <organization>Deutsche Telekom</organization>

      <address>
        <postal>
	  <street/>
          <city>Muenster</city>

          <code>48153</code>

          <country>Germany</country>
        </postal>

        <email>Martin.Horneffer@telekom.de</email>
      </address>
    </author>

<author fullname="Rob Shakir" initials="R." surname="Shakir">
<organization>Jive Communications, Inc.</organization>
<address>
<postal>
<street>1275 West 1600 North, Suite 100</street>
<city>Orem, UT</city>
<code>84057</code>
<country>United States</country>
</postal>
<email>rjs@rob.sh</email>
</address>
</author>

    <date month="May" year="2016"/>

<!-- [rfced] Please insert any keywords (beyond those that appear in 
the title) for use on https://www.rfc-editor.org/search.
-->

<keyword>example</keyword>

    <abstract>
      <t>The ability for a node to specify a forwarding path, other than the
      normal shortest path, that a particular packet will traverse, benefits a
      number of network functions. Source-based routing mechanisms have
      previously been specified for network protocols but have not seen
      widespread adoption. In this context, the term "source" means "the point
      at which the explicit route is imposed"; therefore, it is not limited
      to the originator of the packet (i.e., the node imposing the explicit
      route may be the ingress node of an operator's network).</t>

      <t>This document outlines various use cases, with their requirements,
      that need to be taken into account by the Source Packet Routing in
      Networking (SPRING) architecture for unicast traffic. Multicast
      use cases and requirements are out of scope for this document.</t>
    </abstract>

  </front>

  <middle>
    <section anchor="INTRO" title="Introduction">
      <t>The ability for a node to specify a unicast forwarding path, other
      than the normal shortest path, that a particular packet will traverse,
      benefits a number of network functions, for example: <list
          style="symbols">
          <t>Some types of network virtualization, including multi-topology
          networks and the partitioning of network resources for VPNs</t>

          <t>Network, link, path, and node protection such as fast reroute</t>

          <t>Network programmability</t>

          <t>OAM techniques</t>

          <t>Simplification and reduction of network signaling components</t>

          <t>Load balancing and traffic engineering</t>
        </list></t>

      <t>Source-based routing mechanisms have previously been specified for
      network protocols, but have not seen widespread adoption other than in
      MPLS traffic engineering.</t>

      <t>These network functions may require greater flexibility and more
       source-imposed routing than can be achieved through the use of
      the previously defined methods. In the context of this document, the
      term "source" means "the point at which the explicit route is imposed";
      therefore, it is not limited to the originator of the packet (i.e.,
      the node imposing the explicit route may be the ingress node of an
      operator's network). Throughout this document, we refer to this
      definition of "source".</t>

      <t>In this context, Source Packet Routing in Networking (SPRING)
      architecture is being defined in order to address the use cases and
      requirements described in this document.</t>

      <t>The SPRING architecture MUST allow incremental and selective
      deployment without any requirement of a flag day or massive upgrade of all
      network elements.</t>

      <t>The SPRING architecture MUST allow putting the policy state in the packet
      header and not in the intermediate nodes along the path. Hence, the
      policy is instantiated in the packet header and does not requires any
      policy state in midpoints and tail-ends.</t>

      <t>The SPRING architecture objective is not to replace existing source-routing
      and traffic-engineering mechanisms, but rather to complement them
      and address use cases where removal of signaling and path state in the
      core is a requirement.</t>

      <t>Multicast use cases and requirements are out of scope for this
      document.</t>

    <section title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119">RFC 2119</xref>.</t>
  
    </section>
    </section>

    <section anchor="DATAPLANES" title="Data Planes">
      <t>The SPRING architecture SHOULD be general in order to ease its
      applicability to different data planes.</t>

      <t>The SPRING architecture SHOULD leverage the existing MPLS data plane
      without any modification and leverage the IPv6 data plane with a new IPv6
      Routing Header Type (IPv6 Routing Header is defined in <xref
      target="RFC2460"/>) and a proposal for a new type of routing header is
      made by <xref target="SRH"/>.</t>

      <t>The SPRING architecture MUST allow interoperability between 
      SPRING-capable and non-SPRING-capable nodes in both the MPLS and IPv6
      data planes.</t>
    </section>

    <section anchor="USECASES" title="SPRING Use Cases">
      <section anchor="IGPTUNNELS" title="IGP-Based MPLS Tunneling ">
        <t>The source-based routing model, applied to the MPLS data plane,
        offers the ability to tunnel services like VPN (<xref
        target="RFC4364"/>), Virtual Private LAN Service (VPLS) (<xref target="RFC4761"/>, <xref
        target="RFC4762"/>) and Virtual Private Wire Service (VPWS) (<xref target="RFC6624"/>), from an
        ingress Provider Edge (PE) to an egress PE, with or without the expression of an
        explicit path and without requiring forwarding-plane or control-plane
        state in intermediate nodes. Point-to-multipoint and
        multipoint-to-multipoint tunnels are outside the scope of this
        document.</t>

        <section anchor="EXAMPLETUNN"
                 title="Example of IGP-Based MPLS Tunnels">
          <t>This section illustrates an example use case.</t>

          <figure align="center" anchor="IGPTUNNELSFIG"
                  title="IGP-Based MPLS Tunneling">
            <artwork align="center"> 
              P1---P2
             /       \
A---CE1---PE1         PE2---CE2---Z
             \       /  
              P3---P4 </artwork>
          </figure>

          <t>In <xref target="IGPTUNNELSFIG"/> above, the four nodes A, CE1,
          CE2, and Z are part of the same VPN. CE2 advertises to PE2 a route to
          Z. 


PE2 binds a local label LZ to that route and propagates the route
          and its label via the Multiprotocol Border Gateway Protocol (MPBGP)
	  to PE1 with next-hop address 192.0.2.2 (i.e., the local
          address of PE2). 


PE1 installs the VPN prefix Z in the appropriate
          VPN Routing and Forwarding table (VRF) and resolves the next hop onto the IGP-based MPLS tunnel to
          PE2.</t>

          <t>To cope with the reality of current deployments, the
          SPRING architecture MUST allow PE-to-PE forwarding according to the
          IGP shortest path without the addition of any other signaling
          protocol. The packet each PE forwards across the network will
          contain the necessary information derived from the topology database
          in order to deliver the packet to the remote PE.</t>
        </section>
      </section>

      <section anchor="FRR" title="Fast Reroute (FRR)">
        <t>Fast Reroute (FRR) technologies have been deployed by network
        operators in order to cope with link or node failures through
        precomputation of backup paths.</t>

        <t>Illustration of the problem statement for FRR and micro-loop
        avoidance can be found in <xref
        target="SPRING-RESIL"/>.</t>

        <t>The SPRING architecture MUST address the following requirements:
        <list style="symbols">
            <t>support of Fast Reroute (FRR) on any topology</t>

            <t>precomputation and setup of backup path without any additional
            signaling (other than the regular IGP/BGP protocols)</t>

            <t>support of shared risk constraints</t>

            <t>support of node and link protection</t>

            <t>support of micro-loop avoidance</t>
          </list></t>
      </section>

      <section anchor="TESEC" title="Traffic Engineering">
        <t>Traffic Engineering (TE) is the term used to refer to techniques
        that enable operators to control how specific traffic flows are
        treated within their networks. Different contexts and modes have been
        defined (single vs. multiple domains, with or without bandwidth
        admission control, centralized vs. distributed path computation,
        etc.).</t>

        <t>Some deployments have a limited use of TE, such as addressing
        specific application or customer requirements, or addressing specific
        bandwidth limitations in the network (tactical TE). In these situations,
        there is a need to reduce, as much as possible, the cost (such as the
        number of signaling protocols and the number of nodes requiring
        specific configurations/features). Some other deployments have a very
        high-scale use of TE, such as fine tuning flows at the application
        level. In this situation, there is a need for very high scalability,
        in particular on midpoints.</t>

        <t>The source-based routing model allows traffic engineering to be
        implemented without the need for a signaling component.</t>

        <t>The SPRING architecture MUST support the following traffic-engineering requirements:<list style="symbols">
            <t>loose or strict options</t>

            <t>bandwidth admission control</t>

            <t>distributed vs. centralized model (e.g., Path Computation Element
	    (PCE) <xref
            target="STATEFUL-PCE"/>, Software-Defined Networking (SDN) Controller)</t>

            <t>disjointness in dual-plane networks</t>

            <t>egress peer engineering</t>

            <t>load balancing among non-parallel links (i.e., links connected
            to different adjacent neighbors).</t>

            <t>limiting (scalable, preferably zero) per-service state and
            signaling on midpoint and tail-end routers.</t>

            <t>ECMP-awareness</t>

            <t>node resiliency property (i.e., the traffic-engineering policy
            is not anchored to a specific core node whose failure could impact
            the service).</t>
          </list></t>

        <t>In most cases, traffic engineering makes use of the "loose" route
        option where most of the explicit paths can be expressed through a
        small number of hops. However, there are use cases where the "strict"
        option may be used and, in such cases, each individual hop in the
        explicit path is specified. This may result in a long list of hops
        that is instantiated into a MPLS label stack (in the MPLS data plane)
        or list of IPv6 addresses (in the IPv6 data plane).</t>

        <t>It is obvious that, in the case of long, strict source-routed paths, the
        deployment is possible if the head-end of the explicit path supports
        the instantiation of long explicit paths.</t>

        <t>Alternatively, a controller could decompose the end-to-end path
        into a set of sub-paths such as each of these sub-paths is supported
        by its respective head-end and advertised with a single identifier.
        Hence, the concatenation (or stitching) of the sub-paths identifiers
        gives a compression scheme allowing an end-to-end path to be expressed
        in a smaller number of hops.</t>

        <section anchor="TEEXAMPLES"
                 title="Examples of Traffic-Engineering Use Cases">
          <t>Below are descriptions of two sets of use cases: <list
              style="symbols">
              <t>Traffic Engineering without Admission Control</t>

              <t>Traffic Engineering with Admission Control</t>
            </list></t>

          <section anchor="TE-wo-BA"
                   title="Traffic Engineering without Bandwidth Admission Control">
            <t>In this section, we describe Traffic Engineering use cases
            without bandwidth admission control.</t>

            <section anchor="DISJOINT"
                     title="Disjointness in Dual-Plane Networks">


<t>Many networks are built according to the dual-plane design,
              as illustrated in <xref target="DUALPLANEFIG"/>:

<list>
<t>
   Each aggregation region k is connected to the core by 
   two C routers C1k and C2k, where k refers to the region.
</t>
<t>
   C1k is part of plane 1 and aggregation region k
</t>
<t>
   C2k is part of plane 2 and aggregation region k
</t>
<t>
   C1k has a link to C2j iff k = j.
<list>
<t>
      The core nodes of a given region are directly connected. 
      Inter-region links only connect core nodes of the same plane. 
</t>
</list></t>
<t>
   {C1k has a link to C1j} iff {C2k has a link to C2j}.
<list>


<!--[rfced] Does "AS" stand for "Autonomous System" here?

Original:
         The distribution of these links depends on the topological
         properties of the core of the AS. 

Current:
         The distribution of these links depends on the topological
         properties of the core of the Autonomous System (AS).
-->              

<t>
      The distribution of these links depends on the topological 
      properties of the core of the Autonomous System (AS). The design rule presented 
      above specifies that these links appear in both core planes.
</t>
</list></t>
</list>
</t>

              <t>We assume a common design rule found in such deployments: The
              inter-plane link costs (Cik - Cjk, where i != j) are set such that
              the route to an edge destination from a given plane stays within
              the plane unless the plane is partitioned.</t>

              <figure align="center" anchor="DUALPLANEFIG"
                      suppress-title="false"
                      title="Dual-Plane Network and Disjointness">
                <artwork align="center">           Edge Router A
               /  \ 
              /    \
             /      \  Agg Region A
            /        \  
           /          \
          C1A----------C2A   
          | \         | \  
          |  \        |  \
          |   C1B----------C2B
Plane1    |    |      |    |     Plane2
          |    |      |    | 
          C1C--|-----C2C   | 
            \  |        \  |
             \ |         \ |
             C1Z----------C2Z
                \        /
                 \      /  Agg Region Z
                  \    /
                   \  / 
               Edge Router Z</artwork>
              </figure>

              <t>In this scenario, the operator requires the ability to deploy
              different strategies. For example, Edge Router A should be able
              to use the three following options:<list style="symbols">
                  <t>The traffic is load-balanced across any ECMP path through
                  the network.</t>

                  <t>The traffic is load-balanced across any ECMP path within
                  Plane1 of the network.</t>

                  <t>The traffic is load-balanced across any ECMP path within
                  Plane2 of the network.</t>
                </list></t>

              <t>Most of the data traffic from A to Z would use the first
              option, so as to exploit the capacity efficiently. The
              operator would use the two other choices for specific premium
              traffic that has requested disjoint transport.</t>

              <t>The SPRING architecture MUST support this use case with the
              following requirements: <list style="symbols">
                  <t>Zero per-service state and signaling on midpoint and
                  tail-end routers.</t>

                  <t>ECMP-awareness.</t>

                  <t>Node resiliency property: The traffic-engineering policy
                  is not anchored to a specific core node whose failure could
                  impact the service.</t>
                </list></t>
            </section>

            <section anchor="EGRESSPEER"
                     title="Egress Peering Traffic Engineering">
              <figure align="center" anchor="EGRESSTEFIG"
                      title="Egress Peering Traffic Engineering">
                <artwork align="center">                 +------+ 
                 |      | 
             +---D      F
+---------+ /    |  AS2 |\ +------+    
|         |/     +------+ \|   Z  |   
A         C                |      |
|         |\     +------+ /|  AS4 |          
B   AS1   | \    |      |/ +------+     
|         |  +---E      G
+---------+      |  AS3 |
                 +------+\</artwork>
              </figure>

<!-- [rfced] Figure 3 and related text used a mix of forms of the labels
("AS1" vs. "AS 4"). We have updated to the former; please let us know
 if you prefer otherwise.
-->


              <t>Let us assume, in the network depicted in <xref
              target="EGRESSTEFIG"/>, that:<list style="symbols">
                  <t>C in AS1 learns about destination Z of AS4 via two BGP
                  paths (AS2, AS4) and (AS3, AS4).</t>

                  <t>C may or may not be configured to enforce
                  the next-hop-self behavior before propagating the paths within
                  AS1.</t>

<t>C may propagate all the paths to Z within AS1 (using BGP ADD-PATH
      as specified in <xref target="ADD-PATH"/>).</t>

                  <t>C may install in its Forwarding Information Base (FIB) only the route via AS2, or only
                  the route via AS3, or both.</t>
                </list></t>

              <t>In that context, the SPRING architecture MUST allow the
              operator of AS1 to apply a traffic-engineering policy such as
              the following one, regardless of the configured behavior of
              the next-hop-self:<list style="symbols">
                  <t>Steer 60% of the Z-destined traffic received at A via AS2
                  and 40% via AS3.</t>

                  <t>Steer 80% of the Z-destined traffic received at B via AS2
                  and 20% via AS3.</t>
                </list></t>

              <t>The SPRING architecture MUST allow an ingress node (i.e., an
              explicit route source node) to select the exit point of a packet
              as any combination of an egress node, an egress interface, a
              peering neighbor, and a peering AS.</t>

              <t>The use cases and requirements for egress peer engineering
              are described in <xref
              target="SR-BGP-EPE"/>.</t>
            </section>

            <section anchor="LOADBALANCING"
                     title="Load Balancing among Non-parallel Links">
              <t>The SPRING architecture MUST allow a given node to load-share
              traffic across multiple non-parallel links (i.e., links
              connected to different adjacent routers), even if these lead to
              different neighbors. This may be useful for supporting traffic-engineering policies.</t>

              <figure align="center" anchor="NONPARALLELFIG"
                      title="Multiple (Non-parallel) Adjacencies">
                <artwork align="center">
          +---C---D---+
          |           |
PE1---A---B-----F-----E---PE2</artwork>
              </figure>

              <t>In the above example, the operator requires PE1 to
              load-balance its PE2-destined traffic between the ABCDE and ABFE
              equal-cost paths in a controlled way where the operator MUST be
              allowed to distribute traffic unevenly between paths (Weighted
              Equal-Cost Multipath (WECMP)).</t>
            </section>
          </section>

          <section anchor="TEBWAC"
                   title="Traffic Engineering with Bandwidth Admission Control">
            <t>The implementation of bandwidth admission control within a
            network (and its possible routing consequence, which consists in
            routing along explicit paths where the bandwidth is available)
            requires a capacity-planning process.</t>

            <t>The spreading of load among ECMP paths is a key attribute of
            the capacity-planning processes applied to packet-based
            networks.</t>

            <section anchor="CAPPLAN" title="Capacity-Planning Process">
              <t>Capacity planning anticipates the routing of the traffic
              matrix onto the network topology for a set of expected traffic
              and topology variations. The heart of the process consists in
              simulating the placement of the traffic along ECMP-aware
              shortest paths and accounting for the resulting bandwidth
              usage.</t>

              <t>The bandwidth accounting of a demand along its shortest path
              is a basic capability of any planning tool or PCE server.</t>

              <t>For example, in the network topology described below, and
              assuming a default IGP metric of 1 and IGP metric of 2 for link
              GF, a 1600 Mbps A-to-Z flow is accounted as consuming 1600 Mbps on
              links AB and FZ; 800 Mbps on links BC, BG, and GF; and 400 Mbps on
              links CD, DF, CE, and EF.</t>

              <figure align="center" anchor="CAPACITYFIG"
                      title="Capacity Planning an ECMP-Based Demand">
                <artwork align="center">       C-----D
     /  \     \
A---B    +--E--F--Z
     \        /
      G------+</artwork>
              </figure>

              <t>ECMP is extremely frequent in Service Provider (SP), enterprise, and data-center
              architectures and it is not rare to see as much as 128 different
              ECMP paths between a source and a destination within a single
              network domain. It is a key efficiency objective to spread the
              traffic among as many ECMP paths as possible.</t>

              <t>This is illustrated in the network diagram below, which
              consists of a subset of a network where already 5 ECMP paths are
              observed from A to M.</t>

              <figure align="center" anchor="ECMPFIG"
                      title="ECMP Topology Example">
                <artwork align="center">    C
   / \
  B-D-L--
 / \ /   \
A   E     \
 \         M
  \   G   /
   \ / \ /
    F   K
     \ /
      I</artwork>
              </figure>

              <t>When the capacity-planning process detects that a traffic
              growth scenario and topology variation would lead to congestion,
              a capacity increase is triggered, and if it cannot be deployed in
              due time, a traffic-engineering solution is activated within the
              network.</t>

              <t>A basic traffic-engineering objective consists of finding the
              smallest set of demands that need to be routed off their
              shortest path to eliminate the congestion, and then to compute an
              explicit path for each of them and instantiate these
              traffic-engineered policies in the network.</t>

              <t>The SPRING architecture MUST offer a simple support for
              ECMP-based shortest-path placement as well as for explicit path
              policy without incurring additional signaling in the domain.
              This includes:<list style="symbols">
                  <t>the ability to steer a packet across a set of ECMP
                  paths</t>

                  <t>the ability to diverge from a set of ECMP shortest paths
                  to one or more paths not in the set of shortest paths</t>
                </list></t>

              <t/>
            </section>

            <section anchor="SDN" title="SDN Use Case">
              <t>The SDN use case lies in the SDN controller, (e.g., Stateful
              PCE as described in <xref
              target="STATEFUL-PCE"/>).</t>

              <t>The SDN controller is responsible for controlling the evolution of
              the traffic matrix and topology. It accepts or denies the
              addition of new traffic into the network. It decides how to
              route the accepted traffic. It monitors the topology and, upon
              topological change, determines the minimum traffic that should
              be rerouted on an alternate path to alleviate a bandwidth
              congestion issue.</t>

              <t>The algorithms supporting this behavior are a local matter of
              the SDN controller and are outside the scope of this
              document.</t>

              <t>The means of collecting traffic and topology information are
              the same as what would be used with other SDN-based
              traffic-engineering solutions.</t>

              <t>The means of instantiating policy information at a
              traffic-engineering head-end are the same as what would be used
              with other SDN-based traffic-engineering solutions.</t>

              <t>In the context of centralized optimization and the SDN
              use case, the SPRING
              architecture MUST have the following attributes: <list style="symbols">
                  <t>Explicit routing capability with or without
                  ECMP-awareness.</t>

                  <t>No signaling hop-by-hop through the network.</t>

                  <t>The policy state is only maintained at the policy head-end.
                  No policy state is maintained at midpoints and
                  tail-ends.</t>

                  <t>Automated guaranteed FRR for any topology.</t>

                  <t>The policy state is in the packet header and not in the
                  intermediate nodes along the path. The policy is absent from
                  midpoints and tail-ends.</t>

                  <t>Highly responsive to change: The SDN Controller only
                  needs to apply a policy change at the head-end. No delay is
                  introduced due to programming the midpoints and tail-end
                  along the path.</t>
                </list></t>
            </section>
          </section>
        </section>
      </section>

      <section anchor="INTEROP" title="Interoperability with Non-SPRING Nodes">
        <t>SPRING nodes MUST interoperate with non-SPRING nodes and in both
        MPLS and IPv6 data planes in order to allow a gradual deployment of
        SPRING on existing MPLS and IPv6 networks.</t>
      </section>
    </section>

    <section anchor="SECURITY" title="Security Considerations">
      <t>SPRING reuses the concept of source routing by encoding the path in
      the packet. As with other similar source-routing architecture, an
      attacker may manipulate the traffic path by modifying the packet header. By
      manipulating the traffic path, an attacker may be able to cause outages on
      any part of the network.</t>

      <t>SPRING adds some metadata on the packet, with the list of forwarding
      path elements that the packet must traverse. Depending on the data
      plane, this list may shrink as the packet traverses the network, by keeping only the next elements and forgetting the past ones.</t>

      <t>SPRING architecture MUST provide clear trust domain boundaries so
      that source-routing information is only usable within the trusted domain
      and never exposed to the outside world.</t>

      <t>From a network protection standpoint, there is an assumed trust model
      such that any node imposing an explicit route on a packet is assumed to
      be allowed to do so. This is a significant change compared to plain IP
      offering the shortest-path routing, but not fundamentally different compared
      to existing techniques providing explicit routing capability. It is
      expected that, by default, the explicit routing information is not
      leaked through the boundaries of the administered domain.</t>

      <t>Therefore, the data plane MUST NOT expose any source-routing
      information when a packet leaves the trusted domain. Special care will
      be required for the existing data planes like MPLS, especially for the
      inter-provider scenario where a third-party provider may push MPLS
      labels corresponding to a SPRING header anywhere in the stack. The
      architecture document MUST analyze the exact security considerations of
      such a scenario.</t>

      <t>Filtering routing information is typically performed in the control
      plane, but an additional filtering in the forwarding plane is also
      required. In SPRING, as there is no control plane (related to source-routed paths) between the source and the midpoints, filtering in the
      control plane is not possible (or not required, depending on the point
      of view). Filtering MUST be performed on the forwarding plane on the
      boundaries and MAY require looking at multiple labels or instructions.</t>

      <t>For the MPLS data plane, this is not a new requirement as the existing
      MPLS architecture already allows such source routing by stacking multiple
      labels. For security protection, Section 2.4 of <xref target="RFC4381"/> and 
      Section 8.2 of <xref target="RFC5920"/> already call for the filtering of MPLS packets on trust
      boundaries.</t>

      <t>If all MPLS labels are filtered at domain boundaries, then SPRING
      does not introduce any change. If only a subset of labels are filtered,
      then SPRING introduces a change since the border router is expected to
      determine which information (e.g., labels) is filtered, while the border
      router is not the originator of these label advertisements.</t>

      <t>As the SPRING architecture must be based on a clear trust domain,
      mechanisms allowing the authentication and validation of the
      source-routing information must be evaluated by the SPRING architecture
      in order to prevent any form of attack or unwanted source-routing
      information manipulation.</t>

      <t>Data-plane security considerations MUST be addressed in each document
      related to the SPRING
      data plane (i.e., MPLS and IPv6).</t>

      <t>The IPv6 data plane proposes the use of a cryptographic signature of
      the source-routed path, which would ease this configuration. This is
      indeed needed more for the IPv6 data plane, which is end to end in
      nature, compared to the MPLS data plane, which is typically restricted to
      a controlled and trusted zone.</t>

      <t>In the forwarding plane, data-plane extension documents MUST address
      the security implications of the required change.</t>

      <t>In terms of privacy, SPRING does not propose change in terms of
      encryption. Each data plane may or may not provide existing or future
      encryption capability.</t>

      <t>To build the source-routing information in the packet, a
      node in the SPRING architecture will require learning information from a
      control layer. As this control layer will be in charge of programming
      forwarding instructions, an attacker taking over this component may also
      manipulate the traffic path. Any control protocol used in the SPRING
      architecture SHOULD provide security mechanisms or design to protect
      against such a control-layer attacker. Control-plane security
      considerations MUST be addressed in each document related to the SPRING control plane.</t>
    </section>

    <section anchor="Manageability" title="Manageability Considerations">
      <t>The SPRING WG MUST define Operations, Administration, and Maintenance (OAM) procedures
      applicable to SPRING-enabled networks.</t>

      <t>In SPRING networks, the path the packet takes is encoded in the
      header. SPRING architecture MUST include the necessary OAM mechanisms in
      order for the network operator to validate the effectiveness of a path
      as well as to check and monitor its liveness and performance. Moreover,
      in SPRING architecture, a path may be defined in the forwarding layer
      (in both MPLS and IPv6 data planes) or as a service path (formed by a set
      of service instances). The network operator MUST be capable to monitor,
      control, and manage paths (both network and service based) using OAM
      procedures.</t>

      <t>OAM use cases and requirements are detailed in <xref
      target="OAM-USE"/> and <xref
      target="SR-OAM"/>.</t>
    </section>


  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119.xml"?>

      <?rfc include="reference.RFC.2460.xml"?>

      <?rfc include="reference.RFC.4364.xml"?>

      <?rfc include="reference.RFC.4762.xml"?>

      <?rfc include="reference.RFC.4761.xml"?>

      <?rfc include="reference.RFC.6624.xml"?>
    </references>

    <references title="Informative References">

      <?rfc include="reference.RFC.4381.xml"?>
      <?rfc include="reference.RFC.5920.xml"?>

<!-- draft-ietf-6man-segment-routing-header: I-D Exists -->
<reference anchor="SRH">
<front>
<title>IPv6 Segment Routing Header (SRH)</title>

<author initials='S' surname='Previdi' fullname='Stefano Previdi'>
    <organization />
</author>

<author initials='C' surname='Filsfils' fullname='Clarence Filsfils'>
    <organization />
</author>

<author initials='B' surname='Field' fullname='Brian Field'>
    <organization />
</author>

<author initials='I' surname='Leung' fullname='Ida Leung'>
    <organization />
</author>

<author initials='J' surname='Linkova' fullname='J. Linkova'>
    <organization />
</author>

<author initials='T' surname='Kosugi' fullname='Tomoya Kosugi'>
    <organization />
</author>

<author initials='E' surname='Vyncke' fullname='Eric Vyncke'>
    <organization />
</author>

<author initials='D' surname='Lebrun' fullname='David Lebrun'>
    <organization />
</author>

<date month='March' day='18' year='2016' />

</front>
<seriesInfo name='Work in Progress,'
	    value='draft-ietf-6man-segment-routing-header-01' />
</reference>

<!-- draft-ietf-idr-add-paths: IESG Evaluation  --> 
<reference anchor="ADD-PATH">
<front>
<title>Advertisement of Multiple Paths in BGP</title>

<author initials='D' surname='Walton' fullname='Daniel Walton'>
    <organization />
</author>

<author initials='A' surname='Retana' fullname='Alvaro Retana'>
    <organization />
</author>

<author initials='E' surname='Chen' fullname='Enke Chen'>
    <organization />
</author>

<author initials='J' surname='Scudder' fullname='John Scudder'>
    <organization />
</author>

<date month='April' year='2016' />

</front>

<seriesInfo name='Work in Progress,' value='draft-ietf-idr-add-paths-14' />

</reference>

<reference anchor="STATEFUL-PCE">
<front>
<title>PCEP Extensions for Stateful PCE</title>

<author initials='E' surname='Crabbe' fullname='Edward Crabbe'>
    <organization />
</author>

<author initials='I' surname='Minei' fullname='Ina Minei'>
    <organization />
</author>

<author initials='J' surname='Medved' fullname='Jan Medved'>
    <organization />
</author>

<author initials='R' surname='Varga' fullname='Robert Varga'>
    <organization />
</author>

<date month='March' day='20' year='2016' />

</front>

<seriesInfo name='Work in Progress,' value='draft&nbhy;ietf-pce-stateful-pce-14' />

</reference>

<reference anchor="OAM-USE">
<front>
<title>A Scalable and Topology-Aware MPLS Dataplane Monitoring System</title>

<author initials='R' surname='Geib' fullname='Ruediger Geib' role='editor'>
    <organization />
</author>

<author initials='C' surname='Filsfils' fullname='Clarence Filsfils'>
    <organization />
</author>

<author initials='C' surname='Pignataro' fullname='Carlos Pignataro' role='editor'>
    <organization />
</author>

<author initials='N' surname='Kumar' fullname='Nagendra Kumar'>
    <organization />
</author>

<date month='April' year='2016' />

</front>

<seriesInfo name='Work in Progress,' value='draft-ietf-spring-oam-usecase-03' />

</reference>

<reference anchor="SPRING-RESIL">
<front>
<title>Use-cases for Resiliency in SPRING</title>

<author initials='P' surname='Francois' fullname='P. Francois'>
    <organization />
</author>

<author initials='C' surname='Filsfils' fullname='Clarence Filsfils'>
    <organization />
</author>

<author initials='B' surname='Decraene' fullname='Bruno Decraene'>
    <organization />
</author>

<author initials='R' surname='Shakir' fullname='Rob Shakir'>
    <organization />
</author>

<date month='April' day='6' year='2016' />

</front>

<seriesInfo name='Work in Progress,' value='draft-ietf-spring-resiliency-use-cases-03' />

</reference>

<reference anchor="SR-BGP-EPE">
<front>
<title>Segment Routing Centralized BGP Peer Engineering</title>

<author initials='C' surname='Filsfils' fullname='Clarence Filsfils' role='editor'>
    <organization />
</author>

<author initials='S' surname='Previdi' fullname='Stefano Previdi' role='editor'>
    <organization />
</author>

<author initials='D' surname='Ginsburg' fullname='Daniel Ginsburg'>
    <organization />
</author>

<author initials='D' surname='Afanasiev' fullname='Dmitry Afanasiev'>
    <organization />
</author>

<date month='March' day='21' year='2016' />

</front>

<seriesInfo name='Work in Progress,' value='draft-ietf-spring-segment-routing-central-epe-01' />
</reference>


<reference anchor="SR-OAM">
<front>
<title>OAM Requirements for Segment Routing Network</title>

<author initials='N' surname='Kumar' fullname='Nagendra Kumar'>
    <organization />
</author>

<author initials='C' surname='Pignataro' fullname='Carlos Pignataro'>
    <organization />
</author>

<author initials='N' surname='Akiya' fullname='Nobo Akiya'>
    <organization />
</author>

<author initials='R' surname='Geib' fullname='Ruediger Geib'>
    <organization />
</author>

<author initials='G' surname='Mirsky' fullname='Greg Mirsky'>
    <organization />
</author>

<author initials='S' surname='Litkowski' fullname='Stephane Litkowski'>
    <organization />
</author>

<date month='December' day='31' year='2015' />

</front>

<seriesInfo name='Work in Progress,' value='draft-ietf-spring-sr-oam-requirement-01' />

</reference>

    </references>

    <section anchor="Acknowledgements" title="Acknowledgements" numbered="no">
      <t>The authors would like to thank Yakov Rekhter for his contribution to
      this document.</t>
    </section>

    <section anchor="Contributors" title="Contributors" numbered="no">
      <t>The following individuals substantially contributed to the content of
      this document:<figure>
          <artwork>
Ruediger Geib
Deutsche Telekom
Heinrich Hertz Str. 3-7
Darmstadt  64295
Germany

Email: Ruediger.Geib@telekom.de</artwork>
        </figure><figure>
          <artwork>

Robert Raszuk
Mirantis Inc.
615 National Ave. 
94043 Mountain View, CA
United States

Email: robert@raszuk.net</artwork>
        </figure></t>
    </section>

  </back>


</rfc>
