IPv6 Multicast BSR

Sources: here and here.

The Boot Strap Router (BSR) protocol consists of three types of routers:

Standard – does not participate in BSR or RP elections but forwards multicast traffic

BSR – The router which makes the decision about what is the current active RP

RP – The router which is part of the multicast forwarding tree

The protocol performs the same function as Cisco’s proprietary Auto-RP. Unlike Auto-RP, BSR does not use any dense-mode groups to flood candidate RP and RP mapping information. Instead, the information is flooded using PIM messages, on hop-by-hop basis.

To prevent the BSR advertisements crossing an AS boundary use the use the ipv6 pim bsr-border  (or ip pim bsrborder) command to administratively disable bootstrap router (BSR) messages from being sent or received through an interface.

You can configure a set of routers to be the BSR as follows:

IPv4

ip pim bsr-candidate < Interface-Name > [hash-mask-length] [priority]

Default priority = 0; If there are multiple routers with zero priority then highest ip address wins.


IPv6

ipv6 pim [vrf vrf-name] bsr candidate bsr ipv6-address [hash-mask-length] [priority priority-value]

Default priority = 0; If there are multiple routers with zero priority then highest ip address wins.

To configure a set of routers to be the RPs use:

IPv4

ip pim rp-candidate <PIM-Enabled-Interface> [group-list] [interval] [priority <0-255>].

Default priority = 0; This is really to be considered as a metric (ie lowest number wins). Zero in this case is the best priority.

Default Group-List = If you do not specify this then it means ALL addresses.

As the BSR splits the multicast address space across a number of RPs there is no need to default to highest ip address. This is called “group range to RP set mapping”.

IPv6

ipv6 pim [vrf vrf-name] bsr candidate rp ipv6-address [group-list access-list-name] [priority priority-value] [interval seconds] [scope scope-value] [bidir]

Default priority = 0; This is really to be considered as a metric (ie lowest number wins). Zero in this case is the best priority.

As the BSR splits (or load balances) the multicast address space across a number of RPs there is no need to default to highest ip address. This is called “group range to RP set mapping”. The algorithm (same for v4 and v6) to split this mapping between the RPs is described here. However the simplest way to discover which group address maps to which RP is to use the following commands:

IPv4

show ip pim rp-hash X.X.X.X

IPv6

show ipv6 pim group-map X:X:X::X

 

image_052

IPv6 

R2 and R5 act as the candidate BSRs

R1 is the source 

R4 is the destination

R2 and R3 are the candidate RPs

The basic multicast configuration can be found here.

To configure R2 and R5 as the candidate BSRs use the following:

R2 Config

R2#show run | i bsr
ipv6 pim bsr candidate bsr 2000:2000::2

R5 Config

R5#show run | i bsr
ipv6 pim bsr candidate bsr 2000:2000::5

R2 BSR Election Results

The output from the command below shows the details before the hop-by-hop flooding has had a chance to exchange the details.

R2#show ipv6 pim bsr election
PIMv2 BSR information

BSR Election Information
  Scope Range List: ff00::/8
     BSR Address: ::
     Uptime: 00:00:00, BSR Priority: 0, Hash mask length: 0
     RPF: ::,
     BS Timer: now
  This system is candidate BSR
      Candidate BSR address: 2000:2000::2, priority: 0, hash mask length: 126

The next output shows the election has taken place and that R5 has been 

R2#show ipv6 pim bsr election
PIMv2 BSR information

BSR Election Information
Scope Range List: ff00::/8
BSR Address: 2000:2000::5
Uptime: 00:02:46, BSR Priority: 0, Hash mask length: 126
RPF: FE80::A8BB:CCFF:FE00:6900,Ethernet0/0
BS Timer: 00:01:23
This system is candidate BSR
Candidate BSR address: 2000:2000::2, priority: 0, hash mask length: 126


R5#show ipv6 pim bsr election
PIMv2 BSR information

BSR Election Information
  Scope Range List: ff00::/8
  This system is the Bootstrap Router (BSR)
     BSR Address: 2000:2000::5
     Uptime: 03:16:40, BSR Priority: 0, Hash mask length: 126
     RPF: FE80::A8BB:CCFF:FE00:6900,Ethernet0/0
     BS Timer: 00:00:58
  This system is candidate BSR
      Candidate BSR address: 2000:2000::5, priority: 0, hash mask length: 126

R3#show ipv6 pim bsr election
PIMv2 BSR information

BSR Election Information
Scope Range List: ff00::/8
BSR Address: 2000:2000::5
Uptime: 00:04:28, BSR Priority: 0, Hash mask length: 126
RPF: FE80::A8BB:CCFF:FE00:6900,Ethernet0/0
BS Timer: 00:01:53


You can see that the priority was zero for both routers and R5 was picked as the BSR as it has the highest IPv6 Address.

To configure R2 and R5 as the candidate RPs use the following:

R2#show run | i rp
ipv6 pim bsr candidate rp 2000:2000::2

R3#show run | i rp
ipv6 pim bsr candidate rp 2000:2000::3

The command show ipv6 pim bsr candidata-rp shows the details of the candidate RP configuration on the router. If you run this on R2/R3 you get the configured details and on R5 you get nothing. This is because R5 isn’t a candidate RP, Its only a BSR.

R2#show ipv6 pim bsr candidate-rp

PIMv2 C-RP information

Candidate RP: 2000:2000::2 SM

All Learnt Scoped Zones, Priority 192, Holdtime 150

Advertisement interval 60 seconds

Next advertisement in 00:00:03

R5#show ipv6 pim bsr candidate-rp

No C-RP information found

Alternatively the command show ipv6 pim bsr rp-cache shows the RP to multicast address mapping. However running this on R2/R3 shows nothing and R5 it give you all the details.

R3#show ipv6 pim bsr rp-cache

No BSR RP-Cache information found

R5#show ipv6 pim bsr rp-cache

PIMv2 BSR C-RP Cache

BSR Candidate RP Cache

Group(s) FF00::/8, RP count 2

  RP 2000:2000::2 SM

    Priority 192, Holdtime 150

    Uptime: 00:08:17, expires: 00:02:13

  RP 2000:2000::3 SM

    Priority 192, Holdtime 150

    Uptime: 00:09:06, expires: 00:02:25

In this notice that the defaults mean that both R2 and R3 are going to share the RP responsibility.

Additionally note if you look the multicast routing table you will not see any routes as BSR does not use a multicast group to flood information.

R2#show ipv6 mroute

No mroute entries found.

R5#show ipv6 mroute

No mroute entries found.

Next setup R4 to listen to the multicast group FF05::10 and R1 to send out the traffic:

R4

interface Ethernet0/1

ip address 3.3.3.4 255.255.255.0

ip pim sparse-mode

ip igmp join-group 232.0.0.10 source 1.1.1.1

ip igmp version 3

ip ospf authentication-key ccie

ipv6 address 2001:2001::4/64

ipv6 mld join-group FF05::10

ipv6 ospf 1 area 1

!

R1

R1#ping FF05::10

Output Interface: ethernet0/0

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to FF05::10, timeout is 2 seconds:

Packet sent with a source address of 2000:2000::1

Reply to request 0 received from 2001:2001::4, 184 ms

Reply to request 1 received from 2001:2001::4, 152 ms

Reply to request 2 received from 2001:2001::4, 0 ms

Reply to request 3 received from 2001:2001::4, 0 ms

Reply to request 4 received from 2001:2001::4, 0 ms

Success rate is 100 percent (5/5), round-trip min/avg/max = 0/67/184 ms

5 multicast replies and 0 errors.

If you now examine the multicast routing table on R2 and R3 (the RPs sharing the load) you see that only R2 is forwading the traffic.

R2#show ipv6 mroute

Multicast Routing Table

Flags: D – Dense, S – Sparse, B – Bidir Group, s – SSM Group,

       C – Connected, L – Local, I – Received Source Specific Host Report,

       P – Pruned, R – RP-bit set, F – Register flag, T – SPT-bit set,

       J – Join SPT

Timers: Uptime/Expires

Interface state: Interface, State

(*, FF05::10), 00:02:47/00:02:46, RP 2000:2000::2, flags: SC

  Incoming interface: Tunnel3

  RPF nbr: 2000:2000::2

  Immediate Outgoing interface list:

    Ethernet0/1, Forward, 00:02:47/00:02:46

(2000:2000::1, FF05::10), 00:02:01/00:01:28, flags: ST

  Incoming interface: Ethernet0/0

  RPF nbr: FE80::A8BB:CCFF:FE00:6500

  Immediate Outgoing interface list:

    Ethernet0/1, Forward, 00:02:01/00:03:26

R3#show ipv6 mroute

Multicast Routing Table

Flags: D – Dense, S – Sparse, B – Bidir Group, s – SSM Group,

C – Connected, L – Local, I – Received Source Specific Host Report,

P – Pruned, R – RP-bit set, F – Register flag, T – SPT-bit set,

J – Join SPT

Timers: Uptime/Expires

Interface state: Interface, State

(*, FF05::10), 00:02:51/never, RP 2000:2000::2, flags: SPC

Incoming interface: Ethernet0/0

RPF nbr: FE80::A8BB:CCFF:FE00:6600

Immediate Outgoing interface list:

Ethernet0/1, Null, 00:02:51/never

(2000:2000::1, FF05::10), 00:02:05/00:01:24, flags: SP

Incoming interface: Ethernet0/0

RPF nbr: FE80::A8BB:CCFF:FE00:6500

Inherited Outgoing interface list:

Ethernet0/1, Null, 00:02:51/never

The interesting thing to note is the multicast traffic goes R1-R2-R4 and the return unicast ICMP traffic is load balanced. Half the traffic goes R4-R2-R1 and the rest R4-R3-R1.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s