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 232.0.0.0/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.
6 Responses
Nice article!
So two things are not clear to me:
1- why the ASM model is appropriate where all multicast host could be sender and receiver. I think SSM model has more benefits even there are no server-client multicast hosts on the network.
2- Could all multicast application be compatible with SSM model?
please explain me how does PIM resolve multicast IP details.(src / dst / group add)from IGMP V3
Nice article..Explained in a simple way. It was helpful as I am about start working on IGMPv3 and PIM-SSM.
A couple of questions to understand things in detail:
1. Can scenarios like radio station and final ticker sending traffic for same group G1 exist in real world deployments also?
2. How Receiver R1 is able to differentiate between radio station and final ticker packets and discard only final ticker packets when both are for group G1 ?
> 1. Can scenarios like radio station and final ticker sending traffic for same group G1 exist in real world deployments also?
In an administrative domain, any user can start sending multicast traffic without reserving a multicast address and because of this reason, chances are that the two users use the same multicast address. But I must admit that the chances are pretty small.
> 2. How Receiver R1 is able to differentiate between radio station and final ticker packets and discard only final ticker packets when both are for group G1 ?
Multicast traffic mostly uses UDP. An application that is for radio station will be looking for traffic using a specific UDP destination port while a ticker service will most probably be looking for a different UDP destination port. But if both the services are using same destination port than the contents will reach the application and as application won’t understand it, it will discard.
I hope this helps.
That’s a very clear explanation, thanks!
I only used ASM so far, running IGMPv2.
SSM requires IGMP version 3, is my understanding right?
Yes. Your understanding is correct. For SSM, you need IGMP version 3 (or MLD version 2).