RFC 9739

Protocol Independent Multicast Light (PIM Light)

πŸ“… published March 2025, from ietf

RFC 9739: Protocol Independent Multicast Light (PIM Light) πŸ¦‹

okay so RFC 9739 is the spec for PIM Light πŸ’–, and the title block is giving us everything we need. It's from the IETF and it's a Standards Track doc (ISSN 2070-1721), dated March 2025. Big squad of authors: H. Bidgoli, Ed. from Nokia, S. Venaas, M. Mishra, and Z. Zhang, plus M. McBride. Cisco, Juniper, and Futurewei are all in the mix 🌈. The header doesn't list any Obsoletes or Updates entries, so this one doesn't touch any other RFC in that field πŸ“.

Abstract ✨

okay so this doc defines Protocol Independent Multicast Light (PIM Light) and the PIM Light Interface (PLI) πŸŽ€. A PLI doesn't need a PIM Hello message to accept PIM Join/Prune messages, which is the big twist πŸ‘‘. That means it can signal multicast states over networks that can't handle full PIM neighbor discovery, like Bit Index Explicit Replication (BIER) networks linking two or more PIM domains. The doc lays out the PIM Light protocol and the procedures that keep multicast traffic loop-free between two or more PIM Light routers, and honestly that's the whole main-character arc πŸ’….

Status of This Memo 🧚

this is an Internet Standards Track document, bestie 🫢

it's a product of the Internet Engineering Task Force (IETF) and it represents the consensus of the IETF community. it got public review and was approved for publication by the Internet Engineering Steering Group (IESG) πŸ”₯. if you want more on Internet Standards, check out Section 2 of RFC 7841 πŸ’œ.

for info on the current status of this doc, any errata, and how to send feedback, go to https://www.rfc-editor.org/info/rfc9739 🌸.

Copyright (c) 2025 IETF Trust and the persons identified as the document authors. All rights reserved πŸ¦‹.

this doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they stand on the date of publication. please read these carefully, because they spell out your rights and restrictions for this doc πŸ™ˆ. Code Components pulled out of this doc must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Revised BSD License ⭐.

Table of Contents πŸŽ€

1.  Introduction
2.  Terminology
3.  PIM Light Interface
  3.1.  Message Types Supported by PIM Light
  3.2.  Considerations for the Absence of Hello Message
    3.2.1.  Join Attribute
    3.2.2.  DR Election
    3.2.3.  PIM Assert
  3.3.  PLI Configuration
  3.4.  Failures in PLR Domain
  3.5.  Reliable Transport Mechanism for PIM Light
  3.6.  PIM Variants Not Supported
4.  IANA Considerations
5.  Security Considerations
6.  References
  6.1.  Normative References
  6.2.  Informative References
Acknowledgments
Authors' Addresses

1. Introduction ✨

okay so this doc is where we get into the procedures for PIM Light and the PIM Light Interface (PLI) 🌈. the PLI is a brand-new type of PIM interface that lets you signal PIM Join/Prune packets without full PIM neighbor discovery. it's super useful when multicast states need to be signaled over networks or media that can't support full PIM neighborship between routers, or when full PIM neighborship just isn't wanted 🧚. these networks and media get called "PIM Light domains" in this doc πŸ¦‹.

the catch is that not having full PIM neighborship removes some PIM functionality, which Section 3.2 of this doc walks through πŸ’€. PIM Light only supports the PIM - Sparse Mode (PIM-SM) protocol, including PIM Source-Specific Multicast (PIM-SSM), as per [RFC7761] 🫢. the doc also covers the procedures and considerations you need for PIM Light and the PLI to route multicast groups efficiently in specific deployment environments πŸ’–.

2. Terminology πŸ’œ

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 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here πŸ”₯.

this doc uses terminology from "Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification (Revised)" [RFC7761] πŸŽ€.

3. PIM Light Interface πŸ¦‹

Section 4.3.1 of [RFC7761] describes PIM neighbor discovery via Hello messages 🌸. Section 4.5 of [RFC7761] says that if a router gets a Join/Prune message from a particular IP source address and it hasn't seen a PIM Hello message from that source address, then the Join/Prune message SHOULD be discarded without further processing πŸ™ˆ.

sometimes you want multicast states between two routers without forming a PIM neighborship πŸ’…. that can be needed for a bunch of reasons, like signaling multicast states upstream between multiple PIM domains over a network that isn't optimized for PIM, or one that doesn't need PIM neighbor establishment 🧚. an example is a Bit Index Explicit Replication (BIER) [RFC8279] network connecting multiple PIM domains, where PIM Join/Prune messages get tunneled via BIER as specified in [BIER-PIM] ✨.

a PLI accepts Join/Prune messages from an unknown PIM router without needing a PIM Hello message from that router πŸ‘‘. the catch is that with no Hello messages on a PLI, there's no mechanism to discover neighboring PIM routers or their capabilities, and no way to run basic algorithms like Designated Router (DR) election [RFC7761] πŸ’€. so the PIM Light router doesn't create any general-purpose state for neighboring PIM routers, and it only processes Join/Prune messages from downstream routers in its multicast routing table 🫢. and yes, processing those Join/Prune messages does introduce multicast states in a PIM Light router 🌈.

because of all these constraints, a PLI should be deployed in very specific scenarios where PIM-SM isn't suitable πŸ“. the applications or networks where PLIs get deployed MUST ensure there's no multicast packet duplication, like multiple upstream routers sending the same multicast stream to a single downstream router πŸ”₯. for example, an implementation should make sure DR election happens on upstream redundant PIM routers at the edge of the PIM Light domain, so that a single DR forwards the PIM Join message from the receiver to the source πŸ’–.

3.1. Message Types Supported by PIM Light πŸŽ€

the "PIM Message Types" registry [IANA-PIM-Mess-Types] lists the message types supported by PIM 🌸. PIM Light only supports these message types from that registry:

  • type 1 (Register)
  • type 2 (Register Stop)
  • type 3 (Join/Prune)
  • type 8 (Candidate RP Advertisement)
  • type 13.0 (PIM Packed Null-Register)
  • type 13.1 (PIM Packed Register-Stop)
  • Any future PIM message types where the destination is a unicast IP address

no other message types are supported by PIM Light. other message types MUST NOT be processed if they're received on a PLI πŸ™…β€β™€οΈπŸ’œ.

3.2. Considerations for the Absence of Hello Message 🧚

because Hello messages aren't processed in a PIM Light domain, you should keep the considerations in the subsections below in mind ✨.

3.2.1. Join Attribute πŸ’…

since a PLI doesn't use PIM Hello messages, it also doesn't support the Join Attribute option in PIM Hello as specified in [RFC5384] πŸ¦‹. that means PIM Light doesn't know whether its neighbor can process Join Attributes, so it SHOULD NOT send a Join message containing a Join Attribute πŸ™ˆ.

there are two cases where a PLI can support a Join Attribute 🌈:

  • The neighbors on the PLI are known via configuration to be capable of processing the attribute.
  • 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.

3.2.2. DR Election πŸ‘‘

because there are no Hello messages, DR election isn't supported on a PIM Light router πŸ’€. the network design has to make sure DR election happens within the PIM domain, assuming the PIM Light domain interconnects PIM domains 🫢.

for instance, in a BIER domain connecting two PIM domains (like the figure below), a PLI can be used between BIER edge routers just for multicast state communication, transmitting only PIM Join/Prune messages πŸ“. if there are redundant PIM routers at the edge of the BIER domain, they MUST establish PIM adjacency as per [RFC7761] to prevent multicast stream duplication and to make sure DR election happens at the edge of the BIER domain πŸ”₯. for example, DR election could be between router D and F in the figure below πŸ’–. when a Join or Prune message arrives from a PIM domain at the downstream BIER edge router, it can be forwarded over the BIER tunnel to the upstream BIER edge router only via the DR πŸŽ€.

                 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)

3.2.3. PIM Assert 🌸

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 cause packet duplication πŸ¦‹. PIM Assert is used to pick a single transmitter when that duplication gets detected 🧚. according to Section 4.6 of [RFC7761], PIM Assert should only be accepted from a known PIM neighbor πŸ™ˆ.

in PIM Light implementations, care must be taken to avoid duplicate streams arriving from multiple upstream PIM Light routers at a single downstream PIM Light router 🌈. if network design constraints make that impossible, the network architecture you build has to 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 find the nearest EBBRs (Egress BIER Border Routers) to the source by using the Shortest Path First (SPF) algorithm with post-processing as described in Appendix A.1 of [BIER-PIM] ✨. if the downstream IBBR finds two EBBRs, it can pick one with 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, and that part is beyond the scope of this document πŸ’€.

3.3. PLI Configuration 🫢

since a PLI doesn't require PIM Hello messages and PIM neighbor adjacency isn't checked for arriving Join/Prune messages, there needs to be a mechanism for enabling PLIs on interfaces πŸ“. Join/Prune messages not received from a PIM neighbor MUST be dropped unless PLI is enabled on the interface πŸ”₯. in some cases, a PLI may be enabled automatically through 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 [BIER-PIM] πŸŽ€.

3.4. Failures in PLR Domain πŸ’”

okay bestie, this one is a little spicy πŸ”₯. 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. So the upstream routers keep sending multicast streams nonstop until the outgoing interface (OIF) expires πŸ’€.

Other protocols can be used to detect these failures in the PIM Light domain, and they can be implementation specific 🧚. For example, the interface where PIM Light is configured can be protected with Bidirectional Forwarding Detection (BFD) or similar tech ✨. 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 🫢.

Another example is when the PLI is set up automatically between the BIER Edge Routers (BERs), like 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, which stops the multicast stream from being sent πŸ™ˆ.

                     UBER                 DBER
       |--PIM domain--|--BIER domain (PLI)--|--PIM domain--|
Source--( A )----------( B ) ---- ( C ) ---- ( D )----------( E )--Host
              <--Prune (S,G)          <failure on D>

3.5. Reliable Transport Mechanism for PIM Light 🚚

[RFC6559] defines PIM Over Reliable Transport (PORT) 🌸, a reliable transport mechanism for PIM Join/Prune messages that can run over either TCP or SCTP. Both TCP and SCTP use destination port number 8471. SCTP is explained in [RFC9260], and it's the second option for PORT. [RFC6559] mentions that when a router is configured to use PIM over TCP on a given interface, it MUST include the PIM-over-TCP-Capable Hello Option in its Hello messages for that interface. The same goes for SCTP: the router MUST include the PIM-over-SCTP-Capable Hello Option in its Hello messages on that interface πŸ’….

These Hello options contain a Connection ID, which is an IPv4 or IPv6 address used to set up the SCTP or TCP connection πŸ¦‹. For PORT using TCP, the Connection ID decides which peer does the active transport open to the neighbor and which one does the passive transport open, as per Section 4 of [RFC6559]. When the router is using SCTP, the Connection ID is not used to decide the active and passive peer, since SCTP can handle call collision πŸ™Œ.

Because PIM Light doesn't have Hello messages, the PLI can be configured with the Connection ID (aka the IPv4 or IPv6 address used to set up 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 either active transport open or passive transport open, so that call collision is avoided 🚨.

3.6. PIM Variants Not Supported πŸ™…β€β™€οΈ

The following PIM variants are not supported with PIM Light, and they're not covered by this document:

  • PIM - Dense Mode (PIM-DM) [RFC3973]
  • Bidirectional PIM (BIDIR-PIM) [RFC5015]

4. IANA Considerations ✨

This document has no IANA actions. Nothing to see here, bestie 🧚.

5. Security Considerations πŸ”

okay, this section is seriously important, so listen up πŸ‘‘. Since PIM Light doesn't require PIM Hello messages and doesn't verify PIM neighbor adjacency for incoming Join/Prune messages, implementations really need to make sure that only Join/Prune messages arriving at a configured PLI get processed 😱. Any Join/Prune messages received on an interface that is not configured as a PLI MUST be discarded and not processed. As a secondary line of defense, route policies SHOULD be implemented so that only the Join/Prune messages for the desired (S,G) pairs get processed, while all other (S,G) pairs MUST be discarded and not processed πŸ›‘οΈ.

Also, because PIM Light can be used to signal PIM-SM Join/Prune messages, the security considerations outlined in [RFC7761] and [RFC4607] SHOULD be considered where appropriate πŸ’œ.

Per Section 6.1.1 of [RFC7761], only forged Join/Prune messages should be considered as a potential attack vector, since PIM Light doesn't process Hello or Assert messages πŸ™ˆ. In addition, as detailed in Section 6.3 of [RFC7761], the authentication mechanisms described in [RFC5796] can be applied to PIM Light via IPsec Encapsulating Security Payload (ESP) or, optionally, the Authentication Header (AH) πŸ”’.

6. References

6.1. Normative References

[IANA-PIM-Mess-Types]
           IANA, "PIM Message Types",
           <https://www.iana.org/assignments/pim-parameters>.

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119,
           DOI 10.17487/RFC2119, March 1997,
           <https://www.rfc-editor.org/info/rfc2119>.

[RFC4607]  Holbrook, H. and B. Cain, "Source-Specific Multicast for
           IP", RFC 4607, DOI 10.17487/RFC4607, August 2006,
           <https://www.rfc-editor.org/info/rfc4607>.

[RFC5015]  Handley, M., Kouvelas, I., Speakman, T., and L. Vicisano,
           "Bidirectional Protocol Independent Multicast (BIDIR-
           PIM)", RFC 5015, DOI 10.17487/RFC5015, October 2007,
           <https://www.rfc-editor.org/info/rfc5015>.

[RFC5384]  Boers, A., Wijnands, I., and E. Rosen, "The Protocol
           Independent Multicast (PIM) Join Attribute Format",
           RFC 5384, DOI 10.17487/RFC5384, November 2008,
           <https://www.rfc-editor.org/info/rfc5384>.

[RFC5796]  Atwood, W., Islam, S., and M. Siami, "Authentication and
           Confidentiality in Protocol Independent Multicast Sparse
           Mode (PIM-SM) Link-Local Messages", RFC 5796,
           DOI 10.17487/RFC5796, March 2010,
           <https://www.rfc-editor.org/info/rfc5796>.

[RFC6559]  Farinacci, D., Wijnands, IJ., Venaas, S., and M.
           Napierala, "A Reliable Transport Mechanism for PIM",
           RFC 6559, DOI 10.17487/RFC6559, March 2012,
           <https://www.rfc-editor.org/info/rfc6559>.

[RFC7761]  Fenner, B., Handley, M., Holbrook, H., Kouvelas, I.,
           Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent
           Multicast - Sparse Mode (PIM-SM): Protocol Specification
           (Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March
           2016, <https://www.rfc-editor.org/info/rfc7761>.

[RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
           2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
           May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8279]  Wijnands, IJ., Ed., Rosen, E., Ed., Dolganow, A.,
           Przygienda, T., and S. Aldrin, "Multicast Using Bit Index
           Explicit Replication (BIER)", RFC 8279,
           DOI 10.17487/RFC8279, November 2017,
           <https://www.rfc-editor.org/info/rfc8279>.

[RFC9260]  Stewart, R., TΓΌxen, M., and K. Nielsen, "Stream Control
           Transmission Protocol", RFC 9260, DOI 10.17487/RFC9260,
           June 2022, <https://www.rfc-editor.org/info/rfc9260>.

6.2. Informative References

[BIER-PIM] Bidgoli, H., Ed., Xu, F., Kotalwar, J., Wijnands, I.,
           Mishra, M., and Z. Zhang, "PIM Signaling Through BIER
           Core", Work in Progress, Internet-Draft, draft-ietf-bier-
           pim-signaling-13, 3 March 2025,
           <https://datatracker.ietf.org/doc/html/draft-ietf-bier-
           pim-signaling-13>.

[RFC3973]  Adams, A., Nicholas, J., and W. Siadak, "Protocol
           Independent Multicast - Dense Mode (PIM-DM): Protocol
           Specification (Revised)", RFC 3973, DOI 10.17487/RFC3973,
           January 2005, <https://www.rfc-editor.org/info/rfc3973>.

Acknowledgments 🫢

Huge shoutout from the authors to Zheng (Sandy) Zhang and Tanmoy Kundu for their suggestions and contributions to this document πŸ’–.

Authors' Addresses πŸŽ€

Hooman Bidgoli (editor)
Nokia
March Road
Ottawa Ontario K2K 2T6
Canada
Email: hooman.bidgoli@nokia.com


Stig Venaas
Cisco Systems, Inc.
Tasman Drive
San Jose, CA 95134
United States of America
Email: stig@cisco.com


Mankamana Mishra
Cisco Systems, Inc.
Tasman Drive
San Jose, CA 95134
United States of America
Email: mankamis@cisco.com


Zhaohui Zhang
Juniper Networks
Boston, MA
United States of America
Email: zzhang@juniper.net


Mike McBride
Futurewei Technologies Inc.
Santa Clara, CA
United States of America
Email: michael.mcbride@futurewei.com
πŸ“¦ where this page comes from