Configuring multiple RP can be beneficial to provide redundancy in the event of an RP failure. It is also possible to filter which RP's map to a group to provide a method to load balance multicast traffic across multiple RPs.
Concepts tested
- IP PIM Sparse dense mode configuration
- Configuring multiple RPs via auto RP
- Controlling groups mappings to RPs
- Assume R1 as the receiver and R4 as the source
- Configure multicast PIM on all paths appropriate for this lab
- Using Cisco's auto-rp configure both R2 and R3 as RPs with the following restrictions
- R4 should be the mapping agent
- R2 should be the RP and mapping agent for the group 224.0.0.0 /5
- R3 should be the RP and mapping agent for the group 232.0.0.0 /5
- The group 239.1.1.1 should use dense mode only
- Verify your configuration:
- R1 should join the group 224.0.10.10 which should use R2 as its RP
- R1 should join the group 232.0.10.10 which should use R3 as its RP
- R1 should join the group 239.1.1.1 which should be dense mode only
- R4 should ping each of these groups
GNS3 configuration file, requires IOS v15 for the 7200 router: Link
Solution
R1(config)#ip multicast-routing
R1(config)#int g0/0
R1(config-if)#ip pim sparse-dense-mode
R2(config)#ip multicast-routing
R2(config)#int lo 0
R2(config-if)#ip pim sparse-dense-mode
R2(config)#int g0/0
R2(config-if)#ip pim sparse-dense-mode
R2(config-if)#int g1/0
R2(config-if)#ip pim sparse-dense-mode
R2(config)#ip pim send-rp-discovery loopback 0 scope 10
R2(config)#ip access-list standard R2_GROUPS
R2(config-std-nacl)#deny 239.1.1.1
R2(config-std-nacl)#permit 224.0.0.0 7.255.255.255
R2(config)#ip pim send-rp-announce loopback 0 scope 10 group
R2(config)#ip pim send-rp-announce loopback 0 scope 10 group-list R2_GROUPS
R3(config)#ip multicast-routing
R3(config)#int loopback 0
R3(config-if)#ip pim sparse-dense-mode
R3(config-if)#int g0/0
R3(config-if)#ip pim sparse-dense-mode
R3(config-if)#int g1/0
R3(config-if)#ip pim sparse-dense-mode
R3(config)#ip access-list standard R3_GROUPS
R3(config-std-nacl)#deny 239.1.1.1
R3(config-std-nacl)#permit 232.0.0.0 7.255.255.255
R3(config)#ip pim send-rp-discovery loopback 0 scope 10
R3(config)#ip pim send-rp-announce loopback 0 scope 10 group-list R3_GROUPS
R4(config)#ip multicast-routing
R4(config)#int g0/0
R4(config-if)#ip pim sparse-dense-mode
R4(config-if)#int g1/0
R4(config-if)#ip pim sparse-dense-mode
R4(config-if)#int g2/0
R4(config-if)#ip pim sparse-dense-mode
R5(config)#ip multicast-routing
R5(config)#int g0/0
R5(config-if)#ip pim sparse-dense-mode
Verification
R5#ping 224.0.10.10 repeat 10
Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 224.0.10.10, timeout is 2 seconds:
Reply to request 0 from 120.0.0.1, 192 ms
Reply to request 1 from 120.0.0.1, 124 ms
Reply to request 2 from 120.0.0.1, 92 ms
Reply to request 3 from 120.0.0.1, 124 ms
R1#sh ip mroute 224.0.10.10
(*, 224.0.10.10), 00:15:25/stopped, RP 2.2.2.2, flags: SJPL
Incoming interface: GigabitEthernet0/0, RPF nbr 120.0.0.2
Outgoing interface list: Null
(120.0.45.5, 224.0.10.10), 00:00:12/00:02:47, flags: PLT
Incoming interface: GigabitEthernet0/0, RPF nbr 120.0.0.3
Outgoing interface list: Null
R5#ping 232.0.10.10 repeat 10
Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 232.0.10.10, timeout is 2 seconds:
Reply to request 0 from 120.0.0.1, 192 ms
Reply to request 0 from 120.0.0.1, 228 ms
Reply to request 1 from 120.0.0.1, 128 ms
Reply to request 2 from 120.0.0.1, 84 ms
R1#sh ip mroute 232.0.10.10
(*, 232.0.10.10), 00:16:44/stopped, RP 3.3.3.3, flags: SJPL
Incoming interface: GigabitEthernet0/0, RPF nbr 120.0.0.3
Outgoing interface list: Null
(120.0.45.5, 232.0.10.10), 00:00:07/00:02:52, flags: PLT
Incoming interface: GigabitEthernet0/0, RPF nbr 120.0.0.3
Outgoing interface list: Null
R5#ping 239.1.1.1 repeat 100
Type escape sequence to abort.
Sending 100, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:
Reply to request 0 from 120.0.0.1, 192 ms
Reply to request 0 from 120.0.0.1, 224 ms
Reply to request 1 from 120.0.0.1, 92 ms
Reply to request 2 from 120.0.0.1, 124 ms
Reply to request 3 from 120.0.0.1, 120 ms
R1#sh ip mroute 239.1.1.1
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,
V - RD & Vector, v - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 00:19:01/stopped, RP 0.0.0.0, flags: DCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/0, Forward/Sparse-Dense, 00:19:01/00:00:00
(120.0.45.5, 239.1.1.1), 00:00:31/00:02:28, flags: PLT
Incoming interface: GigabitEthernet0/0, RPF nbr 120.0.0.3*
Outgoing interface list: Null
R1#sh ip mroute 239.1.1.1 count
IP Multicast Statistics
11 routes using 3658 bytes of memory
5 groups, 1.20 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.1.1.1, Source count: 1, Packets forwarded: 0, Packets received: 20
Source: 120.0.45.5/32, Forwarding: 0/0/0/0, Other: 20/0/20
R2#deb ip pim auto-rp
PIM Auto-RP debugging is on
*Nov 25 08:40:38.359: Auto-RP(0): Build RP-Discovery packet
*Nov 25 08:40:38.359: Auto-RP(0): Build mapping (224.0.0.0/5, RP:2.2.2.2), PIMv2 v1,
*Nov 25 08:40:38.363: Auto-RP(0): Build mapping (232.0.0.0/5, RP:3.3.3.3), PIMv2 v1.
*Nov 25 08:40:38.367: Auto-RP(0): Build mapping (-239.1.1.1/32, RP:3.3.3.3), PIMv2 v1.
R3#deb ip pim auto-rp
PIM Auto-RP debugging is on
*Nov 25 08:40:43.143: Auto-RP(0): Build RP-Discovery packet
*Nov 25 08:40:43.147: Auto-RP(0): Build mapping (224.0.0.0/5, RP:2.2.2.2), PIMv2 v1,
*Nov 25 08:40:43.151: Auto-RP(0): Build mapping (232.0.0.0/5, RP:3.3.3.3), PIMv2 v1.
*Nov 25 08:40:43.151: Auto-RP(0): Build mapping (-239.1.1.1/32, RP:3.3.3.3), PIMv2 v1.
Solution
R1(config)#ip multicast-routing
R1(config)#int g0/0
R1(config-if)#ip pim sparse-dense-mode
R2(config)#ip multicast-routing
R2(config)#int lo 0
R2(config-if)#ip pim sparse-dense-mode
R2(config)#int g0/0
R2(config-if)#ip pim sparse-dense-mode
R2(config-if)#int g1/0
R2(config-if)#ip pim sparse-dense-mode
R2(config)#ip pim send-rp-discovery loopback 0 scope 10
R2(config)#ip access-list standard R2_GROUPS
R2(config-std-nacl)#deny 239.1.1.1
R2(config-std-nacl)#permit 224.0.0.0 7.255.255.255
R2(config)#ip pim send-rp-announce loopback 0 scope 10 group
R2(config)#ip pim send-rp-announce loopback 0 scope 10 group-list R2_GROUPS
R3(config)#ip multicast-routing
R3(config)#int loopback 0
R3(config-if)#ip pim sparse-dense-mode
R3(config-if)#int g0/0
R3(config-if)#ip pim sparse-dense-mode
R3(config-if)#int g1/0
R3(config-if)#ip pim sparse-dense-mode
R3(config)#ip access-list standard R3_GROUPS
R3(config-std-nacl)#deny 239.1.1.1
R3(config-std-nacl)#permit 232.0.0.0 7.255.255.255
R3(config)#ip pim send-rp-discovery loopback 0 scope 10
R3(config)#ip pim send-rp-announce loopback 0 scope 10 group-list R3_GROUPS
R4(config)#ip multicast-routing
R4(config)#int g0/0
R4(config-if)#ip pim sparse-dense-mode
R4(config-if)#int g1/0
R4(config-if)#ip pim sparse-dense-mode
R4(config-if)#int g2/0
R4(config-if)#ip pim sparse-dense-mode
R5(config)#ip multicast-routing
R5(config)#int g0/0
R5(config-if)#ip pim sparse-dense-mode
Verification
R5#ping 224.0.10.10 repeat 10
Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 224.0.10.10, timeout is 2 seconds:
Reply to request 0 from 120.0.0.1, 192 ms
Reply to request 1 from 120.0.0.1, 124 ms
Reply to request 2 from 120.0.0.1, 92 ms
Reply to request 3 from 120.0.0.1, 124 ms
R1#sh ip mroute 224.0.10.10
(*, 224.0.10.10), 00:15:25/stopped, RP 2.2.2.2, flags: SJPL
Incoming interface: GigabitEthernet0/0, RPF nbr 120.0.0.2
Outgoing interface list: Null
(120.0.45.5, 224.0.10.10), 00:00:12/00:02:47, flags: PLT
Incoming interface: GigabitEthernet0/0, RPF nbr 120.0.0.3
Outgoing interface list: Null
R5#ping 232.0.10.10 repeat 10
Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 232.0.10.10, timeout is 2 seconds:
Reply to request 0 from 120.0.0.1, 192 ms
Reply to request 0 from 120.0.0.1, 228 ms
Reply to request 1 from 120.0.0.1, 128 ms
Reply to request 2 from 120.0.0.1, 84 ms
R1#sh ip mroute 232.0.10.10
(*, 232.0.10.10), 00:16:44/stopped, RP 3.3.3.3, flags: SJPL
Incoming interface: GigabitEthernet0/0, RPF nbr 120.0.0.3
Outgoing interface list: Null
(120.0.45.5, 232.0.10.10), 00:00:07/00:02:52, flags: PLT
Incoming interface: GigabitEthernet0/0, RPF nbr 120.0.0.3
Outgoing interface list: Null
R5#ping 239.1.1.1 repeat 100
Type escape sequence to abort.
Sending 100, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:
Reply to request 0 from 120.0.0.1, 192 ms
Reply to request 0 from 120.0.0.1, 224 ms
Reply to request 1 from 120.0.0.1, 92 ms
Reply to request 2 from 120.0.0.1, 124 ms
Reply to request 3 from 120.0.0.1, 120 ms
R1#sh ip mroute 239.1.1.1
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,
V - RD & Vector, v - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 00:19:01/stopped, RP 0.0.0.0, flags: DCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet0/0, Forward/Sparse-Dense, 00:19:01/00:00:00
(120.0.45.5, 239.1.1.1), 00:00:31/00:02:28, flags: PLT
Incoming interface: GigabitEthernet0/0, RPF nbr 120.0.0.3*
Outgoing interface list: Null
R1#sh ip mroute 239.1.1.1 count
IP Multicast Statistics
11 routes using 3658 bytes of memory
5 groups, 1.20 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.1.1.1, Source count: 1, Packets forwarded: 0, Packets received: 20
Source: 120.0.45.5/32, Forwarding: 0/0/0/0, Other: 20/0/20
R2#deb ip pim auto-rp
PIM Auto-RP debugging is on
*Nov 25 08:40:38.359: Auto-RP(0): Build RP-Discovery packet
*Nov 25 08:40:38.359: Auto-RP(0): Build mapping (224.0.0.0/5, RP:2.2.2.2), PIMv2 v1,
*Nov 25 08:40:38.363: Auto-RP(0): Build mapping (232.0.0.0/5, RP:3.3.3.3), PIMv2 v1.
*Nov 25 08:40:38.367: Auto-RP(0): Build mapping (-239.1.1.1/32, RP:3.3.3.3), PIMv2 v1.
R3#deb ip pim auto-rp
PIM Auto-RP debugging is on
*Nov 25 08:40:43.143: Auto-RP(0): Build RP-Discovery packet
*Nov 25 08:40:43.147: Auto-RP(0): Build mapping (224.0.0.0/5, RP:2.2.2.2), PIMv2 v1,
*Nov 25 08:40:43.151: Auto-RP(0): Build mapping (232.0.0.0/5, RP:3.3.3.3), PIMv2 v1.
*Nov 25 08:40:43.151: Auto-RP(0): Build mapping (-239.1.1.1/32, RP:3.3.3.3), PIMv2 v1.