CCIE SPv5.1 Labs
  • Intro
    • Setup
  • Purpose
  • Video Demonstration
  • Containerlab Tips
  • Labs
    • ISIS
      • Start
      • Topology
      • Prefix Suppression
      • Hello padding
      • Overload Bit
      • LSP size
      • Default metric
      • Hello/Hold Timer
      • Mesh groups
      • Prefix Summarization
      • Default Route Preference
      • ISIS Timers
      • Log Neighbor Changes
      • Troubleshooting 1 - No routes
      • Troubleshooting 2 - Adjacency
      • IPv6 Single Topology
      • IPv6 Single Topology Challenge
      • IPv6 Multi Topology
      • IPv6 Single to Multi Topology
      • Wide Metrics Explained
      • Route Filtering
      • Backdoor Link
      • Non-Optimal Intra-Area routing
      • Multi Area
      • Authentication
      • Conditional ATT Bit
      • Troubleshooting iBGP
      • Troubleshooting TE Tunnel
    • LDP
      • Start
      • Topology
      • LDP and ECMP
      • LDP and Static Routes
      • LDP Timers
      • LDP Authentication
      • LDP Session Protection
      • LDP/IGP Sync (OSPF)
      • LDP/IGP Sync (ISIS)
      • LDP Local Allocation Filtering
      • LDP Conditional Label Advertisement
      • LDP Inbound Label Advertisement Filtering
      • LDP Label Advertisement Filtering Challenge
      • LDP Implicit Withdraw
      • LDP Transport Address Troubleshooting
      • LDP Static Labels
    • MPLS-TE
      • Start
      • Topology
      • Basic TE Tunnel w/ OSPF
      • Basic TE Tunnel w/ ISIS
      • TE Tunnel using Admin Weight
      • TE Tunnel using Link Affinity
      • TE Tunnel with Explicit-Null
      • TE Tunnel with Conditional Attributes
      • RSVP message pacing
      • Reoptimization timer
      • IGP TE Flooding Thresholds
      • CSPF Tiebreakers
      • TE Tunnel Preemption
      • TE Tunnel Soft Preemption
      • Tunneling LDP inside RSVP
      • PE to P TE Tunnel
      • Autoroute Announce Metric (XE)
      • Autoroute Announce Metric (XR)
      • Autoroute Announce Absolute Metric
      • Autoroute Announce Backup Path
      • Forwarding Adjacency
      • Forwarding Adjacency with OSPF
      • TE Tunnels with UCMP
      • Auto-Bandwidth
      • FRR Link Protection (XE, BFD)
      • FRR Link Protection (XE, RSVP Hellos)
      • FRR Node Protection (XR)
      • FRR Path Protection
      • FRR Multiple Backup Tunnels (Node Protection)
      • FRR Multiple Backup Tunnels (Link Protection)
      • FRR Multiple Backup Tunnels (Backwidth/Link Protection)
      • FRR Backup Auto-Tunnels
      • FRR Backup Auto-Tunnels with SRLG
      • Full Mesh Auto-Tunnels
      • Full Mesh Dynamic Auto-Tunnels
      • One-Hop Auto-Tunnels
      • CBTS/PBTS
      • Traditional DS-TE
      • IETF DS-TE with MAM
      • IETF DS-TE with RDM
      • RDM w/ FRR Troubleshooting
      • Per-VRF TE Tunnels
      • Tactical TE Issues
      • Multicast and MPLS-TE
    • SR
      • Start
      • Topology
      • Basic SR with ISIS
      • Basic SR with OSPF
      • SRGB Modifcation
      • SR with ExpNull
      • SR Anycast SID
      • SR Adjacency SID
      • SR LAN Adjacency SID (Walkthrough)
      • SR and RSVP-TE interaction
      • SR Basic Inter-area with ISIS
      • SR Basic Inter-area with OSPF
      • SR Basic Inter-IGP (redistribution)
      • SR Basic Inter-AS using BGP
      • SR BGP Data Center (eBGP)
      • SR BGP Data Center (iBGP)
      • LFA
      • LFA Tiebreakers (ISIS)
      • LFA Tiebreakers (OSPF)
      • Remote LFA
      • RLFA Tiebreakers?
      • TI-LFA
      • Remote LFA or TILFA?
      • TI-LFA Node Protection
      • TI-LFA SRLG Protection
      • TI-LFA Protection Priorities (ISIS)
      • TI-LFA Protection Priorities (OSPF)
      • Microloop Avoidance
      • SR/LDP Interworking
      • SR/LDP SRMS OSPF Inter-Area
      • SR/LDP Design Challenge #1
      • SR/LDP Design Challenge #2
      • Migrate LDP to SR (ISIS)
      • OAM with SR
      • SR-MPLS using IPv6
      • Basic SR-TE with AS
      • Basic SR-TE with AS and ODN
      • SR-TE with AS Primary/Secondary Paths
      • SR-TE Dynamic Policies
      • SR-TE Dynamic Policy with Margin
      • SR-TE Explicit Paths
      • SR-TE Disjoint Planes using Anycast SIDs
      • SR-TE Flex-Algo w/ Latency
      • SR-TE Flex-Algo w/ Affinity
      • SR-TE Disjoint Planes using Flex-Algo
      • SR-TE BSIDs
      • SR-TE RSVP-TE Stitching
      • SR-TE Autoroute Include
      • SR Inter-IGP using PCE
      • SR-TE PCC Features
      • SR-TE PCE Instantiated Policy
      • SR-TE PCE Redundancy
      • SR-TE PCE Redundancy w/ Sync
      • SR-TE Basic BGP EPE
      • SR-TE BGP EPE for Unified MPLS
      • SR-TE Disjoint Paths
      • SR Converged SDN Transport Challenge
      • SR OAM DPM
      • SR OAM Tools
      • Performance-Measurement (Interface Delay)
    • SRv6
      • Start
      • Topology
      • Basic SRv6
      • SRv6 uSID
      • SRv6 uSID w/ EVPN-VPWS and BGP IPv4/IPv6
      • SRv6 uSID w/ SR-TE
      • SRv6 uSID w/ SR-TE Explicit Paths
      • SRv6 uSID w/ L3 IGW
      • SRv6 uSID w/ Dual-Connected PE
      • SRv6 uSID w/ Flex Algo
      • SRv6 uSID - Scale (Pt. 1)
      • SRv6 uSID - Scale (Pt. 2)
      • SRv6 uSID - Scale (Pt. 3) (UPA Walkthrough)
      • SRv6 uSID - Scale (Pt. 4) (Flex Algo)
      • SRv6 uSID w/ TI-LFA
    • Multicast
      • Start
      • Topology
      • Basic PIM-SSM
      • PIM-SSM Static Mapping
      • Basic PIM-SM
      • PIM-SM with Anycast RP
      • PIM-SM with Auto-RP
      • PIM-SM with BSR
      • PIM-SM with BSR for IPv6
      • PIM-BiDir
      • PIM-BiDir for IPv6
      • PIM-BiDir with Phantom RP
      • PIM Security
      • PIM Boundaries with AutoRP
      • PIM Boundaries with BSR
      • PIM-SM IPv6 using Embedded RP
      • PIM SSM Range Note
      • PIM RPF Troubleshooting #1
      • PIM RPF Troubleshooting #2
      • PIM RP Troubleshooting
      • PIM Duplicate Traffic Troubleshooting
      • Using IOS-XR as a Sender/Receiver
      • PIM-SM without Receiver IGMP Joins
      • RP Discovery Methods
      • Basic Interdomain Multicast w/o MSDP
      • Basic Interdomain Multicast w/ MSDP
      • MSDP Filtering
      • MSDP Flood Reduction
      • MSDP Default Peer
      • MSDP RPF Check (IOS-XR)
      • MSDP RPF Check (IOS-XE)
      • Interdomain MBGP Policies
      • PIM Boundaries using MSDP
    • MVPN
      • Start
      • Topology
      • Profile 0
      • Profile 0 with data MDTs
      • Profile 1
      • Profile 1 w/ Redundant Roots
      • Profile 1 with data MDTs
      • Profile 6
      • Profile 7
      • Profile 3
      • Profile 3 with S-PMSI
      • Profile 11
      • Profile 11 with S-PMSI
      • Profile 11 w/ Receiver-only Sites
      • Profile 9 with S-PMSI
      • Profile 12
      • Profile 13
      • UMH (Upstream Multicast Hop) Challenge
      • Profile 13 w/ Configuration Knobs
      • Profile 13 w/ PE RP
      • Profile 12 w/ PE Anycast RP
      • Profile 14 (Partitioned MDT)
      • Profile 14 with Extranet option #1
      • Profile 14 with Extranet option #2
      • Profile 14 w/ IPv6
      • Profile 17
      • Profile 19
      • Profile 21
    • MVPN SR
      • Start
      • Topology
      • Profile 27
      • Profile 27 w/ Constraints
      • Profile 27 w/ FRR
      • Profile 28
      • Profile 28 w/ Constraints and FRR
      • Profile 28 w/ Data MDTs
      • Profile 29
    • VPWS
      • Start
      • Topology
      • Basic VPWS
      • VPWS with Tag Manipulation
      • Redundant VPWS
      • Redundant VPWS (IOS-XR)
      • VPWS with PW interfaces
      • Manual VPWS
      • VPWS with Sequencing
      • Pseudowire Logging
      • VPWS with FAT-PW
      • MS-PS (Pseudowire stitching)
      • VPWS with BGP AD
    • VPLS
      • Start
      • Topology
      • Basic VPLS with LDP
      • VPLS with LDP and BGP
      • VPLS with BGP only
      • Hub and Spoke VPLS
      • Tunnel L2 Protocols over VPLS
      • Basic H-VPLS
      • H-VPLS with BGP
      • H-VPLS with QinQ
      • H-VPLS with Redundancy
      • VPLS with Routing
      • VPLS MAC Protection
      • Basic E-TREE
      • VPLS with LDP/BGP-AD and XRv RR
      • VPLS with BGP and XRv RR
      • VPLS with Storm Control
    • EVPN
      • Start
      • Topology
      • EVPN VPWS
      • EVPN VPWS Multihomed
      • EVPN VPWS Multihomed Single-Active
      • Basic Single-homed EVPN E-LAN
      • EVPN E-LAN Service Label Allocation
      • EVPN E-LAN Ethernet Tag
      • EVPN E-LAN Multihomed
      • EVPN E-LAN on XRv
      • EVPN IRB
      • EVPN-VPWS Multihomed IOS-XR (All-Active)
      • EVPN-VPWS Multihomed IOS-XR (Port-Active)
      • EVPN-VPWS Multihomed IOS-XR (Single-Active)
      • EVPN-VPWS Multihomed IOS-XR (Non-Bundle)
      • PBB-EVPN (Informational)
    • BGP Multi-Homing (XE)
      • Start
      • Topology
      • Lab1 ECMP
      • Lab2 UCMP
      • Lab3 Backup Path
      • Lab4 Shadow Session
      • Lab5 Shadow RR
      • Lab6 RR with Add-Path
      • Lab7 MPLS + Add Path ECMP
      • Lab8 MPLS + Shadow RR
      • Lab9 MPLS + RDs + UCMP
    • BGP Multi-Homing (XR)
      • Start
      • Topology
      • Lab1 ECMP
      • Lab2 UCMP
      • Lab3 Backup Path
      • Lab4 “Shadow Session”
      • Lab5 “Shadow RR”
      • Lab6 RR with Add-Path
      • Lab7 MPLS + Add Path ECMP
      • Lab8 MPLS + “Shadow RR”
      • Lab9 MPLS + RDs + UCMP
      • Lab10 MPLS + Same RD + Add-Path + UCMP
      • Lab11 MPLS + Same RD + Add-Path + Repair Path
    • BGP
      • Start
      • Conditional Advertisement
      • Aggregation and Deaggregation
      • Local AS
      • BGP QoS Policy Propagation
      • Non-Optimal eBGP Routing
      • Multihomed Enterprise Challenge
      • Provider Communities
      • Destination-Based RTBH
      • Destination-Based RTBH (Community-Based)
      • Source-Based RTBH
      • Source-Based RTBH (Community-Based)
      • Multihomed Enterprise Challenge (XRv)
      • Provider Communities (XRv)
      • DMZ Link BW Lab1
      • DMZ Link BW Lab2
      • PIC Edge in the Global Table
      • PIC Edge Troubleshooting
      • PIC Edge for VPNv4
      • AIGP
      • AIGP Translation
      • Cost-Community (iBGP)
      • Cost-Community (confed eBGP)
      • Destination-Based RTBH (VRF Provider-triggered)
      • Destination-Based RTBH (VRF CE-triggered)
      • Source-Based RTBH (VRF Provider-triggered)
      • Flowspec (Global IPv4/6PE)
      • Flowspec (VRF)
      • Flowspec (Global IPv4/6PE w/ Redirect)
      • Flowspec (Global IPv4/6PE w/ Redirect) T-Shoot
      • Flowspec (VRF w/ Redirect)
      • Flowspec (Global IPv4/6PE w/ CE Advertisement)
    • Intra-AS L3VPN
      • Start
      • Partitioned RRs
      • Partitioned RRs with IOS-XR
      • RT Filter
      • Non-Optimal Multi-Homed Routing
      • Troubleshoot #1 (BGP)
      • Troubleshoot #2 (OSPF)
      • Troubleshoot #3 (OSPF)
      • Troubleshoot #4 (OSPF Inter-AS)
      • VRF to Global Internet Access (IOS-XE)
      • VRF to Global Internet Access (IOS-XR)
    • Inter-AS L3VPN
      • Start
      • Inter-AS Option A
      • Inter-AS Option B
      • Inter-AS Option C
      • Inter-AS Option AB (D)
      • CSC
      • CSC with Option AB (D)
      • Inter-AS Option C - iBGP LU
      • Inter-AS Option B w/ RT Rewrite
      • Inter-AS Option C w/ RT Rewrite
      • Inter-AS Option A Multi-Homed
      • Inter-AS Option B Multi-Homed
      • Inter-AS Option C Multi-Homed
    • Russo Inter-AS
      • Start
      • Topology
      • Option A L3NNI
      • Option A L2NNI
      • Option A mVPN
      • Option B L3NNI
      • Option B mVPN
      • Option C L3NNI
      • Option C L3NNI w/ L2VPN
      • Option C mVPN
    • BGP RPKI
      • Start
      • RPKI on IOS-XE (Enabling the feature)
      • RPKI on IOS-XE (Validation)
      • RPKI on IOS-XR (Enabling the feature)
      • Enable SSH in Routinator
      • RPKI on IOS-XR (Validation)
      • RPKI on IOS-XR (RPKI Routes)
      • RPKI on IOS-XR (VRF)
      • RPKI iBGP Mesh (No Signaling)
      • RPKI iBGP Mesh (iBGP Signaling)
    • NAT
      • Start
      • Egress PE NAT44
      • NAT44 within an INET VRF
      • Internet Reachability between VRFs
      • CGNAT
      • NAT64 Stateful
      • NAT64 Stateful w/ Static NAT
      • NAT64 Stateless
      • MAP-T BR
    • BFD
      • Start
      • Topology
      • OSPF Hellos
      • ISIS Hellos
      • BGP Keepalives
      • PIM Hellos
      • Basic BFD for all protocols
      • BFD Asymmetric Timers
      • BFD Templates
      • BFD Tshoot #1
      • BFD for Static Routes
      • BFD Multi-Hop
      • BFD for VPNv4 Static Routes
      • BFD for VPNv6 Static Routes
      • BFD for Pseudowires
    • QoS
      • Start
      • QoS on IOS-XE
      • Advanced QoS on IOS-XE Pt. 1
      • Advanced QoS on IOS-XE Pt. 2
      • MPLS QoS Design
      • Notes - QoS on IOS-XR
    • NSO
      • Start
      • Basic NSO Usage
      • Basic NSO Template Service
      • Advanced NSO Template Service
      • Advanced NSO Template Service #2
      • NSO Template vs. Template Service
      • NSO API using Python
      • NSO API using Python #2
      • NSO API using Python #3
      • Using a NETCONF NED
      • Python Service
      • Nano Services
    • MDT
      • Start
      • MDT Server Setup
      • Basic Dial-Out
      • Filtering Data using XPATH
      • Finding the correct YANG model
      • Finding the correct YANG model #2
      • Event-Driven MDT
      • Basic Dial-In using gNMI
      • Dial-Out with TLS
      • Dial-In with TLS
      • Dial-In with two-way TLS
    • App-Hosting
      • Start
      • Lab - iperf3 Docker Container
      • Notes - LXC Container
      • Notes - Native Applications
      • Notes - Process Scripts
    • ZTP
      • Notes - Classic ZTP
      • Notes - Secure ZTP
    • L2 Connectivity Notes
      • 802.1ad (Q-in-Q)
      • MST-AG
      • MC-LAG
      • G.8032
    • Ethernet OAM
      • Start
      • Topology
      • CFM
      • y1731
      • Notes - y1564
    • Security
      • Start
      • Notes - Security ACLs
      • Notes - Hybrid ACLs
      • Notes - MPP (IOS-XR)
      • Notes - MPP (IOS-XE)
      • Notes - CoPP (IOS-XE)
      • Notes - LPTS (IOS-XR)
      • Notes - WAN MACsec White Paper
      • Notes - WAN MACsec Config Guide
      • Notes - AAA
      • Notes - uRPF
      • Notes - VTY lines (IOS-XR)
      • Lab - uRPF
      • Lab - MPP
      • Lab - AAA (IOS-XE)
      • Lab - AAA (IOS-XR)
      • Lab - CoPP and LPTS
    • Assurance
      • Start
      • Notes - Syslog on IOS-XE
      • Notes - Syslog on IOS-XR
      • Notes - SNMP Traps
      • Syslog (IOS-XR)
      • RMON
      • Netflow (IOS-XE)
      • Netflow (IOS-XR)
Powered by GitBook
On this page
  • Answer
  • Explanation
  • Building the RPT tree
  • Registering the Source
  • SPT Switchover
  • Summary
  1. Labs
  2. Multicast

Basic PIM-SM

Load multicast.init.cfg

#IOS-XE
config replace flash:multicast.init.cfg
 
#IOS-XR
configure
load bootflash:multicast.init.cfg
commit replace
y

  • Configure R2 to join (*, 239.2.2.2) and (*, ff08::2)

  • Configure R4 to join (*, 239.4.4.4) and (*, ff08::4)

  • Configure XR4 as the RP for group range 239.2.2.0/24 and ff08::2/128

  • Configure CSR9 as the RP for group range 239.4.4.0/24 and ff08::4/128

  • Use static RP assignment

Use R1 and R3 as the sources to verify that multicast traffic is working.

Answer

#R5-R10
ip pim rp-address 1.0.0.14 XR4_V4_RANGE
ip pim rp-address 1.0.0.9 R9_V4_RANGE
!
ip access-list standard R9_V4_RANGE
 10 permit 239.4.4.0 0.0.0.255
ip access-list standard XR4_V4_RANGE
 10 permit 239.2.2.0 0.0.0.255

ipv6 pim rp-address 2001::14 XR4_V6_RANGE
ipv6 pim rp-address 2001::9 R9_V6_RANGE
!
ipv6 access-list XR4_V6_RANGE
 sequence 10 permit ipv6 host FF08::2 any
!
ipv6 access-list R9_V6_RANGE
 sequence 10 permit ipv6 host FF08::4 any

#XR1-XR4
router pim
 address-family ipv4
  rp-address 1.0.0.14 XR4_V4_RANGE
  rp-address 1.0.0.9 R9_V4_RANGE
 !
 address-family ipv6
  rp-address 2001::14 XR4_V6_RANGE
  rp-address 2001::9 R9_V6_RANGE
!
ipv4 access-list XR4_V4_RANGE
 10 permit ipv4 239.2.2.0/24 any
!
ipv4 access-list R9_V4_RANGE
 10 permit ipv4 239.4.4.0/24 any
!
ipv6 access-list R9_V6_RANGE
 10 permit ipv6 host ff08::4 any
!
ipv6 access-list XR4_V6_RANGE
 10 permit ipv6 host ff08::2 any

#XR4
multicast-routing
 address-family ipv4
  interface Loopback0
   enable
 !
 address-family ipv6
  interface Loopback0
   enable

#R9
int Lo0
 ip pim sparse-mode
!
ipv6 access-list R9_V6_RANGE
 permit ipv6 any ff08::4/127

#R2
! If you want the router to respond to ICMP for testing, we must enable PIM
ip multicast-routing distributed
ipv6 multicast-routing
!
! Additionally, an RP address must be configured so that the "host" has a valid RPF
! interface for the received multicast traffic.
ip pim rp-address 9.2.5.5  
ipv6 pim rp-address 2009:9:2:5::5
!
int gi2.525
 ip pim sparse-mode
 ip igmp join-group 239.2.2.2
 ipv6 mld join-group ff08::2

#R4
! If you want the router to respond to ICMP for testing, we must enable PIM
ip multicast-routing distributed
ipv6 multicast-routing
!
! Additionally, an RP address must be configured so that the "host" has a valid RPF
! interface for the received multicast traffic.
ip pim rp-address 11.4.13.13
ipv6 pim rp-address 200B:11:4:13::13
!
int GigabitEthernet2.543
 ip pim sparse-mode
 ip igmp join-group 239.4.4.4
 ipv6 mld join-group ff08::4

Explanation

PIM-SM allows for ASM (any source multicast). In this mode, the receivers only know what group address they are interested in. The receivers are interested in traffic from any source (hence the name ASM).

The problem this introduces is: How can a LHR build a distribution tree when the receiver is interested in any source? Where would the LHR send the PIM Join? The solution to this problem is to use an RP (rendevous point). The RP is a common point in the network that all receivers can build a tree towards. In order to discover new sources sending to a given group address, the FHR must register all sources with the RP. This is done with a unicast PIM Register message. The RP then builds a (S, G) tree rooted at the sender, and “glues together” the source and receivers because it is the common point of the (S, G) and (*, G) trees. At this point, the LHR has also learned the source, and can now switchover to a (S, G) so that the distribution tree is taking the most optimal path.

All routers in the PIM domain must agree on the RP address. This can be configured statically or discovered dynamically through AutoRP or BSR. In this lab we simply manually define the RP mappings on each router. An RP can be defined on a per-multicast group basis. To demonstrate this, this lab requires you to configure a separate RP for each group range. This is done by associating a standard ACL with the static RP definition.

#R5-R10
ip pim rp-address 1.0.0.14 XR4_V4_RANGE
ip pim rp-address 1.0.0.9 R9_V4_RANGE
!
ip access-list standard R9_V4_RANGE
 10 permit 239.4.4.0 0.0.0.255
ip access-list standard XR4_V4_RANGE
 10 permit 239.2.2.0 0.0.0.255

#XR1-XR4
router pim
 address-family ipv4
  rp-address 1.0.0.14 XR4_V4_RANGE
  rp-address 1.0.0.9 R9_V4_RANGE
!
ipv4 access-list XR4_V4_RANGE
 10 permit ipv4 239.2.2.0/24 any
!
ipv4 access-list R9_V4_RANGE
 10 permit ipv4 239.4.4.0/24 any

IPv6 PIM-SM works exactly the same way. We define the RPs statically and associate an ACL.

#R5-R10
ipv6 pim rp-address 2001::14 XR4_V6_RANGE
ipv6 pim rp-address 2001::9 R9_V6_RANGE
!
ipv6 access-list XR4_V6_RANGE
 sequence 10 permit ipv6 host FF08::2 any
!
ipv6 access-list R9_V6_RANGE
 sequence 10 permit ipv6 host FF08::4 any

#XR1-XR4
router pim
 address-family ipv6
  rp-address 2001::14 XR4_V6_RANGE
  rp-address 2001::9 R9_V6_RANGE
!
ipv6 access-list R9_V6_RANGE
 10 permit ipv6 host ff08::4 any
!
ipv6 access-list XR4_V6_RANGE
 10 permit ipv6 host ff08::2 any

Additionally, since we are using the loopback as the RP address, XR4 and R9 must enable PIM on their loopback interface. R9 will already have IPv6 enabled on the loopback by default. Without this step, the RPs will not accept PIM Registers.

#XR4
multicast-routing
 address-family ipv4
  interface Loopback0
   enable
 !
 address-family ipv6
  interface Loopback0
   enable

#R9
int Lo0
 ip pim sparse-mode

We can confirm the RP mappings on routers in the core. On IOS-XE, we cannot see the explicit mappings based on the ACL, but we can see this on IOS-XR.

On IOS-XR we can also see this using show pim group-map. This is also a handy way to see the default group mappings. For example, we see how AutoRP works for DM by default, and the default SSM range.

On IOS-XR, the show pim ipv6 range-list provides similar output. All the FF3X::/32 ranges are built-in for SSM for IPv6.

On the LHRs, any groups matching these ranges will use the RP as the root of the tree. A (*, G) entry uses the RP for that group for the RPF check.

For example, on R5, we see a (*, 239.2.2.2) entry and a (*, ff08::2) entry. In both cases, the RP is used for the RPF check. This is the incoming interface, and the OIL is the interface towards the receiver, where the IGMP/MLD Join was received.

The S flag means Sparse mode is used. The C flag means that the router is acting as LHR, because a received is directly connected. The J flag means that the router will switchover to the shortest path tree on the next received packet, meaning switchover to the (S, G) tree once the source is learned.

We can also see this on XRv3 as the LHR:

The A flag means Accept, and the F flag means Forward. The LI flag means Local interest, so the receiver is directly connected. In general, the NS flag is used to mean that received traffic should trigger some type of control plane activity. On an interface in the OIL, the NS flag means that received multicast traffic should trigger the PIM Assert process. On the IIF, the NS flag means that received multicast traffic should trigger the SPT switchover process.

Building the RPT tree

The LHRs will send a PIM Join out the RPF interface, towards the RP. Because the next upstream router also has the same RP configured for the given group, the PIM Joins will eventually make their way to the RP. If the RP is not configured the same on all routers, this process will fail, and the tree from the RP to the receivers will not be setup correctly. This is why auto-discovery methods were created for RP information dissemination.

At the RPs, we see that the (*, G) state has been created. Let’s first check R9.

Strangely, R9 does not appear to be acting as an RP for IPv6 PIM. We can see that it does not create its own decap tunnels pointed towards itself. It only creates tunnels towards XR4.

The issue appears to be due to the ACL. I’m not sure if this is a bug or expected behavior. I found that I had to put the group range in the destination section in the IPv6 ACL. Also, R9 would not accept a /128, only a /127 or larger.

#R9
ipv6 access-list R9_V6_RANGE
 permit ipv6 any ff08::4/127

R9 now has the PIM decap tunnel:

XR4 works for both IPv4 and IPv6 with no issues:

XR4 shows us that these (*, G) entries have an incoming interface of a decapsulating tunnel. This is used for the PIM register process. Upon learning of an RP, all PIM routers will auto-create tunnels used to encapsulate multicast traffic into a PIM register message which is unicast to the RP. This is used by the FHR to register the source with the RP. The RP also auto-creates decapsulation tunnels, which allow the RP to decapsulate this traffic. (Remove the outer IP header and forward the inner multicast packet down the shared tree). We can see the auto-created tunnel interfaces using the following command:

Registering the Source

Let’s now watch the Register process take place. We’ll use debug ip pim on the FHR, R7. We’ll ping 239.2.2.2 from R1.

#R1
ping 239.2.2.2 repeat 300

R7, upon seeing multicast traffic, looks up the group address and finds that XR4 is the RP for the group. R7 creates (S, G) state and Registers the packet with XR4 via a unicast PIM Register packet (13:31:12.251).

The RP, upon seeing that it has interested receivers for the group based on the (*, G) entry, joins a (S, G) rooted at the newly discovered source (7.1.7.1). R7 receives this at 13:31:12.290. R7 adds Gi2.574 to the OIL for the (S, G) entry. R7 continues sending PIM Registers to XR4 incase the (S, G) is not actually working (13:31:13.246, 13:31:13.254). Once the RP sees that traffic is arriving natively via the (S, G) tree (not the PIM Registers), the RP sends a Register Stop to the FHR (13:13:14.266). The RP can differentiate traffic arriving via PIM Registers compared to natively on the (S, G) entry because the multicast traffic via the PIM Register requires the decapsulation of the outer PIM Register header.

This process works the same way for IPv6 traffic:

#R1
ping ff08::2 repeat 300
Output Interface: GigabitEthernet2.517

#R7
debug ipv6 pim

*Nov 20 14:05:38.234: IPv6 PIM: (2007:7:1:7::1,FF08::2) Start registering to 2001::14
*Nov 20 14:05:40.225: IPv6 PIM: Received J/P on GigabitEthernet2.574 from FE80::14 target: FE80::7 (to us)
R7#(2007:7:1:7::1,FF08::2) Received Register-Stop
*Nov 20 14:05:44.348: IPv6 PIM: (2007:7:1:7::1,FF08::2) Stop registering

SPT Switchover

The FHRs, CSR5 and XRv3, only have a single path upstream. So no switchover occurs here. Instead the branching point is where the switchover occurs. The FHRs still join (S, G) trees, but they do not prune themselves off the shared tree. Only the branching point router prunes itself from the shared tree.

For example, for the (R1, 239.2.2.2) tree, XR1 is the branching point. XR1 notices that the source R1 is reachable via a different interface from the RPF interface, so XR1 switches over to a (S, G) tree. CSR5 sends the (S, G) Join, which makes its way to XR1. XR1, upon seeing that the (S, G) interface is different from the RPF interface, sends an RPT-bit (S, G) prune towards XR4, to prune itself off (*, G) just for this one source. This allows other sources sending to the same group in the future to continue to work. (This means to prune XR1 off the shared tree but just for (S, G). The RP then removes the interface from its (S, G) entry but not from its (*, G) entry.)

Note that on IOS-XR as the LHR, it is normal to see “no interfaces in immediate olist” for the (S, G) entry under show pim topology:

My guess is that this is because the (S, G) entry was not created via a IGMPv3 SSM join, but instead via a switchover event. In any case, the (S, G) entry in the MRIB shows the correct OIL:

Summary

PIM-SSM requires quite a bit of complexity in order to support ASM. We need an RP to use as a proxy to build a distribution tree for (*, G) entries. Then sources need to be registered with the RP, so that the traffic can be merged with the RP tree and distributed to interested receivers. If left in this state, the RP would take on the burden of processing all multicast traffic in the network. The traffic may also take a non-optimal path. To solve this, an SPT-switchover process is used so that the LHR simply joins the (S, G) tree once it learns of the source.

PreviousPIM-SSM Static MappingNextPIM-SM with Anycast RP

Last updated 1 month ago