<?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 category="std" ipr="trust200902" docName="draft-farinacci-lisp-rfc8378bis-00"
     obsoletes="8378">

  <front>
    <title abbrev="Signal-Free LISP Multicast">Signal-Free Locator/ID Separation Protocol (LISP)
    Multicast</title>

    <author fullname="Victor Moreno" initials="V" surname="Moreno">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Pkwy</street>
          <code>94043</code>
          <city>Mountain View</city>
          <region>CA</region>
          <country>USA</country>
        </postal>
        <email>vimoreno@google.com</email>
      </address>
    </author>

    <author fullname="Dino Farinacci" initials="D" surname="Farinacci">
      <organization>lispers.net</organization>
      <address>
        <postal>
          <street/>
          <city>San Jose</city>
          <code>95120</code>
          <region>CA</region>
          <country>United States of America</country>
        </postal>
        <email>farinacci@gmail.com</email>
      </address>
    </author>

    <area>Internet</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>LISP; deployment</keyword>

    <abstract>
      <t>This document describes the design for inter-domain multicast
      overlays using the Locator/ID Separation Protocol (LISP)
      architecture and protocols.  The document specifies how LISP
      multicast overlays operate over a unicast underlays.</t>

      <t>When multicast sources and receivers are active at Locator/ID
      Separation Protocol (LISP) sites, the core network is required
      to use native multicast so packets can be delivered from sources
      to group members. When multicast is not available to connect the
      multicast sites together, a signal-free mechanism can be used to
      allow traffic to flow between sites. The mechanism within here
      uses unicast replication and encapsulation over the core network
      for the data plane and uses the LISP mapping database system so
      encapsulators at the source LISP multicast site can find
      decapsulators at the receiver LISP multicast sites.</t>
    </abstract>

    
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>When multicast sources and receivers are active at LISP sites, and
      the core network between the sites does not provide multicast support, a
      signal-free mechanism can be used to create an overlay that will allow
      multicast traffic to flow between sites and connect the multicast trees
      at the different sites.</t>

      <t>The signal-free mechanism proposed here does not extend PIM
      <xref target="RFC7761"/> over the overlay as proposed in <xref
      target="I-D.farinacci-lisp-rfc6831bis"/>, nor does the mechanism utilize direct
      signaling between the Receiver-ETRs and Sender-ITRs as described
      in <xref target="LISP-MULTI-SIGNALING"/>. The
      signal-free mechanism proposed reduces the amount of signaling
      required between sites to a minimum and is centered around the
      registration of receiver sites for a particular multicast group
      or multicast channel with the LISP mapping system.</t>

      <t>Registrations from the different receiver sites will be merged at the
      mapping system to assemble a multicast-replication-list inclusive of all
      Routing Locators (RLOCs) that lead to receivers for a particular multicast group or
      multicast channel. The replication list for each specific
      multicast entry is maintained as a database mapping entry in the
      LISP mapping system.</t>

      <t>When the Ingress Tunnel Router (ITR) at the source site receives multicast traffic from
      sources at its site, the ITR can query the mapping system by issuing
      Map-Request messages for the (S,G) source and destination addresses in
      the packets received. The mapping system will return the RLOC
      replication list to the ITR, which the ITR will cache as per standard
      LISP procedure. 
Since the core is assumed to not support multicast, the
      ITR will replicate the multicast traffic for each RLOC on the
      replication list and will unicast encapsulate the traffic to each RLOC.
      The combined function or replicating and encapsulating the traffic to
      the RLOCs in the replication list is referred to as "rep-encapsulation"
      in this document.</t>

      <t>The document describes general procedures (<xref
      target="GP"/>) and information encoding that are required at the
      receiver sites and source sites to achieve signal-free multicast
      interconnectivity. The general procedures for mapping system
      notifications to different sites are also described.  A section
      dedicated to the specific case of Source-Specific Multicast (SSM) trees discusses the
      implications to the general procedures for SSM multicast trees
      over different topological scenarios. A section on Any-Source Multicast (ASM) support
      is included to identify the constraints that come along with
      supporting it using LISP signal-free multicast.</t>

      <t>There is a section dedicated to Replication Engineering, which is a
      mechanism to reduce the impact of head-end replication. The
      mapping system, via LISP signal-free mechanisms, can be used to
      build a layer of Re-encapsulating Tunnel Routers (RTRs).</t>

    </section>

    <section anchor="terms" title="Definition of Terms">
      <t>LISP-related terms, notably Map-Request, Map-Reply, Ingress Tunnel
      Router (ITR), Egress Tunnel Router (ETR), Map-Server (MS), and
      Map&nbhy;Resolver (MR) are defined in the LISP specification <xref
      target="RFC9300"/>.</t>

      <t>Extensions to the definitions in <xref target="RFC9300"/> for their
      application to multicast routing are documented in <xref
      target="I-D.farinacci-lisp-rfc6831bis"/>.</t>

      <t>Terms defining interactions with the LISP mapping system are
      defined in <xref target="RFC9301"/>.</t>

      <t>The following terms are consistent with the definitions in <xref
      target="RFC9300"/> and <xref target="I-D.farinacci-lisp-rfc6831bis"/>. The terms are specific
      cases of the general terms and are defined here to facilitate the
      descriptions and discussions within this particular document.</t>

      <t>Source: Multicast source endpoint. The host that originates multicast
      packets.</t>

      <t>Receiver: Multicast group member endpoint. The host joins a multicast
      group as a receiver of multicast packets sent to the group.</t>

      <t>Receiver site: LISP site where multicast receivers are located.</t>

      <t>Source site: LISP site where multicast sources are located.</t>

      <t>RP site: LISP site where an ASM PIM Rendezvous Point (RP) <xref
      target="RFC7761"/> is located. The RP site and the source site
      MAY be the same in some situations.</t>

      <t>Receiver-ETR: LISP decapsulating the Tunnel Router (xTR) at the
      receiver site. This is a multicast ETR.</t>

      <t>Source-ITR: LISP encapsulating xTR at the source site. This
      is a multicast ITR.</t>

      <t>RP-xTR: LISP xTR at the RP site. This is typically a multicast
      ITR.</t>

      <t>Replication list: Mapping-entry containing the list of RLOCs that
      have registered receivers for a particular multicast entry.</t>

      <t>Multicast entry: A tuple identifying a multicast tree.
      Multicast entries are in the form of (S-prefix, G-prefix).</t>

      <t>Rep-encapsulation: The process of replicating and then encapsulating
      traffic to multiple RLOCs.</t>

      <t>Re-encapsulating Tunnel Router (RTR): An RTR is a router that
      implements the re-encapsulating tunnel function detailed in
      Section 8 of the main LISP specification <xref
      target="RFC9300"/>. A LISP RTR performs packet re-routing by
      chaining ETR and ITR functions, whereby it first removes the
      LISP header of an ingress packet and then prepends a new LISP
      header to an egress packet.</t>

      <t>RTR Level: An RTR level is encoded in a Replication List Entry
      (RLE) LISP Canonical Address Format (LCAF) Type detailed in <xref target="RFC8060"/>. Each
      entry in the replication list contains an address of an xTR and 
      a level value.
      Level values are used to create a replication 
      hierarchy so that ITRs at source LISP sites replicate to the lowest
      (smaller value) level number RTRs in an RLE. And then RTRs at
      a given level replicate to the next higher level of RTRs. The number
      of RTRs at each level are engineered to control the fan-out or
      replication factor, so a trade-off between the width of the level
      versus the number of levels can be selected.</t>

      <t>ASM: Any-Source Multicast as defined in <xref
      target="RFC3569"/> where multicast
      distribution trees are built with a Rendezvous Point <xref target="RFC7761"/>.</t>

      <t>SSM: Source-Specific Multicast as defined in <xref target="RFC3569"/>
      where multicast distribution trees are built and rooted at the
      multicast router(s) directly connected to the multicast source.</t>
    </section>

      <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 anchor="reference" title="Reference Model">
      <t/>

      <t>The reference model that will be used for the discussion of the
      signal-free multicast tree interconnection is illustrated in <xref
      target="lisp-sf-mcast-ref-model"/>.</t>

      <t/>

      <t/>

      <t><figure align="center" anchor="lisp-sf-mcast-ref-model"
          title="LISP Multicast Generic Reference Model">
          <artwork><![CDATA[
                               MS/MR
                               +---+
                               |   |
          +---+     +---+      +---+      +---+      +---+
Src-1 ----| R1|-----|ITR|        |        |ETR|------| R2|----- Rcv-2
          +---+     +---+        |        +---+      +---+
                         \       |       /
          Source-site-1   \      |      /    Receiver-site-2
                           \     |     /
                            \    |    /
                             \   |   /
                               Core
                             /       \
                            /         \
                           /           \
                          /             \
                         /               \
                    +---+                 +---+
Src-3 --------------|ITR|                 |ETR|---------------- Rcv-4
                    +---+                 +---+

         Source-site-3                      Receiver-site-4

  ]]></artwork>
        </figure></t>

      <t>Sites 1 and 3 are source sites.</t>

      <t>Source-site-3 presents a source (Src-3) that is directly connected to
      the Source-ITR.</t>

      <t>Source-site-1 presents a source (Src-1) that is one hop or more away
      from the Source-ITR.</t>

      <t>Receiver-site-2 and -4 are receiver sites with not-directly connected
      and directly connected receiver endpoints, respectively.</t>

      <t>R1 is a multicast router in Source-site-1.</t>

      <t>R2 is a multicast router at the receiver site.</t>

      <t>Map-Servers and Map-Resolvers are reachable in the RLOC space
      in the core; only one is shown for illustration purposes, but
      these can be many or even part of a distributed mapping system,
      such as a Delegated Database Tree (DDT).</t>

      <t>The procedures for interconnecting multicast trees over an overlay
      can be broken down into three functional areas:</t>

      <t><list style="symbols">
          <t>Receiver-site procedures</t>

          <t>Source-site procedures</t>

          <t>LISP notification procedures</t>
        </list>The receiver-site procedures will be common for most tree types
      and topologies.</t>

      <t>The procedures at the source site can vary depending on the type of
      trees being interconnected as well as the topological relation
      between sources and source-site xTRs. For ASM trees, a special case of
      the source site is the RP site for which a variation of the source-site
      procedures MAY be necessary if ASM trees are to be supported in future
      specifications of LISP signal-free multicast.</t>

      <t>The LISP notification procedures between sites are normalized for the
      different possible scenarios. Certain scenarios MAY benefit from a
      simplified notification mechanism or no notification requirement at
      all.</t>
    </section>

    <section title="General Procedures" anchor="GP">
      <t>The interconnection of multicast trees across different LISP sites
      involves the following procedures to build the necessary multicast
      distribution trees across sites.</t>

      <t><list style="numbers">
          <t>The presence of multicast receiver endpoints is detected by the
          Receiver-ETRs at the receiver sites.</t>

          <t>Receiver-ETRs register their RLOCs as part of the
          replication list for the multicast entry the detected receivers
          subscribe to.</t>

          <t>The mapping system merges all Receiver-ETR or delivery-group
          RLOCs to build a comprehensive replication list inclusive of all
          receiver sites for each multicast entry.</t>

          <t>LISP Map-Notify messages MUST be sent to the Source-ITR
          informing of any changes in the replication list.</t>

          <t>Multicast tree building at the source site is initiated when the
          Source-ITR receives the LISP notification.</t>
        </list></t>

      <t>Once the multicast distribution trees are built, the following
      forwarding procedures may take place:</t>

      <t><list style="numbers">
          <t>The source sends multicast packets to the multicast group
          destination address.</t>

          <t>Multicast traffic follows the multicast tree built at the
          source site and makes its way to the Source-ITRs.</t>

          <t>The Source-ITR will issue a Map-Request to resolve the
          replication list for the multicast entry.</t>

          <t>The mapping system responds to the Source-ITR with a Map-Reply
          containing the replication list for the multicast group
          requested.</t>

          <t>The Source-ITR caches the replication list received in the
          map&nbhy;reply for the multicast entry.</t>

          <t>Multicast traffic is rep-encapsulated. That is, the packet is
          replicated for each RLOC in the replication list and then
          encapsulated to each one.</t>
        </list></t>

      <section anchor="General-rcv-site-proc"
               title="General Receiver-Site Procedures">
        <t/>

        <section title="Multicast Receiver Detection">
          <t>When the Receiver-ETRs are directly connected to the receivers
          (e.g., Receiver-site-4 in <xref target="lisp-sf-mcast-ref-model"/>),
          the Receiver-ETRs will receive IGMP reports from the receivers
          indicating which group the receivers wish to subscribe to. Based on
          these IGMP reports, the Receiver-ETR is made aware of the presence
          of receivers as well as which group they are interested in.</t>

          <t>When the Receiver-ETRs are several hops away from the receivers
          (e.g., Receiver-site-2 in <xref target="lisp-sf-mcast-ref-model"/>),
          the Receiver-ETRs will receive PIM join messages, which will allow
          the Receiver-ETR to know that there are multicast receivers at the
          site and also to learn which multicast group the receivers are for.</t>

          <t/>
        </section>

        <section anchor="General-rec-site-proc"
	    title="Receiver-Site Registration">
          <t>Once the Receiver-ETRs detect the presence of receivers at the
          receiver site, the Receiver-ETRs MUST issue Map-Register messages to
          include the Receiver-ETR RLOCs in the replication list for the
          multicast entry the receivers joined.</t>

          <t>The Map-Register message MUST use the multicast entry (Source,
          Group) tuple as its Endpoint ID (EID) record type with the Receiver&nbhy;ETR RLOCs
          conforming the locator set.</t>

          <t>The EID in the Map-Register message MUST be encoded using
          the Multicast Info LCAF Type defined in <xref
          target="RFC8060"/>.</t>

          <t>The RLOC in the Map-Register message MUST be encoded using the
          RLE LCAF Type defined in <xref
          target="RFC8060"/> with the Level Value fields for all
          entries set to 128 (decimal).</t>

          <t>The encoding described above MUST be used consistently for
          Map-Register messages, entries in the mapping system, Map-Reply
          messages, as well as the map-cache at the Source-ITRs.</t>

          <t>The Map-Register messages <xref target="RFC9300"/> sent by the
          Receiver-ETRs MUST have the following bits set as specified here:</t>

          <t><list style="numbers">

              <t>merge-request bit set to 1. The Map-Register messages are
              sent with "Merge Semantics". The Map-Server will receive
              registrations from a multitude of Receiver-ETRs. The Map-Server
              will merge the registrations for common EIDs and maintain a
              consolidated replication list for each multicast entry.</t>

              <t>want-map-notify bit (M) set to 0. This tells the mapping
              system that the Receiver-ETR does not expect to receive
              Map-Notify messages as it does not need to be notified of all
              changes to the replication list.</t>

              <t>proxy-reply bit (P) set to 1. The merged replication list is
              kept in the Map-Servers. By setting the proxy-reply bit, the
              Receiver-ETRs instruct the mapping system to proxy reply to
              Map-Requests issued for the multicast entries.</t>
          </list></t>

          <t>Map-Register messages for a particular multicast entry
          MAY be sent for every receiver detected, even if previous
          receivers have been detected for the particular
          multicast entry.  This allows the replication list to remain
          up to date.</t>

	  <t>Receiver-ETRs MUST be configured to know what Map-Servers
	  Map-Register messages are sent to. The configuration is
	  likely to be associated with an S-prefix that multiple (S,G)
	  entries match to and are more specific for. Therefore, the S-prefix
	  determines the Map-Server set in the least number of configuration
	  statements.</t>
        </section>

        <section title="Consolidation of the Replication List">
          <t>The Map-Server will receive registrations from a multitude of
          Receiver-ETRs. The Map-Server will merge the registrations for
          common EIDs and consolidate a replication list for each
          multicast entry.</t>

	  <t>When an ETR sends an RLE RLOC-record in a Map-Register
	  and the RLE already exists in the Map-Server's RLE-merged
	  list, the Map-Server will replace the single RLE
	  with the information from the Map-Register
	  RLOC-record.  The Map-Server MUST NOT merge duplicate
	  RLOCs in the consolidated replication list.</t>
        </section>
      </section>

      <section anchor="General-src-site-proc"
               title="General Source-Site Procedures">
        <t>Source-ITRs MUST register the unicast EIDs of any sources or
        Rendezvous Points that may be present on the source site. In other
        words, it is assumed that the sources and RPs are LISP EIDs. </t>

        <t>The registration of the unicast EIDs for the sources or
        Rendezvous Points allows the Map-Server to know where to send
        Map-Notify messages to. Therefore, the Source-ITR MUST
        register the unicast S-prefix EID with the want-map-notify bit
        set in order to receive Map-Notify messages whenever there is
        a change in the replication list.</t>

        <section anchor="mcast-tree-building-source-site"
                 title="Multicast Tree Building at the Source Site">
          <t>When the source site receives the Map-Notify messages from the
          mapping system as described in <xref
          target="General-notification-proc"/>, it will initiate the process
          of building a multicast distribution tree that will allow the
          multicast packets from the source to reach the Source-ITR.</t>

          <t>The Source-ITR MUST issue a PIM join for the multicast entry for
          which it received the Map-Notify message. The join will be issued in
          the direction of the source or in the direction of the RP for the
          SSM and ASM cases, respectively.</t>
        </section>

        <section title="Multicast Destination Resolution">
          <t>On reception of multicast packets, the Source-ITR obtains the
          replication list for the (S,G) addresses in the packets.</t>

          <t>In order to obtain the replication list, the Source-ITR
          MUST issue a Map-Request message in which the EID is the
          (S,G) multicast tuple, which is encoded using the Multicast
          Info LCAF Type defined in <xref target="RFC8060"/>.</t>

          <t>The mapping system (most likely the Map-Server) will
          Map-Reply with the merged replication list maintained in the
          mapping system.  The Map-Reply message MUST follow the
          format defined in <xref target="RFC9300"/>; its EID is
          encoded using the Multicast Info LCAF Type, and the
          corresponding RLOC-records are encoded using the RLE LCAF
          Type. Both LCAF Types are defined in <xref target="RFC8060"/>.</t>
        </section>
      </section>

      <section anchor="General-notification-proc"
               title="General LISP Notification Procedures">
        <t>The Map-Server will issue LISP Map-Notify messages to inform the
        source site of the presence of receivers for a particular multicast
        group over the overlay.</t>

        <t>Updated Map-Notify messages SHOULD be issued every time a new
        registration is received from a receiver site. This guarantees that
        the source sites are aware of any potential changes in the
        multicast-distribution-list membership.</t>

        <t>The Map-Notify messages carry (S,G) multicast EIDs encoded
        using the Multicast Info LCAF Type defined in <xref
        target="RFC8060"/>.</t>

        <t>Map-Notify messages will be sent by the Map-Server to the RLOCs
        with which the unicast S-prefix EID was registered. In the case
        when sources are discovered dynamically 
	<xref target="LISP-EID-MOBILITY"/>, xTRs MUST register
	sources explicitly with the want-map-notify bit set. This is so
	the ITR in the site the source has moved to can get the most current
        replication list.</t>

        <t>When both the receiver sites and the source sites register to the
        same Map-Server, the Map-Server has all the necessary information to
        send the Map-Notify messages to the source site.</t>

        <t>When the Map-Servers are distributed (when using LISP-DDT
        <xref target="RFC8111"/>), the receiver sites MAY register to
        one Map-Server while the source site registers to a different
        Map-Server. In this scenario, the Map-Server for the receiver
        sites MUST resolve the unicast S-prefix EID across a
        distributed mapping transport system, per standard LISP lookup
        procedures, and obtain the necessary information to send the
        Map-Notify messages to the source site. The Map-Notify
        messages are sent with an authentication length of 0 as they
        would not be authenticated.</t>

        <t>When the Map-Servers are distributed, different
        receiver sites MAY register to different Map-Servers. However,
        this is not supported with the currently defined mechanisms.</t>
      </section>
    </section>

    <section anchor="SSM" title="Source-Specific Multicast Trees">
      <t>The interconnection of SSM trees across
      sites will follow the general receiver-site procedures described in
      <xref target="General-rcv-site-proc"/> on the receiver sites.</t>

      <t>The source-site procedures will vary depending on the topological
      location of the source within the source site as described in Sections <xref
      target="directly-connected-xTR" format="counter"/> and <xref
      target="not-directly-connected-xTR" format="counter"/> .</t>

      <section anchor="directly-connected-xTR"
               title="Source Directly Connected to Source-ITRs">
        <t>When the source is directly connected to the Source-ITR, it is not
        necessary to trigger signaling to build a local multicast tree at the
        source site. Therefore Map-Notify messages are not required to
        initiate building of the multicast tree at the source site.</t>

        <t>Map-Notify messages are still required to ensure that any changes
        to the replication list are communicated to the source site so that
        the map-cache at the Source-ITRs is kept updated.</t>
      </section>

      <section anchor="not-directly-connected-xTR"
               title="Source Not Directly Connected to Source-ITRs">
        <t>The general LISP notification procedures described in <xref
        target="General-notification-proc"/> MUST be followed when the source
        is not directly connected to the Source-ITR. On reception of
        Map-Notify messages, local multicast signaling MUST be initiated at
        the source site per the general source-site procedures for multicast
        tree building described in <xref
        target="mcast-tree-building-source-site"/>.</t>

        <t>In the SSM case, the IP address of the source is known, and it is
        also registered with the LISP mapping system. Thus, the mapping system
        MAY resolve the mapping for the source address in order to send
        Map-Notify messages to the correct Source-ITR.</t>
      </section>
    </section>

    <section title="Multihoming Considerations">
      <section title="Multiple ITRs at a Source Site">
	<t>When multiple ITRs exist at a source multicast site, care MUST be
	taken that more than one ITR does not head-end replicate packets; otherwise,
	receiver multicast sites will receive duplicate packets. The following
	procedures will be used for each topology scenario:</t>

        <t><list style="symbols"> 
	  <t>When more than one ITR is directly connected to the source host,
	  either the PIM DR or the IGMP querier (when PIM is not enabled
	  on the ITRs) is responsible for packet replication. All other
	  ITRs silently drop the packet. In the IGMP querier case, one or
	  more ITRs on the source LAN MUST be IGMP querier candidates.
	  Therefore, it is required that they be configured as such.</t>

	  <t>When more than one ITR is multiple hops away from the source
	  host and one of the ITRs is the PIM Rendezvous Point, then the
	  PIM RP is responsible for packet replication.</t>

	  <t>When more than one ITR is multiple hops away from the source
	  host and the PIM Rendezvous Point is not one of the ITRs, then
	  one of the ITRs MUST join to the RP. When a Map-Notify is received
	  from the Map-Server by an ITR, only the highest RLOC addressed ITR
	  will join toward the PIM RP or toward the source.</t>
	</list></t>
      </section>

      <section title="Multiple ETRs at a Receiver Site">

	<t>When multiple ETRs exist in a receiver multicast site and
	each one creates a multicast join state, each Map-Registers its
	RLOC address to the mapping system. In this scenario, the
	replication happens on the overlay causing multiple ETR entry
	points to replicate to all receivers instead of a single ETR entry
	point replicating to all receivers.  If an ETR does not create
	join state, because it has not received PIM joins or IGMP
	reports, it will not Map-Register its RLOC addresses to the
	mapping system. The same procedures in <xref
	target="General-rcv-site-proc"/> are followed.</t>

	<t>When multiple ETRs exist on the same LAN as a receiver
	host, then the PIM DR (when PIM is enabled) or the IGMP
	querier is responsible for sending a Map-Register for its
	RLOC. In the IGMP case, one or more ETRs on a LAN MUST be IGMP
	querier candidates. Therefore, it is required that they are
	configured as such.</t>
      </section>

      <section title="Multiple RLOCs for an ETR at a Receiver Site">
	<t>It MAY be desirable to have multiple underlay paths to an
	ETR for multicast packet delivery. This can be done by having
	multiple RLOCs assigned to an ETR and having the ETR send
	Map-Registers for all its RLOCs. By doing this, an ITR can
	choose a specific path based on underlay performance and/or
	RLOC reachability.</t>


	<t>It is recommended that an ETR send a Map-Register with a
	single RLOC-record that uses the Explicit Locator Path (ELP) LCAF Type <xref
	target="RFC8060"/> that is nested inside the RLE LCAF. For
	example, say ETR1 has assigned RLOC1 and RLOC2 for a LISP
	receiver site. Also, there is ETR2 in another LISP receiver
	site that has RLOC3. The two receiver sites have the same
	(S,G) being joined. Here is how the RLOC-record is encoded on
	each ETR:</t>

        <t><figure>
          <artwork><![CDATA[
ETR1: EID-record: (S,G)
      RLOC-record: RLE[ ELP{ (RLOC1,s,p), (RLOC2,s,p) } ]

ETR2: EID-record: (S,G)
      RLOC-record: RLE[ RLOC3 ]
           ]]></artwork>
        </figure></t>

	<t>And here is how the entry is merged and stored on the
	Map-Server since the Map-Registers have an RLE-encoded RLOC-record:
	</t>

        <t><figure>
          <artwork><![CDATA[ 
MS: EID-record: (S,G) 
    RLOC-record: RLE[ RLOC3, ELP{ (RLOC1,s,p), (RLOC2,s,p) } ]
          ]]></artwork>
        </figure></t>

	<t>When the ITR receives a packet from a multicast source S
	for group G, it uses the merged RLOC-record returned from the
	Map-Server. The ITR replicates the packet to (RLOC3 and RLOC1)
	or (RLOC3 and RLOC2). Since it is required for the s-bit to be
	set for RLOC1, the ITR MUST replicate to RLOC1 if it is
	reachable. When the required p-bit is also set, the
	RLOC-reachability mechanisms from <xref target="RFC9300"/> are
	followed.  If the ITR determines that RLOC1 is unreachable, it
	uses RLOC2, as long as RLOC2 is reachable.</t>
      </section>

      <section title="Multicast RLOCs for an ETR at a Receiver Site">
	<t>This specification is focused on underlays without
	multicast support, but it does not preclude the use of multicast
	RLOCs in RLEs. ETRs MAY register multicast EID entries
	using multicast RLOCs. In such cases, the ETRs will be joined
	to underlay multicast distribution trees by using IGMP as a
	multicast host using mechanisms in <xref target="RFC2236"/> and
	<xref target="RFC3376"/>.</t>
      </section>
    </section>

    <section title="PIM Any-Source Multicast Trees">
      <t>LISP signal-free multicast can support ASM trees in
      limited but acceptable topologies. It is suggested, for the
      simplification of building ASM trees across the LISP overlay, to
      have PIM-ASM run independently in each LISP site. What this
      means is that a PIM RP is configured in each
      LISP site so PIM Register procedures and (*,G) state maintenance
      is contained within the LISP site.</t>

      <t>The following procedure will be used to support ASM in each LISP
      site:</t>

      <t><list style="numbers"> 
	<t>In a receiver site, the RP is co-located with the ETR. RPs
	for different groups can be spread across each ETR, but is not
	required.</t>

	<t>When (*,G) state is created in an ETR, the procedures in
	<xref target="General-rec-site-proc"/> are followed. In
	addition, the ETR registers (S-prefix,G), where S-prefix is
	0/0 (the respective unicast default route for the
	address-family) to the mapping system.</t>

        <t>In a source site, the RP is co-located with the ITR. RPs for
        different groups can be spread across each ITR, but is not
        required.</t>

	<t>When a multicast source sends a packet, a PIM Register
	message is delivered to the ITR, and the procedures in <xref
	target="General-src-site-proc"/> are followed.</t>

	<t>When the ITR sends a Map-Request for (S,G) and no
	receiver site has registered for (S,G), the mapping system
	will return the (0/0,G) entry to the ITR so it has a
	replication list of all the ETRs that have received (*,G)
	state.</t>

	<t>The ITR stores the replication list in its map-cache for
	(S,G). It replicates packets to all ETRs in the list.</t>

        <t>ETRs decapsulate packets and forward based on (*,G) state
        in their site.</t>

	<t>When last-hop PIM routers join the newly discovered (S,G),
	the ETR will store the state and follow the procedures in
	<xref target="General-rec-site-proc"/>.</t>
      </list></t>
    </section>

    <section title="Signal-Free Multicast for Replication Engineering">
      <t>The mechanisms in this specification can be applied to the "LISP
      Replication Engineering" <xref target="LISP-RE"/>
      design. Rather than have the layered LISP-RE RTR hierarchy use
      signaling mechanisms, the RTRs can register their availability
      for multicast tree replication via the mapping database system.</t>

      <t>As stated in <xref target="LISP-RE"/>, the RTR-layered
      hierarchy is used to avoid head-end replication in replicating
      nodes closest to a multicast source. Rather than have multicast
      ITRs replicate to each ETR in an RLE of an (S,G) mapping
      database entry, it could replicate to one or more layer 0 RTRs
      in the LISP-RE hierarchy.</t>

      <t>This document specifies how the RTR hierarchy is determined but
      not the optimal layers of RTRs to be used. Methods for
      determining optimal paths or RTR topological closeness are out of
      scope for this document.</t>

      <t>There are two formats an (S,G) mapping database entry could
      have. One format is a 'complete-format', and the other is a
      'filtered-format'. A 'complete-format' entails an (S,G) entry
      having multiple RLOC-records that contain both ETRs that have
      registered as well as the RTRs at the first level of the LISP-RE
      hierarchy for the ITR to replicate to. When using
      'complete-format', the ITR has the ability to select if it
      replicates to RTRs or to the registered ETRs at the
      receiver sites. A 'filtered-format' (S,G) entry is one where the
      Map-Server returns the RLOC-records that it decides the ITR
      SHOULD use. So replication policy is shifted from the ITRs to
      the mapping system. The Map-Servers can also decide for a given
      ITR if it uses a different set of replication targets per (S,G)
      entry for which the ITR is replicating for.</t>

      <t>The procedure for the LISP-RE RTRs to make themselves
      available for replication can occur before or after any
      receivers join an (S,G) entry or any sources send for a
      particular (S,G) entry. Therefore, newly configured RTR state
      will be used to create new (S,G) state and will be inherited into
      existing (S,G) state.  A set of RTRs can register themselves to
      the mapping system or a third party can do so on their
      behalf. When RTR registration occurs, it is done with an
      (S-prefix, G-prefix) entry so it can advertise its replication
      services for a wide range of source/group combinations.</t>

      <t>When a Map-Server receives (S,G) registrations from ETRs and
      (S-prefix, G-prefix) registrations from RTRs, it has the option
      of merging the RTR RLOC-records for each (S,G) that is
      more specific for the (S-prefix, G-prefix) entry or keeping them
      separate. When merging, a Map-Server is ready to return a
      'complete-format' Map-Reply. When keeping the entries separate,
      the Map-Server can decide what to include in a Map-Reply when a
      Map-Request is received. It can include a combination of RLOC-records
      from each entry or decide to use one or the other depending on
      policy configured.</t>

      <t><figure align="center" anchor="lisp-rtr-mcast-ref-model"
          title="LISP-RE Reference Model">
          <artwork><![CDATA[
                      +---+                 +----+
Src-1 --------------|ITR|                 |ETR1|--------------- Rcv-1
                    +---+                 +----+
                        \                 /
         Source-site-1   \               /    Receiver-site-1
                          \             /
                           \           /
                +----+      \         /     +----+
                |RTR1|       \       /      |RTR2|     Level-0
                +----+        \     /       +----+
                      \  <^^^^^^^^^^^^^^>  /
                       \ <              > /
                         < Core Network > 
                         <              >
                         <vvvvvvvvvvvvvv>
                         /     /   \    \
                        /     /     \    \   
                +----+ /     /       \    \ +----+
                |RTR3|      /         \     |RTR4|     Level-1
                +----+     /           \    +----+
                          /             \
                         /               \
                    +----+                +----+
Rcv-2 --------------|ETR2|                |ETR3|--------------- Rcv-3
                    +----+                +----+

         Receiver-site-2                      Receiver-site-3

  ]]></artwork>
        </figure></t>

      <t>Here is a specific example, illustrated in <xref
      target="lisp-rtr-mcast-ref-model"/>, of (S,G) and (S-prefix, G-prefix)
      mapping database entries when a source S is behind an ITR, and
      there are receiver sites joined to (S,G) via ETR1, ETR2, and
      ETR3. And there exists a LISP-RE hierarchy of RTR1 and RTR2 at
      level-0 and RTR3 and RTR4 at level-1:</t>

      <t><figure align="center">
          <artwork><![CDATA[
       EID-record: (S,G) 
          RLOC-record: RLE: (ETR1, ETR2, ETR3), p1
       EID-record: (S-prefix, G-prefix)
          RLOC-record: RLE: (RTR1(L0), RTR2(L0), RTR3(L1), RTR4(L1)), p1
           ]]></artwork>
      </figure></t>

      <t>The above entries are in the form in which they were registered and are
      stored in a Map-Server. When a Map-Server uses 'complete-format', the
      Map-Reply it originates has the mapping record encoded as:</t>

      <t><figure align="center">
          <artwork><![CDATA[
       EID-record: (S,G) 
           RLOC-record: RLE: (RTR1(L0), RTR3(L1)), p1
           RLOC-record: RLE: (ETR1, ETR2, ETR3), p1
           ]]></artwork>
      </figure></t>

      <t>The above Map-Reply allows the ITR to decide if it replicates to the
      ETRs or if it SHOULD replicate only to level-0 RTR1. This decision
      is left to the ITR since both RLOC-records have priority 1. If the
      Map-Server wanted to force the ITR to replicate to RTR1, it would set
      the ETRs RLOC-record to a priority greater than 1.</t>

      <t>When a Map_server uses "filtered-format', the Map-Reply it originates
      has the mapping record encoded as:</t>

      <t><figure align="center">
          <artwork><![CDATA[
       EID-record: (S,G) 
           RLOC-record: RLE: (RTR1(L0), RTR3(L1)), p1
           ]]></artwork>
      </figure></t>

      <t>An (S,G) entry can contain alternate RTRs. So rather than
      replicating to multiple RTRs, one RTR set MAY be used based
      on the RTR reachability status.  An ITR can test reachability
      status to any layer 0 RTR using RLOC-probing, so it can choose
      one RTR from a set to replicate to. When this is done, the RTRs
      are encoded in different RLOC-records instead of together in one RLE
      RLOC-record. This moves the replication load off the ITRs at the
      source site to the RTRs inside the network infrastructure. This
      mechanism can also be used by level-n RTRs to level-n+1
      RTRs.</t>

      <t>The following mapping would be encoded in a Map-Reply sent by a
      Map-Server and stored in the ITR. The ITR would use RTR1 until 
      it went unreachable and then switch to use RTR2:</t>

      <t><figure align="center">
          <artwork><![CDATA[
       EID-record: (S,G) 
           RLOC-record: RTR1, p1
           RLOC-record: RTR2, p2
           ]]></artwork>
      </figure></t>

    </section>

    <section anchor="security" title="Security Considerations">
      <t><xref target="LISP-SEC"/> defines a set of security
      mechanisms that provide origin authentication, integrity, and anti-replay
      protection to LISP's EID-to-RLOC mapping data conveyed via the mapping
      lookup process. LISP-SEC also enables verification of authorization on
      EID-prefix claims in Map-Reply messages.</t>

      <t>Additional security mechanisms to protect the LISP Map-Register
      messages are defined in <xref target="RFC9301"/>.</t>

      <t>The security of the mapping system infrastructure depends on the
      particular mapping database used. As an example, <xref target="RFC8111"/>
      defines a public-key-based mechanism that
      provides origin authentication and integrity protection to the LISP DDT
      protocol.</t>

      <t>Map-Replies received by the Source-ITR can be signed (by the
      Map-Server), so the ITR knows the replication list is from a legitimate
      source.</t>

      <t>Data-plane encryption can be used when doing unicast
      rep-encapsulation as described in <xref target="RFC8061"/>.</t>
    </section>

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

  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>
      <?rfc include="reference.RFC.2236"?>
      <?rfc include="reference.RFC.3376"?>
      <?rfc include="reference.RFC.8111"?>
      <?rfc include='reference.RFC.9300'?>
      <?rfc include='reference.RFC.9301'?>
      <?rfc include='reference.RFC.8060'?>
      <?rfc include='reference.RFC.7761'?>
      <?rfc include='reference.RFC.3569'?>
      <?rfc include='reference.RFC.8174'?>
      <?rfc include='reference.RFC.8378'?>
      <?rfc include='http://xml.resource.org/public/rfc/bibxml3/reference.I-D.farinacci-lisp-rfc6831bis.xml'?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.8061'?>

<!--draft-ietf-lisp-sec-14 is now -15; Active - AD is watching-->
<reference anchor='LISP-SEC'>
<front>
<title>LISP-Security (LISP-SEC)</title>
<author initials='F' surname='Maino' fullname='Fabio Maino'>
    <organization />
</author>
<author initials='V' surname='Ermagan' fullname='Vina Ermagan'>
    <organization />
</author>
<author initials='A' surname='Cabellos-Aparicio' fullname='Albert Cabellos-Aparicio'>
    <organization />
</author>
<author initials='D' surname='Saucez' fullname='Damien Saucez'>
    <organization />
</author>
<date month='April' year='2018' />
</front>
<seriesInfo name='Work in Progress,' value='draft-ietf-lisp-sec-15' />
</reference>

<!--draft-farinacci-lisp-mr-signaling-06; Expired -->
<reference anchor='LISP-MULTI-SIGNALING'>
<front>
<title>LISP Control-Plane Multicast Signaling</title>
<author initials='D' surname='Farinacci' fullname='Dino Farinacci'>
    <organization />
</author>
<author initials='M' surname='Napierala' fullname='Maria Napierala'>
    <organization />
</author>
<date month='February' year='2015' />
</front>
<seriesInfo name='Work in Progress,' value='draft-farinacci-lisp-mr-signaling-06' />
</reference>

<!--draft-coras-lisp-re-08; Expired-->
<reference anchor='LISP-RE'>
<front>
<title>LISP Replication Engineering</title>
<author initials='F' surname='Coras' fullname='Florin Coras'>
    <organization />
</author>
<author initials='A' surname='Cabellos-Aparicio' fullname='Albert Cabellos-Aparicio'>
    <organization />
</author>
<author initials='J' surname='Domingo-Pascual' fullname='Jordi Domingo-Pascual'>
    <organization />
</author>
<author initials='F' surname='Maino' fullname='Fabio Maino'>
    <organization />
</author>
<author initials='D' surname='Farinacci' fullname='Dino Farinacci'>
    <organization />
</author>
<date month='November' year='2015' />
</front>
<seriesInfo name='Work in Progress,' value='draft-coras-lisp-re-08' />
</reference>

<!--draft-ietf-lisp-eid-mobility-01; Active - I-D exists-->
<reference anchor='LISP-EID-MOBILITY'>
<front>
<title>LISP L2/L3 EID Mobility Using a Unified Control Plane</title>
<author initials='M' surname='Portoles-Comeras' fullname='Marc Portoles-Comeras'>
    <organization />
</author>
<author initials='V' surname='Ashtaputre' fullname='Vrushali Ashtaputre'>
    <organization />
</author>
<author initials='V' surname='Moreno' fullname='Victor Moreno'>
    <organization />
</author>
<author initials='F' surname='Maino' fullname='Fabio Maino'>
    <organization />
</author>
<author initials='D' surname='Farinacci' fullname='Dino Farinacci'>
    <organization />
</author>
<date month='November' year='2017' />
</front>
<seriesInfo name='Work in Progress,' value='draft-ietf-lisp-eid-mobility-01' />
</reference>
    </references>

     <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors want to thank Greg Shepherd, Joel Halpern, and
      Sharon Barkai for their insightful contribution to shaping the
      ideas in this document. A special thanks to Luigi Iannone, LISP
      WG co-chair, for shepherding this working group document.
      Thanks also goes to Jimmy Kyriannis, Paul Vinciguerra, Florin
      Coras, and Yan Filyurin for testing an implementation of this
      document.</t>
    </section>

    <section title="Document Change Log">
      <t>[RFC Editor: Please delete this section on publication as RFC.]</t>

      <section title="Changes to draft-ietf-lisp-rfc8378bis-00">
        <t><list style="symbols">
	      <t>Posted May 2024.</t>
          <t>Starting with <xref target="RFC8378"/> to move it to a bis document for standards
          track.</t>
          <t>Changed references to standards track RFCs.</t>
        </list></t>
      </section>

    </section>
  </back>
</rfc>
