PIMv2 Sparse Mode and Bootstrap RP Election
PIMv2 integrates in the PIM mechanisms a mechanism similar to AutoRP in the effects for performing elections and announcements of RPs. Firstly a Bootstrap Router (BSR) is elected. The BSR has the duties of discovering candidate RPs, electing a primary RP, mapping it with RP-to-Group and announcing them for each group to all the routers in the PIM domain. BSR mechanisms are PIMv2 standard, and not a proprietary technique.
PIMv2 BSR & AutoRP Discovery router
PIMv2 RP Candidate & AutoRP RP Candidate
To avoid a single point of failure, you can configure several candidate BSRs in a PIM domain. A BSR is elected among the candidate BSRs automatically; they use “bootstrap” messages to discover which BSR has the highest priority. This router then announces to all PIM routers in the PIM domain that it is the BSR.
Differently from AutoRP, which imposes RP candidates to make candidate announcements using a Mcast group, PIMv2 works by candidate RPs using UNICAST to announce to the elected BSR their willingness to be the RP (each PIMv2 router in fact knows about the existence of a BSR via PIMv2 adjacencies). The BSR then performs the selection and announces the winner by use of BSR messages sent on each link between PIM routers to the PIM router LINK-LOCAL address 224.0.0.13 (information than floods by using PIM adjacencies, with no need of Sparse-Dense Mode).
RT6
ip pim bsr-candidate Ethernet0/0.2 0 0 <<<< Hash and Prio (lower wins)
ip pim rp-candidate Ethernet0/0.2 priority 10
RT1
ip pim bsr-candidate Serial0 0 10
ip pim rp-candidate Serial0 <<<< lower Prio Wins (RT1 should be the RP)
RT1sh ip pim bsr-router
PIMv2 Bootstrap information
BSR address: 10.1.35.6 (?)
Uptime: 00:00:12, BSR Priority: 0, Hash mask length: 0
Expires: 00:02:17
This system is a candidate BSR
Candidate BSR address: 10.1.12.1, priority: 0, hash mask length: 10
Candidate RP: 10.1.12.1(Serial0)
Advertisement interval 60 seconds
Next advertisement in 00:00:30
RT1sh ip pim rp mapping
PIM Group-to-RP Mappings
This system is a candidate RP (v2)
Group(s) 224.0.0.0/4
RP 10.1.12.1 (?), v2
Info source: 10.1.35.6 (?), via bootstrap, priority 0
Uptime: 00:06:44, expires: 00:02:18
RP 10.1.35.6 (?), v2
Info source: 10.1.35.6 (?), via bootstrap, priority 10
Uptime: 00:03:52, expires: 00:01:41
RT6sh ip pim bsr-router
PIMv2 Bootstrap information
This system is the Bootstrap Router (BSR)
BSR address: 10.1.35.6 (?)
Uptime: 00:09:28, BSR Priority: 0, Hash mask length: 0
Next bootstrap message in 00:00:19
Candidate RP: 10.1.35.6(Ethernet0/0.2)
Advertisement interval 60 seconds
Next advertisement in 00:00:26
Candidate RP priority : 10
RT6sh ip pim rp mapping
PIM Group-to-RP Mappings
This system is a candidate RP (v2)
This system is the Bootstrap Router (v2)
Group(s) 224.0.0.0/4
RP 10.1.12.1 (?), v2
Info source: 138.1.15.11 (?), via bootstrap, priority 0
Uptime: 00:02:36, expires: 00:02:52
RP 10.1.35.6 (?), v2
Info source: 10.1.35.6 (?), via bootstrap, priority 10
Uptime: 00:06:20, expires: 00:03:13
RT1
Apr 16 12:37:10: PIM(0): Received v2 Register on Serial0 from 138.1.11.155
Apr 16 12:37:10: (Data-header) for 192.168.1.1, group 239.255.1.1
Apr 16 12:37:10: PIM(0): Send v2 Register-Stop to 138.1.11.155 for 192.168.1.1, group 239.255.1.1
Apr 16 12:37:10: PIM(0): Insert (192.168.1.1,239.255.1.1) join in nbr 138.1.15.10’s queue
Apr 16 12:37:10: PIM(0): Building Join/Prune packet for nbr 138.1.15.10
Apr 16 12:37:10: PIM(0): Adding v2 (192.168.1.1/32, 239.255.1.1), S-bit Join
Apr 16 12:37:10: PIM(0): Send v2 join/prune to 138.1.15.10 (Serial1.1)
RT1sh ip mroute count
IP Multicast Statistics
4 routes using 1876 bytes of memory
3 groups, 0.33 average sources per group
Forwarding Counts: Pkt Count/Pkts per second/Avg Pkt Size/Kilobits per second
Other counts: Total/RPF failed/Other drops(OIF-null, rate-limit etc)
Group: 239.255.1.1, Source count: 1, Packets forwarded: 1, Packets received: 3
RP-tree: Forwarding: 0/0/0/0, Other: 0/0/0
Source: 192.168.1.1/32, Forwarding: 1/-1/1344/1, Other: 3/0/2
RT1sh 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,
X – Proxy Join Timer Running, A – Candidate for MSDP Advertisement,
U – URD, I – Received Source Specific Host Report, Z – Multicast Tunnel
Y – Joined MDT-data group, y – Sending to MDT-data group
(*, 239.255.1.1), 00:06:14/00:03:13, RP 10.1.12.1, flags: S
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Serial1.1, Forward/Sparse, 00:01:17/00:03:12
Serial0, Forward/Sparse, 00:06:14/00:03:13
(192.168.1.1, 239.255.1.1), 00:05:48/00:03:27, flags: T
Incoming interface: Serial1.1, RPF nbr 138.1.15.10
Outgoing interface list:
Serial0, Forward/Sparse, 00:01:04/00:03:13
Apr 16 12:37:10: PIM(0): Received v2 Join/Prune on Serial0 from 10.1.12.2, to us
Apr 16 12:37:10: PIM(0): Prune-list: (192.168.1.1/32, 239.255.1.1) RPT-bit set Apr 16 12:37:10: PIM(0): Prune Serial0/224.0.0.2 from (192.168.1.1/32, 239.255.1.1)
Apr 16 12:37:10: PIM(0): Insert (192.168.1.1,239.255.1.1) prune in nbr 138.1.15.10’s queue – deleted
Apr 16 12:37:10: PIM(0): Building Join/Prune packet for nbr 138.1.15.10
Apr 16 12:37:10: PIM(0): Adding v2 (192.168.1.1/32, 239.255.1.1), S-bit Prune
Apr 16 12:37:10: PIM(0): Send v2 join/prune to 138.1.15.10 (Serial1.1)
RT1sh 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,
X – Proxy Join Timer Running, A – Candidate for MSDP Advertisement,
U – URD, I – Received Source Specific Host Report, Z – Multicast Tunnel
Y – Joined MDT-data group, y – Sending to MDT-data group
(*, 239.255.1.1), 00:07:35/00:02:51, RP 10.1.12.1, flags: S
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Serial0, Forward/Sparse, 00:07:35/00:02:51
(192.168.1.1, 239.255.1.1), 00:07:10/00:02:55, flags: PT
Incoming interface: Serial1.1, RPF nbr 138.1.15.10
Outgoing interface list: Null