Source for VMEbus, PMC Modules, CompactPCI, Single Board Computers, Rackmount Servers, and Rackmount Chassis

Ordering Form   

Unit of Measurement Converter

 

VoxTechnologies Enterprise Network Series

Internet Group Multicast Protocol

(IGMP version 1)
June 3, 1997

(IGMP version 2)
Updated: May 17, 1998

By Michael Patterson

Disclaimer
This paper discusses the Internet Group Multicast Protocol (IGMP) version 1, as specified in RFC 1112. Version 0 of IGMP was discussed in RFC 988 and has been made obsolete by RFC 1112. The first half of this document reflects RFC 1112 and can be used to understand how applications implementing this standard operate. The second half of this paper was written entirely by referencing RFC 2236. As of the completion of this paper, the author has not yet verified that what is documented in the RFC is actually being implemented in the latest IGMP applications.
Assumptions
The author assumes that the reader has a solid comprehension of IP and IP multicast routing protocols (e.g. DVMRP).
Introduction
Internet Group Multicast Protocol (IGMP) version 1 was developed to allow end systems to request membership into a multicast group or video stream/conference. IGMP is not used by the application for actual voice/video transfer, but rather as a membership mechanism for joining or participating in multicasts. In an effort to accurately define packet structures, much of the information contained in this paper was taken directly from RFC 1112.
IGMP (RFC 1112)
IGMP is a session-layer protocol used to establish membership in a multicast group. This datagram uses the IP protocol with a class D address, i.e., those with "1110" as their high-order four bits (discussed later in this section). The screen capture below shows a class D address used in an IGMP group.

At the data link layer, the frame goes out as a multicast with the least significant bit of the most significant byte set to a one (01-00-5E-XX-XX-XX; further discussion is given later in this section). This protocolÕs intention is not to carry data, but to establish membership. The method of transport for data will traditionally be something like RTP or RTSP (explained in another section).

Membership into a multicast group is dynamic, and members can enter and leave the group at any time. A user (host) can be a member of one or more groups simultaneously, and does not need to be a member of a group in order to send datagrams to it. A "host" can be a user or a multicast router.

There are different levels at which a host may support IGMP:

Level 0: No support for IP multicasting
At this level the host will not support IP multicasting. The data link hardware in these hosts should discard these frames without using any CPU cycles. Therefore, Level 0 hosts should be virtually unaffected by IP multicast datagrams. This of course assumes that the network interface card has this type of filtering capability. Otherwise, the CPU is called and cycles are used. Many of todayÕs Pentium computers can handle thousands of broadcasts per second with no visible drop in application performance.

Level 1: Support for sending, but not receiving, multicast IP datagrams
At this level a host can take part in some of the multicast-based services, such as resource location or status reporting. A host does not, however, join any groups.

Level 2: Full support for IP multicasting
At this level a host can join and leave host groups, as well as send IP multicast datagrams. IGMP is fully implemented here.

Packet formats are described using 32 bits per row in the following format:

For a Level 2 host to join a multicast group, an IGMP datagram is multicasted out onto the data link topology. This is done by sending a packet to the "all-hosts" group address of 224.0.0.1, on every interface where the host wishes to participate in IP multicast. The TTL of the IP datagram is set to 1; this prevents the router from forwarding the datagram. If the host does not receive a response, a second datagram may be sent out with the TTL set to 2. The TTL could continue to increment the TTL for each time out. This incrementing of the TTL will depend on the implementation within the application. Default should always be a TTL of 1.

Version: This document discusses version 1.

Type: There are two types of IGMP messages of concern to hosts:

    1 = Host Membership Query
    2 = Host Membership Report

Unused: Unused field, zeroed when sent, ignored when received.

Checksum: The checksum is the 16-bit ones complement of the ones complement sum of the eight-octet IGMP message. For computing the checksum, the checksum field is zeroed.

Group Address:
In a Host Membership Query message, the group address field is zeroed when sent, ignored when received. In a Host Membership Report message, the group address field holds the IP host group address of the group being reported.

Queries:
Multicast routers (switches) send Host Membership Query messages, or "Queries," to discover which hosts have members on their attached local networks (described below). These queries are addressed to the all-hosts group (address 224.0.0.1), and carry an IP time-to-live of 1.

Reports:
Hosts respond to a query by generating Host Membership Reports, which report each host group to which they belong on the network interface where the query was received. To avoid a storm of reports a technique described below is used.

In the above screen capture, the IGMP report represents the multicast group 233.211.183.14.

Once the multicast group is joined, the host will receive IGMP queries from the router or switch (depending on implementation) about every 60 seconds. These IGMP queries are heard by all devices on the data link layer broadcast domain. Upon receiving the IGMP query each level 2 host will start a time called "D" second interval. This "D" time is randomly generated (in part based on the hostÕs IP address) each time the IGMP query is heard. The purpose of this is for one host to respond to the query. Once a host hears that another host responded to the query, it will stop the timer and not respond. This mechanism prevents a flood of IGMP responses. If the router or switch does not hear a IGMP query from the data link within the time-out period, the router or switch will assume that no hosts want to receive the multicast and will stop forwarding the IP multicast datagrams. The router does not need to know which hosts belong to a group, only that a host exists which wants to participate in the multicast group.

The class D IP address used in IGMP can be in the range 224.0.0.0 to 239.255.255.255. The address 224.0.0.0 is guaranteed not to be assigned to any group and is used by IP multicast computers as shown below with the illustrated command within WindowsNT 4.0.

The address 224.0.0.1 is used for query messages and is assigned to the permanent group of all IP hosts (including gateways). All hosts must join the 224.0.0.1 group in order to participate in IGMP.

A host group may be permanent or transient. A permanent group has a well-known, administratively assigned IP address. It is this address, and not the membership, that becomes permanent. Permanent groups could be instituted for applications such as a radio stations being multicast over the network. The address 224.0.0.1 is also an example of a permanent group. Those IP addresses not permanent can be given out to transient groups for dynamic creation. A transient group only exists so long as it has members.

The destination class D IP address will end up as a remote destination in the local or remote look up within the IP stack. Therefore gateway configuration is required. Ideally, if the end station is configured with a natural mask and with no default gateway as in many proxy-arp routed environments, the default gateway on the end stations should be made to be themselves.

 
PC IP Address: 172.17.8.23
Class B Natural Mask: 255.255.0.0
Default Gateway: 172.17.8.23

Most IP stacks support this configuration, however there are exceptions. As long as proxy-ARP is running on the router (and in most companies it is) this configuration will work fine.

At the data link layer the frames hit the wire as a multicast, as specified earlier, in the format 01-00-5E-XX-XX-XX. The trailing three octets (XX-XX-XX) actually become the last three octets of the four-octet class D IP address displayed in hexadecimal. For example: The first figure below demonstrates the math to convert to a multicast address. The second figure below shows an actual trace where this address was used in a video conference.

In order for a host to participate in a multicast it must also be able to perform two other operations:

JoinHostGroup (group address, interface)
LeaveHostGroup (group address, interface)

A JoinHostGroup datagram is sent by a host who wants to participate in the multicast (class D address) identified in the frame. The LeaveHostGroup is used to remove a host from a multicast group.

The following diagrams illustrate a multicast session:















 

Summary
IGMP is used to gain membership in a multicast session. IGMP is not used to carry user data, but solely for session admission. Once the user becomes a member of the group, the actual data (video/voice) is send via RTP (explained in another section).
Reference Materials for IGMP (RFC 1112)
IETF Request For Comments: 1112, RTP, 8/89
www.stardust.com, The IP Multicast BUZZ, 3/22/97
www.ipmulticast.com, How IP Multicast Works, 3/22/97
www.gps.caltech.edu, IGMP, 12/20/96
www.ipmulticast.com, IP Multicast Backgrounder, 3/22/97

IGMP Update (RFC 2236)

IGMP Version 2
Updates RFC 1112

Introduction
IGMP version 2 introduces several improvements over the earlier version. To best explain this RFC, I have taken most of this material directly from the RFC itself, and added diagrams and examples to better explain the technology.
IGMP version 2
The frame below illustrates the format update for IGMP version 2.

There are three types of IGMP messages concerning interaction between the end station and the router:

Type Ð 0x11 (Membership Query)
There are two sub-types of Membership Query messages:

  • General Query, used to learn which groups have members on an attached network
  • Group-Specific Query, used to learn if a particular group has any members on an attached network.
These two messages are differentiated by the Group Address, described later. Membership Query messages are referred to simply as "Query" messages.

Type Ð 0x16 (Version 2 Membership Report)

Type Ð 0x17 (Leave Group)
This type is new to IGMP as in RFC 1112, a router periodically checked for group participants by sending queries out every n seconds. If no end stations responded, the branch was pruned from the tree.

There is an additional type of message, for backwards-compatibility with IGMPv1:

Type Ð 0x12 (Version 1 Membership Report)

Unrecognized message types should be silently ignored. New message types may be used by newer version of IGMP, by multicast routing protocols, or other issues.

Max Response Time:
The Max Response Time field is meaningful only in Membership Query messages, and specifies the maximum allowed time before sending a responding report in units of 1/10 second. In all other messages, it is set to zero by the sender and ignored by receivers. Remember, the Membership Query message is sent by the router to determine if any end stations are still participating in the group. When an end station receives a Membership Query it will wait n seconds to see if any other station responds on behalf of the group.

Varying this setting allows IGMPv2 routers to tune the "leave latency" (the time between the moment the last host leaves a group and when the routing protocol is notified that there are no more members). It also allows tuning of the burstiness of IGMP traffic on a subnet.

Group Address:
In a Membership Query message, the group address field is set to zero when sending a General Query, and set to the group address being queried when sending a Group-Specific Query. In a Membership Report or Leave Group message, the group address field holds the IP multicast group address of the group being reported or left.
Other Fields:
Note that IGMP messages may be longer than eight octets, especially future backwards-compatible versions of IGMP. As long as the type is one that is recognized, an IGMPv2 implementation must ignore anything past the first eight octets while processing the packet. However, the IGMP checksum is always computed over the whole IP payload, not just over the first eight octets.
Protocol Description
Note that defaults for timer values are described later in this document. Timer and counter names appear in square brackets.

The term "interface" is sometimes used in this document to mean "the primary interface on an attached network." If a router has multiple physical interfaces on a single network this protocol need only run on one of them. Hosts, on the other hand, need to perform their actions on all interfaces that have memberships associated with them.

Multicast routers use IGMP to learn which groups have members on each of their attached physical networks. A multicast router keeps a list of multicast group memberships for each attached network, and a timer for each membership. "Multicast group memberships" refers to the presence of at least one member of a multicast group on a given attached network, not a list of all of the members. With respect to each of its attached networks, a multicast router may assume one of two roles: Querier or Non-Querier. There is normally only one Querier per physical network. All multicast routers start up as a Querier on each attached network. If a multicast router hears a Query message from a router with a lower IP address, it must become a Non-Querier on that network. If a router has not heard a Query message from another router [Other Querier Present IntervalÑsee RFC 2236 section 8.5], it resumes the role of Querier.

Routers periodically [Query Interval Ð default = 125 seconds] send a General Query on each attached network for which this router is the Querier, to solicit membership information. On startup, a router should send [Startup Query Count Ð default = 2] General Queries spaced closely together [Startup Query Interval Ð default = the Query Interval] in order to quickly and reliably determine membership information. A General Query is addressed to the all-systems multicast group (224.0.0.1), has a Group Address field of 0, and has a Max Response Time of [Query Response Interval Ð default = (100) 10 seconds].

When a host receives a General Query, it sets delay timers for each group (excluding the all-systems group) in which it is a member on the interface from which it received the query. Each timer is set to a different random value, using the highest clock granularity available on the host, selected from the range (0, Max Response Time] with Max Response Time as specified in the Query packet. When a host receives a Group-Specific Query, it sets a delay timer to a random value selected from the range (0, Max Response Time] as above for the group being queried if it is a member on the interface from which it received the query. If a timer for the group is already running, it is reset to the random value only if the requested Max Response Time is less than the remaining value of the running timer. When a groupÕs timer expires, the host multicasts a Version 2 Membership Report to the group, with an IP TTL of 1. If the host receives another hostÕs Report (version 1 or 2) while it has a timer running, it stops its timer for the specified group and does not send a Report, in order to suppress duplicate Reports. This is how RFC 1112 explains the process.

When a router receives a Report, it adds the group being reported to the list of multicast group memberships on the network on which it received the Report and sets the timer for the membership to the [Group Membership Interval Ð see RFC 2236 section 8.4]. Repeated Reports refresh the timer.

If no Reports are received for a particular group before this timer has expired, the router assumes that the group has no local members and that it need not forward remotely-originated multicasts for that group onto the attached network. This is how RFC 1112 explains the process.

When a host joins a multicast group, it should immediately transmit an unsolicited Version 2 Membership Report for that group (type 0x16), in case it is the first member of that group on the network. To cover the possibility of the initial Membership Report being lost or damaged, it is recommended that it be repeated once or twice after short delays [Unsolicited Report Interval Ð default = 10 seconds]. A simple way to accomplish this is to send the initial Version 2 Membership Report and then act as if a Group-Specific Query was received for that group, and set a timer appropriately, as shown in the following figure:

When a host leaves a multicast group, if it was the last host to reply to a Query with a Membership Report for that group, it should send a Leave Group message to the all-routers multicast group (224.0.0.2). If it was not the last host to reply to a Query, it may send nothing, as there must be another member on the subnet. This is an optimization to reduce traffic; a host without sufficient storage to remember whether or not it was the last host to reply may always send a Leave Group message when it leaves a group. Routers should accept a Leave Group message addressed to the group being left, in order to accommodate implementations of an earlier version of this standard. Leave Group messages are addressed to the all-routers group because other group members have no need to know that a host has left the group, but it does no harm to address the message to the group.

When a Querier (router) receives a Leave Group message for a group that has group members on the reception interface, it sends [Last Member Query Count] Group-Specific Queries every [Last Member Query Interval Ð default = 10 or (1 second)] to the group being left. These Group-Specific Queries have their Max Response time set to [Last Member Query Interval]. If no Reports are received after the response time of the last query expires, the routers assume that the group has no local members, as above. Any Querier to non-Querier transition is ignored during this time; the same router keeps sending the Group-Specific Queries. See the figure below:

Non-Queriers must ignore Leave Group messages, and Queriers should ignore Leave Group messages for which there are no group members on the reception interface.

When a non-Querier receives a Group-Specific Query message, if its existing group membership timer is greater than [Last Member Query Count] times the Max Response Time specified in the message, it sets its group membership timer to that value.

Summary
IGMP version 2 (RFC 2236) is a an improvement over the previous version (RFC 1112). If you would like to read more detailed information about interoperability between IGMP version 2 and version 1, I recommend that you read sections 4 and 5 of RFC 2236. I hope that you found this paper informative.

csu, dsu, dacs, bandwidth manager, frame relay, remote access, pri, channel bank, bri, adtran, enterprise, fxs, fxo, t1, e1, tsu, isdn, pbx, atm, clec, plesiochronous, point-to-point, fractional, voice, data, e&m, analog, router, pstn, v.35, dsx, fsx, dbu, ethernet, network management, osu, multiport, multi-mode fiber, snmp, t3su, dacsing, ds0, ds1, ds3, drop/insert, hssi, u-interface, hdsl, imux, mux, multiplexers, cross-connect, bonding, dte, hdlc, pots, chassis, psu, rcu, eia232, ground start, foreign exchange, dpo, plar, rackmount, wallmount, tdu, ft1, t1/ft1, did, 2-wire, rj-11, spanning tree, bridging, 4-wire, eia-530, rst-232, fiber, t3, esu, dial back, sdlc, ip routing, sna/sdlc, bisync, slip,async, tbop, safe-t-net, dce, h0, h11, in-band, facilities data link, fdl, pro, sdlc-llc2, ppp, v.34, sw56, xdsl, 10baseT, vt100, ccitt/v120, ip/ipx, mlppp, remote loopback, local loopback, multilinks, aggregating, aggregate, dtr assertion, rs-366, y cable, spid, lzs compression, v.120, video conferencing, termination units, redundant power supply, g.shdsl, sonet networks, mlt, ringdown, pcm, tr-08 Back to Home csu, dsu, dacs, bandwidth manager, frame relay, remote access, pri, channel bank, bri, adtran, enterprise, fxs, fxo, t1, e1, tsu, isdn, pbx, atm, clec, plesiochronous, point-to-point, fractional, voice, data, e&m, analog, router, pstn, v.35, dsx, fsx, dbu, ethernet, network management, osu, multiport, multi-mode fiber, snmp, t3su, dacsing, ds0, ds1, ds3, drop/insert, hssi, u-interface, hdsl, imux, mux, multiplexers, cross-connect, bonding, dte, hdlc, pots, chassis, psu, rcu, eia232, ground start, foreign exchange, dpo, plar, rackmount, wallmount, tdu, ft1, t1/ft1, did, 2-wire, rj-11, spanning tree, bridging, 4-wire, eia-530, rst-232, fiber, t3, esu, dial back, sdlc, ip routing, sna/sdlc, bisync, slip,async, tbop, safe-t-net, dce, h0, h11, in-band, facilities data link, fdl, pro, sdlc-llc2, ppp, v.34, sw56, xdsl, 10baseT, vt100, ccitt/v120, ip/ipx, mlppp, remote loopback, local loopback, multilinks, aggregating, aggregate, dtr assertion, rs-366, y cable, spid, lzs compression, v.120, video conferencing, termination units, redundant power supply, g.shdsl, sonet networks, mlt, ringdown, pcm, tr-08E-Mail   VoxTechnologies Corp. - Industrial Computer Leader
Tel:
972-234-4343 Fax: 972-234-4295 Toll-Free: 1-888-568-6224
 

An Industrial Partner 1999-2002. All rights reserved.


CompactPCI, Embedded SBCs, Flat panel Displays, Industrial Chassis, IndustrialPC Peripherals, Industrial Power Supplies, Backplanes, Single Board Computers, Rackmount Servers, Network Communication, Open Frame Panel Computer, PC/104, Flash Disk, CTI, RAID Back to Home CompactPCI, Embedded SBCs, Flat panel Displays, Industrial Chassis, IndustrialPC Peripherals, Industrial Power Supplies, Backplanes, Single Board Computers, Rackmount Servers, Network Communication, Open Frame Panel Computer, PC/104, Flash Disk, CTI, RAID E-Mail

VoxTechnologies Corp. - Industrial Computer Leader
Tel:
1-972-234-4343 Fax: 1-972-234-4295 Toll-Free: 1-888-568-6224

For over a decade, VoxTechnologies has been a leading source of industrial computers and complete system products for the O.E.M. and Systems Integrator. Our primary goal is to provide a solution source for engineers that have the challenging task of interfacing and controlling the real world.

Telephone: 1-972-234-4343 General Info: info@voxtechnologies.com Sales Info: sales@voxtechnologies.com
 
We accept all major credit cardsRelated Links Adtran AFC CAC Larscom Metrobility Moxa NetAnchor
VTC SBCs, VTC Chassis, VTC Backplanes, VTC CompactPCI, VTC Power Supplies, VTC Peripherals, Other SBCs, Other Backplanes, Other Chassis, Other Power Supplies, Other Embedded SBCs, Other CompactPCI Devices, Other Servers, Other Network Storage, Other VME, RAD,
CAC, Charles, Eastern, Transition, Other PC/104 Products, Other Subsystems, Other KVM Switches, Other Flat Panels, Other Plasma Engine Computers, Other ACTI Platforms, Other Industrial Peripherals, Other Network Communication Products, IPCMall, PLCPartner, Moxa, Telco, Etasis, Axiom, IEI, Channel Banks, Adtran, PowerSupplyPartner, DelvingWare
Archives
Send mail to webmaster@voxtechnologies.com with questions or comments about this web site.
Copyright © 1999 VoxTechnologies Corporation- An Industrial Partner
Last modified: November 30, 2002   Proud Sponsor of Dallas Jazz