IGMP (Internet Group Management Protocol) is required for communication between hosts and routers to determine where the router have to send the Multicast traffic.
Imagine a network with a router connecting to 4 different subnets with 4 physical interfaces, but with only one Host in one subnet actually requesting the traffic. How does the router know where to send out the multicast traffic? If you automatically send out the traffic through every interface, it’s a waste of bandwidth. So here we need IGMP.
So the router needs to know about:
– Where are the hosts located which require the multicast traffic for a group?
– How do I learn about hosts requiring the traffic?
– How do I learn about hosts no longer requiring the traffic?
There are currently three versions of IGMP available: IGMPv1 (RFC1112), IGMPv2 (RFC2236), IGMPv3 (RFC3376). In this article i’ll focus myself on IGMPv2
Messages supported by IGMPv2
The membership query is used for two function: First to discover if there are any hosts required in receiving any multicast group, second to determine if there are any remaining hosts for a specific multicast group.
Version 1 Membership Report
Version 2 Membership Report
The membership reports is used by the hosts: As a solicited host membership report as an answer to a membership query and as a unsolicited host membership report when first joining the group. (without waiting for the next membership query)
The Leave Group message is, you guessed it, used by the host to tell the router that he’s no longer interested in receiving the traffic.
As I wrote yesterday, the class D range (188.8.131.52 – 184.108.40.206) is reserved for Multicast use.
Those addresses are again split up in several ranges:
220.127.116.11 – 18.104.22.168 (22.214.171.124/24) – Permanent group for local segment: They are not routed
126.96.36.199 – 188.8.131.52 (184.108.40.206/24) – Permanent group for the whole network: They are forwarded in the entire network
220.127.116.11 – 18.104.22.168 (22.214.171.124/8) – Source-Specific Multicast (SSM) applications
126.96.36.199 – 188.8.131.52 (184.108.40.206/8) – GLOP addressing
220.127.116.11 – 18.104.22.168 (22.214.171.124/8) – Private domain multicast
Everythinge else – Transient group
There are two ranges of permanent IP multicast addresses: the first is used for packets that are not forwarded by routers, the second when the packets should be forwarded by routers.
An example: The multicast addresses used by OSPF or EIGRP are in the first range, where only routers located on the same segment can communicate to each other and exchange routes.
Source-Specific Multicast (SSM)
Source-Specific multicast allows you to limit the source address to a specific address. This improves security as no other hosts are able to send traffic to the multicast group.
GLOP addressing allocates each registered AS number 256 global multicast IP addresses. As the 2nd and 3rd octet of the IP address, the 16bit ASN is used.
For example if you are using AS 3303:
3303 convered to binary: 00001100 11100111
00001100 is used as the 2nd octet, decimal: 12
11100111 is used as the 3rd octet, decimal: 231
So, the resulting range would be: 126.96.36.199 – 188.8.131.52
Private Multicast Domain
The private multicast domain addresses can be used within the own network, somewhat like the private unicast addresses defined in RFC1918.
Transient multicast addresses are globally unique multicast addresses. They get dynamically allocated and released when no longer in use. Any IP addresses in the range 184.108.40.206 to 220.127.116.11 that is not assigned to a specific group/range, is considered as a transient multicast address.
Everyone already heard about multicast, but what is it? why do we need it?
So let’s first look at the most basic definition of IP multicast:
“Sending a message from a single source to selected multiple destinations across a Layer 3 network in one data stream.”
Can’t we do this with unicast?
Unicast allows you to send messages from one source to one destination. Which mean that if you want to send the same content to multiple destinations, it will require X amount of bandwidth, with X being the number of destination hosts.
So if you transfer a data stream using a bandwidth of 2 Mbps to 1 destination host, ithe source needs to transfer 2 Mbps. If you send the same data stream to 3 destinations, it will require 6 Mbps (3x 2Mbps) of bandwidth, etc.
As you can see this concept causes a large amount of unnecessary traffic.
How about broadcast?
Broadcast on the other hand allows you to send data from one source to all destination hosts. So if you want to send the same content to multiple destinations, it will only require once the bandwidth at the source.
But, and here is the big disadvantage, the data will be transferred the every single host, even to those that are not interested in receiving the traffic! This will increase the processing load on the network devices and wastes bandwidth.
Ok, tell me more about that multicast thing…
Multicast uses a separate range of IP Addresses, often referred to as class D. It includes all IP Addresses starting with “1110” in binary. For those who don’t want to start calculating: it’s the range between 18.104.22.168 and 22.214.171.124.
Multicast also requires the use of a Layer 2 Address, which can be calculated from the corresponding Layer 3 address.
All multicast MAC addresses use an OUI of 01-00-5E, have the 25th bit set to 0, and the last 23 bits copied from the last 23 bits of the IP address. As it would require 28 bits to uniquely distinguish between IP addresses, there are 32 (5^2) Layer 3 multicast addresses that match a single Layer 2 multicast address.