This lab is set up for the bootstrap protocol, for this to work we specify the candidate BSR router (C-BSR) and the candidate RP (C-RP). I have set the same router to provide both functions.
The command “ip pim bsr-candidate [interface] [0-32] [0-255]” sets the router as candidate BSR, the 0-32 is the hash mask value, and the 0-255 is the priority. The hash value can be used to distribute group addresses evenly among multiple C-RP. The next command needed is “ip pim rp-candidate [interface]” this allows the router to send candidate rp advertisements to the BSR.

BSR Topology

The C-BSR will send bootstrap messages to all PIMv2 on address 224.0.0.13, once the C-RP’s receive this they unicast their C-RP messages to the BSR. The BSR doesn’t select the RP it just lists them and the PIMv2 routers choose the RP. See the picture below from a packet capture the BSR sends the bootstrap message to all PIMv2 routers with the group and C-RP’s. This is how the Bootstrap Protocol differs from Auto-RP.

BSR Message

BSR Message

I’ve used an access-list in my example to show that we can distribute certain groups among multiple RP’s. For example I’ve only allowed this C-RP to become RP for the groups 232.1.1.1 and 232.4.4.4.

Attached are the config’s for each router (Router-Configs). As I’m using GNS3 I had to enter commands “no ip route-cache” and “no ip mroute-cache” on each PIM interface. Also add “no ip cef”. You won’t need this for physical routers.

Now let’s confirm configurations with some well-known commands

Run “debug ip pim bsr” from R3 this will show us the C-RP announcing to the BSR that it has 2 prefix’s and its IP address. Next the BSR sends out the message to set the RP for each of the RP’s prefix’s, it also sends the originating address.

*Mar 1 01:40 PIM-BSR(0): Build v2 Candidate-RP advertisement for 10.10.10.3 priority 0, holdtime 150
*Mar 1 01:40 PIM-BSR(0): Candidate RP’s group prefix 232.1.1.1/32
*Mar 1 01:40 PIM-BSR(0): Candidate RP’s group prefix 232.4.4.4/32
*Mar 1 01:40 PIM-BSR(0): Send Candidate RP Advertisement to 10.10.10.3
*Mar 1 01:40 PIM-BSR(0): RP 10.10.10.3, 2 Group Prefixes, Priority 0, Holdtime 150
!
*Mar 1 01:40 PIM-BSR(0): RP-set for 232.1.1.1/32
*Mar 1 01:40 PIM-BSR(0):   RP(1) 10.10.10.3, holdtime 150 sec priority 0
*Mar 1 01:40 PIM-BSR(0): RP-set for 232.4.4.4/32
*Mar 1 01:40 PIM-BSR(0):   RP(1) 10.10.10.3, holdtime 150 sec priority 0
*Mar 1 01:40 PIM-BSR(0): Bootstrap message for 10.10.10.3 originated

From R2 use the command “show ip pim rp mapping” this will show us the group address and the RP responsible for that group, also listed is via bootstrap. You may wonder what the (?) is for? All this means is that the router cannot resolve a DNS name for the IP.

Group(s) 232.1.1.1/32
RP 10.10.10.3 (?), v2
Info source: 10.10.10.3 (?), via bootstrap, priority 0, holdtime 150
Uptime: 01:43:43, expires: 00:02:13
Group(s) 232.4.4.4/32
RP 10.10.10.3 (?), v2
Info source: 10.10.10.3 (?), via bootstrap, priority 0, holdtime 150
Uptime: 01:43:43, expires: 00:02:13

From R3 run the command “show ip pim bsr”, this will show all the information regarding our bootstrap setup, including the BSR, C-RP, uptime and any ACL’s associated.

PIMv2 Bootstrap information
This system is the Bootstrap Router (BSR)
BSR address: 10.10.10.3 (?)
Uptime:     01:46:19, BSR Priority: 0, Hash mask length: 0
Next bootstrap message in 00:00:45
Candidate RP: 10.10.10.3(FastEthernet0/0)
Holdtime 150 seconds
Advertisement interval 60 seconds
Next advertisement in 00:00:22
Group acl: 20

Generate some traffic from the source R1 to the groups listed then you can use the “show ip mroute” command from a PIM enable router and see the source tree entry.

(*, 232.4.4.4), 00:00:15/stopped, RP 10.10.10.3, flags: SPF
Incoming interface: FastEthernet0/1, RPF nbr 15.15.15.3
Outgoing interface list: Null

(56.56.56.1, 232.4.4.4), 00:00:15/00:03:21, flags: FT
Incoming interface: FastEthernet0/0, RPF nbr 56.56.56.1
Outgoing interface list: FastEthernet0/1, Forward/Sparse, 00:00:15/00:03:16

RH

Advertisement