Applications/Servers use IP multicast to send their contents in IP packets to a group of interested clients. These clients indicate their wish to receive such traffic explicitly by sending an IGMP (Internet Group Management Protocol) join message.
In early years of IP multicast deployment, receivers and senders did not know each other and their location. Administrators used to select a multicast address and configure both senders and receivers to use this specific multicast address.
Any-Source-Multicast (popularly known as ASM) is where receiver does not know the sender beforehand. In other words, in ASM, receiver indicates that it can receive traffic from any-source. So receiver just knows the multicast group address that sender would be using. Receiver uses IGMP to subscribe to all the traffic that is being sent to a multicast group address. Routers between source and receiver use multicast routing protocol like PIM-SM to create multicast forwarding tree. In ASM, multicast state is usually referred as (*, G) where ‘*’ represents any-source and ‘G’ is the multicast group address receiver is interested in. Please look at figure – 1 to get an idea about how receivers receive the multicast traffic from a sender. In this figure, you can assume that multicast forwarding tree has already been built using a multicast routing protocol.
Did you notice that in ASM, a receiver might receive unwanted multicast traffic from sources in which receiver may not be interested. For example, look at figure-2, source S1 and source S2 both are sending packets to multicast group address G1. Let us assume that source S1 is a financial ticker server while source S2 is a radio station. Receiver R1 wants to tune to the radio station while receiver R2 wants to get financial ticker. Both R1 and R2 join multicast group G1 with any-source (i.e (*, G1)). Because of this both R1 and R2 will receive multicast traffic from both source S1 and S2. Internally receiver R1 will discard traffic from S1 and process traffic from S2 while receiver R2 will discard traffic from S2 and process traffic from S1.
So to reiterate, in ASM, as receiver does not know the source, it wishes to receive traffic from all sources for a multicast group. This may lead to cases where unwanted traffic is also received.
I am sure by now you can predict what Source-Specific-Multicast (popularly known as SSM) would really mean. If you said that in SSM, receiver knows the source beforehand, do take a pat on your back. In SSM, apart from multicast group address, receiver also indicates the source address from which it wants to receive multicast traffic. This combination is usually referred as (S,G) where ‘S’ represents the source address and ‘G’ represents the multicast group address. In SSM, hosts use IGMPv3 (MLDv2) to indicate their interest while routers use a multicast routing protocol like PIM-SM. Let us now look at figure-3 and see how receivers receive only the traffic they wished to receive. In this figure, you can again assume that multicast forwarding tree has already been built using a multicast routing protocol. As clearly seen in this figure, receiver R1 receives traffic only from source S2 while receiver R2 receives traffic only from S1.
So which one is better? In my opinion, this depends upon the application. If your application is such that all the receivers are also senders as well then using ASM will be better. If your application is a typical client-server application than SSM will be better. SSM usually help in saving network resources as well as provide some implicit security (as receiver accepts traffic from a specific source only). ASM is currently the most deployed method but SSM is gaining popularity and support from the community. In ASM, source and receivers need to discover each other while in SSM, they know about each other. In ASM, multicast address can be allocated from various ranges available. For SSM, IETF has desginated 22.214.171.124/8 multicast group address block.
It would be great to know what you use in your network and how does that work for you. So please do leave a comment describing your experience with ASM or SSM or both.