Bidirectional PIM Configuration and Phantom RP Explained

« 2022 Dec 10 »

What is Bidirectional PIM?

Bidirectional PIM is a scalable variant of PIM Sparse Mode and uses only Shared Trees rooted at the Rendezvous Point. With a large number of simultanous multicast sources and receivers, the Source-Based Tree (S,G) entries installed by PIM Sparse Mode require increased system resources on each router. However, Bidirectional PIM overcomes this limitation by only using Shared Tree (*,G) entries.

Bidirectional PIM multicast network introduction

The above image highlights several important aspects of Bidirectional PIM that are detailed in the following list.

  • Similarities to PIM Sparse Mode include that Bidirectional PIM uses a Rendezvous Point (RP) which can be statically configured, or dynamically advertised with a Bootstrap Router (BSR) or Auto-RP. Also, receivers that request a particular multicast stream are signalled with PIM Join messages sent to the RP, which is also the same as in PIM Sparse Mode.
  • However, in Bidirectional PIM multicast sources start sending data to the RP natively without a registration process and without encapsulation (tunneling) in a unicast packet. This is because there is no Source-Based Tree (S,G) in bidirectional PIM, and the Shared Trees (*,G) rooted at the RP are bidirectional. Note that in PIM Sparse Mode the Shared Tree is unidirectional, and only forwards traffic from the RP towards the receivers.
  • Since all traffic chooses the path through the RP there is no SPT switchover. This means, RP placement and RP redundancy is very important with Bidirectional PIM.
  • For loop-avoidance, Bidirectional PIM uses the concept of a Designated Forwarder (DF) which is elected on each PIM-enabled link, except for the link directly connected to the RP. The DF election between two routers is based on the unicast routing protocol Administrative Distance (AD) or the metric to reach the RP. Thus, the router with the better AD or a better unicast metric to the RP becomes the DF for each link. If the AD and metric are the same, the router with the highest IP address wins the election.
  • A DF is elected for each RP and not for each multicast group. This means, there can be different DF routers on a shared segment if there are multiple RPs configured.
  • The DF election ensures a loop-free path centered at the RP, and the DF forwards PIM Join messages to the RP. As a result, Bidirectional PIM does not use the PIM Assert mechanism which relies on the same election process. Note that the DF election packets as well as PIM Assert packets contain the AD of the unicast routing protocol configured on the originating router. If the AD is changed, this also means the Metric Preference value changes in the DF/PIM Assert election process.

How to configure Bidirectional PIM?

In the following example scenario Bidirectional PIM is configured with the Rendezvous Point (RP) R4. To dynamically advertise the group-to-RP mapping in the PIM-domain, R4 is also configured as the Bootstrap Router (BSR). The configuration is similar to PIM Sparse Mode except for the command ip pim rp-candidate Loopback10 group-list ACL-EXAMPLE-GROUP bidir which includes the keyword bidir.

The similarity to PIM Sparse Mode is further visible when configuring Bidirectional PIM. Each PIM-enabled router has the interface-level command ip pim sparse-mode added. However, additionally the global configuration command ip pim bidir-enable is also needed to enabled Bidirectional PIM.

Thus, in the following topology Source1 and Source2 both stream multicast traffic to the single group address 239.0.0.1. This means, traffic is transmitted in both directions along the Shared Distribution Tree which is centered at the RP. Note that there is no SPT switchover, so multicast traffic will never be transmitted across the directly connected link R2 - R6 (subnet 10.0.6.0/30).

Multicast Bidirectional PIM network configuration

Configuration:

R1
    R1#show run | sec ^ip multi
    ip multicast-routing
    
    R1#show run | sec ^ip pim
    ip pim bidir-enable
    
    R1#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to Site 1 LAN **
     ip address 192.168.1.3 255.255.255.0
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R1#show run int Gi0/1 | sec int
    interface GigabitEthernet0/1
     description ** to R2 **
     ip address 10.0.1.1 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R1#show run | sec ^router
    router eigrp EXAMPLE-EIGRP
     !
     address-family ipv4 unicast autonomous-system 10
      !
      af-interface GigabitEthernet0/0
       passive-interface
      exit-af-interface
      !
      topology base
      exit-af-topology
      network 10.0.1.0 0.0.0.3
      network 192.168.1.0
      eigrp router-id 1.1.1.1
     exit-address-family
    
R2
    R2#show run | sec ^ip multi
    ip multicast-routing
    
    R2#show run | sec ^ip pim  
    ip pim bidir-enable
    
    R2#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to R1 **
     ip address 10.0.1.2 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R2#show run int Gi0/1 | sec int
    interface GigabitEthernet0/1
     description ** to R3 **
     ip address 10.0.2.1 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R2#show run int Gi0/2 | sec int
    interface GigabitEthernet0/2
     description ** to R6 **
     ip address 10.0.6.1 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R2#show run | sec ^router
    router eigrp EXAMPLE-EIGRP
     !
     address-family ipv4 unicast autonomous-system 10
      !
      topology base
      exit-af-topology
      network 10.0.1.0 0.0.0.3
      network 10.0.2.0 0.0.0.3
      network 10.0.6.0 0.0.0.3
      eigrp router-id 2.2.2.2
     exit-address-family
    
R3
    R3#show run | sec ^ip multi
    ip multicast-routing
    
    R3#show run | sec ^ip pim  
    ip pim bidir-enable
    
    R3#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to R2 **
     ip address 10.0.2.2 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R3#show run int Gi0/1 | sec int
    interface GigabitEthernet0/1
     description ** to R4 **
     ip address 10.0.3.1 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R3#show run | sec ^router
    router eigrp EXAMPLE-EIGRP
     !
     address-family ipv4 unicast autonomous-system 10
      !
      topology base
      exit-af-topology
      network 10.0.2.0 0.0.0.3
      network 10.0.3.0 0.0.0.3
      eigrp router-id 3.3.3.3
     exit-address-family
    
R4 (RP/BSR)
    R4#show run | sec ^ip multi
    ip multicast-routing
    
    R4#show run | sec ^ip pim  
    ip pim bidir-enable
    ip pim bsr-candidate Loopback10 0
    ip pim rp-candidate Loopback10 group-list ACL-EXAMPLE-GROUP bidir
    
    R4#show run | sec ^ip access
    ip access-list standard ACL-EXAMPLE-GROUP
     permit 239.0.0.1
    
    R4#show run int Lo10 | sec int
    interface Loopback10
     ip address 4.4.4.4 255.255.255.255
     ip pim sparse-mode
    
    R4#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to R3 **
     ip address 10.0.3.2 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R4#show run int Gi0/1 | sec int
    interface GigabitEthernet0/1
     description ** to R5 **
     ip address 10.0.4.1 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R4#show run | sec ^router
    router eigrp EXAMPLE-EIGRP
     !
     address-family ipv4 unicast autonomous-system 10
      !
      topology base
      exit-af-topology
      network 4.4.4.4 0.0.0.0
      network 10.0.3.0 0.0.0.3
      network 10.0.4.0 0.0.0.3
      eigrp router-id 4.4.4.4
     exit-address-family
    
R5
    R5#show run | sec ^ip multi
    ip multicast-routing
    
    R5#show run | sec ^ip pim  
    ip pim bidir-enable
    
    R5#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to R6 **
     ip address 10.0.5.2 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R5#show run int Gi0/1 | sec int
    interface GigabitEthernet0/1
     description ** to R4 **
     ip address 10.0.4.2 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R5#show run | sec ^router
    router eigrp EXAMPLE-EIGRP
     !
     address-family ipv4 unicast autonomous-system 10
      !
      topology base
      exit-af-topology
      network 10.0.4.0 0.0.0.3
      network 10.0.5.0 0.0.0.3
      eigrp router-id 5.5.5.5
     exit-address-family
    
R6
    R6#show run | sec ^ip multi
    ip multicast-routing
    
    R6#show run | sec ^ip pim  
    ip pim bidir-enable
    
    R6#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to R7  **
     ip address 10.0.7.2 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R6#show run int Gi0/1 | sec int
    interface GigabitEthernet0/1
     description ** to R5 **
     ip address 10.0.5.1 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R6#show run int Gi0/2 | sec int
    interface GigabitEthernet0/2
     description ** to R2 **
     ip address 10.0.6.2 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R6#show run | sec ^router
    router eigrp EXAMPLE-EIGRP
     !
     address-family ipv4 unicast autonomous-system 10
      !
      topology base
      exit-af-topology
      network 10.0.5.0 0.0.0.3
      network 10.0.6.0 0.0.0.3
      network 10.0.7.0 0.0.0.3
      eigrp router-id 6.6.6.6
     exit-address-family
    
R7
    R7#show run | sec ^ip multi
    ip multicast-routing
    
    R7#show run | sec ^ip pim  
    ip pim bidir-enable
    
    R7#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to Site 2 LAN  **
     ip address 192.168.2.3 255.255.255.0
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R7#show run int Gi0/1 | sec int
    interface GigabitEthernet0/1
     description ** to R6 **
     ip address 10.0.7.1 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R7#show run | sec ^router
    router eigrp EXAMPLE-EIGRP
     !
     address-family ipv4 unicast autonomous-system 10
      !
      af-interface GigabitEthernet0/0
       passive-interface
      exit-af-interface
      !
      topology base
      exit-af-topology
      network 10.0.7.0 0.0.0.3
      network 192.168.2.0
      eigrp router-id 7.7.7.7
     exit-address-family
    
Host1
    Host1#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to R1 **
     ip address 192.168.1.2 255.255.255.0
     ip igmp join-group 239.0.0.1
     duplex auto
     speed auto
     media-type rj45
    
    Host1#show run | sec ^ip route
    ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/0 192.168.1.3
    
Host2
    Host2#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to R7 **
     ip address 192.168.2.2 255.255.255.0
     ip igmp join-group 239.0.0.1
     duplex auto
     speed auto
     media-type rj45
    
    Host2#show run | sec ^ip route
    ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/0 192.168.2.3
    
Source1
    Source1#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to R1 **
     ip address 192.168.1.1 255.255.255.0
     duplex auto
     speed auto
     media-type rj45
    
    Source1#show run | sec ^ip route
    ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/0 192.168.1.3
    
Source2
    Source2#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to R7 **
     ip address 192.168.2.1 255.255.255.0
     duplex auto
     speed auto
     media-type rj45
    
    Source2#show run | sec ^ip route
    ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/0 192.168.2.3
    
R1#show ip pim rp mapping 
PIM Group-to-RP Mappings

Group(s) 239.0.0.1/32
  RP 4.4.4.4 (?), v2, bidir                                               « Bidirectional PIM is used
    Info source: 4.4.4.4 (?), via bootstrap, priority 0, holdtime 150     « RP address of R4 learned with BSR
         Uptime: 03:06:53, expires: 00:01:40




R1#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report, 
       Z - Multicast Tunnel, z - MDT-data group sender, 
       Y - Joined MDT-data group, y - Sending to MDT-data group, 
       G - Received BGP C-Mroute, g - Sent BGP C-Mroute, 
       N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed, 
       Q - Received BGP S-A Route, q - Sent BGP S-A Route, 
       V - RD & Vector, v - Vector, p - PIM Joins on route, 
       x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*,239.0.0.1), 03:05:26/-, RP 4.4.4.4, flags: BC                          « RP address is R4, the flag indicates Bidir PIM
  Bidir-Upstream: GigabitEthernet0/1, RPF nbr: 10.0.1.2                   « To reach R4 the interface Gi0/1 is used
  Incoming interface list:                                                « Multiple IIF
    GigabitEthernet0/1, Accepting/Sparse
    GigabitEthernet0/0, Accepting/Sparse
  Outgoing interface list:                                                « Multiple OIL
    GigabitEthernet0/0, Forward/Sparse, 00:43:00/00:02:05
    GigabitEthernet0/1, Bidir-Upstream/Sparse, 00:43:01/stopped

(*, 224.0.1.40), 03:05:59/00:02:59, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet0/0, Forward/Sparse, 03:05:59/00:02:59






R4#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
       L - Local, P - Pruned, R - RP-bit set, F - Register flag,
       T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
       U - URD, I - Received Source Specific Host Report, 
       Z - Multicast Tunnel, z - MDT-data group sender, 
       Y - Joined MDT-data group, y - Sending to MDT-data group, 
       G - Received BGP C-Mroute, g - Sent BGP C-Mroute, 
       N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed, 
       Q - Received BGP S-A Route, q - Sent BGP S-A Route, 
       V - RD & Vector, v - Vector, p - PIM Joins on route, 
       x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
 Timers: Uptime/Expires
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*,239.0.0.1), 03:07:31/-, RP 4.4.4.4, flags: B
  Bidir-Upstream: Loopback10, RPF nbr: 0.0.0.0                            « R4 uses its Loopback interface as the RP address
  Incoming interface list:
    GigabitEthernet0/0, Accepting/Sparse
    GigabitEthernet0/1, Accepting/Sparse
    Loopback10, Accepting/Sparse
  Outgoing interface list:
    GigabitEthernet0/0, Forward/Sparse, 00:43:11/00:02:51, p              « PIM Join message received on this interface
    GigabitEthernet0/1, Forward/Sparse, 03:05:34/00:03:05, p

(*, 224.0.1.40), 03:10:00/00:02:23, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet0/0, Forward/Sparse, 03:10:00/00:02:23





Source1#ping 239.0.0.1 re 3
Type escape sequence to abort.
Sending 3, 100-byte ICMP Echos to 239.0.0.1, timeout is 2 seconds:

Reply to request 0 from 192.168.1.2, 2 ms                                 « Multicast receivers in Site 1 and in Site 2
Reply to request 0 from 192.168.2.2, 6 ms
Reply to request 1 from 192.168.1.2, 2 ms
Reply to request 1 from 192.168.2.2, 6 ms
Reply to request 2 from 192.168.1.2, 2 ms
Reply to request 2 from 192.168.2.2, 6 ms

The following output from the RP verifies that in Bidirectional PIM there is no Registration process. The outputs also indicates that the Bootstrap Router is configured on R4.

R4#show ip traffic | section PIM
PIMv2 statistics: Sent/Received
  Total: 3264/2720, 0 checksum errors, 0 format errors
  Registers: 0/0 (0 non-rp, 0 non-sm-group), Register Stops: 0/0,  Hellos: 1636/1636
  Join/Prunes: 0/546, Asserts: 0/0, grafts: 0/0
  Bootstraps: 797/265, Candidate_RP_Advertisements: 268/268
  Queue drops: 0
  State-Refresh: 0/0
  DVMRP: 0/0, PIM: 0/0


RP redundancy with Phantom RP configuration

In the following example scenario Bidirectional PIM is configured with redundant Rendezvous Points. R2 is the primary RP with the IP address 172.16.100.1/30, and R3 is the secondary (backup) RP with the address 172.16.100.1/29. Notice that both routers use the same RP address but with a different subnet mask. As a result, the address 172.16.100.1 is advertised by BSR originating from the RP routers.

However, at the same time EIGRP advertises two separate RP addresses (due to different subnet). Thus, two RP routers can be configured to provide redundancy. The router with the /30 prefix becomes the primary RP because a longer prefix match is preferrerd by the unicast IGP routing protocol.

Phantom RP Rendezvous Point redundancy configuration with Bidirectional PIM

Configuration:

R1
    R1#show run | sec ^ip multi
    ip multicast-routing 
    
    R1#show run | sec ^ip pim  
    ip pim bidir-enable
    
    R1#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to Source **
     ip address 192.168.1.2 255.255.255.0
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R1#show run int Gi0/1 | sec int
    interface GigabitEthernet0/1
     description ** to R2 **
     ip address 10.0.1.1 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R1#show run int Gi0/2 | sec int
    interface GigabitEthernet0/2
     description ** to R3 **
     ip address 10.0.2.1 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R1#show run | sec ^router
    router eigrp EXAMPLE-EIGRP
     !
     address-family ipv4 unicast autonomous-system 10
      !
      af-interface GigabitEthernet0/0
       passive-interface
      exit-af-interface
      !
      topology base
      exit-af-topology
      network 10.0.1.0 0.0.0.3
      network 10.0.2.0 0.0.0.3
      network 192.168.1.0
      eigrp router-id 1.1.1.1
     exit-address-family
    
R2 (RP/BSR)
    R2#show run | sec ^ip multi
    ip multicast-routing
    
    R2#show run | sec ^ip pim  
    ip pim bidir-enable
    ip pim bsr-candidate Loopback100 0
    ip pim rp-candidate Loopback100 group-list ACL-EXAMPLE-GROUP bidir
    
    R2#show run | sec ^ip access
    ip access-list standard ACL-EXAMPLE-GROUP
     permit 239.0.0.1
    
    R2#show run int Lo100 | sec int
    interface Loopback100
     description ** Phantom RP redundancy IP address /30 (primary) **
     ip address 172.16.100.1 255.255.255.252
     ip pim sparse-mode
    
    R2#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to R1 **
     ip address 10.0.1.2 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R2#show run int Gi0/1 | sec int
    interface GigabitEthernet0/1
     description ** to R4 **
     ip address 10.0.3.1 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R2#show run | sec ^router
    router eigrp EXAMPLE-EIGRP
     !
     address-family ipv4 unicast autonomous-system 10
      !
      topology base
      exit-af-topology
      network 10.0.1.0 0.0.0.3
      network 10.0.3.0 0.0.0.3
      network 172.16.100.0 0.0.0.3
      eigrp router-id 2.2.2.2
     exit-address-family
    
R3 (RP/BSR)
    R3#show run | sec ^ip multi
    ip multicast-routing
    
    R3#show run | sec ^ip pim  
    ip pim bidir-enable
    ip pim bsr-candidate Loopback100 0
    ip pim rp-candidate Loopback100 group-list ACL-EXAMPLE-GROUP bidir
    
    R3#show run | sec ^ip access
    ip access-list standard ACL-EXAMPLE-GROUP
     permit 239.0.0.1
    
    R3#show run int Lo100 | sec int
    interface Loopback100
     description ** Phantom RP redundancy IP address /29 (secondary) **
     ip address 172.16.100.1 255.255.255.248
     ip pim sparse-mode
    
    R3#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to R1 **
     ip address 10.0.2.2 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R3#show run int Gi0/1 | sec int
    interface GigabitEthernet0/1
     description ** to R4 **
     ip address 10.0.4.1 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R3#show run | sec ^router
    router eigrp EXAMPLE-EIGRP
     !
     address-family ipv4 unicast autonomous-system 10
      !
      topology base
      exit-af-topology
      network 10.0.2.0 0.0.0.3
      network 10.0.4.0 0.0.0.3
      network 172.16.100.0 0.0.0.7
      eigrp router-id 3.3.3.3
     exit-address-family
    
R4
    R4#show run | sec ^ip multi
    ip multicast-routing
    
    R4#show run | sec ^ip pim  
    ip pim bidir-enable
    
    R4#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to Receiver (Host) **
     ip address 192.168.2.2 255.255.255.0
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R4#show run int Gi0/1 | sec int
    interface GigabitEthernet0/1
     description ** to R2 **
     ip address 10.0.3.2 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R4#show run int Gi0/2 | sec int
    interface GigabitEthernet0/2
     description ** to R3 **
     ip address 10.0.4.2 255.255.255.252
     ip pim sparse-mode
     duplex auto
     speed auto
     media-type rj45
    
    R4#show run | sec ^router
    router eigrp EXAMPLE-EIGRP
     !
     address-family ipv4 unicast autonomous-system 10
      !
      af-interface GigabitEthernet0/0
       passive-interface
      exit-af-interface
      !
      topology base
      exit-af-topology
      network 10.0.3.0 0.0.0.3
      network 10.0.4.0 0.0.0.3
      network 192.168.2.0
      eigrp router-id 4.4.4.4
     exit-address-family
    
Source
    Source#show run int Gi0/0 | sec int 
    interface GigabitEthernet0/0
     description ** to R1 **
     ip address 192.168.1.1 255.255.255.0
     duplex auto
     speed auto
     media-type rj45
    
    Source#show run | sec ^ip route
    ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/0 192.168.1.2
    
Receiver
    Host#show run int Gi0/0 | sec int
    interface GigabitEthernet0/0
     description ** to R4 **
     ip address 192.168.2.1 255.255.255.0
     ip igmp join-group 239.0.0.1
     duplex auto
     speed auto
     media-type rj45
    
    Host#show run | sec ^ip route    
    ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/0 192.168.2.2
    
R1#show ip pim rp mapping 
PIM Group-to-RP Mappings

Group(s) 239.0.0.1/32
  RP 172.16.100.1 (?), v2, bidir
    Info source: 172.16.100.1 (?), via bootstrap, priority 0, holdtime 150        « RP address learned through BSR
         Uptime: 02:21:34, expires: 00:01:46




R1#show ip route eigrp | beg Ga
Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
D        10.0.3.0/30 [90/15360] via 10.0.1.2, 02:25:54, GigabitEthernet0/1
D        10.0.4.0/30 [90/15360] via 10.0.2.2, 02:25:55, GigabitEthernet0/2
      172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
D        172.16.100.0/29 [90/10880] via 10.0.2.2, 02:17:52, GigabitEthernet0/2    « EIGRP advertises two RP address subnetworks
D        172.16.100.0/30 [90/10880] via 10.0.1.2, 02:05:21, GigabitEthernet0/1
D     192.168.2.0/24 [90/20480] via 10.0.2.2, 02:25:54, GigabitEthernet0/2
                     [90/20480] via 10.0.1.2, 02:25:54, GigabitEthernet0/1




R1#show ip cef exact-route 192.168.1.2 172.16.100.1
192.168.1.2 -> 172.16.100.1 =>IP adj out of GigabitEthernet0/1, addr 10.0.1.2     « Next-hop to primary RP address




R1#show ip mroute | beg Int
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*,239.0.0.1), 02:07:13/-, RP 172.16.100.1, flags: B
  Bidir-Upstream: GigabitEthernet0/1, RPF nbr: 10.0.1.2                           « The primary RP is used to forward multicast streams
  Incoming interface list:
    GigabitEthernet0/1, Accepting/Sparse
    GigabitEthernet0/0, Accepting/Sparse

(*, 224.0.1.40), 02:30:57/00:02:07, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet0/0, Forward/Sparse, 02:30:57/00:02:07




R1#show ip mroute | beg Int
 Interface state: Interface, Next-Hop or VCD, State/Mode

(*,239.0.0.1), 00:00:09/-, RP 172.16.100.1, flags: B
  Bidir-Upstream: GigabitEthernet0/2, RPF nbr: 10.0.2.2                          « After primary RP failure, secondary RP is used
  Incoming interface list:
    GigabitEthernet0/2, Accepting/Sparse
    GigabitEthernet0/0, Accepting/Sparse

(*, 224.0.1.40), 02:31:35/00:02:30, RP 0.0.0.0, flags: DCL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet0/0, Forward/Sparse, 02:31:35/00:02:30




R1#show ip cef exact-route 192.168.1.2 172.16.100.1
192.168.1.2 -> 172.16.100.1 =>IP adj out of GigabitEthernet0/2, addr 10.0.2.2   « Next-hop to secondary RP address

	


Source#ping 239.0.0.1 re 3
Type escape sequence to abort.
Sending 3, 100-byte ICMP Echos to 239.0.0.1, timeout is 2 seconds:

Reply to request 0 from 192.168.2.1, 4 ms
Reply to request 1 from 192.168.2.1, 4 ms
Reply to request 2 from 192.168.2.1, 17 ms

The above outputs show how the primary or the secondary RP can be used to forward a multicast stream. Note that the failover and switchback times are connected to the IGP convergence. Thus, when EIGRP reconverges, that is when the redundant RP convergence also happens.