Host extensions for IP multicasting
Extracted elements (28)
A host remains a member of the all-hosts group at all times (not just while in other groups) for three reasons: it is simpler, IGMP query overhead is negligible, and the all-hosts address may serve routing-oriented purposes such as gateway advertisement and local address resolution.
IGMP is specified asymmetrically from the host's point of view only; the algorithms between multicast routers are left to separate documents. This separation keeps the host specification self-contained and routers transparent to hosts.
IGMP uses two techniques to suppress report implosion: randomized per-group delay timers spread Reports over D seconds, and Reports are multicast to the group address so other members can hear and cancel their own pending Reports. This ensures typically only one Report per group is transmitted per Query.
Multicast routers need not maintain a list of individual members of each host group — only that at least one host belongs to a group on a particular network. This design keeps router state proportional to the number of active groups, not the number of hosts.
The IP-to-Ethernet multicast address mapping uses only the low-order 23 bits of the 28-bit Class D address. This deliberate collision space was accepted as a tradeoff to allow a simple, stateless mapping rather than requiring a protocol to allocate Ethernet multicast addresses.
Level 0 hosts that do not support IP multicasting may receive misdelivered multicast IP datagrams on some network types. Such datagrams are identifiable by a Class D destination address and should be quietly discarded.
On hosts with more than one network interface, a multicast datagram that arrives via one interface but is addressed to a group the host belongs to only on a different interface must be quietly discarded.
A host group address MUST NOT be placed in the source address field or anywhere in a source route or record route option of an outgoing IP datagram.
A host SHOULD confirm that a received Report has the same IP host group address in both its IP destination field and its IGMP group address field before using it to cancel its own pending Report.
A Level 2 host's IP module MUST maintain a list of host group memberships per network interface. On the first join and last leave for a group on an interface, the local network module MUST be notified to update its multicast reception filter.
A Report MUST be sent with an IP destination address equal to the host group address being reported and with TTL of 1, enabling other members on the same network to suppress their own pending Reports for that group.
An ICMP error message (Destination Unreachable, Time Exceeded, Parameter Problem, Source Quench, or Redirect) MUST NEVER be generated in response to a datagram destined to an IP host group address.
Ethernet implementations MUST be capable of listening on an arbitrary number of Ethernet multicast addresses, which may require opening the hardware address filter to accept all multicast packets when the number of groups exceeds hardware filter capacity.
Every Level 2 host MUST join the all-hosts group (224.0.0.1) on each network interface at initialization and MUST remain a member for as long as the host is active.
If an upper-layer protocol does not specify a TTL for an outgoing multicast datagram, the TTL MUST default to 1, so that multicasting beyond a single network requires an explicit choice.
IGMP is required to be implemented by all hosts conforming to Level 2. IGMP messages are encapsulated in IP datagrams with IP protocol number 2.
The IP source address of an outgoing multicast datagram MUST be one of the individual addresses corresponding to the outgoing interface.
When a host joins a new group, it SHOULD immediately transmit a Report for that group rather than waiting for a Query. It is RECOMMENDED that the Report be repeated once or twice after short delays to cover loss of the initial Report.
Host groups are identified by Class D IP addresses, with the high-order four bits set to '1110'. The range is 224.0.0.0 to 239.255.255.255. The address 224.0.0.0 is unassigned; 224.0.0.1 is permanently assigned to all IP hosts.
The all-hosts group (224.0.0.1) is a special case in IGMP: the host starts in Idle Member state on every interface, never transitions to another state, and never sends a Report for that group.
The maximum report delay D is 10 seconds. When a host receives a Query, it sets a random timer per group membership between 0 and D seconds; the Report is sent only when the timer expires, unless suppressed by hearing another Report first.
Three conformance levels are defined: Level 0 (no multicast support), Level 1 (sending only, no group joining), and Level 2 (full support including IGMP and group membership). Only Level 2 requires IGMP implementation.
Two new IP service interface operations are defined for Level 2 hosts: JoinHostGroup(group-address, interface) and LeaveHostGroup(group-address, interface). Both are non-blocking and return immediately with success or failure.
Two new local network service interface operations are defined: JoinLocalGroup(group-address) and LeaveLocalGroup(group-address). The local network module maps IP host group addresses to local multicast addresses to update its reception filter.
A host cannot assume that datagrams sent to a transient host group address will reach only intended hosts, or that received datagrams are actually intended for it. Misdelivery must be detected at a level above IP using higher-level identifiers or authentication tokens. Information sent to a host group should be encrypted or controlled by administrative routing if confidentiality is required.
IGMP defines three per-group states per interface: Non-Member (initial), Delaying Member (belongs to group, timer running), and Idle Member (belongs to group, no timer). Transitions are triggered by join group, leave group, query received, report received, and timer expired events.
An IP host group address is mapped to an Ethernet multicast address by placing the low-order 23 bits of the IP address into the low-order 23 bits of the base Ethernet multicast address 01-00-5E-00-00-00. Because IP Class D has 28 significant bits, multiple group addresses may map to the same Ethernet address.
IGMP messages are 8 octets: Version (4 bits), Type (4 bits), Unused (8 bits, zeroed on send), Checksum (16-bit one's complement), and Group Address (32 bits). Type 1 = Host Membership Query; Type 2 = Host Membership Report.