Now that we know
why do we need multicast and how
multicast addressing works, let us look at how Multicast works in Ethernet LANs.
As described in my earlier post on
multicast addressing,
Applications/Servers use a Multicast Address (Class D address) while
sending out the contents. This multicast address is used as the
destination address in the IP data packet.
Please take a look at figure 1, what do you think who all will receive the multicast traffic sent by the sender?
Did
you say 'all-of-them'? If yes, you got it wrong. To tell you the truth,
none of them will receive the multicast traffic as they did not
indicated their interest beforehand.
So how do the
receivers indicate their interest? They use a simple protocol known as
IGMP (Internet Group Management Protocol). I will talk about how IGMP works in detail in a future post. For the time being, just remember that a
receiver uses IGMP membership report messages to indicate his interest
in receiving multicast traffic for a specific Group Address.
Now look at figures 2 and tell me who all will receive the multicast traffic sent by the sender?
Did you say R1 and R2? If yes, you got it right. Congratulations!
With the figures, can you figure out what
difference does the IGMP membership report messages made in this
network so that R1 and R2 can now receive the multicast traffic?
Actually speaking, nothing, IGMP messages do not change anything. So then question is, how does R1 and R2 can now receive multicast traffic by just sending IGMP messages? Answer lies in what Hosts does when they send IGMP messages?
I am sure most of you already know, how a hosts accept traffic for himself on a LAN. But let me explain it in my terms. Hosts uses Ethernet NICs to send/receive traffic in LANs. Every NIC card is configured with a unique 48 bits MAC address. When one hosts (or any network element) communicate with other hosts, it figure out the destination host's MAC address using ARP. It then prepare an Ethernet Packet with that MAC address as destination MAC and sends the packet on LAN. All Hosts NIC card receive this packet and compare the MAC address with their own MAC address and only that hosts whose MAC address matches, accept the packet. Look at figure - 3. Destination MAC in ethernet frame is of R1 so only R1 accept the packet.
Now there are two things that comes out of this. One is that what MAC address should the sender use when sender is sending a Multicast packet. Another is what should the receivers do to accept the multicast packet?
To keep things simple, an IP multicast address is mapped to an Ethernet MAC address. Here is how the mapping works. Out of 48 bits, first 25 bits are a constant (01 00 5E 0) while rest of the 23 bits are same as the lower 23 bits of the multicast IP address. For example: 224.1.1.1 will map to 01 00 5E 01 01 01.
Do you see a potential issue with this mapping? If you do,
take a pat on the back. With this mapping scheme, two different
Multicast IP address can map to the same MAC address. If you try to map
IP address 224.1.1.1 and 235.1.1.1, they both will map to the same MAC
address 01 00 5E 01 01 01. This happens because out of 28 unique bits of
multicast address, only 23 bits are used in mapping. Take a look at
figure - 4 to see how the mapping works.
Your next question might be that why we ended up with such a scheme. Why did not someone got it right? Actually there is a small story behind this. Steve Deering requested a block of MAC address to be reserved for IP multicast use such that he could create a unique MAC address for each multicast address. But he was allocated a smaller block which had first 25 bits fixed and we ended up with this scheme.
Now that we know how a multicast address is mapped to Ethernet MAC address, let us see how the multicast communication works. When a receiver indicates its interest in receiving multicast
traffic for a given group, apart from sending an IGMP membership report, receiver configure their NIC cards with multicast MAC address calculated based on the mapping of the multicast group address. It means if receivers is interested in multicast group address 224.1.1.1, it configures the NIC card to receive traffic with 01 00 5E 01 01 01. Because of this, any data traffic received with this multicast MAC address is accepted by the receiver. Similarly a sender populates the destination MAC address by calculate
the multicast MAC address based on the mapping of the multicast group
address. Please look at figure - 5 to understand what I am suggesting.
This is the first post where I have tried to add as many figures as possible. Please do let me know how you like this post in comparison to others where I avoided figures completely. I will leave you with a question now. If multiple multicast group address can map to single MAC address, how does the end hosts filter out packets he is not interested in?