On this page
|
| SUMMARY | |
| Protocol |
: |
Internet Group Management Protocol |
| Protocol suite |
: |
TCP/IP |
| Layer |
: |
Network Layer |
| Type |
: |
Multicast protocol. |
| Latest Version |
: |
IGMPv3, IGMPv2, IGMPv1 |
| Variant protocols |
: |
DVMRP, Distance Vector Multicast Routing Protocol.
IGAP, IGMP for user Authentication Protocol.
RGMP, Router-port Group Manage |
| SNMP MIBs |
: |
iso.org.dod.internet.mgmt.mib-2.igmpStdMIB (1.3.6.1.2.1.85) |
| Multicast addresses |
: |
224.0.0.22 |
| Working groups |
: |
IDMR, Inter-Domain Multicast Routing.
MAGMA, Multicast & Anycast Group Membership.
|
|
| DESCRIPTION |
The Internet Group Management Protocol (IGMP) is used by IPv4 systems (hosts and routers) to report their IP multicast group memberships to any neighboring multicast routers. Note that an IP multicast router may itself be a member of one or more multicast groups, in which case it performs both the "multicast router part" of the protocol (to collect the membership information needed by its multicast routing protocol) and the "group member part" of the protocol (to inform itself and other, neighboring multicast routers of its memberships).
IGMP is also used for other IP multicast management functions, using message types other than those used for group membership reporting. This document specifies only the group membership reporting functions and messages.
IGMP has three version: IGMP version 1, IGMP version 2 and IGMP version 3.
- Version 1
Version 1 was the first widely-deployed version and the first version to become an Internet Standard.
- Version 2
Version 2 added support for "low leave latency", that is, a reduction in the time it takes for a multicast router to learn that there are no longer any members of a particular group present on an attached network.
- Version 3
Version 3 adds support for "source filtering", that is, the ability for a system to report interest in receiving packets only from specific source addresses, as required to support Source-Specific Multicast(SSM), or from all but specific source addresses, sent to a particular multicast address. Version 3 is designed to be interoperable with Versions 1 and 2.
IGMPv3 supports applications that explicitly signal sources from which they want to receive traffic. With IGMPv3, receivers signal membership to a multicast host group in the following two modes:
- INCLUDE mode
In this mode, the receiver announces membership to a host group and provides a list of IP addresses (the INCLUDE list) from which it wants to receive traffic.
- EXCLUDE mode
In this mode, the receiver announces membership to a host group and provides a list of IP addresses (the EXCLUDE list) from which it does not want to receive traffic. This indicates that the host wants to receive traffic only from other sources whose IP addresses are not listed in the EXCLUDE list. To receive traffic from all sources, like in the case of the Internet Standard Multicast (ISM) service model, a host expresses EXCLUDE mode membership with an empty EXCLUDE list.
Multicast Listener Discovery (MLD) is used in a similar way by IPv6 systems. MLD version 1 implements the functionality of IGMP version 2; MLD version 2 implements the functionality of IGMP version 3.
Within an IP system, there is (at least conceptually) a service interface used by upper-layer protocols or application programs to ask the IP layer to enable and disable reception of packets sent to specific IP multicast addresses. In order to take full advantage of the capabilities of IGMPv3, a system's IP service interface must support the following operation: IPMulticastListen (socket, interface, multicast-address, filter-mode, source-list)
For each socket on which IPMulticastListen has been invoked, the system records the desired multicast reception state for that socket. That state conceptually consists of a set of records of the form: (interface, multicast-address, filter-mode, source-list) In addition to the per-socket multicast reception state, a system must also maintain or compute multicast reception state for each of its interfaces. That state conceptually consists of a set of records of the form: (multicast-address, filter-mode, source-list) At most one record per multicast-address exists for a given interface.
After a multicast packet has been accepted from an interface by the IP layer, its subsequent delivery to the application or process listening on a particular socket depends on the multicast reception state of that socket [and possibly also on other conditions, such as what transport-layer port the socket is bound to].
Message Formats
IGMP messages are encapsulated in IPv4 datagrams, with an IP protocol number of 2. IGMP message types are registered by the IANA. There are two IGMP message types of concern to the IGMPv3 protocol:
| Type Number (hex) | Message Name | 0x11 | Membership Query | 0x22 | Version 3 Membership Report |
An implementation of IGMPv3 MUST also support the following three message types:
Type Number (hex) | Message Name | 0x12 | Version 1 Membership Report | 0x16 | Version 2 Membership Report | 0x17 | Version 2 Leave Group |
Unrecognized message types MUST be silently ignored. Other message types may be used by newer versions or extensions of IGMP, by multicast routing protocols, or for other uses.
- Membership Query Message
8 | 16 | 32 bits | Type | Max Resp Code | Checksum | Resv | S | QRV | QQIC | Number of Sources | Group address | Source Address |
- 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. | 0x12 | Version 1 membership report. Provides compatibility with IGMPv1. | 0x13 | Distance Vector Multicast Routing Protocol | 0x14 | . PIMv1 | 0x15 | Cisco Trace Messages. | 0x16 | IGMPv2 Membership Report. | 0x17 | Leave group | 0x1E | Multicast Traceroute Response. | 0x1F | Multicast Traceroute. | 0x22 | Version 3 membership report. | 0x24 | Multicast Router Advertisement. | 0x25 | Multicast Router Solicitation. | 0x26 | Multicast Router Termination. | 0xF0 - 0xFF | Experimental. |
- Max Resp Code
The Max Resp Code field specifies the maximum time allowed before sending a responding report. 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.
In a Reply message, the Code field specifies the outcome of the request.
Code | Description | 0 | Request granted. | 1 | Request denied, no resources. | 2 | Request denied, invalid code. | 3 | Request denied, invalid group address. | 4 | Request denied, invalid access key. | 5 - 255 | Request pending, retry in this many seconds. |
- Checksum
The Checksum is the 16-bit one's complement of the one's complement sum of the whole IGMP message (the entire IP payload). For computing the checksum, the Checksum field is set to zero. When receiving packets, the checksum MUST be verified before processing a packet.
- 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.
- Resv (Reserved)
The Resv field is set to zero on transmission, and ignored on reception.
- S Flag (Suppress Router-Side Processing)
When set to one, the S Flag indicates to any receiving multicast routers that they are to suppress the normal timer updates they perform upon hearing a Query. It does not, however, suppress the querier election or the normal "host-side" processing of a Query that a router may be required to perform as a consequence of itself being a group member.
- QRV (Querier's Robustness Variable)
If non-zero, the QRV field contains the [Robustness Variable] value used by the querier, i.e., the sender of the Query. If the querier's [Robustness Variable] exceeds 7, the maximum value of the QRV field, the QRV is set to zero. Routers adopt the QRV value from the most recently received Query as their own [Robustness Variable] value, unless that most recently received QRV was zero, in which case the receivers use the default [Robustness Variable] value specified in section 8.1 or a statically configured value.
- QQIC (Querier's Query Interval Code)
The Querier's Query Interval Code field specifies the [Query Interval] used by the querier. Multicast routers that are not the current querier adopt the QQI value from the most recently received Query as their own [Query Interval] value, unless that most recently received QQI was zero, in which case the receiving routers use the default [Query Interval] value.
- Number of Sources (N)
The Number of Sources (N) field specifies how many source addresses are present in the Query. This number is zero in a General Query or a Group-Specific Query, and non-zero in a Group-and-Source-Specific Query. This number is limited by the MTU of the network over which the Query is transmitted. For example, on an Ethernet with an MTU of 1500 octets, the IP header including the Router Alert option consumes 24 octets, and the IGMP fields up to including the Number of Sources (N) field consume 12 octets, leaving 1464 octets for source addresses, which limits the number of source addresses to 366 (1464/4).
- Source Address
The Source Address [i] fields are a vector of n IP unicast addresses, where n is the value in the Number of Sources (N) field.
- Version 3 Membership Report Message
Version 3 Membership Reports are sent by IP systems to report (to neighboring routers) the current multicast reception state, or changes in the multicast reception state, of their interfaces. Reports have the following format:
8 | 16 | 32 bits | Type = 0x22 | Reserved | Checksum | Reserved | Number of Group Records (M) | Group Record |
- Reserved
The Reserved fields are 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 (the entire IP payload). For computing the checksum, the Checksum field is set to zero. When receiving packets, the checksum MUST be verified before processing a message.
Number of Group Records (M)
The Number of Group Records (M) field specifies how many Group Records are present in this Report.
- Group Record
Each Group Record is a block of fields containing information pertaining to the sender's membership in a single multicast group on the interface from which the Report is sent.
Where each Group Record has the following internal format:
8 | 16 | 32 bits | Record Type | Aux Data Len | Number of Sources (N) | Multicast Address | Source Address | Auxiliary Data |
- Aux Data Len
The Aux Data Len field contains the length of the Auxiliary Data field in this Group Record, in units of 32-bit words. It may contain zero, to indicate the absence of any auxiliary data.
- Number of Sources (N)
The Number of Sources (N) field specifies how many source addresses are present in this Group Record.
- Multicast Address
The Multicast Address field contains the IP multicast address to which this Group Record pertains.
- Source Address
The Source Address fields are a vector of n IP unicast addresses, where n is the value in this record's Number of Sources (N) field.
- Auxiliary Data
The Auxiliary Data field, if present, contains additional information pertaining to this Group Record. The protocol specified in this document, IGMPv3, does not define any auxiliary data. Therefore, implementations of IGMPv3 MUST NOT include any auxiliary data (i.e., MUST set the Aux Data Len field to zero) in any transmitted Group Record, and MUST ignore any auxiliary data present in any received Group Record. The semantics and internal encoding of the Auxiliary Data field are to be defined by any future version or extension of IGMP that uses this field.
Group Members
IGMP is an asymmetric protocol, specifying separate behaviors for group members -- that is, hosts or routers that wish to receive multicast packets -- and multicast routers. For interoperability with multicast routers running older versions of IGMP, systems maintain a MulticastRouterVersion variable for each interface on which multicast reception is supported.
There are two types of events that trigger IGMPv3 protocol actions on an interface:
- A change of the interface reception state, caused by a local invocation of IPMulticastListen.
- Reception of a Query.
Received IGMP messages of types other than Query are silently ignored, except as required for interoperation with earlier versions of IGMP.
- Action on Change of Interface State
An invocation of IPMulticastListen may cause the multicast reception state of an interface to change. Each such change affects the per-interface entry for a single multicast address.
Each time a source is included in the difference report calculated above, retransmission state for that source needs to be maintained until [Robustness Variable] State-Change reports have been sent by the host.
- Action on Reception of a Query
When a system receives a Query, it does not respond immediately. Instead, it delays its response by a random amount of time, bounded by the Max Resp Time value derived from the Max Resp Code in the received Query message.
A system may receive a variety of Queries on different interfaces and of different kinds (e.g., General Queries, Group-Specific Queries, and Group-and-Source-Specific Queries), each of which may require its own delayed response.
Before scheduling a response to a Query, the system must first consider previously scheduled pending responses and in many cases schedule a combined response. Therefore, the system must be able to maintain the following state:
- A timer per interface for scheduling responses to General Queries.
- A per-group and interface timer for scheduling responses to Group- Specific and Group-and-Source-Specific Queries.
- A per-group and interface list of sources to be reported in the response to a Group-and-Source-Specific Query.
- Multicast Routers
The purpose of IGMP is to enable each multicast router to learn, for each of its directly attached networks, which multicast addresses are of interest to the systems attached to those networks. IGMP version 3 adds the capability for a multicast router to also learn which sources are of interest to neighboring systems, for packets sent to any particular multicast address. The information gathered by IGMP is provided to whichever multicast routing protocol is being used by the router, in order to ensure that multicast packets are delivered to all networks where there are interested receivers.
- Conditions for IGMP Queries
Multicast routers send General Queries periodically to request group membership information from an attached network. These queries are used to build and refresh the group membership state of systems on attached networks. Systems respond to these queries by reporting their group membership state (and their desired set of sources) with Current-State Group Records in IGMPv3 Membership Reports.
- IGMP State Maintained by Multicast Routers
Multicast routers implementing IGMPv3 keep state per group per attached network. This group state consists of a filter-mode, a list of sources, and various timers. For each attached network running IGMP, a multicast router records the desired reception state for that network.
- IGMPv3 Source-Specific Forwarding Rules
When a multicast router receives a datagram from a source destined to a particular group, a decision has to be made whether to forward the datagram onto an attached network or not. The multicast routing protocol in use is in charge of this decision, and should use the IGMPv3 information to ensure that all sources/groups desired on a subnetwork are forwarded to that subnetwork. IGMPv3 information does not override multicast routing information; for example, if the IGMPv3 filter-mode group for G is EXCLUDE, a router may still forward packets for excluded sources to a transit subnet.
- Action on Reception of Reports
When receiving Current-State Records, a router updates both its group and source timers. In some circumstances, the reception of a type of group record will cause the router filter-mode for that group to change.
When a change in the global state of a group occurs in a system, the system sends either a Source-List-Change Record or a Filter-Mode-Change Record for that group. As with Current-State Records, routers must act upon these records and possibly change their own state to reflect the new desired membership state of the network.
Interoperation With Older Versions of IGMP
IGMP version 3 hosts and routers interoperate with hosts and routers that have not yet been upgraded to IGMPv3. This compatibility is maintained by hosts and routers taking appropriate actions depending on the versions of IGMP operating on hosts and routers within a network.
Query Version Distinctions
The IGMP version of a Membership Query message is determined as follows:
IGMPv1 Query: length = 8 octets AND Max Resp Code field is zero
IGMPv2 Query: length = 8 octets AND Max Resp Code field is non-zero
IGMPv3 Query: length >= 12 octets
|
Top of Page
|
| EXAMPLES |
Example 1: QQIC
The actual interval, called the Querier's Query Interval (QQI), is represented in units
of seconds and is derived from the Querier's Query Interval Code as follows:
If QQIC < 128, QQI = QQIC
If QQIC >= 128, QQIC represents a floating-point value as follows:
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|1| exp | mant |
+-+-+-+-+-+-+-+-+
QQI = (mant | 0x10) << (exp + 3) Example 2: Configuration Examples
The following configuration example shows how to configure a router (running IGMPv3)
for SSM:
ip multicast-routing
!
interface Ethernet3/1
ip address 172.21.200.203 255.255.255.0
ip pim sparse-dense-mode
ip igmp version 3
!
interface Ethernet3/2
ip address 131.108.1.2 255.255.255.0
ip pim sparse-dense-mode
ip igmp version 3
!
ip pim ssm default Example 3: Command
The following is sample output from the show ip igmp groups command:
Router# show ip igmp groups
IGMP Connected Group Membership
Group Address Interface Uptime Expires Last Reporter
239.255.255.254 Ethernet3/1 1w0d 00:02:19 172.21.200.159
224.0.1.40 Ethernet3/1 1w0d 00:02:15 172.21.200.1
224.0.1.40 Ethernet3/3 1w0d never 171.69.214.251
224.0.1.1 Ethernet3/1 1w0d 00:02:11 172.21.200.11
224.9.9.2 Ethernet3/1 1w0d 00:02:10 172.21.200.155
232.1.1.1 Ethernet3/1 5d21h stopped 172.21.200.206 Example 4: Command
The following is sample output from the show ip igmp groups command with the
group-address argument and detail keyword:
Router# show ip igmp groups 232.1.1.1 detail
Interface: Ethernet3/2
Group: 232.1.1.1
Uptime: 01:58:28
Group mode: INCLUDE
Last reporter: 10.0.119.133
CSR Grp Exp: 00:02:38
Group source list: (C - Cisco Src Report, U - URD, R - Remote)
Source Address Uptime v3 Exp CSR Exp Fwd Flags
171.69.214.1 01:58:28 stopped 00:02:31 Yes C |
Top of Page
|
| PROTOCOL RELATIONS |
■ Parent layer
■ Child layer
|
Top of Page
|
| GLOSSARY |
|
ISM ISM is abbreviation of Internet Standard Multicast. There are two kinds of multicast-enabled networks available. The first is based on the original multicast service model. This model is known by a number of names including Internet Standard Multicast (ISM), Internet Traditional Multicast (ITM), Deering multicast, etc.
MLD MLD (Multicast Listener Discovery Protocol) is used by IPv6 routers to discover the presence of multicast listeners on their directly attached links, and to discover specifically which multicast addresses are of interest to those neighboring nodes.
SSM SSM (Source Specific Multicast) feature is an extension of IP multicast where datagram traffic is forwarded to receivers from only those multicast sources to which the receivers have explicitly joined.
An SSM destination address range already exists for IPv6. A source S transmits IP datagrams to an SSM destination address G. A receiver can receive these datagrams by subscribing to the channel (Source, Group) or (S,G).
|
Top of Page
|
| REFERENCES |
Related links:
IGMP type numbers RFCs:
[ RFC 1112] Host Extensions for IP Multicasting.
Defines IGMP version 1.
Obsoletes: RFC 988, RFC 1054.
[ RFC 1122] Requirements for Internet Hosts -- Communication Layers.
[ RFC 1812] Requirements for IP Version 4 Routers.
Obsoletes: RFC 1009, RFC 1716.
[ RFC 2715] Interoperability Rules for Multicast Routing Protocols.
[ RFC 2933] Internet Group Management Protocol MIB.
Defines SNMP MIB iso.org.dod.internet.mgmt.mib-2.igmpStdMIB (1.3.6.1.2.1.85).
[ RFC 3228] IANA Considerations for IPv4 Internet Group Management Protocol (IGMP).
[ RFC 3376] Internet Group Management Protocol, Version 3.
Defines IGMP version 3.
Obsoletes: RFC 2236. Obsolete RFCs:
[ RFC 966] Host Groups: A Multicast Extension to the Internet Protocol.
Obsoleted by: RFC 988.
[ RFC 988] Host Extensions for IP Multicasting.
Obsoleted by: RFC 1054, RFC 1112.
Defines IGMP version 0.
Obsoletes: RFC 966.
[ RFC 1009] Requirements for Internet Gateways.
Obsoleted by: RFC 1812.
[ RFC 1054] Host Extensions for IP Multicasting.
Obsoleted by: RFC 1112.
Obsoletes: RFC 988.
[ RFC 1716] Towards Requirements for IP Routers.
Obsoleted by: RFC 1812.
[ RFC 2236] Internet Group Management Protocol, Version 2.
Obsoleted by: RFC 3376.
Defines IGMP version 2.
|
Top of Page
|
| OTHER PROTOCOLS OF TCP/IP SUITE |
|
|
|
|
|