rfc-7761

Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification (Revised)

B. Fenner, M. Handley, H. Holbrook, I. Kouvelas, R. Parekh, Z. Zhang, L. Zheng
date2016-03 streamIETF areartg wgpim statusINTERNET STANDARD pages137 canonicalhttps://www.rfc-editor.org/rfc/rfc7761 doi10.17487/RFC7761 errataview
This document specifies Protocol Independent Multicast - Sparse Mode (PIM-SM). PIM-SM is a multicast routing protocol that can use the underlying unicast routing information base or a separate multicast-capable routing information base. It builds unidirectional shared trees rooted at a Rendezvous Point (RP) per group, and it optionally creates shortest-path trees per source. This document obsoletes RFC 4601 by replacing it, addresses the errata filed against it, removes the optional (*,*,RP), PIM Multicast Border Router features and authentication using IPsec that lack sufficient deployment experience (see Appendix A), and moves the PIM specification to Internet Standard.

obsoletes

updated by

also

Extracted elements (30)

design-rationale §3.2

Register-encapsulation of data packets to the RP is inefficient because encapsulation/decapsulation is expensive and routing all traffic via the RP introduces unnecessary latency. This motivates the two-phase optimization: the RP joins the source-specific tree to receive native traffic (Phase 2, Register-Stop), and last-hop routers may further switch to an SPT for minimum latency (Phase 3).

multicast, routing

design-rationale §1

RFC 7761 removes the optional (*,*,RP) state, PIM Multicast Border Router (PMBR) features, and IPsec-based authentication from RFC 4601 because these features lack sufficient deployment experience. The document advances PIM-SM to Internet Standard while maintaining wire-level interoperability with RFC 4601 implementations.

multicast, routing, security

interoperability-note §4.4.1

For backward compatibility with RFC 2362, a DR SHOULD be able to accept a Register-Stop(*,G) message (source address all zeros, meaning 'stop all sources for this group'). Such a message SHOULD be treated as a Register-Stop(S,G) for all (S,G) Register state machines not in NoInfo state. RPs SHOULD NOT send Register-Stop(*,G) messages.

multicast, routing

interoperability-note §1

RFC 7761 is wire-compatible with RFC 4601; implementations conforming to either specification interoperate successfully. The only behavioral differences are the removal of the optional (*,*,RP) state, PMBR features, and IPsec authentication, which were already optional in RFC 4601.

multicast, routing

normative-requirement §4.3.1 MUST

After an initial randomized delay between 0 and Triggered_Hello_Delay (to prevent synchronization), Hello messages MUST be sent every Hello_Period seconds. The Hello Timer SHOULD NOT be reset except when it expires.

multicast, routing

normative-requirement §4.2 SHOULD

Data-triggered PIM-Assert messages sent from the packet-forwarding code SHOULD be rate-limited in an implementation-dependent manner to prevent Assert storms.

multicast, routing

normative-requirement §4.3.2 MUST

DR election MUST be performed on ALL active PIM-SM interfaces. Some implementations do not send Hello messages on point-to-point interfaces and thus cannot perform DR election on them; this is explicitly non-compliant.

multicast, routing

normative-requirement §4.3.1 MUST

Hello messages MUST be sent on all active interfaces, including physical point-to-point links, multicast to the ALL-PIM-ROUTERS group (224.0.0.13 for IPv4, ff02::d for IPv6). Not sending Hello messages on point-to-point interfaces is explicitly non-compliant behavior.

multicast, routing

normative-requirement §4.3.1 MUST

If a router needs to send a Join/Prune or Assert message on an interface on which it has not yet sent a Hello message with the currently configured IP address, it MUST immediately send the relevant Hello message without waiting for the Hello Timer to expire, followed by the Join/Prune or Assert message.

multicast, routing

normative-requirement §4.4.1 MUST

In IPv6, the encapsulating DR MUST perform Path MTU Discovery to the RP and MUST send ICMP Packet Too Big messages if a packet does not fit in the effective tunnel MTU. If the effective tunnel MTU is smaller than 1280, the DR MUST send Fragmentation Required messages with MTU 1280 and MUST fragment PIM register messages using an IPv6 fragmentation header between the outer IPv6 and PIM Register headers.

multicast, routing, ip

normative-requirement §4.3.1 SHOULD

The DR Priority option SHOULD be included in every Hello message, even if no DR Priority is explicitly configured on the interface. Priority-based DR election is only enabled when all neighbors on an interface advertise the DR Priority option; the default priority is 1.

multicast, routing

normative-requirement §4.3.1 SHOULD

The Generation Identifier (GenID) option SHOULD be included in all Hello messages. When a Hello with a new GenID is received from a neighbor, any old Hello information about that neighbor SHOULD be discarded and superseded by the new Hello information, potentially triggering a new DR election.

multicast, routing

normative-requirement §4.3.4 MUST NOT

The primary address of the source interface MUST NOT be listed within the Address List Hello option. All addresses within one Address List Hello option MUST be of the same address family; mixing IPv4 and IPv6 addresses in one message is not permitted.

multicast, routing

protocol-element §4.3.2

The DR election algorithm selects the router with the numerically highest DR Priority (32-bit unsigned) as DR; highest IP address breaks ties. Priority-based election is only used when all neighbors on the interface advertise the DR Priority option; otherwise, highest IP address alone determines the DR.

multicast, routing

protocol-element §4.3.3

The LAN Prune Delay Hello option carries a T bit (tracking support), Propagation_Delay, and Override_Interval fields. The effective values per interface are the maximums across all advertising neighbors. The option is only active when every neighbor on the link advertises it; otherwise, defaults apply.

multicast, routing

protocol-element §4.4.1

The Register Tunnel is a virtual interface representing the DR-to-RP encapsulation path for a given group. It is treated as a normal interface in the (S,G) olist; DownstreamJPState on the tunnel interface is set to Join or NoInfo to add or remove it from forwarding. MTU is smaller than the underlying IP interface due to encapsulation overhead.

multicast, routing

protocol-element §4.1.3

The (S,G) Keepalive Timer (KAT) is refreshed by data forwarded using (S,G) state and keeps (S,G) state alive in the absence of explicit (S,G) Joins. It is set to Keepalive_Period on receipt of a packet from a directly connected source or when traffic arrives on the RPF interface with an active (S,G) join.

multicast, routing

protocol-element §4.2.2

The SPTbit per (S,G) entry distinguishes forwarding on the Shortest-Path Tree (SPT) from the RP tree. When FALSE, only (*,G) forwarding state is used; when TRUE, both (*,G) and (S,G) state apply. The SPTbit prevents temporary black holes during tree switchover by delaying Prune(S,G,rpt) until upstream (S,G) state is established.

multicast, routing

protocol-element §4.1

The Tree Information Base (TIB) comprises three per-router state categories: (*,G) for the RP shared tree, (S,G) for source-specific shortest-path trees, and (S,G,rpt) for source-specific prune state on the RP tree. All forwarding decisions, Join/Prune generation, and Assert processing are defined in terms of the TIB.

multicast, routing

registry §5.1

The PIM Address Family registry (Section 5.1) records address family values used in PIM encoded address formats. Values are assigned by IANA.

registry, multicast

registry §5.2

The PIM Hello Options registry (Section 5.2) records type values for PIM Hello message TLV options, including DR Priority, GenID, LAN Prune Delay, and Address List. New values are assigned by IANA.

registry, multicast

security-consideration §6.1.1

An on-link attacker can forge PIM link-local messages (Hello, Join/Prune, Assert) to disrupt multicast routing on a LAN segment: forged Assert messages can hijack the forwarder role, and forged Hello messages can trigger spurious DR re-elections or advertise false neighbor state.

security, multicast

security-consideration §6.1.2

Forged unicast PIM messages, primarily Register and Register-Stop, can be injected by off-link attackers if source address spoofing is possible. A forged Register-Stop suppresses legitimate traffic registration at the DR; a forged Register can inject traffic or exhaust RP resources.

security, multicast

security-consideration §6.4

PIM-SM is vulnerable to denial-of-service attacks including state exhaustion via forged Join messages creating spurious (S,G) or (*,G) entries, bandwidth exhaustion via forged Register messages, and CPU exhaustion via high-rate Assert or Hello floods. Rate limiting of data-triggered Assert messages is specified as SHOULD.

security, multicast

state-machine §4.5.1

The downstream per-interface (*,G) Join/Prune state machine has states NoInfo (NI), Join (J), and Prune-Pending (PP). Receiving a Join moves NI or PP to J; receiving a Prune while in J moves to PP, starting the Prune-Pending Timer; if no Join override arrives before the timer expires, the state moves to NI.

multicast, routing

state-machine §4.5.2

The downstream per-interface (S,G) Join/Prune state machine mirrors the (*,G) machine with states NoInfo (NI), Join (J), and Prune-Pending (PP), driven by received (S,G) Join/Prune messages and the associated Prune-Pending and Expiry timers.

multicast, routing

state-machine §4.6.1

The per-interface (S,G) Assert state machine has three states: NoInfo (NI), I Won Assert (W), and I Lost Assert (L). Transitions are triggered by receiving Assert(S,G) messages, data packets arriving on the interface from a non-RPF direction, and Assert Timer expiry. The loser suppresses forwarding and sends subsequent Joins to the assert winner.

multicast, routing

state-machine §4.4.1

The per-(S,G) Register State Machine at the DR has four states: NoInfo (NI), Join (J), Join-Pending (JP), and Prune (P). Key transitions: CouldRegister becoming true moves NI→J; receiving Register-Stop moves J→P and starts Register-Stop Timer; timer expiry in P sends a Null-Register and moves P→JP; timer expiry in JP adds register tunnel and moves JP→J.

multicast, routing

wire-format §4.9.1

Encoded Source Address format (Section 4.9.1) includes an address family field, encoding type, flag bits (S bit for SPT, W bit for WC, R bit for RPT), mask length, and source address. Encoded Group Address includes B (Bidir) and Z (Zone) flag bits plus group mask length and address.

multicast, routing

wire-format §4.9.2

PIM Hello messages use a TLV option format. Defined options include: DR Priority (32-bit unsigned), Generation Identifier/GenID (32-bit random), LAN Prune Delay (T bit + 15-bit Propagation_Delay + 16-bit Override_Interval), and Address List. If the Holdtime option is absent, Default_Hello_Holdtime is used for the Neighbor Liveness Timer.

multicast, routing