IPv6 Multicast: PIM Source-Specific Multicast

The PIM source-specific multicast (SSM) routing protocol supports SSM implementation and is derived from PIM-SM. However, unlike PIM-SM data from all multicast sources are sent when there is a PIM join, the SSM feature forwards datagram traffic to receivers from only those multicast sources that the receivers have explicitly joined, thus optimizing bandwidth utilization and denying unwanted Internet broadcast traffic.

Prerequisites for IPv6 Multicast: PIM Source-Specific Multicast

  • Multicast Listener Discovery (MLD) version 2 is required for source-specific multicast (SSM) to operate.

  • Before SSM will run with MLD, SSM must be supported by the Cisco IPv6 device, the host where the application is running, and the application itself.

Information About IPv6 Multicast: PIM Source-Specific Multicast

IPv6 Multicast Routing Implementation

Cisco software supports the following protocols to implement IPv6 multicast routing:

  • MLD is used by IPv6 devices to discover multicast listeners (nodes that want to receive multicast packets destined for specific multicast addresses) on directly attached links. There are two versions of MLD:
    • MLD version 1 is based on version 2 of the Internet Group Management Protocol (IGMP) for IPv4.
    • MLD version 2 is based on version 3 of the IGMP for IPv4.
  • IPv6 multicast for Cisco software uses both MLD version 2 and MLD version 1. MLD version 2 is fully backward-compatible with MLD version 1 (described in RFC 2710). Hosts that support only MLD version 1 will interoperate with a device running MLD version 2. Mixed LANs with both MLD version 1 and MLD version 2 hosts are likewise supported.

  • PIM-SM is used between devices so that they can track which multicast packets to forward to each other and to their directly connected LANs.

  • PIM in Source Specific Multicast (PIM-SSM) is similar to PIM-SM with the additional ability to report interest in receiving packets from specific source addresses (or from all but the specific source addresses) to an IP multicast address.

The figure below shows where MLD and PIM-SM operate within the IPv6 multicast environment.

Figure 1. IPv6 Multicast Routing Protocols Supported for IPv6

Protocol Independent Multicast

Protocol Independent Multicast (PIM) is used between devices so that they can track which multicast packets to forward to each other and to their directly connected LANs. PIM works independently of the unicast routing protocol to perform send or receive multicast route updates like other protocols. Regardless of which unicast routing protocols are being used in the LAN to populate the unicast routing table, Cisco IOS PIM uses the existing unicast table content to perform the Reverse Path Forwarding (RPF) check instead of building and maintaining its own separate routing table.

You can configure IPv6 multicast to use either a PIM- Sparse Mode (SM) or PIM-Source Specific Multicast (SSM) operation, or you can use both PIM-SM and PIM-SSM together in your network.

PIM-Source Specific Multicast

PIM-SSM is the routing protocol that supports the implementation of SSM and is derived from PIM-SM. However, unlike PIM-SM where data from all multicast sources are sent when there is a PIM join, the SSM feature forwards datagram traffic to receivers from only those multicast sources that the receivers have explicitly joined, thus optimizing bandwidth utilization and denying unwanted Internet broadcast traffic. Further, instead of the use of RP and shared trees, SSM uses information found on source addresses for a multicast group. This information is provided by receivers through the source addresses relayed to the last-hop devices by MLD membership reports, resulting in shortest-path trees directly to the sources.

In SSM, delivery of datagrams is based on (S, G) channels. Traffic for one (S, G) channel consists of datagrams with an IPv6 unicast source address S and the multicast group address G as the IPv6 destination address. Systems will receive this traffic by becoming members of the (S, G) channel. Signaling is not required, but receivers must subscribe or unsubscribe to (S, G) channels to receive or not receive traffic from specific sources.

MLD version 2 is required for SSM to operate. MLD allows the host to provide source information. Before SSM will run with MLD, SSM must be supported in the Cisco IPv6 device, the host where the application is running, and the application itself.

PIM Shared Tree and Source Tree (Shortest-Path Tree)

By default, members of a group receive data from senders to the group across a single data distribution tree rooted at the RP. This type of distribution tree is called shared tree or rendezvous point tree (RPT), as illustrated in the figure below. Data from senders is delivered to the RP for distribution to group members joined to the shared tree.

Figure 2. Shared Tree and Source Tree (Shortest Path Tree)

If the data threshold warrants, leaf devices on the shared tree may initiate a switch to the data distribution tree rooted at the source. This type of distribution tree is called a shortest path tree or source tree. By default, the software switches to a source tree upon receiving the first data packet from a source.

The following process details the move from shared tree to source tree:

  1. Receiver joins a group; leaf Device C sends a join message toward the RP.

  2. RP puts the link to Device C in its outgoing interface list.

  3. Source sends the data; Device A encapsulates the data in the register and sends it to the RP.

  4. RP forwards the data down the shared tree to Device C and sends a join message toward the source. At this point, data may arrive twice at Device C, once encapsulated and once natively.

  5. When data arrives natively (unencapsulated) at the RP, the RP sends a register-stop message to Device A.

  6. By default, receipt of the first data packet prompts Device C to send a join message toward the source.

  7. When Device C receives data on (S, G), it sends a prune message for the source up the shared tree.

  8. RP deletes the link to Device C from the outgoing interface of (S, G).

  9. RP triggers a prune message toward the source.

Join and prune messages are sent for sources and RPs. They are sent hop-by-hop and are processed by each PIM device along the path to the source or RP. Register and register-stop messages are not sent hop-by-hop. They are sent by the designated router (DR) that is directly connected to a source and are received by the RP for the group.

Reverse Path Forwarding

Reverse-path forwarding is used for forwarding multicast datagrams. It functions as follows:

  • If a device receives a datagram on an interface it uses to send unicast packets to the source, the packet has arrived on the RPF interface.

  • If the packet arrives on the RPF interface, a device forwards the packet out the interfaces present in the outgoing interface list of a multicast routing table entry.

  • If the packet does not arrive on the RPF interface, the packet is silently discarded to prevent loops.

PIM uses both source trees and RP-rooted shared trees to forward datagrams; the RPF check is performed differently for each, as follows:

  • If a PIM device has source-tree state (that is, an (S, G) entry is present in the multicast routing table), the device performs the RPF check against the IPv6 address of the source of the multicast packet.

  • If a PIM device has shared-tree state (and no explicit source-tree state), it performs the RPF check on the RP’s address (which is known when members join the group).

Sparse-mode PIM uses the RPF lookup function to determine where it needs to send joins and prunes. (S, G) joins (which are source-tree states) are sent toward the source. (*, G) joins (which are shared-tree states) are sent toward the RP.


Note


To do a RPF check, use the show ipv6 rpf hostname or show ipv6 rpf vrf vrf_name hostname command.

How to Configure IPv6 Multicast: PIM Source-Specific Multicast

Configuring PIM Options

SUMMARY STEPS

  1. enable
  2. configure terminal
  3. ipv6 pim [vrf vrf-name ] spt-threshold infinity [group-list access-list-name ]
  4. ipv6 pim [vrf vrf-name ] accept-register {list access-list | route-map map-name }
  5. interface type number
  6. ipv6 pim dr-priority value
  7. ipv6 pim hello-interval seconds
  8. ipv6 pim join-prune-interval seconds
  9. exit
  10. show ipv6 pim [vrf vrf-name ] join-prune statistic [interface-type ]

DETAILED STEPS

  Command or Action Purpose

Step 1

enable

Example:


Device> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Step 2

configure terminal

Example:


Device# configure terminal

Enters global configuration mode.

Step 3

ipv6 pim [vrf vrf-name ] spt-threshold infinity [group-list access-list-name ]

Example:


Device(config)# ipv6 pim spt-threshold infinity group-list acc-grp-1

Configures when a PIM leaf device joins the SPT for the specified groups.

Step 4

ipv6 pim [vrf vrf-name ] accept-register {list access-list | route-map map-name }

Example:


Device(config)# ipv6 pim accept-register route-map reg-filter

Accepts or rejects registers at the RP.

Step 5

interface type number

Example:


Device(config)# interface FastEthernet 1/0

Specifies an interface type and number, and places the device in interface configuration mode.

Step 6

ipv6 pim dr-priority value

Example:


Device(config-if)# ipv6 pim dr-priority 3

Configures the DR priority on a PIM device.

Step 7

ipv6 pim hello-interval seconds

Example:


Device(config-if)# ipv6 pim hello-interval 45

Configures the frequency of PIM hello messages on an interface.

Step 8

ipv6 pim join-prune-interval seconds

Example:


Device(config-if)# ipv6 pim join-prune-interval 75

Configures periodic join and prune announcement intervals for a specified interface.

Step 9

exit

Example:


Device(config-if)# exit

Enter this command twice to exit interface configuration mode and enter privileged EXEC mode.

Step 10

show ipv6 pim [vrf vrf-name ] join-prune statistic [interface-type ]

Example:


Device# show ipv6 pim join-prune statistic

Displays the average join-prune aggregation for the most recently aggregated packets for each interface.

Resetting the PIM Traffic Counters

If PIM malfunctions, or in order to verify that the expected number of PIM packets are received and sent, clear PIM traffic counters. Once the traffic counters are cleared, you can verify that PIM is functioning correctly and that PIM packets are being received and sent correctly.

SUMMARY STEPS

  1. enable
  2. clear ipv6 pim [vrf vrf-name ] traffic
  3. show ipv6 pim [vrf vrf-name ] traffic

DETAILED STEPS

  Command or Action Purpose

Step 1

enable

Example:


Device> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Step 2

clear ipv6 pim [vrf vrf-name ] traffic

Example:


Device# clear ipv6 pim traffic

Resets the PIM traffic counters.

Step 3

show ipv6 pim [vrf vrf-name ] traffic

Example:


Device# show ipv6 pim traffic

Displays the PIM traffic counters.

Clearing the PIM Topology Table to Reset the MRIB Connection

No configuration is necessary to use the MRIB. However, users may in certain situations want to clear the PIM topology table in order to reset the MRIB connection and verify MRIB information.

SUMMARY STEPS

  1. enable
  2. clear ipv6 pim [vrf vrf-name ] topology [group-name | group-address ]
  3. show ipv6 mrib [vrf vrf-name ] client [filter ] [name {client-name | client-name : client-id }]
  4. show ipv6 mrib [vrf vrf-name ] route [link-local | summary | [sourceaddress-or-name | * ] [groupname-or-address [prefix-length ]]]
  5. show ipv6 pim [vrf vrf-name ] topology [groupname-or-address [sourcename-or-address ] | link-local | route-count [detail ]]
  6. debug ipv6 mrib [vrf vrf-name ] client
  7. debug ipv6 mrib [vrf vrf-name ] io
  8. debug ipv6 mrib proxy
  9. debug ipv6 mrib [vrf vrf-name ] route [group-name | group-address ]
  10. debug ipv6 mrib [vrf vrf-name ] table

DETAILED STEPS

  Command or Action Purpose

Step 1

enable

Example:


Device> enable

Enables privileged EXEC mode.

  • Enter your password if prompted.

Step 2

clear ipv6 pim [vrf vrf-name ] topology [group-name | group-address ]

Example:


Device# clear ipv6 pim topology FF04::10

Clears the PIM topology table.

Step 3

show ipv6 mrib [vrf vrf-name ] client [filter ] [name {client-name | client-name : client-id }]

Example:


Device# show ipv6 mrib client

Displays multicast-related information about an interface.

Step 4

show ipv6 mrib [vrf vrf-name ] route [link-local | summary | [sourceaddress-or-name | * ] [groupname-or-address [prefix-length ]]]

Example:


Device# show ipv6 mrib route

Displays the MRIB route information.

Step 5

show ipv6 pim [vrf vrf-name ] topology [groupname-or-address [sourcename-or-address ] | link-local | route-count [detail ]]

Example:


Device# show ipv6 pim topology

Displays PIM topology table information for a specific group or all groups.

Step 6

debug ipv6 mrib [vrf vrf-name ] client

Example:


Device# debug ipv6 mrib client

Enables debugging on MRIB client management activity.

Step 7

debug ipv6 mrib [vrf vrf-name ] io

Example:


Device# debug ipv6 mrib io

Enables debugging on MRIB I/O events.

Step 8

debug ipv6 mrib proxy

Example:


Device# debug ipv6 mrib proxy

Enables debugging on MRIB proxy activity between the route processor and line cards on distributed router platforms.

Step 9

debug ipv6 mrib [vrf vrf-name ] route [group-name | group-address ]

Example:


Device# debug ipv6 mrib route 

Displays information about MRIB routing entry-related activity.

Step 10

debug ipv6 mrib [vrf vrf-name ] table

Example:


Device# debug ipv6 mrib table

Enables debugging on MRIB table management activity.

Configuration Examples for IPv6 Multicast: PIM Source-Specific Multicast

Example: Displaying IPv6 PIM Topology Information

Device# show ipv6 pim topology

IP PIM Multicast Topology Table
Entry state:(*/S,G)[RPT/SPT] Protocol Uptime Info
Entry flags:KAT - Keep Alive Timer, AA - Assume Alive, PA - Probe Alive,
    RA - Really Alive, LH - Last Hop, DSS - Don't Signal Sources,
    RR - Register Received, SR - Sending Registers, E - MSDP External,
    DCC - Don't Check Connected
Interface state:Name, Uptime, Fwd, Info
Interface flags:LI - Local Interest, LD - Local Dissinterest,
II - Internal Interest, ID - Internal Dissinterest,
LH - Last Hop, AS - Assert, AB - Admin Boundary

(*,FF05::1)
SM UP:02:26:56 JP:Join(now) Flags:LH 
RP:2001:DB8:1:1:2
RPF:Ethernet1/1,FE81::1 
  Ethernet0/1          02:26:56  fwd LI LH 

(2001:DB8:1:1:200,FF05::1)
SM UP:00:00:07 JP:Null(never) Flags:
RPF:Ethernet1/1,FE80::30:1:4 
  Ethernet1/1          00:00:07  off LI 

Example: Configuring Join/Prune Aggregation

The following example shows how to provide the join/prune aggregation on Ethernet interface 0/0:

Device# show ipv6 pim join-prune statistic Ethernet0/0

PIM Average Join/Prune Aggregation for last (1K/10K/50K) packets
Interface             Transmitted             Received
Ethernet0/0      0    / 0             1    / 0    

Example: Displaying Information About PIM Traffic


Device# show ipv6 pim traffic 

PIM Traffic Counters
Elapsed time since counters cleared:00:05:29

                              Received     Sent
Valid PIM Packets               22          22        
Hello                           22          22        
Join-Prune                      0           0         
Register                        0           0         
Register Stop                   0           0         
Assert                          0           0         
Bidir DF Election               0           0         

Errors:
Malformed Packets                           0         
Bad Checksums                               0         
Send Errors                                 0         
Packet Sent on Loopback Errors              0         
Packets Received on PIM-disabled Interface  0         
Packets Received with Unknown PIM Version   0 

Additional References

Related Documents

Related Topic

Document Title

IPv6 addressing and connectivity

IPv6 Configuration Guide

Cisco IOS commands

Cisco IOS Master Commands List, All Releases

IP multicast commands

Cisco IOS IP Multicast Command Reference

IPv6 commands

Cisco IOS IPv6 Command Reference

Cisco IOS IPv6 features

Cisco IOS IPv6 Feature Mapping

Standards and RFCs

Standard/RFC

Title

RFCs for IPv6

IPv6 RFCs

MIBs

MIB

MIBs Link

To locate and download MIBs for selected platforms, Cisco IOS releases, and feature sets, use Cisco MIB Locator found at the following URL:

http://www.cisco.com/go/mibs

Technical Assistance

Description

Link

The Cisco Support and Documentation website provides online resources to download documentation, software, and tools. Use these resources to install and configure the software and to troubleshoot and resolve technical issues with Cisco products and technologies. Access to most tools on the Cisco Support and Documentation website requires a Cisco.com user ID and password.

http://www.cisco.com/cisco/web/support/index.html

Feature Information for IPv6 Multicast: PIM Source-Specific Multicast

The following table provides release information about the feature or features described in this module. This table lists only the software release that introduced support for a given feature in a given software release train. Unless noted otherwise, subsequent releases of that software release train also support that feature.

Use Cisco Feature Navigator to find information about platform support and Cisco software image support. To access Cisco Feature Navigator, go to https://cfnng.cisco.com/. An account on Cisco.com is not required.