We will discuss this topic using below topology. RIP is running everywhere, PIM-SM on all interfaces and everyone has R4 at 192.168.100.4 as the static RP.
R1 Router has the following config on its LAN interface:-
interface Eth0/0 ip address 192.168.0.1 255.255.255.0 ip pim sparse-mode ip igmp join-group 22.214.171.124
Let’s ping from R6 Router:-
R6#ping 126.96.36.199 re 5 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 188.8.131.52, timeout is 2 seconds: ..... R6#
what gives? Let’s look at R4 Router:-
R4#sho ip pim neighbor PIM Neighbor Table Neighbor Interface Uptime/Expires Ver DR Address Prio/Mode 192.168.34.3 Ethernet0/0 03:29:50/00:01:39 v2 1 / S 192.168.100.2 Serial0/0 02:25:22/00:01:38 v2 1 / S 192.168.100.5 Serial0/0 02:25:22/00:01:39 v2 1 / DR S 192.168.100.1 Serial0/0 02:25:22/00:01:38 v2 1 / S R4#sho ip mroute 184.108.40.206 | be \( (*, 220.127.116.11), 00:24:31/00:02:33, RP 192.168.100.4, flags: S Incoming interface: Null, RPF nbr 0.0.0.0 Outgoing interface list: Serial0/0, 192.168.100.2, Forward/Sparse, 00:24:31/00:02:33 (192.168.56.6, 18.104.22.168), 00:02:03/00:02:45, flags: T Incoming interface: Serial0/0, RPF nbr 192.168.100.5 Outgoing interface list: Serial0/0, 192.168.100.2, Forward/Sparse, 00:02:03/00:00:57 R4#
Tt looks that R2 Router is showing up in the OIL, But why is not R1? It is a PIM neighbor after all. The reason is because R2 has won DR election and has the right to forward traffic. So it is the neighbor that sends PIM joins to R4 router. R1 receives the traffic, but it comes in on its LAN interface and thus fails the RPF check.
R1#debug ip mpacket IP multicast packets debugging is on 03:40:21: IP(0): s=192.168.56.6 (Ethernet0/0) d=22.214.171.124 id=197, ttl=251, prot=1, len=114(100), not RPF interface 03:40:23: IP(0): s=192.168.56.6 (Ethernet0/0) d=126.96.36.199 id=198, ttl=251, prot=1, len=114(100), not RPF interface
It is important to remember that we have at least two ways to resolve this.
1- Make R1 the DR:-
R1(config)#int e0/0 R1(config-if)#ip pim dr-priority 3000 R6#ping 188.8.131.52 re 1 Type escape sequence to abort. Sending 1, 100-byte ICMP Echos to 184.108.40.206, timeout is 2 seconds: Reply to request 0 from 192.168.100.1, 60 ms R6# R1(config-if)#^Z 03:41:47: IP(0): s=192.168.56.6 (Serial0/0) d=220.127.116.11 (Ethernet0/0) id=207, ttl=252, prot=1, len=100(100), mforward
2-Static mroute to R2 for 192.168.56.6
R1(config)#int e0/0 R1(config-if)#no ip pim dr-priority 3000 R1(config-if)#exit R1(config)#ip mroute 192.168.56.0 255.255.255.0 192.168.0.2 Make sure to clear mroutes otherwise previous state may mislead you :) R4#clear ip mroute * R6#ping 18.104.22.168 re 1 Type escape sequence to abort. Sending 1, 100-byte ICMP Echos to 22.214.171.124, timeout is 2 seconds: Reply to request 0 from 192.168.100.1, 56 ms R6#
This is one of those labs/examples where I had no idea where I was going and I ended up with a nice troubleshooting scenario.
If multicast is one your weaknesses than I highly recommend digging in and making something happen. Debug ip mpacket works best with ‘no ip mroute-cache’ on your interfaces. In this scenario, I was started troubleshooting on R5, then worked my way around to resolve the issue.
If you are still having any query you can leave the comment or drop a mail.