<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ietf-pim-light-11" number="9739" consensus="true" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" version="3">

  <front>
    <title abbrev="PIM Light">Protocol Independent Multicast Light (PIM Light)
    </title>
    <seriesInfo name="RFC" value="9739"/>
    <author fullname="Hooman Bidgoli" initials="H" role="editor" surname="Bidgoli">
      <organization>Nokia</organization>
      <address>
        <postal>
          <street>March Road</street>
          <city>Ottawa</city>
          <region>Ontario</region>
          <code>K2K 2T6</code>
          <country>Canada</country>
        </postal>
        <email>hooman.bidgoli@nokia.com</email>
      </address>
    </author>
    <author fullname="Stig Venaas" initials="S." surname="Venaas">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Tasman Drive</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>United States of America</country>
        </postal>
        <phone/>
        <email>stig@cisco.com</email>
      </address>
    </author>
    <author fullname="Mankamana Mishra" initials="M." surname="Mishra">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Tasman Drive</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>United States of America</country>
        </postal>
        <email>mankamis@cisco.com</email>
      </address>
    </author>
    <author fullname="Zhaohui Zhang" initials="Z." surname="Zhang">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <city>Boston</city>
          <region>MA</region>
          <country>United States of America</country>
        </postal>
        <email>zzhang@juniper.net</email>
      </address>
    </author>
    <author fullname="Mike McBride" initials="M." surname="McBride">
      <organization>Futurewei Technologies Inc.</organization>
      <address>
        <postal>
          <city>Santa Clara</city>
          <region>CA</region>
          <country>United States of America</country>
        </postal>
        <email>michael.mcbride@futurewei.com</email>
      </address>
    </author>
    <date month="March" year="2025"/>

    <area>RTG</area>
    <workgroup>pim</workgroup>

    <abstract>
      <t>This document specifies Protocol Independent Multicast Light (PIM
      Light) and the PIM Light Interface (PLI). A PLI does not need a PIM
      Hello message to accept PIM Join/Prune messages, and it can signal
      multicast states over networks that cannot support full PIM neighbor
      discovery, such as Bit Index Explicit Replication (BIER) networks that
      connect two or more PIM domains.  This document outlines the PIM Light
      protocol and procedures to ensure loop-free multicast traffic between
      two or more PIM Light routers.</t>
    </abstract>
  </front>
  <middle>

    
    <section numbered="true" toc="default">
      <name>Introduction</name>

      <t>This document specifies procedures for Protocol Independent Multicast Light (PIM
      Light) and the PIM Light Interface (PLI). The PLI is a new type of
      PIM interface that allows signaling of PIM Join/Prune packets without
      full PIM neighbor discovery. A PLI is useful in scenarios where multicast
      states need to be signaled over networks or media that cannot support
      full PIM neighborship between routers or, alternatively,  where full PIM
      neighborship is not desired. These types of networks and media are
      called "PIM Light domains" within this document. Lack of full PIM
      neighborship will remove some PIM functionality as explained in <xref target="absence-hello"/> of this document. PIM Light only supports the PIM - Sparse Mode (PIM-SM) protocol, including PIM Source-Specific
      Multicast (PIM-SSM), as per <xref target="RFC7761" format="default"/>. This document
      details procedures and considerations needed for PIM Light and the PLI to
      ensure efficient routing of multicast groups for specific deployment
      environments.</t>
    </section>
    <section numbered="true" toc="default">
      <name>Terminology</name>

        <t>

    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
    "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
    "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
    "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be
    interpreted as described in BCP&nbsp;14 <xref target="RFC2119"/> <xref
    target="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.

        </t>
        <t>This document uses terminology from "Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification (Revised)" <xref target="RFC7761" format="default"/>.</t>

    </section>
    <section numbered="true" toc="default">
      <name>PIM Light Interface</name>
      <t><xref section="4.3.1" sectionFormat="of" target="RFC7761" format="default"/> describes PIM neighbor
      discovery via Hello messages. <xref section="4.5" sectionFormat="of" target="RFC7761"/> notes that if a
      router receives a Join/Prune message from a particular IP source address
      and it has not seen a PIM Hello message from that source address, then
      the Join/Prune message <bcp14>SHOULD</bcp14> be discarded without further
      processing.</t>

<t>In certain scenarios, it is desirable to establish multicast states
      between two routers without forming a PIM neighborship.
      This can be necessary for various reasons, such as signaling multicast
      states upstream between multiple PIM domains over a network that is not
      optimized for PIM or that does not necessitate PIM neighbor establishment.
      An example is a Bit Index Explicit Replication (BIER) <xref target="RFC8279" format="default"/> network connecting multiple PIM domains, where PIM
      Join/Prune messages are tunneled via BIER as specified in <xref target="I-D.ietf-bier-pim-signaling" format="default"/>.</t>
      <t>A PLI accepts Join/Prune messages from an
      unknown PIM router without requiring a PIM Hello message from the
      router. The absence of Hello messages on a PLI means there is no
      mechanism to discover neighboring PIM routers or their capabilities or
      to execute basic algorithms such as Designated Router (DR) election
      <xref target="RFC7761" format="default"/>. Consequently, the PIM Light router does not
      create any general-purpose state for neighboring PIM routers and only
      processes Join/Prune messages from downstream routers in its multicast
      routing table. Processing these Join/Prune messages will introduce
      multicast states in a PIM Light router.</t>


      <t>Due to these constraints, a PLI should be deployed in very specific
      scenarios where PIM-SM is not suitable. The applications or the networks
      on which PLIs are deployed <bcp14>MUST</bcp14> ensure that there is no
      multicast packet duplication, such as multiple upstream routers sending
      the same multicast stream to a single downstream router. For example,
      an implementation should ensure that DR election is done on upstream
      redundant PIM routers that are at the edge of the PIM Light domain to
      ensure that a single DR forwards the PIM Join message from the receiver
      to the source.
      </t>
      <section numbered="true" toc="default">


        <name>Message Types Supported by PIM Light</name>
        <t>The "PIM Message Types" registry <xref target="IANA-PIM-Mess-Types" format="default"/> lists the
        message types supported by PIM. PIM Light only supports the following
        message types in that registry:</t>
        <ul>
          <li>
            <t>type 1 (Register)</t>
          </li>
          <li>
            <t>type 2 (Register Stop)</t>
          </li>
	  <li>
            <t>type 3 (Join/Prune)
	    </t>
          </li>
          <li>
            <t>type 8 (Candidate RP Advertisement)</t>
          </li>
          <li>
            <t>type 13.0 (PIM Packed Null-Register)</t>
          </li>
          <li>
            <t>type 13.1 (PIM Packed Register-Stop)</t>
          </li>
          <li>

            <t>Any future PIM message types where the destination is a unicast IP address
            </t>
          </li>
        </ul>
        <t>No other message types are supported by PIM Light; other message types <bcp14>MUST
        NOT</bcp14> be processed if received on a PLI.</t>
      </section>
      <section numbered="true" toc="default" anchor="absence-hello">
        <name>Considerations for the Absence of Hello Message</name>

	
<t>Because Hello messages are not processed in a PIM Light domain, the
considerations in the subsections below should be taken into account.
</t>
        <section numbered="true" toc="default">
          <name>Join Attribute</name>

	  
          <t>Since a PLI does not use PIM Hello messages, it also does not
          support the Join Attribute option in PIM Hello as specified in
          <xref target="RFC5384" format="default"/>. As such, PIM Light is unaware of its
          neighbor's capability to process Join Attributes and <bcp14>SHOULD NOT</bcp14>
          send a Join message containing a Join Attribute.</t>


	  <t>There are two cases in which a PLI can support a Join Attribute:
          </t>
          <ul spacing="normal"><li><t>The neighbors on the PLI are known via
          configuration to be capable of processing the attribute.</t>
            </li>
            <li>
              <t>Internet-Drafts and RFCs may dictate that certain Join
              Attributes are allowed to be used without explicit configuration
              of the PLI in certain scenarios. The details are left to those
              Internet-Drafts and RFCs.</t>
            </li>
          </ul>
        </section>
        <section numbered="true" toc="default">
          <name>DR Election</name>


          <t>Due to the absence of Hello messages, DR election is not
          supported on a PIM Light router. The network design must ensure DR
          election occurs within the PIM domain, assuming the PIM Light domain
          interconnects PIM domains.</t>
          <t>For instance, in a BIER domain connecting two PIM domains as in the figure below, a PLI
          can be used between BIER edge routers solely for multicast state
          communication and transmit only PIM Join/Prune messages.

  If there are redundant PIM routers at the edge of the BIER domain, they
  <bcp14>MUST</bcp14> establish PIM adjacency as per <xref target="RFC7761"
  format="default"/> to prevent multicast stream duplication and to ensure DR
  election at the edge of the BIER domain.

	  For example, DR election
          could be between router D and F in the figure below.  When the Join
          or Prune message arrives from a PIM domain to the downstream BIER
          edge router, it can be forwarded over the BIER tunnel to the
          upstream BIER edge router only via the DR.</t>
	  

          <artwork name="" type="" align="left" alt=""><![CDATA[
                   Bier edge router       Bier edge router 
          |--PIM domain--|--BIER domain (PLI)--|--PIM domain--| 
Source--( A )----------( B ) ---- ( C ) ---- ( D )----------( E )--Host
          |       PIM Adj|         | |         |PIM Adj       |
          |------------( E )-------| |-------( F )------------|
                                         (DR election)
]]></artwork>

        </section>
        <section numbered="true" toc="default">
          <name>PIM Assert</name>
          <t>In scenarios where multiple PIM routers peer over a shared LAN or
          a point-to-multipoint medium, more than one upstream router may have
          valid forwarding state for a packet, which can potentially cause packet
          duplication. PIM Assert is used to select a single transmitter when
          such duplication is detected. According to <xref section="4.6" sectionFormat="of" target="RFC7761" format="default"/>, PIM Assert should only be accepted from a known PIM
          neighbor.</t>
          <t>In PIM Light implementations, care must be taken to avoid
          duplicate streams arriving from multiple upstream PIM Light routers
          to a single downstream PIM Light router. If network design
          constraints prevent this, the implemented network architecture must
          take measures to avoid traffic duplication. For example, in a scenario with PIM
          Light over a BIER domain, a downstream IBBR (Ingress BIER
          Border Router) in a BIER domain can identify the nearest EBBRs
          (Egress BIER Border Routers) to the source using the Shortest Path
          First (SPF) algorithm with post-processing as described in Appendix A.1 of <xref target="I-D.ietf-bier-pim-signaling" format="default"/>. If the
          downstream IBBR identifies two EBBRs, it can select one using a
          unique IP selection algorithm, such as choosing the EBBR with the
          lowest or highest IP address. If the selected EBBR goes offline, the
          downstream router can use the next EBBR based on the IP selection
          algorithm, which is beyond the scope of this document.</t>
        </section>
      </section>
      <section numbered="true" toc="default">
        <name>PLI Configuration</name>


        <t>Since a PLI doesn't require PIM Hello Messages and PIM neighbor
        adjacency is not checked for arriving Join/Prune messages, there needs
        to be a mechanism to enable PLIs on interfaces.
	Join/Prune messages not received from a PIM neighbor
	<bcp14>MUST</bcp14> be dropped unless PLI is enabled on the interface.
	In some cases, a PLI may be enabled
        automatically via an underlying mechanism on a logical interface. For
        example, in a BIER domain, a logical interface can connect two or more
        BIER edge routers as per <xref target="I-D.ietf-bier-pim-signaling"
        format="default"/>.</t>
      </section>
      <section numbered="true" toc="default">
        <name>Failures in PLR Domain</name>

	<t>Because Hello messages are not processed on the PLI, PLI
        failures may not be discovered in a PIM Light domain, and
        multicast routes will not be pruned toward the source on the PIM Light
        domain. This results in the upstream routers continuously sending multicast
        streams until the outgoing interface (OIF) expires.</t>
        <t>Other protocols can be used to detect these failures in the PIM
        Light domain, and they can be implementation specific. As an example,
        the interface on which PIM Light is configured can be protected via
        Bidirectional Forwarding Detection (BFD) or similar technology. If BFD
        to the far-end PLI goes down and the PIM Light router is upstream and
        has an OIF for a multicast route (S,G), PIM must remove that PLI
        from its OIF list.</t>

        <t>In another example, the PLI is configured automatically
        between the BIER Edge Routers (BERs) as in the figure below. When the Downstream BIER Edge
        Router (DBER) is no longer reachable on the Upstream BIER Edge Router
        (UBER), the UBER (which is also a PIM Light router) can prune the
        (S,G) advertised toward the source on the PIM domain to stop the
        transmission of the multicast stream.</t>
	
        <artwork name="" type="" align="left" alt=""><![CDATA[
                        UBER                 DBER 
          |--PIM domain--|--BIER domain (PLI)--|--PIM domain--| 
Source--( A )----------( B ) ---- ( C ) ---- ( D )----------( E )--Host
                 <--Prune (S,G)          <failure on D>
]]></artwork>
      </section>
      <section numbered="true" toc="default">
        <name>Reliable Transport Mechanism for PIM Light</name>

	<t><xref target="RFC6559" format="default"/> defines a reliable transport mechanism called 
	PIM Over Reliable Transport (PORT) for PIM transmission of Join/Prune messages,
	using either TCP or SCTP as the transport protocol. Both TCP and SCTP use
	destination port number 8471. SCTP is explained in <xref target="RFC9260" format="default"/> and
	is used as a second option for PORT. <xref target="RFC6559" format="default"/> mentions that when
	a router is configured to use PIM over TCP on a given interface, it
	<bcp14>MUST</bcp14> include the PIM-over-TCP-Capable Hello Option in its Hello
	messages for that interface.  The same is true for SCTP; the router
	<bcp14>MUST</bcp14> include the PIM-over-SCTP-Capable Hello Option in its Hello messages
	on that interface.
	</t>
	


	
        <t>These Hello options contain a Connection ID, which is an IPv4 or
        IPv6 address used to establish the SCTP or TCP connection.  For PORT
        using TCP, the Connection ID is used to determine which peer is
        doing an active transport open to the neighbor and which peer is doing
        passive transport open, as per <xref section="4" sectionFormat="of"
        target="RFC6559" format="default"/>.

	When the router is using SCTP, the Connection ID is not used to
	determine the active and passive peer since SCTP can handle call
	collision.
        </t>


	<t>Because PIM Light lacks Hello messages, the PLI can be configured with the
        Connection ID (i.e., the IPv4 or IPv6 address used to establish the SCTP or TCP
        connection). For PIM Light using the TCP PORT option, each end of the PLI
        must be explicitly and correctly configured as being either active transport
        open or passive transport open to ensure that call collision is
        avoided.</t>
      </section>
      <section numbered="true" toc="default">
        <name>PIM Variants Not Supported</name>
        <t>The following PIM variants are not supported with PIM Light and not
        covered by this document:</t>
        <ul spacing="normal">
	  <li>
            <t>PIM - Dense Mode (PIM-DM) <xref target="RFC3973" format="default"/></t>
          </li>
          <li>
            <t>Bidirectional PIM (BIDIR-PIM) <xref target="RFC5015" format="default"/></t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section numbered="true" toc="default">
      <name>Security Considerations</name>


      <t>Since PIM Light does not require PIM Hello messages and does not
      verify PIM neighbor adjacency for incoming Join/Prune messages, for security reasons, it is
      crucial that implementations ensure that only
      Join/Prune messages arriving at a configured PLI are processed. Any
      Join/Prune messages received on an interface that is not configured as a
      PLI <bcp14>MUST</bcp14> be discarded and not processed. Additionally, as a secondary
      line of defense, route policies <bcp14>SHOULD</bcp14> be implemented to process only
      the Join/Prune messages associated with the desired (S,G) pairs, while
      all other (S,G) pairs <bcp14>MUST</bcp14> be discarded and not processed.</t>

      <t>Furthermore, because PIM Light can be used for signaling
      PIM-SM Join/Prune messages, the security considerations outlined in
      <xref target="RFC7761" format="default"/> and <xref target="RFC4607"
      format="default"/> <bcp14>SHOULD</bcp14> be considered where
      appropriate.</t>
      
      <t>Per <xref section="6.1.1" sectionFormat="of" target="RFC7761"/>, only forged Join/Prune
      messages should be considered as a potential attack vector, as PIM Light
      does not process Hello or Assert messages. In addition, as detailed in <xref section="6.3" sectionFormat="of" target="RFC7761"/>, the authentication mechanisms described in <xref target="RFC5796" format="default"/> can be applied to PIM Light via IPsec Encapsulating
      Security Payload (ESP) or, optionally, the Authentication Header
      (AH).</t>
    </section>
  </middle>
  <back>

    <displayreference target="I-D.ietf-bier-pim-signaling" to="BIER-PIM"/>

    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>

	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7761.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5384.xml"/>


        <reference anchor="IANA-PIM-Mess-Types" target="https://www.iana.org/assignments/pim-parameters">
          <front>
            <title>PIM Message Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>


	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6559.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4607.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5796.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5015.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8279.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9260.xml"/>

      </references>
      <references>
        <name>Informative References</name>

	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3973.xml"/>

	
<reference anchor="I-D.ietf-bier-pim-signaling" target="https://datatracker.ietf.org/doc/html/draft-ietf-bier-pim-signaling-13">
<front>
<title>PIM Signaling Through BIER Core</title>
<author fullname="Hooman Bidgoli" initials="H." surname="Bidgoli" role="editor">
<organization>Nokia</organization>
</author>
<author fullname="Fengman Xu" initials="F." surname="Xu">
<organization>Verizon</organization>
</author>
<author fullname="Jayant Kotalwar" initials="J." surname="Kotalwar">
<organization>Nokia</organization>
</author>
<author fullname="IJsbrand Wijnands" initials="I." surname="Wijnands">
<organization>Cisco System</organization>
</author>
<author fullname="Mankamana Prasad Mishra" initials="M." surname="Mishra">
<organization>Cisco System</organization>
</author>
<author fullname="Zhaohui (Jeffrey) Zhang" initials="Z." surname="Zhang">
<organization>Juniper Networks</organization>
</author>
<date day="3" month="March" year="2025"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-bier-pim-signaling-13"/>
</reference>

      </references>
    </references>

        <section numbered="false" toc="default">
      <name>Acknowledgments</name>
      <t>The authors would like to thank <contact fullname="Zheng (Sandy) Zhang"/>
      and <contact fullname="Tanmoy Kundu"/> for their suggestions and
      contributions to this document.</t>
    </section>


  </back>
</rfc>
