The Internet Group Management Protocol (IGMP) is a communications protocol used by hosts and adjacent routers on IP networks to establish multicast group memberships.
IGMP is an integral part of the IP multicast specification. It is analogous to ICMP for unicast connections. IGMP can be used for online streaming video and gaming, and allows more efficient use of resources when supporting these types of applications.
IGMP is used on IPv4 networks. Multicast management on IPv6 networks is handled by Multicast Listener Discovery (MLD) which uses ICMPv6 messaging contrary to IGMP's bare IP encapsulation.
Internet protocol suite |
---|
Application layer |
Transport layer |
Internet layer |
Link layer |
Contents |
A network designed to deliver a multicast service using IGMP might use this basic architecture:
IGMP is used between the client computer and a local multicast router. Switches featuring IGMP snooping 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 the multicast server to many multicast clients.
IGMP operates above the network layer, though it does not actually act as a transport protocol.[1]
There are three versions of IGMP, as defined by "Request for Comments" (RFC) documents of the Internet Engineering Task Force (IETF). IGMPv1 is defined by RFC 1112, IGMPv2 is defined by RFC 2236 and IGMPv3 was initially defined by RFC 3376 but has since been superseded by RFC 4604 which defines both IGMPv3 and MLDv2. IGMPv2 improves over IGMPv1 by adding the ability for a host to signal desire to leave a multicast group. IGMPv3 improves over IGMPv2 mainly by adding the ability to listen to multicast originating from a set of source IP addresses only.[2]
The IGMP protocol is implemented on a particular host and within a router. A host requests membership to a group through its local router while a router listens for these requests and periodically sends out subscription queries. The FreeBSD,[note 1] Linux[note 2] and Windows operating systems support IGMP at the host side.
For the server side implementation, the Linux case uses a daemon such as mrouted to act as an IGMP Linux router. There are also entire routing suites (such as XORP or Quagga), which turn an ordinary computer into a full-fledged multicast router.
IGMP is vulnerable to some attacks,[3][4][5][6] and firewalls commonly allow the user to disable it if not needed.
IGMP messages are carried in bare IP packets with IP protocol number 2.[7] There is no transport layer used with IGMP messaging, similar to ICMP for example.
Membership Queries are sent by multicast routers to determine which multicast addresses are of interest to systems attached to its network. Routers periodically send General Queries to refresh the group membership state for all systems on its network. Group-Specific Queries are used for determining the reception state for a particular multicast address. Group-and-Source-Specific Queries allow the router to determine if any systems desire reception of messages sent to a multicast group from a source address specified in a list of unicast addresses.
bit offset | 0–3 | 4 | 5–7 | 8–15 | 16–31 | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Type = 0x11 | Max Resp Code | Checksum | |||||||||||||||||||||||||||||
32 | Group Address | |||||||||||||||||||||||||||||||
64 | Resv | S | QRV | QQIC | Number of Sources (N) | |||||||||||||||||||||||||||
96 | Source Address [1] | |||||||||||||||||||||||||||||||
128 | Source Address [2] | |||||||||||||||||||||||||||||||
. . . | ||||||||||||||||||||||||||||||||
Source Address [N] |
Defined by RFC 2236
+ | Bits 0–7 | 8–15 | 16–31 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Type | Max Resp Time | Checksum | |||||||||||||||||||||||||||||
32 | Group Address |
Where: