Article 09: Multicast Troubleshooting Lab — 5 Broken Scenarios, You Fix Them

Lab Topology

This article is different from the others. I am not going to teach you a protocol from scratch. Instead, I am going to hand you a broken network & ask you to fix it. Five different multicast failures, all pre-staged in the same topology. Each one simulates a failure I have personally encountered in production — & each one is the kind of problem that makes engineers stare at their screen for hours because multicast failures are almost always silent.

The way to use this article: load the “broken” configs into your EVE-NG lab, then work through each scenario methodically. For each one, I will give you the symptoms, the verification commands you should run, & then the fix. Try to diagnose each issue yourself before reading the solution.

Lab Topology

We are using a 6-router mesh that represents a realistic campus/enterprise multicast domain.

IP Addressing Table
DeviceInterfaceIP AddressSubnet MaskDescription
R1Gi0/010.0.0.1255.255.255.0To Source1
R1Gi0/110.12.0.1255.255.255.0To R2
R2Gi0/010.12.0.2255.255.255.0To R1
R2Gi0/110.23.0.2255.255.255.0To R3
R2Gi0/210.24.0.2255.255.255.0To R4
R3Gi0/010.23.0.3255.255.255.0To R2
R3Gi0/110.35.0.3255.255.255.0To R5
R3Loopback03.3.3.3255.255.255.255RP Address
R4Gi0/010.34.0.4255.255.255.0To R3
R4Gi0/110.56.0.4255.255.255.0To R6
R4Gi0/210.24.0.4255.255.255.0To R2
R5Gi0/010.35.0.5255.255.255.0To R3
R5Gi0/110.50.0.1255.255.255.0To Receivers
R6Gi0/010.6.0.1255.255.255.0To Source2
R6Gi0/110.56.0.6255.255.255.0To R4
Source1Gi0/010.0.0.10255.255.255.0Multicast Source 1
Source2Gi0/010.6.0.10255.255.255.0Multicast Source 2
Receiver1Gi0/010.50.0.10255.255.255.0Multicast Receiver 1
Load the Broken Configs

Apply these configurations to your routers. Each one has a deliberate fault embedded.

Source & Receiver Configuration (Cisco Routers):

We configure these as simple L2 hosts (using no ip routing to behave like a host).

!! Source1 (10.0.0.10)
hostname Source1
no ip routing
interface GigabitEthernet0/0
 ip address 10.0.0.10 255.255.255.0
 no shutdown
ip default-gateway 10.0.0.1

!! Source2 (10.6.0.10)
hostname Source2
no ip routing
interface GigabitEthernet0/0
 ip address 10.6.0.10 255.255.255.0
 no shutdown
ip default-gateway 10.6.0.1

!! Receiver1 (10.50.0.10)
hostname Receiver1
no ip routing
interface GigabitEthernet0/0
 ip address 10.50.0.10 255.255.255.0
 no shutdown
ip default-gateway 10.50.0.1

R1 — “Broken” Config:

hostname R1
!
interface GigabitEthernet0/0
 ip address 10.0.0.1 255.255.255.0
 ip pim sparse-mode
 no shutdown
!
interface GigabitEthernet0/1
 ip address 10.12.0.1 255.255.255.0
 ip pim sparse-mode
 no shutdown
!
router ospf 1
 network 10.0.0.0 0.0.0.255 area 0
 network 10.12.0.0 0.0.0.255 area 0
!
ip multicast-routing
ip pim rp-address 3.3.3.3

R2 — “Broken” Config:

hostname R2
!
interface GigabitEthernet0/0
 ip address 10.12.0.2 255.255.255.0
 ip pim sparse-mode
 no shutdown
!
interface GigabitEthernet0/1
 ip address 10.23.0.2 255.255.255.0
 ip pim sparse-mode
 no shutdown
!
interface GigabitEthernet0/2
 ip address 10.24.0.2 255.255.255.0
 !! NOTE: PIM is MISSING on this interface — Scenario 4
 no shutdown
!
router ospf 1
 network 10.12.0.0 0.0.0.255 area 0
 network 10.23.0.0 0.0.0.255 area 0
 network 10.24.0.0 0.0.0.255 area 0
!
ip multicast-routing
ip pim rp-address 3.3.3.3

R3 (RP) — “Broken” Config:

hostname R3
!
interface Loopback0
 ip address 3.3.3.3 255.255.255.255
 ip pim sparse-mode
!
interface GigabitEthernet0/0
 ip address 10.23.0.3 255.255.255.0
 ip pim sparse-mode
 no shutdown
!
interface GigabitEthernet0/1
 ip address 10.35.0.3 255.255.255.0
 ip pim sparse-mode
 no shutdown
!
router ospf 1
 !! NOTE: Loopback0 is NOT advertised in OSPF — Scenario 2
 network 10.23.0.0 0.0.0.255 area 0
 network 10.35.0.0 0.0.0.255 area 0
!
ip multicast-routing
ip pim rp-address 3.3.3.3

R4 — “Broken” Config:

hostname R4
!
interface GigabitEthernet0/0
 ip address 10.34.0.4 255.255.255.0
 ip pim sparse-mode
 no shutdown
!
interface GigabitEthernet0/1
 ip address 10.56.0.4 255.255.255.0
 ip pim sparse-mode
 no shutdown
!
interface GigabitEthernet0/2
 ip address 10.24.0.4 255.255.255.0
 ip pim sparse-mode
 no shutdown
!
router ospf 1
 network 10.34.0.0 0.0.0.255 area 0
 network 10.56.0.0 0.0.0.255 area 0
 network 10.24.0.0 0.0.0.255 area 0
!
ip multicast-routing
ip pim rp-address 3.3.3.3
!
!! NOTE: Static route creates RPF failure — Scenario 1
ip route 10.0.0.0 255.255.255.0 10.24.0.2

R5 — “Broken” Config:

hostname R5
!
interface GigabitEthernet0/0
 ip address 10.35.0.5 255.255.255.0
 ip pim sparse-mode
 no shutdown
!
interface GigabitEthernet0/1
 ip address 10.50.0.1 255.255.255.0
 ip pim sparse-mode
 ip igmp version 2
 !! NOTE: TTL threshold configured — Scenario 5
 ip multicast ttl-threshold 200
 no shutdown
!
router ospf 1
 network 10.35.0.0 0.0.0.255 area 0
 network 10.50.0.0 0.0.0.255 area 0
!
ip multicast-routing
ip pim rp-address 3.3.3.3

R6 — “Broken” Config:

hostname R6
!
interface GigabitEthernet0/0
 ip address 10.6.0.1 255.255.255.0
 ip pim sparse-mode
 no shutdown
!
interface GigabitEthernet0/1
 ip address 10.56.0.6 255.255.255.0
 ip pim sparse-mode
 no shutdown
!
router ospf 1
 network 10.6.0.0 0.0.0.255 area 0
 network 10.56.0.0 0.0.0.255 area 0
!
ip multicast-routing
!! NOTE: RP address is WRONG — Scenario 3 (only for Source2 testing)
ip pim rp-address 3.3.3.4
Scenario 1: RPF Failure

The Theory: Before you dive into the CLI, remember the most important rule of multicast troubleshooting: Follow the tree. Start at the receiver, work toward the RP, then work from the RP toward the source. At each hop, check PIM neighbors, RPF, and Oil.

Scenario 1 (RPF Failure) Testing:

!! On Receiver1 — join the group 
Receiver1(config)# interface GigabitEthernet0/0
Receiver1(config-if)# ip igmp join-group 239.1.1.1

!! On Source1 — send pings 
Source1# ping 239.1.1.1 repeat 1000

Now run the diagnosis:

R4# show ip rpf 10.0.0.10

Output:

RPF information for ? (10.0.0.10)
  RPF interface: GigabitEthernet0/2
  RPF neighbor: ? (10.24.0.2)
  RPF route/mask: 10.0.0.0/24
  RPF type: static

RPF points to Gi0/2 (toward R2 via static route), but actual multicast arrives on Gi0/0 (from R3), or on the shared tree via R3. The static route makes RPF expect traffic on a different interface.

R4# show ip mroute 239.1.1.1 count

Look for RPF Failures incrementing.

Root Cause: ip route 10.0.0.0 255.255.255.0 10.24.0.2 on R4 changes the RPF check away from the actual multicast tree path.

Fix:

R4(config)# no ip route 10.0.0.0 255.255.255.0 10.24.0.2
Scenario 2: RP Unreachable

Symptom: No multicast works for any group. show ip mroute on R5 shows (*, 239.1.1.1) but with RPF failure toward the RP.

Scenario 2 (RP Unreachable) Testing:

!! On Source1 — keep pining 
Source1# ping 239.1.1.1 repeat 1000

Check the symptoms on R5:

R5# show ip mroute 239.1.1.1

% Network not in table

No route to the RP. Check why:

R3# show ip ospf interface brief

Output:

Interface    PID   Area            IP Address/Mask    Cost  State Nbrs F/C
Gi0/0        1     0               10.23.0.3/24       1     DR    1/1
Gi0/1        1     0               10.35.0.3/24       1     DR    1/1

Loopback0 is not in OSPF. R3 has ip address 3.3.3.3 on Loopback0 but never advertised it.

Root Cause: Missing network 3.3.3.3 0.0.0.0 area 0 in R3’s OSPF config.

Fix:

R3(config)# router ospf 1
R3(config-router)# network 3.3.3.3 0.0.0.0 area 0

Verify:

R5# show ip route 3.3.3.3
Routing entry for 3.3.3.3/32
  Known via "ospf 1", distance 110
Scenario 3: RP Address Mismatch

Symptom: Source2 (10.6.0.10) is sending multicast to 239.2.2.2. Receiver has joined on R5. Traffic from Source2 never arrives.

Scenario 3 (RP Address Mismatch) Testing:

!! On Source2 — send multicast pings 
Source2# ping 239.2.2.2 repeat 1000

Check R6:

R6# show ip pim rp mapping

Output:

Group(s): 224.0.0.0/4
  RP: 3.3.3.3 (?), Static
R5# show ip pim rp mapping

Output:

Group(s): 224.0.0.0/4
  RP: 3.3.3.3 (?), Static

R6 is configured with RP 3.3.3.4, but the actual RP is 3.3.3.3. R6 tries to register Source2 with 3.3.3.4, which does not exist. The PIM Register fails.

Root Cause: Typo in R6’s ip pim rp-address3.3.3.4 instead of 3.3.3.3.

Fix:

R6(config)# no ip pim rp-address 3.3.3.4
R6(config)# ip pim rp-address 3.3.3.3

This is one of the most common mistakes in multicast deployments — the RP address must be identical on EVERY router in the domain. One typo & that router’s sources cannot register and its receivers’ joins go to the wrong place.

Scenario 4: PIM Neighbor Missing

Symptom: Traffic from Source1 reaches R2 but never gets to R4 via the R2→R4 direct link (10.24.0.0/24). R4 has no PIM neighbor on Gi0/2.

How to diagnose:

R4# show ip pim neighbor

Output:

Neighbor          Interface                Uptime/Expires    Ver
10.34.0.3         GigabitEthernet0/0       00:10:00/00:01:30 v2
10.56.0.6         GigabitEthernet0/1       00:10:00/00:01:28 v2

No neighbor on Gi0/2. Check R2:

R2# show ip pim interface

Output:

Interface          Ver/  Nbr    Query   DR        DR
                   Mode  Count  Intvl   Prior     Address
GigabitEthernet0/0 v2/S  1      30      1         10.12.0.2
GigabitEthernet0/1 v2/S  1      30      1         10.23.0.3

Gi0/2 is not listed as a PIM interface. PIM was never enabled on R2’s Gi0/2.

Root Cause: Missing ip pim sparse-mode on R2’s GigabitEthernet0/2.

Fix:

R2(config)# interface GigabitEthernet0/2
R2(config-if)# ip pim sparse-mode

Within 30 seconds, PIM neighbor adjacency forms:

R4# show ip pim neighbor

Now shows 10.24.0.2 on Gi0/2.

Scenario 5: TTL Threshold

Symptom: Traffic reaches R5 (verified in show ip mroute), but Receiver1 on R5’s Gi0/1 subnet never gets the multicast packets. IGMP groups are healthy on R5.

How to diagnose:

R5# show ip mroute 239.1.1.1

Output:

(10.0.0.10, 239.1.1.1), 00:02:00/00:01:00, flags: SJT
  Incoming interface: GigabitEthernet0/0, RPF nbr 10.35.0.3
  Outgoing interface list:
    GigabitEthernet0/1, Forward/Sparse, 00:02:00/00:01:00

The mroute looks perfect. Gi0/1 is in the OIL. Traffic is arriving. But check the interface detail:

R5# show ip pim interface GigabitEthernet0/1 detail | include TTL

Output:

  Multicast TTL threshold: 200

TTL threshold is 200. The multicast packets from the source have a TTL that starts at 32 (or whatever the source sets). After traversing 3-4 routers, the TTL is around 28-29. Since 29 < 200, R5 drops the packet before forwarding it out Gi0/1.

Root Cause: ip multicast ttl-threshold 200 on R5’s Gi0/1. This command says “only forward multicast packets with TTL > 200 out this interface.” It is designed for scoping multicast domains, but someone set it absurdly high.

Fix:

R5(config)# interface GigabitEthernet0/1
R5(config-if)# no ip multicast ttl-threshold

TTL threshold is rarely used intentionally in campus networks. If you ever see it in a config, check if it was set on purpose or if someone copied a config from a different context.

Systematic Multicast Troubleshooting Methodology

Troubleshooting Flowchart

Use this order every time:

1. CHECK RP
   show ip pim rp mapping
   → Is the RP configured? Is it the same on all routers?
   → Can all routers reach the RP? (show ip route <RP>)

2. CHECK PIM NEIGHBORS
   show ip pim neighbor
   → Are all expected neighbors showing?
   → Is PIM enabled on every transit interface?

3. CHECK RPF
   show ip rpf <source>
   → Does the RPF interface match where traffic arrives?
   → show ip mroute count — any RPF failure counters?

4. CHECK IGMP
   show ip igmp groups
   → Are receiver groups showing on the last-hop router?
   → Version mismatch? (show ip igmp interface)

5. CHECK MROUTE TABLE
   show ip mroute <group>
   → Is there an (S,G) entry?
   → Is the outgoing interface list populated?
   → Any Prune flags? Null OIL?

6. CHECK DATA PLANE
   show ip mroute count
   → Are packets being received & forwarded?
   → If received but not forwarded: check TTL, ACLs, boundary
Key Takeaways
  1. Multicast failures are almost always silent — no syslog, no SNMP trap, just missing traffic
  2. Start from the RP & work outward — if the RP is broken, nothing else matters
  3. RPF failures are diagnosed with show ip rpf & show ip mroute count
  4. Missing PIM on a single transit interface silently breaks the tree
  5. RP address consistency across all routers is non-negotiable
  6. TTL threshold is an obscure but devastating misconfiguration
  7. Always check the mroute table on EVERY router in the path — the problem is usually in the middle, not at the edges