Hands-On Lab: Configuring PIM Sparse Mode Multicast Routing

This hands-on lab configures PIM Sparse Mode across three routers with a designated Rendezvous Point, verifying a multicast receiver joins the shared tree and traffic from a source reaches the receiver through RP-based forwarding.

PIM Sparse Mode ConfigurationRendezvous PointIGMP Join Verification

~4 min read · Updated Sep 26, 2026

Lab Objective

Configure PIM Sparse Mode on three routers, designate one as the Rendezvous Point, verify a receiver's IGMP join builds a shared tree back to the RP, and confirm multicast traffic from a source reaches the receiver via RP-based forwarding.

Lab Purpose

Every routing protocol covered throughout this series handles unicast traffic exclusively. Multicast requires an entirely different forwarding paradigm — rather than a single destination, traffic must reach every interested receiver, and PIM Sparse Mode achieves this efficiently by building trees only where receivers have explicitly expressed interest via IGMP, rather than flooding traffic everywhere by default.

Lab Topology

Source ---- R1 ---- R2 (RP) ---- R3 ---- Receiver

Multicast group: 239.1.1.1
R2's Loopback0: 2.2.2.2/32 (used as RP address)

Task 1: Enable PIM Sparse Mode on All Relevant Interfaces

Enable IP multicast routing globally and PIM sparse-mode on every interface along the path.

Task 2: Designate R2 as the Rendezvous Point

Configure all three routers to use R2's loopback address as the static RP for the multicast group range.

Task 3: Configure the Receiver to Join the Group

Configure R3's interface facing the receiver to statically join the multicast group, simulating an IGMP join.

Task 4: Verify the Shared Tree Forms Toward the RP

Confirm R3 shows a (*, G) entry pointing toward the RP before any source traffic has even been sent.

Task 5: Send Multicast Traffic and Verify Delivery

Generate traffic from the source toward the group and confirm it reaches the receiver.

Solution and Verification

R1(config)# ip multicast-routing
R1(config)# interface gigabitethernet0/0
R1(config-if)# ip pim sparse-mode
R1(config-if)# exit
R1(config)# interface gigabitethernet0/1
R1(config-if)# ip pim sparse-mode

R2(config)# ip multicast-routing
R2(config)# interface gigabitethernet0/0
R2(config-if)# ip pim sparse-mode
R2(config-if)# exit
R2(config)# interface gigabitethernet0/1
R2(config-if)# ip pim sparse-mode
R2(config-if)# exit
R2(config)# interface loopback0
R2(config-if)# ip pim sparse-mode

R3(config)# ip multicast-routing
R3(config)# interface gigabitethernet0/0
R3(config-if)# ip pim sparse-mode
R3(config-if)# exit
R3(config)# interface gigabitethernet0/1
R3(config-if)# ip pim sparse-mode

R1(config)# ip pim rp-address 2.2.2.2
R2(config)# ip pim rp-address 2.2.2.2
R3(config)# ip pim rp-address 2.2.2.2

-- All three routers must agree on the
-- same static RP address -- a mismatch
-- here would mean different routers build
-- trees toward different, inconsistent
-- rendezvous points

R3(config)# interface gigabitethernet0/1
R3(config-if)# ip igmp join-group 239.1.1.1

-- Statically simulating a receiver's IGMP
-- join for lab purposes, in place of an
-- actual multicast client sending a real
-- IGMP membership report

R3# show ip mroute 239.1.1.1

(*, 239.1.1.1), uptime 00:01:15
  Incoming interface: GigabitEthernet0/0,
    RPF nbr 10.2.2.2
  Outgoing interface list:
    GigabitEthernet0/1, Forward
-- The (*, G) shared-tree entry exists
-- already, pointing toward the RP via the
-- incoming interface -- built purely from
-- the receiver's join, before any actual
-- source traffic has flowed

Source> [sends multicast traffic to 239.1.1.1]

R1# show ip mroute 239.1.1.1

(Source-IP, 239.1.1.1), uptime 00:00:05
  Incoming interface: GigabitEthernet0/0
  Outgoing interface list:
    GigabitEthernet0/1, Forward
-- A source-specific (S, G) entry now
-- exists on R1, confirming traffic is
-- actively being forwarded from the source
-- toward the RP and onward to the receiver

Receiver> [receives multicast stream]

-- Confirmed: traffic from Source
-- successfully reaches Receiver, traveling
-- Source -> R1 -> R2 (RP) -> R3 -> Receiver

Key Takeaway

The (*, G) entry represents the shared tree rooted at the RP, built the moment a receiver joins regardless of whether a source is even active yet, while the (S, G) entry represents source-specific traffic actually flowing — seeing a (*, G) entry with no corresponding (S, G) confirms a receiver has expressed interest but no traffic has arrived, a useful distinction when troubleshooting whether a multicast problem lies with receiver signaling or with the source's actual traffic delivery.

Written & researched by Dr. Shahin Siami

Related Articles

Hands-On Lab: Configuring EIGRP Stub Routing

This hands-on lab configures a branch router as an EIGRP stub, verifying it advertises only its own connected and summary routes while the hub router correctly avoids querying the stub during a topology change elsewhere in the network.

Continue

Hands-On Lab: Configuring EIGRP Named Mode

This hands-on lab reconfigures a classic EIGRP setup into EIGRP named mode, organizing address-family and interface-specific configuration into a more structured hierarchy, and verifies functional equivalence with the classic configuration style used throughout earlier EIGRP labs in this series.

Continue

Hands-On Lab: Configuring ERSPAN Across a Routed Network

This hands-on lab configures Encapsulated RSPAN (ERSPAN) to mirror traffic across a Layer 3-routed network rather than a single Layer 2 trunk, extending the RSPAN concept from the previous lab beyond the boundaries of a single VLAN or switched domain.

Continue

Hands-On Lab: Configuring RSPAN Across Switches

This hands-on lab configures Remote SPAN (RSPAN) using a dedicated RSPAN VLAN carried across a trunk, allowing traffic mirrored on one switch to be monitored by a capture device connected to an entirely different switch, extending the local SPAN concept covered in an earlier lab across the network.

Continue

Hands-On Lab: Configuring In-Service Software Upgrade (ISSU) on a Stack

This hands-on lab performs an In-Service Software Upgrade across a StackWise stack, upgrading each member's IOS image one at a time while the stack continues forwarding traffic throughout, verifying zero downtime compared to the disruptive reload approach used in earlier IOS upgrade labs.

Continue

Hands-On Lab: Configuring Cisco Catalyst StackWise Traditional Stacking

This hands-on lab configures traditional Catalyst stacking (StackWise) across three switches using stack cables, contrasting its single-tier, chassis-proximity requirement against the StackWise Virtual pair covered in the previous lab, which allows switches to be located much farther apart.

Continue