The Internet Group Management Protocol is a communications protocol used by hosts and
adjacent routers on IP networks to establish multicast group memberships.
IGMP is an integral part of IP multicast.
IGMP can be used for one-to-many networking applications such as 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 which uses
ICMPv6 messaging in contrast to IGMP's bare IP encapsulation.
Architecture A network designed to deliver a multicast
service using IGMP might use this basic architecture:
IGMP operates between the client computer and a local multicast router.
Switches featuring IGMP snooping derive useful information by observing these IGMP transactions.
Protocol Independent Multicast is then used between the local and remote multicast routers,
to direct multicast traffic from the multicast server to many multicast clients.
IGMP operates on the network layer, just the same as other network management protocols
like ICMP.
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.
IGMP is vulnerable to some attacks, and firewalls commonly allow the user to disable it if not
needed.
Standards There are three versions of IGMP, as defined
by Request for Comments documents of the Internet Engineering Task Force.
IGMPv1 is defined by RFC 1112, IGMPv2 is defined by RFC 2236 and IGMPv3 was initially defined
by RFC 3376 and has been updated 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 supporting source-specific multicast.
Packet structure IGMP messages are carried in bare IP packets
with IP protocol number 2.
There is no transport layer used with IGMP messaging, similar to the Internet Control
Message Protocol.
There are several types of IGMP messages: Membership Queries, Membership Reports, and
Leave Group messages.
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.
IGMPv2 messages Where:
Type Indicates the message type as follows: Membership
Query, Membership Report, Leave Group Max Resp Time
Specifies the time limit for the corresponding report.
The field has a resolution of 100 milliseconds, the value is taken directly.
This field is meaningful only in Membership Query; in other messages it is set to 0 and
ignored by the receiver.
Group Address This is the multicast address being queried
when sending a Group-Specific or Group-and-Source-Specific Query.
The field is zeroed when sending a General Query.
The message is sent to following IP addresses: IGMPv3 membership query
Where: Max Resp Code
This field specifies the maximum time allowed before sending a responding report.
If the number is below 128, the value is used directly.
If the value is 128 or more, it is interpreted as an exponent and mantissa.
Checksum This is the 16-bit one's complement of the
one's complement sum of the entire IGMP message.
Group Address This is the multicast address being queried
when sending a Group-Specific or Group-and-Source-Specific Query.
The field is zeroed when sending a General Query.
Resv This field is reserved.
It should be zeroed when sent and ignored when received.
S Flag When this flag is set, it indicates to receiving
routers that they are to suppress the normal timer updates.
QRV If this is non-zero, it contains the Robustness
Variable value used by the sender of the Query.
Routers should update their Robustness Variable to match the most recently received Query
unless the value is zero.
QQIC This code is used to specify the Query Interval
value used by the querier.
If the number is below 128, the value is used directly.
If the value is 128 or more, it is interpreted as an exponent and mantissa.
Number of Sources This field specifies the number of source
addresses present in the Query.
For General and Group-Specific Queries, this value is zero.
For Group-and-Source-Specific Queries, this value is non-zero, but limited by the network's
MTU.
Source Address [i] The Source Address [i] fields are a vector
of n IP unicast addresses, where n is the value in the Number of Sources field.
Implementations The FreeBSD, Linux and Windows operating systems
support IGMP at the host side.
Notes
See also Internet Group Management Protocol with Access
Control References
External links IPv4 Multicasting Tools and Settings on Microsoft
TechNet