A network designed to deliver a multicast service using IGMP might use this basic architecture:
IGMP operates between a host and a local multicast router. Switches featuring IGMP snooping also derive useful information by observing these IGMP transactions. Protocol Independent Multicast (PIM) is then used between the local and remote multicast routers to direct multicast traffic from hosts sending multicasts to hosts that have registered through IGMP to receive them.
IGMP operates on the network layer (layer 3), just the same as other network management protocols like ICMP.1
The IGMP protocol is implemented on hosts and within routers. A host requests membership to a group through its local router while a router listens for these requests and periodically sends out subscription queries. A single router per subnet is elected to perform this querying function. Some multilayer switches include an IGMP querier capability to allow their IGMP snooping features to work in the absence of an IGMP-capable router in the layer 2 network.
IGMP is vulnerable to some attacks,2345 and firewalls commonly allow the user to disable it if not needed.
There are three versions of IGMP.6 IGMPv1 was defined in 1989.7 IGMPv2, defined in 1997,8 improves IGMPv1 by adding the ability for a host to signal a desire to leave a multicast group.
In 2002, IGMPv3 improved IGMPv2 by supporting source-specific multicast9 and introduces membership report aggregation.10 The support for source-specific multicast was improved in 2006.11
The three versions of IGMP are backward compatible. A router supporting IGMPv3 can support clients running IGMPv1, IGMPv2, and IGMPv3. IGMPv1 uses a query-response model. Queries are sent to 224.0.0.1. Membership reports are sent to the group's multicast address. IGMPv2 accelerates the process of leaving a group and adjusts other timeouts. Leave-group messages are sent to 224.0.0.2. A group-specific query is introduced. Group-specific queries are sent to the group's multicast address. A means for routers to select an IGMP querier for the network is introduced. IGMPv3 introduces source-specific multicast capability. Membership reports are sent to 224.0.0.22.
There are several types of IGMP messages:
IGMP messages are carried in bare IP packets with IP protocol number 2.12: §4 Similar to the Internet Control Message Protocol, there is no transport layer used with IGMP messaging.
FreeBSD,17 Linux18 and Windows all support IGMP on the host side.
Forouzan, Behrouz A. (2012). Data Communications and Networking (5th ed.). New York, NY: McGraw-Hill. p. 658. ISBN 978-0073376226. 978-0073376226 ↩
Spoofed IGMP report denial of service vulnerability. http://www.securityfocus.com/bid/5020/info ↩
"Fragmented IGMP Packet May Promote "Denial of Service" Attack". Dec 20, 2004. Archived from the original on 2005-02-13. https://web.archive.org/web/20050213091318/http://support.microsoft.com/default.aspx?scid=kb;en-us;238329&sd=tech ↩
IGMP Security Problem Statement and Requirements Archived 2006-10-13 at the Wayback Machine. http://www.securemulticast.org/GSEC/gsec3_ietf53_SecureIGMP1.pdf#search=%22igmp%20attacks%22 ↩
"Vulnerability in TCP/IP Could Allow Denial of Service (MS06-007, 913446))". Microsoft. February 14, 2006. Archived from the original on 2007-02-05. https://web.archive.org/web/20070205172614/https://www.microsoft.com/technet/security/Bulletin/MS06-007.mspx ↩
IP Multicast Routing Configuration Guide, Cisco, pp. 25–28, retrieved 2017-05-27 https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst3750x_3560x/software/release/15-2_2_e/multicast/configuration_guide/b_mc_1522e_3750x_3560x_cg/b_mc_3750x_3560x_chapter_011.html ↩
S. Deering (August 1989). Host Extensions for IP Multicasting. Network Working Group. doi:10.17487/RFC1112. STD 5. RFC 1112. Internet Standard 5. Obsoletes RFC 988 and 1054. Updated by RFC 2236. /wiki/Steve_Deering ↩
W. Fenner (November 1997). Internet Group Management Protocol, Version 2. Network Working Group. doi:10.17487/RFC2236. RFC 2236. Proposed Standard. Updates RFC 1112. Updated by RFC 3376. https://datatracker.ietf.org/doc/html/rfc2236 ↩
"Internet Group Management Protocol Overview". Javvin. Archived from the original on 2010-11-10. Retrieved 2010-11-18. https://web.archive.org/web/20101110115314/http://www.javvin.com/protocolIGMP.html ↩
B. Cain; S. Deering; I. Kouvelas; B. Fenner; A. Thyagarajan (October 2002). Internet Group Management Protocol, Version 3. Network Working Group. doi:10.17487/RFC3376. RFC 3376. Proposed Standard. Updates RFC 2236. Updated by RFC 4604. /wiki/Steve_Deering ↩
H. Holbrook; B. Cain; B. Haberman (August 2006). Using Internet Group Management Protocol Version 3 (IGMPv3) and Multicast Listener Discovery Protocol Version 2 (MLDv2) for Source-Specific Multicast. Network Working Group. doi:10.17487/RFC4604. RFC 4604. Proposed Standard. Updates RFC 3376 and 3810. https://datatracker.ietf.org/doc/html/rfc4604 ↩
IGMPv3 was added to FreeBSD in version 8.0. ↩
IGMPv3 was added in the Linux 2.5 kernel series. ↩