<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc category="exp" ipr="trust200902" docName="draft-ietf-lisp-te-15">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>

<front>
  <title>LISP Traffic Engineering</title>

  <author fullname="Dino Farinacci" initials="D." surname="Farinacci">
    <organization>lispers.net</organization>
    <address>
      <postal>
      <street></street>
      <city>San Jose</city>
      <region>California</region>
      <code></code>
      <country>USA</country>
      </postal>
      <phone>408-718-2001</phone>
      <email>farinacci@gmail.com</email>
    </address>
  </author>

  <author initials='M' surname="Kowal" fullname='Michael Kowal'>
    <organization>cisco Systems</organization>
    <address>
      <postal>
      <street>111 Wood Avenue South</street>
      <city>ISELIN</city> <region>NJ</region> <code></code>
      <country>USA</country>
      </postal>
      <email>mikowal@cisco.com</email>
    </address>
  </author>

  <author initials='P' surname="Lahiri" fullname='Parantap Lahiri'>
    <organization></organization>
    <address>
      <postal>
      <street></street>
      <city></city> <region></region> <code></code>
      <country>USA</country>
      </postal>
      <email>parantap.lahiri@gmail.com</email>
    </address>
  </author>

  <date />
  <area>Intenet Area</area>
  <workgroup>Internet Engineering Task Force</workgroup>
  <keyword>template</keyword>

  <abstract>
    <t>This document describes how LISP re-encapsulating tunnels can be used
    for Traffic Engineering purposes. The mechanisms described in this 
    document require no LISP protocol changes but do introduce a new locator 
    (RLOC) encoding. The Traffic Engineering features provided by these
    LISP mechanisms can span intra-domain, inter-domain, or combination of
    both.</t>
  </abstract>
</front>

<middle>

  <section title="Requirements Language">
    <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
    NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
    "MAY", and "OPTIONAL" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119"/><xref
    target="RFC8174"/> when, and only when, they appear in all
    capitals, as shown here.</t>
  </section>

  <section title="Introduction">
    <t>This document describes extensions to the Locator/Identifier
    Separation Protocol (LISP) for traffic engineering features.</t>

    <t>When LISP routers encapsulate packets to other LISP routers, the 
    path stretch is typically 1, meaning the packet travels on a direct path
    from the encapsulating ITR to the decapsulating ETR at the destination
    site. The direct path is determined by the underlying routing protocol
    and metrics it uses to find the shortest path.</t>

    <t>This specification will examine how re-encapsulating tunnels
    <xref target="RFC9300" /> can be used so a packet can take an
    administratively specified path, a congestion avoidance path, a
    failure recovery path, or multiple load-shared paths, as it
    travels from ITR to ETR. By introducing an Explicit Locator Path
    (ELP) locator encoding <xref target="RFC8060" />, an ITR can
    encapsulate a packet to a Re-Encapsulating Tunnel Router (RTR)
    which decapsulates the packet, then encapsulates it to the next
    locator in the ELP.</t>

  </section>

  <section title="Definition of Terms">
    <t>Refer to <xref target="RFC9300"/> for authoritative definitions for terms EID, RLOC, RTR,
    and Recursive Tunneling. The other terms defined in this section add to the canonical
    definition to reflect the design considerations in this specification.</t>

    <t><list style="hanging">
      <t hangText="Explicit Locator Path (ELP): ">The ELP is an
      explicit list of RLOCs for each RTR a packet must travel to
      along its path toward a final destination ETR (or PETR). The
      list is a strict ordering where each RLOC in the list is
      visited. However, the path from one RTR to another is determined
      by the underlying routing protocol and how the infrastructure
      assigns metrics and policies for the path.</t>

      <t hangText="Re-Encapsulating Tunnel Router (RTR): ">An RTR is a
      router that acts as an ETR (or PETR) by decapsulating packets
      where the destination address in the "outer" IP header is one of
      its own RLOCs.  Then acts as an ITR (or PITR) by making a
      decision where to encapsulate the packet based on the next
      locator in the ELP towards the final destination ETR.</t>
    </list></t>
  </section>

  <section title="Overview">
    <t>Typically, a packet's path from source EID to destination EID travels
    through the locator core via the encapsulating ITR directly to the 
    decapsulating ETR as the following diagram illustrates:</t>

    <t>Legend:</t>
      <t><list style="hanging">
        <t hangText="seid:">Packet is originated by source EID 'seid'.</t>
        <t hangText="deid:">Packet is consumed by destination EID 'deid'.</t>
        <t hangText="A,B,C,D :">Core routers in different ASes.</t>
        <t hangText="---> :">The physical topological path between two
        routers.</t>
        <t hangText="===> :">A multi-hop LISP dynamic tunnel between LISP 
        routers.</t>
      </list></t>

      <figure align="center">
        <name>Typical Data Path from ITR to ETR</name>
        <preamble></preamble>

        <artwork align="left"><![CDATA[
                           Core Network
Source site       (----------------------------)    Destination Site
+--------+        (                            )         +---------+
|         \       (                            )        /          |
| seid     ITR ---(---> A --> B --> C --> D ---)---> ETR      deid |
|         / ||    (                            )     ^^ \          |
+--------+  ||    (                            )     ||  +---------+
            ||    (----------------------------)     ||
            ||                                       ||
            ===========================================
                             LISP Tunnel

            ]]></artwork>

        <postamble></postamble>
      </figure>

      <t>Let's introduce RTRs 'X' and 'Y' so that, for example, if it
      is desirable to route around the path from B to C, one could
      provide an ELP of (X,Y,etr):</t>

      <figure align="center">
        <name>ELP tunnel path ITR ==> X, then X ==> Y, and then Y ==> ETR</name>
        <preamble></preamble>

        <artwork align="left"><![CDATA[
                           Core Network
Source site       (----------------------------)    Destination Site
+--------+        (                            )         +---------+
|         \       (                            )        /          |
| seid     ITR ---(---> A --> B --> C --> D ---)---> ETR      deid |
|         / ||    (          /      ^          )     ^^ \          |
|        /  ||    (         |        \         )     ||  \         |
+-------+   ||    (         v         |        )     ||   +--------+
            ||    (         X ======> Y        )     ||  
            ||    (        ^^         ||       )     ||
            ||    (--------||---------||-------)     ||
            ||             ||         ||             ||
            =================         =================
              LISP Tunnel                 LISP Tunnel

            ]]></artwork>

        <postamble></postamble>
      </figure>

      <t>There are various reasons why the path from 'seid' to 'deid'
      may want to avoid the path from B to C. To list a few:</t>

      <t><list style="symbols">
        <t>There may not be sufficient capacity provided by the networks
        that connect B and C together.</t>
        <t>There may be a policy reason to avoid the ASes that make up the
        path between B and C.</t>
	<t>There may be a failure on the path between B and C which makes
        the path unreliable.</t>
        <t>There may be monitoring or traffic inspection resources close to RTRs
        X and Y that do network accounting or measurement.</t>
        <t>There may be a chain of services performed at RTRs X and Y regardless
        if the path from ITR to ETR is through B and C.</t>
      </list></t>

  </section>
  
  <section title="Explicit Locator Paths">
    <t>The notation for a general formatted ELP is (x, y, etr) which represents
    the list of RTRs a packet SHOULD travel through to reach the final tunnel
    hop to the ETR.</t>

    <t>The procedure for using an ELP at each tunnel hop is as follows:</t>

    <t><list style="numbers">
      <t>The ITR will retrieve the ELP from the mapping database.</t>
      <t>The ITR will encapsulate the packet to RLOC 'x'.</t>
      <t>The RTR with RLOC 'x' will decapsulate the packet. It will use the
      decapsulated packet's destination address as a lookup into the 
      mapping database to retrieve the ELP.</t>
      <t>RTR 'x' will encapsulate the packet to RTR with RLOC 'y'.</t>
      <t>The RTR with RLOC 'y' will decapsulate the packet. It will use the
      decapsulated packet's destination address as a lookup into the 
      mapping database to retrieve the ELP.</t>
      <t>RTR 'y' will encapsulate the packet on the final tunnel hop to ETR 
      with RLOC 'etr'.</t>
      <t>The ETR will decapsulate the packet and deliver the packet to the
      EID inside of its site.</t>
    </list></t>

    <t>The specific encoding format for the ELP can be found in
    <xref target="RFC8060" />.  It is defined that an ELP will
    appear as a single encoded locator in a locator-set. Say for
    instance, we have a mapping entry for EID-prefix 10.0.0.0/8 that
    is reachable via 4 locators. Two locators are being used as
    active/active and the other two are used as active/active if the
    first two go unreachable (as noted by the priority assignments
    below). This is what the mapping entry would look like:</t>

    <figure align="center">
      <preamble></preamble>
      <artwork align="left"><![CDATA[
EID-prefix:   10.0.0.0/8
Locator-set:  ETR-A: priority 1, weight 50
              ETR-B: priority 1, weight 50
              ETR-C: priority 2, weight 50
              ETR-D: priority 2, weight 50
            ]]></artwork>
      <postamble></postamble>
    </figure>

    <t>If an ELP is going to be used to have a policy path to ETR-A and
    possibly another policy path to ETR-B, the locator-set would be encoded
    as follows:</t>

    <figure align="center">
      <preamble></preamble>
      <artwork align="left"><![CDATA[
EID-prefix:   10.0.0.0/8
Locator-set:  (x, y, ETR-A): priority 1, weight 50
              (q, r, ETR-B): priority 1, weight 50
              ETR-C:         priority 2, weight 50
              ETR-D:         priority 2, weight 50
            ]]></artwork>
      <postamble></postamble>
    </figure>

    <t>The mapping entry with ELP locators is registered to the
    mapping database system just like any other mapping entry
    would. The registration is typically performed by the ETR(s) that
    are assigned and own the EID-prefix.  That is, the destination
    site makes the choice of the RTRs in the ELP.  Alternatively, it may be
    common practice for a provisioning system to program the mapping
    database with ELPs.</t>

    <t>Another case where a locator-set can be used for flow-based load-sharing
    across multiple paths to the same destination site:</t>

    <figure align="center">
      <preamble></preamble>
      <artwork align="left"><![CDATA[
EID-prefix:   10.0.0.0/8
Locator-set:  (x, y, ETR-A): priority 1, weight 75
              (q, r, ETR-A): priority 1, weight 25
            ]]></artwork>
      <postamble></postamble>
    </figure>

    <t>Using this mapping entry, an ITR would load split 75% of the EID flows
    on the (x, y, ETR-A) ELP path and 25% of the EID flows on the (q, r, ETR-A)
    ELP path. If any of the ELPs go down, then the other can take 100% of the
    load.</t>

    <section title="ELP Re-optimization">
      <t>ELP re-optimization is a process of changing the RLOCs of an ELP
      due to underlying network change conditions. Just like when
      there is any locator change for a locator-set, the procedures from
      the main LISP specification <xref target="RFC9300" /> are followed.</t>
  
      <t>When a RLOC from an ELP is changed, Map-Notify messages 
      <xref target="RFC9301" /> can be used
      to inform the existing RTRs in the ELP so they can do a lookup to 
      obtain the latest version of the ELP. Map-Notify messages can also
      be sent to new RTRs in an ELP so they can get the ELP in advance
      to receiving packets that will use the ELP. This can minimize packet
      loss during mapping database lookups in RTRs.</t>
    </section>
  
    <section title="Using Recursion">
      <t>In the previous examples, we showed how an ITR encapsulates
      using an ELP of (x, y, etr). When a packet is encapsulated by
      the ITR to RTR 'x', the RTR may want a policy path to RTR 'y'
      and run another level of re-encapsulating tunnels for packets
      destined to RTR 'y'. In this case, RTR 'x' does not encapsulate
      packets to 'y' but rather performs a mapping database lookup on
      the address 'y', requests the ELP for RTR 'y', and encapsulates
      packets to the first-hop of the returned ELP. This can be done
      when using a public or private mapping database. The decision to
      use address 'y' as an encapsulation address versus a lookup
      address is based on the L-bit setting for 'y' in the ELP
      entry. The decision and policy of ELP encodings are local to the
      entity which registers the EID-prefix associated with the
      ELP.</t>

      <t>Another example of recursion is when the ITR uses the ELP (x,
      y, etr) to first prepend a header with a destination RLOC of the
      ETR and then prepend another header and encapsulate the packet
      to RTR 'x'. When RTR 'x' decapsulates the packet, rather than
      doing a mapping database lookup on RTR 'y' the last example
      showed, instead RTR 'x' does a mapping database lookup on ETR
      'etr'. In this scenario, RTR 'x' can choose an ELP from the
      locator-set by considering the source RLOC address of the ITR
      versus considering the source EID.</t>
  
      <t>This additional level of recursion also brings advantages for
      the provider of RTR 'x' to store less state. Since RTR 'x' does
      not need to look at the inner most header, it does not need to
      store EID state.  It only stores an entry for RTR 'y' which many
      EID flows could share for scaling benefits. The locator-set for
      entry 'y' could either be a list of typical locators, a list of
      ELPs, or combination of both.  Another advantage is that packet
      load-splitting can be accomplished by examining the source of a
      packet. If the source is an ITR versus the source being the
      last-hop of an ELP the last-hop selected, different forwarding
      paths can be used.</t>
    </section>
  
    <section title="ELP Selection based on Class of Service">
        <t>Paths to an ETR may want to be selected based on different
        classes of service. Packets from a set of sources that have
        premium service can use ELP paths that are less congested
        where normal sources use ELP paths that compete for less
        resources or use longer paths for best effort service.</t>

	<t>Using source/destination lookups into the mapping database
        can yield different ELPs. For example, a premium service
        flow with (source=1.1.1.1, dest=10.1.1.1) can be described by
        using the following mapping entry:</t>
     
    <figure align="center">
      <preamble></preamble>
      <artwork align="left"><![CDATA[
EID-prefix:   (1.0.0.0/8, 10.0.0.0/8)
Locator-set:  (x, y, ETR-A): priority 1, weight 50
              (q, r, ETR-A): priority 1, weight 50
            ]]></artwork>
      <postamble></postamble>
    </figure>

    <t>And all other best-effort sources would use different mapping entry
    described by:</t>

    <figure align="center">
      <preamble></preamble>
      <artwork align="left"><![CDATA[
EID-prefix:   (0.0.0.0/0, 10.0.0.0/8)
Locator-set:  (x, x', y, y', ETR-A): priority 1, weight 50
              (q, q', r, r', ETR-A): priority 1, weight 50
            ]]></artwork>
      <postamble></postamble>
    </figure>

    <t>If the source/destination lookup is coupled with recursive
    lookups, then an ITR can encapsulate to the ETR, prepending a
    header that selects source address ITR-1 based on the premium
    class of service source, or selects source address ITR-2 for
    best-effort sources with normal class of service. The ITR then
    does another lookup in the mapping database on the prepended header
    using lookup key (source=ITR-1, dest=10.1.1.1) that returns the
    following mapping entry:</t>

    <figure align="center">
      <preamble></preamble>
      <artwork align="left"><![CDATA[
EID-prefix:   (ITR-1, 10.0.0.0/8)
Locator-set:  (x, y, ETR-A): priority 1, weight 50
              (q, r, ETR-A): priority 1, weight 50
            ]]></artwork>
      <postamble></postamble>
    </figure>

    <t>And all other sources would use different mapping entry with a lookup
    key of (source=ITR-2, dest=10.1.1.1):</t>

    <figure align="center">
      <preamble></preamble>
      <artwork align="left"><![CDATA[
EID-prefix:   (ITR-2, 10.0.0.0/8)
Locator-set:  (x, x', y, y', ETR-A): priority 1, weight 50
              (q, q', r, r', ETR-A): priority 1, weight 50
            ]]></artwork>
      <postamble></postamble>
    </figure>

    <t>This will scale the mapping system better by having fewer
    source/destination combinations. Refer to the Source/Dest LCAF
    type described in <xref target="RFC8060" /> for encoding EIDs
    in Map-Request and Map-Register messages.</t>

    </section>

    <section title="Packet Loop Avoidance">
      <t>An ELP that is first used by an ITR must be inspected for
      encoding loops. If any RLOC appears twice in the ELP, it MUST
      not be used.</t>
  
      <t>Since it is expected that multiple mapping systems will be
      used, there can be a loop across ELPs when registered in
      different mapping systems. The TTL copying procedures for
      re-encapsulating tunnels and recursive tunnels in
      <xref target="RFC9300" /> MUST be followed.</t>
    </section>
  </section>

  <section title="Service Chaining">
    <t>An ELP can be used to deploy services at each reencapsulation
    point in the network. One example is to implement a honey-pot
    service when a destination EID is being DoS attacked. That is,
    when a DoS attack is recognized when the encapsulation path is
    between ITR and ETR, an ELP can be registered for a destination
    EID to the mapping database system. The ELP can include an RTR so
    the ITR can encapsulate packets to the RTR which will decapsulate
    and deliver packets to a scrubber service device. The scrubber
    could decide if the offending packets are dropped or allowed to be sent 
    to the destination EID. In which case, the scurbber delivers packets 
    back to the RTR which encapsulates to the ETR.</t>
  </section>

  <section title="RLOC Probing by RTRs">
    <t>Since an RTR knows the next tunnel hop to encapsulate to, it can monitor
    the reachability of the next-hop RTR RLOC by doing RLOC-probing according
    to the procedures in <xref target="RFC9300" />. When the RLOC is determined
    unreachable by the RLOC-probing mechanisms, the RTR can use another
    locator in the locator-set. That could be the final ETR, a RLOC of another
    RTR, or an ELP where it must search for itself and use the next RLOC in
    the ELP list to encapsulate to.</t>

    <t>RLOC-probing can also be used to measure delay on the path between
    RTRs and when it is desirable switch to another lower delay ELP.</t>
  </section>

  <section title="ELP Probing">
    <t>Since an ELP-node knows the reachabiliy of the next ELP-node in
    a ELP by using RLOC probing, the sum of reachability can determine
    the reachability of the entire path. A head-end ITR/RTR/PITR can
    determine the quality of a path and decide to select one path from
    another based on the telemetry data gathered by RLOC-probing for
    each encapsulation hop.</t>

    <t>ELP-probing mechanism details can be found in <xref
    target="I-D.filyurin-lisp-elp-probing"/>.</t>
  </section>

  <section title="Interworking Considerations">
    <t><xref target="RFC6832" /> defines procedures for how non-LISP sites
    talk to LISP sites. The network elements defined in the Interworking 
    specification, the proxy ITR (PITR) and proxy ETR (PETR) (as well as
    their multicast counterparts defined in <xref target="RFC6831" />) can
    participate in LISP-TE. That is, a PITR and a PETR can appear in an
    ELP list and act as an RTR.</t>

    <t>Note when an RLOC appears in an ELP, it can be of any address-family.
    There can be a mix of IPv4 and IPv6 locators present in the same ELP.
    This can provide benefits where islands of one address-family or the
    other are supported and connectivity across them is necessary. 
    For instance, an ELP can look like:</t>

    <t>(x4, a46, b64, y4, etr)</t>

    <t>Where an IPv4 ITR will encapsulate using an IPv4 RLOC 'x4' and 'x4'
    could reach an IPv4 RLOC 'a46', but RTR 'a46' encapsulates to an IPv6
    RLOC 'b64' when the network between them is IPv6-only. Then RTR 'b64' 
    encapsulates to IPv4 RLOC 'y4' if the network between them is 
    dual-stack. </t>

    <t>Note that RTRs can be used for NAT-traversal scenarios <xref
    target="I-D.ermagan-lisp-nat-traversal" /> as well to reduce the
    state in both an xTR that resides behind a NAT and the state the
    NAT needs to maintain. In this case, the xTR only needs a default
    map-cache entry pointing to the RTR for outbound traffic and all
    remote ITRs can reach EIDs through the xTR behind a NAT via a
    single RTR (or a small set RTRs for redundancy).
    </t>

    <t>RTRs have some scaling features to reduce the number of 
    locator-set changes, the amount of state, and control packet overhead:</t>

    <t><list style="symbols">
      <t>When ITRs and PITRs are using a small set of RTRs for
      encapsulating to "orders of magnitude" more EID-prefixes, the
      probability of locator-set changes are limited to the RTR RLOC
      changes versus the RLOC changes for the ETRs associated with the
      EID-prefixes if the ITRs and PITRs were directly encapsulating
      to the ETRs. This comes at an expense in packet stretch, but
      depending on RTR placement, this expense can be mitigated.</t>

      <t>When RTRs are on-path between many pairwise EID flows, ITRs and PITRs
      can store a small number of coarse EID-prefixes.</t>

      <t>RTRs can be used to help scale RLOC-probing. Instead of ITRs 
      RLOC-probing all ETRs for each destination site it has cached, the ITRs
      can probe a smaller set of RTRs which in turn, probe the destination
      sites.</t>
    </list></t> 

  </section>

  <section title="Multicast Considerations">
    <t>ELPs have application in multicast environments. Just like RTRs can
    be used to provide connectivity across different address family islands,
    RTRs can help concatenate a multicast region of the network to one that
    does not support native multicast.</t>

    <t>Note there are various combinations of connectivity that can be
    accomplished with the deployment of RTRs and ELPs:</t>

    <t><list style="symbols">
      <t>Providing multicast forwarding between IPv4-only-unicast regions
      and IPv4-multicast regions.</t>

      <t>Providing multicast forwarding between IPv6-only-unicast regions
      and IPv6-multicast regions.</t>

      <t>Providing multicast forwarding between IPv4-only-unicast regions
      and IPv6-multicast regions.</t>

      <t>Providing multicast forwarding between IPv6-only-unicast regions
      and IPv4-multicast regions.</t>

      <t>Providing multicast forwarding between IPv4-multicast regions
      and IPv6-multicast regions.</t>
    </list></t> 

    <t>An ITR or PITR can do a (S-EID,G) lookup into the mapping database. What
    can be returned is a typical locator-set that could be made up of 
    the various RLOC addresses:</t>

    <figure align="center">
      <name>An entry for host 'S-EID' sending to application group 'G'</name>
      <preamble></preamble>
      <artwork align="left"><![CDATA[
Multicast EID key:  (S-EID, G)   
Locator-set:        ETR-A: priority 1, weight 25
                    ETR-B: priority 1, weight 25
                    g1:    priority 1, weight 25
                    g2:    priority 1, weight 25
            ]]></artwork>
      <postamble></postamble>
    </figure>

    <t>The locator-set above can be used as a replication list. That is some
    RLOCs listed can be unicast RLOCs and some can be delivery group RLOCs.
    A unicast RLOC in this case is used to encapsulate a multicast packet
    originated by a multicast source EID into a unicast packet for unicast   
    delivery on the underlying network. ETR-A could be an IPv4 unicast   
    RLOC address and ETR-B could be a IPv6 unicast RLOC address.</t> 

    <t>A delivery group address is used when a multicast packet
    originated by a multicast source EID is encapsulated in a
    multicast packet for multicast delivery on the underlying network. Group
    address 'g1' could be an IPv4 delivery group RLOC and group address
    'g2' could be an IPv6 delivery group RLOC.</t>

    <t>Flexibility for these various types of connectivity
    combinations can be achieved and provided by the mapping database
    system. And the RTR placement allows the connectivity to occur
    where the differences in network functionality is located.</t>

    <t>Extending this concept by allowing ELPs in locator-sets, one could
    have this locator-set registered in the mapping database for (S-EID, G).
    For example:</t>

    <figure align="center">
      <name>Using ELPs for multicast flows</name>
      <preamble></preamble>
      <artwork align="left"><![CDATA[
Multicast EID key:  (S-EID, G)   
Locator-set:        (x, y, ETR-A):    priority 1, weight 50
                    (a, g, b, ETR-B): priority 1, weight 50
            ]]></artwork>
      <postamble></postamble>
    </figure>

    <t>In the above situation, an ITR would encapsulate a multicast
    packet originated by a multicast source EID to the RTR with unicast
    RLOC 'x'. Then RTR 'x' would decapsulate and unicast encapsulate
    to RTR 'y' ('x' or 'y' could be either IPv4 or IPv6 unicast RLOCs),
    which would decapsulate and unicast encapsulate to the final RLOC
    'ETR-A'. The ETR 'ETR-A' would decapsulate and deliver the
    multicast packet natively to all the receivers joined to application
    group 'G' inside the LISP site.</t>

    <t>Let's look at the ITR using the ELP (a, g, b, ETR-B). Here the
    encapsulation path would be the ITR unicast encapsulates to
    unicast RLOC 'a'.  RTR 'a' multicast encapsulates to delivery
    group 'g'. The packet gets to all ETRs that have joined delivery
    group 'g' so they can deliver the multicast packet to joined
    receivers of application group 'G' in their sites.  RTR 'b' is
    also joined to delivery group 'g'. Since it is in the ELP, it will
    be the only RTR that unicast encapsulates the multicast packet to
    ETR 'ETR-B'. Lastly, 'ETR-B' decapsulates and delivers the multicast
    packet to joined receivers to application group 'G' in its LISP site.</t>

    <t>As one can see there are all sorts of opportunities to provide multicast
    connectivity across a network with non-congruent support for multicast
    and different address-families. One can also see how using the mapping
    database can allow flexible forms of delivery policy, rerouting, and
    congestion control management in multicast environments.</t>
  </section>

  <section title="Security Considerations">
    <t>When an RTR receives a LISP encapsulated packet, it can look at
    the outer source address to verify that RLOC is the one listed as
    the previous hop in the ELP list. If the outer source RLOC address
    appears before the RLOC which matches the outer destination RLOC
    address, the decapsulating RTR (or ETR if last hop), MAY choose to
    drop the packet.</t>
  </section>

  <section title="IANA Considerations">
    <t>This document does not make any request to IANA.</t>
  </section>

</middle>
<back>

  <references title="Normative References">
      <?rfc include="reference.RFC.2119'?>
      <?rfc include="reference.RFC.8174'?>
      <?rfc include="reference.RFC.1034'?>
      <?rfc include="reference.RFC.3261'?>
      <?rfc include="reference.RFC.0791'?>
      <?rfc include="reference.RFC.2460'?>
      <?rfc include="reference.RFC.9300'?>
      <?rfc include="reference.RFC.9301'?>
      <?rfc include="reference.RFC.6831'?>
      <?rfc include="reference.RFC.6832'?>
      <?rfc include="reference.RFC.8060'?>
  </references>

  <references title="Informative References">
    <?rfc include='http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ermagan-lisp-nat-traversal.xml'?>
    <?rfc include='http://xml.resource.org/public/rfc/bibxml3/reference.I-D.filyurin-lisp-elp-probing.xml'?>
  </references>

  <section title="Acknowledgments">
    <t>The authors would like to thank the following people for their
    ideas and comments. They are Albert Cabellos, Khalid Raza, and Vina
    Ermagan, Gregg Schudel, Yan Filyurin, Robert Raszuk, and Truman Boyes.</t>
  </section>

  <section title="Document Change Log">

    <section title="Changes to draft-ietf-lisp-te-15">
      <t><list style="symbols"> 
        <t>Posted April 2024.</t>
        <t>Made changes to reflect comments from Luigi as we ready
        document for standards track.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-14">
      <t><list style="symbols"> 
        <t>Posted February 2024.</t>
        <t>Update references and document timer.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-13">
      <t><list style="symbols"> 
        <t>Posted August 2023.</t>
        <t>Update references (to proposed standard documents) and document timer.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-12">
      <t><list style="symbols"> 
        <t>Posted March 2023.</t>
        <t>Update references (to propsed standard documents) and document timer.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-11">
      <t><list style="symbols">
        <t>Posted September 2022.</t>
        <t>Update document timer and references.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-10">
      <t><list style="symbols">
        <t>Posted March 2022.</t>
        <t>Update document timer and references.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-09">
      <t><list style="symbols">
        <t>Posted September 2021.</t>
        <t>Update document timer and references.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-08">
      <t><list style="symbols">
        <t>Posted March 2021.</t>
        <t>Update document timer and references.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-07">
      <t><list style="symbols">
        <t>Posted October 2020.</t>
        <t>Update document timer and references.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-06">
      <t><list style="symbols">
        <t>Posted April 2020.</t>
        <t>Update document timer and references.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-05">
      <t><list style="symbols">
        <t>Posted October 2019.</t>
        <t>Update document timer and references.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-04">
      <t><list style="symbols">
        <t>Posted April 2019.</t>
        <t>Update document timer and references.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-03">
      <t><list style="symbols">
        <t>Posted October 2018.</t>
        <t>Update document timer and references.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-02">
      <t><list style="symbols">
        <t>Posted April 2018.</t>
        <t>Update document timer and references.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-01">
      <t><list style="symbols">
       <t>Posted October 2017.</t>
       <t>Added section on ELP-probing that tells an ITR/RTR/PITR the
       feasibility and reachability of an Explicit Lcoator Path.</t>
      </list></t>
    </section>

    <section title="Changes to draft-ietf-lisp-te-00">
      <t><list style="symbols">
       <t>Posted April 2017.</t>
       <t>Changed draft-farinacci-lisp-te-12 to working group document.</t>
      </list></t>
    </section>

    <section title="Changes to draft-farinacci-lisp-te-02 through -12">
      <t><list style="symbols">
	<t>Many postings from January 2013 through February 2017.</t>
        <t>Update references and document timer.</t>
      </list></t>
    </section>

    <section title="Changes to draft-farinacci-lisp-te-01.txt">
      <t><list style="symbols">
        <t>Posted July 2012.</t>
	<t>Add the Lookup bit to allow an ELP to be a list of encapsulation
        and/or mapping database lookup addresses.</t>
	<t>Indicate that ELPs can be used for service chaining.</t>
	<t>Add text to indicate that Map-Notify messages can be sent to new
        RTRs in a ELP so their map-caches can be pre-populated to avoid mapping
        database lookup packet loss.</t>
        <t>Fixes to editorial comments from Gregg.</t>
      </list></t>
    </section>

    <section title="Changes to draft-farinacci-lisp-te-00.txt">
      <t><list style="symbols">
        <t>Initial draft posted March 2012.</t>
      </list></t>
    </section>

  </section>
</back>
</rfc>
