Bidirectional Protocol Independent Multicast (BIDIR-PIM)
updated by
Extracted elements (25)
BIDIR-PIM eliminates both Register encapsulation and source-specific (S,G) state by allowing packets to be natively forwarded from a source to the RP using shared tree state alone. This removes data-driven protocol events entirely, a key advantage over PIM-SM.
The DF election algorithm is biased towards discarding DF information and suspending forwarding during periods of ambiguity. This is deliberate: the forwarding rules in Section 3.3 can produce loops if multiple routers simultaneously believe they are the DF, so safety is prioritized over continuity.
The DF election is RPA-specific rather than group-specific. Because all bidirectional groups sharing an RPA have the same upstream direction, a single per-RPA per-link election suffices, significantly reducing the number of elections that must be performed.
The RPA (Rendezvous Point Address) does not need to correspond to a physical interface of a real router, unlike PIM-SM which requires an actual RP router. This allows the RPA to be any routable address, giving administrators more flexibility in tree root placement.
BIDIR-PIM reuses the PIM-SM Hello and Join/Prune message formats and the Encoded-Unicast address format without modification. Routers must detect BIDIR-PIM capability via the OptionType 22 Hello option; absence of the option from a neighbor indicates a non-BIDIR-capable router and must be logged.
A BIDIR-PIM capable router MUST include the Bidirectional Capable PIM-Hello option (OptionType 22) in all Hello messages. If a neighbor's Hello lacks this option, the error MUST be logged to the router administrator in a rate-limited manner.
A BIDIR-PIM router SHOULD provide an option to limit the set of neighbors from which it will accept Join/Prune, Assert, and DF-election messages. A PIM router SHOULD NOT accept protocol messages from a router from which it has not yet received a valid Hello message.
On point-to-point unnumbered interfaces, the router's address SHOULD be the source address chosen for its Hello packet. Additionally, BIDIR-PIM RECOMMENDS accepting PIM messages with a destination address of all zeros on point-to-point links to accommodate unnumbered interfaces.
When a router participates in a DF election for an RPA on the interface that its MRIB indicates as the RPF Interface, it MUST always advertise an infinite metric. On any other interface it MUST advertise the MRIB-provided metrics.
When authentication is available, spoofed DF-election messages MUST be discarded and a rate-limited warning message SHOULD be logged. BIDIR-PIM routers SHOULD also check the destination MAC address of received DF-election messages to prevent unicast-MAC partitioning attacks.
When receiving a Join(*,G) or Prune(*,G), a router MUST first check whether the RP address in the message matches RPA(G). If it does not match, the Join or Prune MUST be silently dropped.
Election reliability parameters: Election_Robustness defaults to 3 (minimum messages that must be lost for election to fail), Offer_Period is 100 ms, Backoff_Period is 1 second. Retransmissions within an election are randomly spaced using OPlow = rand(0.5, 1) * Offer_Period.
The Designated Forwarder (DF) is a single router elected per RPA on every link (except the RPL itself). The DF holds exclusive responsibility for forwarding downstream traffic onto its link and forwarding upstream traffic from its link toward the RPL for all bidirectional groups mapping to that RPA.
The DF election uses four control messages: Offer (advertising sender metric), Winner (declaring DF status), Backoff (DF acknowledging a better offer and instructing others to hold), and Pass (old DF transferring responsibility to the best offering router). All are sent to the ALL-PIM-ROUTERS group with TTL 1.
IANA assigned OptionType 22 to the 'Bidirectional Capable' PIM-Hello option. Additionally, all DF-election PIM control messages use PIM message Type 10 with subtypes 1–4 (Offer, Winner, Backoff, Pass).
An attacker can prevent the DF election from ever converging by sending an infinite sequence of Offer messages, blocking establishment of multicast forwarding trees. BIDIR-PIM messages are link-local only (TTL 1 to ALL-PIM-ROUTERS), so all attacks require a directly connected attacker or a compromised router.
An attacker with direct link access can forge DF-election messages to either win the DF election itself (advertising the best metric) or install an arbitrary router as DF (impersonating the current DF in a Pass message). A concurrent DoS attack on the impersonated router can prevent it from detecting and correcting the anomaly.
IPsec transport mode with the Authentication Header (AH) is the recommended method to authenticate BIDIR-PIM messages and prevent forged-message attacks. The specification in PIM-SM [RFC 4601] for authenticating link-local messages applies to all BIDIR-PIM messages as well.
The DF election state machine has four states: Offer (initial, sending periodic Offer messages), Lose (another router is DF or no path exists), Win (acting DF without contest), and Backoff (acting DF but another router is challenging). A router is considered acting DF only in Win or Backoff states.
The downstream (*,G) per-interface state machine has three states: NoInfo, Join, and PrunePending. Transitions are triggered by receiving Join(*,G) or Prune(*,G) targeted to this router, PrunePendingTimer or ExpiryTimer expiry, and the 'Stop Being DF' event. PrunePending functions identically to Join for forwarding purposes.
The upstream (*,G) state machine has two states: NotJoined and Joined, driven by the JoinDesired(G) boolean. In Joined state, the timer is suppressed when a matching Join is observed upstream, decreased to t_override on upstream Prune or RPF_DF GenID change, and reset on RPF_DF change (which also triggers a Prune to the old DF).
All DF election messages share a common header: PIM Ver (4 bits, value 2), Type (4 bits, value 10), Subtype (4 bits: 1=Offer, 2=Winner, 3=Backoff, 4=Pass), Rsvd (4 bits), Checksum (16 bits), RP Address (Encoded-Unicast), Sender Metric Preference (32 bits), Sender Metric (32 bits).
The Backoff message appends to the common header: Offering Address (Encoded-Unicast), Offering Metric Preference (32 bits), Offering Metric (32 bits), and Interval (16 bits, in milliseconds) specifying how long routers with worse metrics must hold their offers.
The Bidirectional Capable PIM-Hello option has OptionType 22 and Length 0, carrying no payload. Its mere presence in a Hello message signals that the router is capable of participating in BIDIR-PIM.
The Pass message appends to the common header: New Winner Address (Encoded-Unicast), New Winner Metric Preference (32 bits), New Winner Metric (32 bits). The Sender fields in the common header carry the old DF's identity and current metric at pass time.