L3 · multicast · reviewed

RP discovery

Rendezvous point discovery: static, BSR, Auto-RP and Anycast-RP

Every router in a sparse-mode domain has to agree which rendezvous point serves which group. Four mechanisms answer that, and disagreement is silent.

Presenter modeEmbed this figure

RP DiscoveryRFC 7761 · INTERNET STANDARD · March 2016Hash FunctionRFC 7761 · INTERNET STANDARD · March 2016Protocol OverviewRFC 5059 · PROPOSED STANDARD · January 2008MechanismRFC 4610 · PROPOSED STANDARD · August 2006

Why it exists

Sparse mode meets sources and receivers at a rendezvous point. That only works if the source’s router and the receiver’s router pick the same one, and nothing in PIM makes them — the agreement has to come from somewhere else. RP DiscoveryRFC 7761 · INTERNET STANDARD · March 2016

Four mechanisms answer it. Static configuration on every router; BSR, which elects a bootstrap router that publishes an RP set inside PIM; Auto-RP, which is Cisco’s earlier answer using two dense-mode groups; and Anycast RP, which is not a discovery mechanism at all but makes one address resolve to several routers. Protocol OverviewRFC 5059 · PROPOSED STANDARD · January 2008

Bidir-PIM needs an RP too, and SSM needs none. A domain running SSM for its one-to-many traffic has no RP discovery problem for that traffic at all.

Agreeing on the rendezvous point

Static configuration is the simplest answer and the easiest to get subtly wrong. Where several RPs serve one range, a hash — not a preference — decides.

Sparse mode needs a rendezvous point, and every router that might join a group has to name the same one for it. That agreement is the whole problem. RP1 · 10.255.0.1. RP2 · 10.255.0.2. Router A: Needs RP for 239.1.1.1. Router B: Needs RP for 239.1.1.1.

RP1 · 10.255.0.1RP2 · 10.255.0.2Router ANeeds: RP for 239.1.1.1Router BNeeds: RP for 239.1.1.1
  • Link
  • Blocking
  • Packet in flight
  • Discarded
  • Emphasis
Select a device to read its state. Arrow keys walk the topology.
Text equivalent of this diagram
Devices and links at this step
ElementKindState
RP1 · 10.255.0.1router
RP2 · 10.255.0.2router
Router ArouterNeeds: RP for 239.1.1.1
Router BrouterNeeds: RP for 239.1.1.1
Router ARP1 · 10.255.0.1linkup
Router BRP2 · 10.255.0.2linkup
1 / 5

Sparse mode needs a rendezvous point, and every router that might join a group has to name the same one for it. That agreement is the whole problem.

What changed

  • Router A: Needs → RP for 239.1.1.1
  • Router B: Needs → RP for 239.1.1.1

How it works

However a router learns its candidates, the group-to-RP decision is local and identical everywhere: longest match on the group range first, then highest priority — where a lower number is better — then a hash over the group and RP addresses, then the highest address. Group-to-RP MappingRFC 7761 · INTERNET STANDARD · March 2016

The hash matters more than it looks. It means several RPs serving one range share the groups deterministically, so every router reaches the same answer without negotiating and different groups land on different RPs. Hash FunctionRFC 7761 · INTERNET STANDARD · March 2016

BSR separates two jobs. Candidate RPs unicast their willingness to the elected bootstrap router, which assembles an RP set and floods it hop by hop. The BSR never assigns a group to an RP — every router does that itself from the same list. Receiving and Using the RP-SetRFC 5059 · PROPOSED STANDARD · January 2008

Anycast RP is orthogonal. Several routers own the same RP address and the IGP picks the nearest, which gives sub-second failover and no shared state — so the RPs have to exchange source information themselves, with MSDP in a mesh group or with PIM register forwarding. MechanismRFC 4610 · PROPOSED STANDARD · August 2006

On the wire

Constructed examples, encoded from the field table below them — not captured traffic.

Both priorities are in here and they run in opposite directions: BSR priority 200 is high because higher wins the election, and RP priority 10 is low because lower is preferred.

IPv4
Protocol 103, multicast to 224.0.0.13 with TTL 1, flooded hop by hop rather than routed — which is why a PIM adjacency gap stops the RP set dead. RFC 7761
PIM header
Version, type 4, the no-forward bit, and the checksum. RFC 5059
RP set
The elected BSR, then one entry per group range listing its candidate RPs. RFC 5059

Configure it

BSR as the single mechanism, with the static alternative shown and not used.

Cisco IOS-XE 17.12 · Catalyst 9500, Catalyst 8500draft

  1. ip pim bsr-candidate Loopback0 30 200

    Loopback, hash mask length, priority. Higher priority wins the BSR election — the opposite sense to the RP priority two lines below, in the same mechanism.

    Common mistake: Choosing the priority with the RP sense in mind. Nothing warns, and the domain elects the router nobody intended.

    RFC 5059 §3.1

  2. ip pim rp-candidate Loopback0 group-list MCAST-RANGES priority 10
    ip access-list standard MCAST-RANGES
     permit 239.0.0.0 0.255.255.255

    Advertised by unicast to the elected BSR, not flooded. Lower RP priority is better, which is the reverse of the BSR priority above.

    RFC 5059 §3.2

  3. ! the alternative, and not to be combined with the above:
    ! ip pim rp-address 10.255.0.1 MCAST-RANGES override

    `override` makes the static entry win over anything learned — which is also the default on most platforms. A leftover line like this is the usual cause of one router disagreeing with a healthy BSR.

  4. ip pim bsr-candidate Loopback0 30 200 accept-rp-candidate TRUSTED-RPS

    Bounds which routers may advertise themselves as RPs. Without it, any PIM router in the domain can put itself into the RP set.

  5. interface GigabitEthernet0
     ip pim bsr-border

    Stops Bootstrap messages crossing this interface, which is what defines the edge of the PIM domain. Without it the RP set leaks to a neighbouring domain that has its own.

    RFC 5059 §3.4

Verify

show ip pim bsr-router
Which router is the elected BSR, and its priority.
show ip pim rp mapping
The RP set as this router received it, and its origin.
show ip pim rp-hash 239.1.1.1
The resolved RP — the answer to compare between routers.

Caveats

  • BSR priority: higher is better. RP priority: lower is better. The two run in opposite directions in one mechanism.
  • A static RP overrides a learned one by default, which makes a leftover entry invisible in every BSR diagnostic.
  • Without `bsr-border` the RP set crosses into a neighbouring domain that has its own.

When it breaks

Symptom first, because that is what you have when it happens.

  1. A group works between some routers and not others. PIM neighbours are up everywhere and nothing is logged.

    Narrow it down

    1. Ask each router which RP it resolves for the group, and compare — not the configuration, the resolved mapping.
    2. Check for a static entry overriding what BSR advertised.
    3. Check whether a more specific group range points somewhere else.

    Cause

    The source’s router and the receiver’s router resolved different RPs, so the register and the join never meet. A router that is not an RP does not object to a join arriving for one.

    Fix

    Make the resolved mapping identical everywhere, then remove whichever mechanism was not chosen for this domain.

    Group-to-RP MappingRFC 7761 · INTERNET STANDARD · March 2016
  2. BSR is deployed and one router still uses the old rendezvous point.

    Narrow it down

    1. Look for a static RP configuration on that router.
    2. Check whether the platform prefers static over learned by default.
    3. Confirm the router is receiving the RP set at all.

    Cause

    A leftover static entry, which most platforms prefer over anything learned. Every BSR diagnostic looks healthy because BSR is working — it is being ignored.

    Fix

    Remove the static entry, or configure it to yield to a learned mapping where the platform supports that.

  3. Part of the domain has an empty RP set and cannot join any group.

    Narrow it down

    1. Trace the Bootstrap message hop by hop and find where it stops.
    2. Check for a PIM adjacency gap or a boundary filter on the path.
    3. Confirm the BSR is actually elected and flooding.

    Cause

    Bootstrap messages are flooded hop by hop through PIM. A gap in PIM adjacency, or a multicast boundary that filters them, stops the RP set at that point.

    Fix

    Restore PIM adjacency along the path, and check that any multicast boundary does not filter the bootstrap traffic.

    Forwarding Bootstrap MessagesRFC 5059 · PROPOSED STANDARD · January 2008
  4. Anycast RP is deployed and receivers on one side of the network never see sources on the other.

    Narrow it down

    1. Check which anycast RP the source registered with and which one the receiver joined.
    2. Confirm the RPs exchange source state, by MSDP mesh group or PIM register forwarding.
    3. Verify the MSDP session is sourced from a unique loopback rather than the anycast address.

    Cause

    Anycast made the address redundant and did nothing about the state. Without state sharing, each RP knows half the picture.

    Fix

    Add an MSDP mesh group between the RPs, or use RFC 4610 register forwarding. Either way, source the sessions from unique addresses.

    MechanismRFC 4610 · PROPOSED STANDARD · August 2006
  5. Two RPs serve one range at equal priority and almost every group lands on the same one.

    Narrow it down

    1. Check the hash mask length the bootstrap router is advertising.
    2. List the groups in use and see how much of the address they have in common.
    3. Compare the resolved RP for several adjacent groups.

    Cause

    The hash covers only the masked bits of the group address. With a short mask and groups that differ only in the low octet, every group hashes the same way — which is deliberate, because it keeps related groups on one RP.

    Fix

    Lengthen the hash mask so more of the group address matters, or allocate group addresses that differ in the bits the mask covers.

    Hash FunctionRFC 7761 · INTERNET STANDARD · March 2016

Design notes

Choose one mechanism per domain and remove the others. Most RP incidents are not a mechanism failing; they are two mechanisms both working, on different routers, toward different answers.

A static RP usually overrides a dynamically learned one. That default is sensible and it makes a leftover static entry invisible to every BSR or Auto-RP diagnostic — the RP set looks correct and one router ignores it.

Static plus Anycast RP is a defensible modern choice: no discovery protocol to debug, redundancy from the IGP, and failover at IGP speed. Its cost is configuration on every router, so it wants automation rather than an engineer.

Watch the two priorities running in opposite directions. A higher BSR priority is better; a lower RP priority is better. Nothing warns about a value chosen with the wrong sense — the domain simply elects the router nobody meant. Bootstrap Router ElectionRFC 5059 · PROPOSED STANDARD · January 2008

Misconceptions

The BSR assigns groups to rendezvous points.
It publishes a list. Every router applies the same range, priority and hash rules to that list and reaches the same answer independently, which is what lets the mechanism scale — nothing is recomputed centrally when a group appears. Receiving and Using the RP-SetRFC 5059 · PROPOSED STANDARD · January 2008
With several RPs for a range, the lowest address wins.
A hash over the group and RP addresses decides, after range specificity and priority. That is deliberate: it spreads groups across the available RPs instead of concentrating all of them on one. Hash FunctionRFC 7761 · INTERNET STANDARD · March 2016
Anycast RP is an alternative to BSR.
It is orthogonal. Anycast makes one address resolve to several routers; the domain still needs to learn that address, statically or through BSR. And the anycast RPs still have to share source state between themselves. OverviewRFC 4610 · PROPOSED STANDARD · August 2006
Higher priority is better throughout the mechanism.
A higher BSR priority is better and a lower RP priority is better. The two run in opposite directions inside one design, and a value chosen with the wrong sense produces a silently wrong election. Bootstrap Router ElectionRFC 5059 · PROPOSED STANDARD · January 2008

More walkthroughs

Letting the domain work out its own RP setbaseline

Candidate RPs advertise themselves to an elected bootstrap router, which publishes one RP set to the whole domain inside PIM.

Candidate bootstrap routers flood Bootstrap messages. Highest priority wins, then highest address, and the loser stops flooding its own. C-BSR · priority 200: State Elected. C-BSR · priority 100. C-RP 10.255.0.1. C-RP 10.255.0.2. Every other router.

C-BSR · priority 200Elected BSRState: ElectedC-BSR · priority 100StandbyC-RP 10.255.0.1C-RP 10.255.0.2Every other router
  • Link
  • Blocking
  • Packet in flight
  • Discarded
  • Emphasis
Select a device to read its state. Arrow keys walk the topology.
Text equivalent of this diagram
Devices and links at this step
ElementKindState
C-BSR · priority 200routerState: Elected
C-BSR · priority 100router
C-RP 10.255.0.1router
C-RP 10.255.0.2router
Every other routerrouter
C-BSR · priority 200C-RP 10.255.0.1linkup
C-BSR · priority 200C-RP 10.255.0.2linkup
C-BSR · priority 200Every other routerlinkup
C-BSR · priority 200C-BSR · priority 100linkup
1 / 6

Candidate bootstrap routers flood Bootstrap messages. Highest priority wins, then highest address, and the loser stops flooding its own.

Note the direction: highest priority, and here a higher number is better. The RP priority that appears later in the same design is the opposite — lower is better. Two priorities in one mechanism, running in opposite directions.

What changed

  • Emphasis: Elected BSR
  • Emphasis: Standby
  • C-BSR · priority 200: State → Elected

Half the domain has a different rendezvous pointfailure

One router was configured with a different RP. Adjacencies are fine, nothing logs, and the group works between some routers and not others.

Some receivers get the group and some get nothing. PIM neighbours are all up, the source is registered, and there is no error anywhere. RP · 10.255.0.1. 10.255.0.9 · not an RP. Source’s DR. Receiver’s DR: Joined (*,G) sent.

RP · 10.255.0.110.255.0.9 · not an RPSource’s DRReceiver’s DRNo trafficJoined: (*,G) sent
  • Link
  • Blocking
  • Packet in flight
  • Discarded
  • Emphasis
Select a device to read its state. Arrow keys walk the topology.
Text equivalent of this diagram
Devices and links at this step
ElementKindState
RP · 10.255.0.1router
10.255.0.9 · not an RProuter
Source’s DRrouter
Receiver’s DRrouterJoined: (*,G) sent
Source’s DRRP · 10.255.0.1linkup
Receiver’s DR10.255.0.9 · not an RPlinkup
1 / 5

Some receivers get the group and some get nothing. PIM neighbours are all up, the source is registered, and there is no error anywhere.

What changed

  • Emphasis: No traffic
  • Receiver’s DR: Joined → (*,G) sent

Terms

RP set
The list of candidate rendezvous points a BSR floods to the domain. It is a list, not an assignment — each router applies range, priority and hash rules to it and reaches the same answer alone.
Group-to-RP hash
The deterministic function that picks an RP when several serve one range at equal priority. It spreads groups across the available RPs and guarantees every router picks the same one.
Anycast RP
Several routers owning one RP address, with the IGP choosing the nearest. It makes the address redundant and nothing else — the RPs still have to share source state themselves.

Check yourself

  • Why does RP discovery need a mechanism at all?
  • Two RPs serve the same group range at equal priority. Which one does a router use?
  • What does the elected bootstrap router publish?
  • BSR is deployed and one router still uses the old RP. What is the likely cause?
  • Anycast RP is configured on two routers. What still has to be arranged?
  • A bootstrap message carries two priorities. Do they work the same way?
  • The bootstrap router fails. What happens to the RP set?
  • What is the fragment tag in a bootstrap message for?