Traditional multicast forwarding is performed using multicast group addresses. A group address is a single IP address taken from a reserved range (22.214.171.124/4 for IPv4, FF00::/8 for IPv6) to uniquely identify a group of hosts desiring to receive certain traffic. Any host within the multicast domain can be a source for a group, sending traffic to the group's IP address. Each multicast packet sent by the source is replicated by the network infrastructure so that each host belonging to the multicast group receives a copy. Because any host can act a source, this multicast implementation is deemed Any Source Multicast (ASM).
Source-Specific Multicast (SSM), defined in RFC 4607, extends this concept to identify a set of multicast hosts not only by group address but also by source. An SSM group, called a channel, is identified as (S,G) where S is the source address and G is the group address. This is in contrast to the definition of an ASM multicast route written as (*,G). IANA has reserved for SSM the IPv4 address range 126.96.36.199/8 and the IPv6 range FF3x::/32.
SSM brings several important benefits over ASM. Because an SSM channel is defined by both a source and a group address, group addresses can be re-used by multiple sources while keeping channels unique. For instance, the SSM channel (192.168.45.7, 188.8.131.52) is different than (192.168.3.104, 184.108.40.206), and hosts subscribed to one will not receive traffic from the other. This allows for greater flexibility in choosing a multicast group while also protecting against denial of service attacks; hosts will only receive traffic from explicitly requested sources.
One of the biggest advantages SSM holds over ASM is that it does not rely on the designation of a rendezvous point (RP) to establish a multicast tree. Because the source of an SSM channel is always known in advance, multicast trees are efficiently built from channel hosts toward the source (based on the unicast routing topology) without the need for an RP to join a source and shared multicast tree. The corollary of this, which may be undesirable in some multicast implementations, is that the multicast source(s) must be learned in advance via some external method (e.g. manual configuration).
SSM can be implemented using a subset of Protocol Independent Multicast (PIM) derived from PIM sparse mode (PIM-SM), dubbed PIM-SSM.
Once you have PIM-SM running, PIM-SSM is trivial to enable. This is done by specifying a range of addresses for which PIM-SSM will be used. Generally, you will want to enable PIM-SSM for it's default group range (220.127.116.11/8).
Router(config)# ip pim ssm default
An access list can be specified in place of the default range to enable PIM-SSM for a different range if desired.
We also must ensure that IGMPv3 is enabled on interfaces which connect to SSM clients.
Router(config-if)# ip igmp version 3
That's it! Now any requests to join a multicast group within the specified SSM range must specify a source address, and no shared trees will be built for these SSM channels.