IGMP

IETF RFC 1112 1989-08http://www.cis.ohio-state.edu/htbin/rfc/rfc1112.html
RFC2236 http://www.cis.ohio-state.edu/htbin/rfc/rfc2236.html
Internet Draft

The Internet Group Management Protocol (IGMP) is used by IP hosts to report their host group memberships to any immediately neighboring multicast routers. IGMP is a integral part of IP. It must be implemented by all hosts conforming to level 2 of the IP multicasting specification. IGMP messages are encapsulated in IP datagrams, with an IP protocol number of 2.Version 3 of IGMP adds support for source filtering. This indicates the ability for a system to report interest in receiving packets;only from specific source addresses, or from all but specific source addresses, sent to a particular multicast address.

The format of the IGMP packet is shown in the following illustration:

8
16
32 bits
Type
Max response
time
Checksum
Group address
IGMP packet structure

Version
The protocol version.

Type
The message type:

0x11 Membership query. There are 2 sub-types of membership queries, general query and group-specific query.
0x16 Version 2 membership report.
0x17 Leave group.
0x12 Version 1 membership report. Provides compatibility with IGMPv1.
0x22 Version 3 membership report.

Max Response Time
Used only in Membership query messages. Specifies the maximum time allowed before sending a responding report in units of 1/10 second. In all other messages, it is set to 0 by the sender and ignored by the receiver.


Checksum
The checksum.

Group Address
In a Membership query message, The Group address is set to 0 when sending a general query. It is set to the group address being queried, when sending a group specific query or group-and-source-specific query. In a membership report of a leave group message, it holds the IP multicast group address of the group being reported or left.

IGMP Version Membership Report Messages
IGMP Version Membership Report messages have the following format:

8 16 32 bits
Type Reserved Checksum  
Reserved Number of group record
Group record
Group record
Group record
Group record

Type
The Type field has a value of 21.

Reserved.
Set to zero on transmission, and ignored on reception.

Checksum
The Checksum is the 16-bit one's complement of the one's complement sum of the whole IGMP message.

Number of Group Records (M)
The number of Group records present in this report.

Group Record
A block of fields containing information about the sender's membership in a single multicast group, on the interface from which the report is sent.

Group Record Type
There are a number of different types of Group Records that may be included in a Report message:

Current-State Record, which has the following record types:
    1. Include mode
    2. Exclude mode

Filter-Mode-Change Record, which has the following two record types:
    3. Change to Include Mode
    4. Change to Exclude Mode

Source-List-Change Record, which has the following two record types:
    5. Allow New Sources
    6. Block Old Sources