3.2.a RPF failure

this is an excellent, if long, lab on ine…

http://blog.ine.com/2008/01/02/troubleshooting-multicast-rpf-failure/

rpf_check_dia

put pim dense on every interface except those on r1

put a join on the client…

client(config-if)#do sh run int f0/0
Building configuration…

Current configuration : 144 bytes
!
interface FastEthernet0/0
ip address 150.1.35.5 255.255.255.0
ip pim dense-mode
 ip igmp join-group 224.1.1.1

ping the multicast:

r4#ping 224.1.1.1

Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

Reply to request 0 from 150.1.35.5, 48 ms

the crux of mcgahans rpf lab is find the reverse path manually, start from the client:

client#sh ip mroute | b \(
(*, 224.1.1.1), 02:08:56/stopped, RP 0.0.0.0, flags: DCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
FastEthernet0/0, Forward/Dense, 02:08:56/00:00:00

(150.1.124.4, 224.1.1.1), 00:00:35/00:02:42, flags: PLTX
Incoming interface: FastEthernet0/0, RPF nbr 150.1.35.3
Outgoing interface list: Null

(*, 224.0.1.40), 02:10:50/00:02:11, RP 0.0.0.0, flags: DCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
FastEthernet0/0, Forward/Dense, 02:10:50/00:00:00

r3#sh ip mroute 224.1.1.1 | b \(
(*, 224.1.1.1), 02:10:14/stopped, RP 0.0.0.0, flags: DC
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Serial2/0, Forward/Dense, 02:10:14/00:00:00
FastEthernet0/0, Forward/Dense, 02:10:14/00:00:00

(150.1.124.4, 224.1.1.1), 00:01:53/00:01:33, flags: T
Incoming interface: Serial2/0, RPF nbr 150.1.23.2
Outgoing interface list:
FastEthernet0/0, Forward/Dense, 00:01:53/00:00:00

r2#sh ip mroute 224.1.1.1 | b \(
(*, 224.1.1.1), 00:03:22/stopped, RP 0.0.0.0, flags: D
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
FastEthernet0/0, Forward/Dense, 00:03:22/00:00:00
Serial2/0, Forward/Dense, 00:03:22/00:00:00

(150.1.124.4, 224.1.1.1), 00:03:22/00:00:01, flags: T
Incoming interface: FastEthernet0/0, RPF nbr 150.1.124.4
Outgoing interface list:
    Serial2/0, Forward/Dense, 00:03:22/00:00:00

compare that with the ip routing table:

r3#sh ip route 150.1.124.4
Routing entry for 150.1.124.0/24
Known via “eigrp 1”, distance 90, metric 2195456, type internal
Redistributing via eigrp 1
Last update from 150.1.13.1 on Serial2/1, 02:24:06 ago
Routing Descriptor Blocks:
* 150.1.23.2, from 150.1.23.2, 02:24:06 ago, via Serial2/0
Route metric is 2195456, traffic share count is 1
Total delay is 21000 microseconds, minimum bandwidth is 1544 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1
150.1.13.1, from 150.1.13.1, 02:24:06 ago, via Serial2/1
Route metric is 2195456, traffic share count is 1
Total delay is 21000 microseconds, minimum bandwidth is 1544 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1

150.1.23.2 is preferred, which matches the path for the multicast…

we can prove the packets are getting through with this command:

r3#sh ip mroute count
IP Multicast Statistics
3 routes using 2026 bytes of memory
2 groups, 0.50 average sources per group
Forwarding Counts: Pkt Count/Pkts(neg(-) = Drops) per second/Avg Pkt Size/Kilobits per second
Other counts: Total/RPF failed/Other drops(OIF-null, rate-limit etc)

Group: 224.1.1.1, Source count: 1, Packets forwarded: 10, Packets received: 10
Source: 150.1.124.4/32, Forwarding: 10/1/100/0, Other: 10/0/0

Group: 224.0.1.40, Source count: 0, Packets forwarded: 0, Packets received: 0

the second zero in the other section means zero drops

if we prefer the route through router 1 we will see differences…

r3(config)#ip route 150.1.124.4 255.255.255.255 150.1.13.1

r4#ping 224.1.1.1 rep 10

Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:
……….

r3#sh ip mroute count
IP Multicast Statistics
3 routes using 2182 bytes of memory
2 groups, 0.50 average sources per group
Forwarding Counts: Pkt Count/Pkts(neg(-) = Drops) per second/Avg Pkt Size/Kilobits per second
Other counts: Total/RPF failed/Other drops(OIF-null, rate-limit etc)

Group: 224.1.1.1, Source count: 1, Packets forwarded: 0, Packets received: 10
Source: 150.1.124.4/32, Forwarding: 0/0/0/0, Other: 10/10/0

Group: 224.0.1.40, Source count: 0, Packets forwarded: 0, Packets received: 0

the second field in the other section now tells us 10 packets were dropped…

so in this artificial problem we could simply remove the static route to r1, but what if that route was needed for another reason and we needed to keep it… we could overide the ip routing table with a static mroute…

r3(config)#ip mroute 150.1.124.4 255.255.255.255 150.1.23.2

r4#ping 224.1.1.1 rep 10

Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

Reply to request 0 from 150.1.35.5, 60 ms
Reply to request 1 from 150.1.35.5, 76 ms
Reply to request 2 from 150.1.35.5, 76 ms

r3(config)#do sh ip mroute count
IP Multicast Statistics
3 routes using 2026 bytes of memory
2 groups, 0.50 average sources per group
Forwarding Counts: Pkt Count/Pkts(neg(-) = Drops) per second/Avg Pkt Size/Kilobits per second
Other counts: Total/RPF failed/Other drops(OIF-null, rate-limit etc)

Group: 224.1.1.1, Source count: 1, Packets forwarded: 10, Packets received: 10
Source: 150.1.124.4/32, Forwarding: 10/0/100/0, Other: 10/0/0

Group: 224.0.1.40, Source count: 0, Packets forwarded: 0, Packets received: 0