summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc1054.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc1054.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc1054.txt')
-rw-r--r--doc/rfc/rfc1054.txt1061
1 files changed, 1061 insertions, 0 deletions
diff --git a/doc/rfc/rfc1054.txt b/doc/rfc/rfc1054.txt
new file mode 100644
index 0000000..06ca2fa
--- /dev/null
+++ b/doc/rfc/rfc1054.txt
@@ -0,0 +1,1061 @@
+Network Working Group S. Deering
+Request for Comments: 1054 Stanford University
+Obsoletes: RFC 988 May 1988
+
+
+ Host Extensions for IP Multicasting
+
+1. STATUS OF THIS MEMO
+
+ This memo specifies the extensions required of a host implementation
+ of the Internet Protocol (IP) to support multicasting. It is
+ proposed as a standard for IP multicasting in the Internet. This
+ specification is a major revision of RFC-988; changes from RFC-988
+ are listed in an Appendix. Distribution of this memo is unlimited.
+
+2. INTRODUCTION
+
+ IP multicasting is defined as the transmission of an IP datagram to a
+ "host group", a set of zero or more hosts identified by a single IP
+ destination address. A multicast datagram is delivered to all
+ members of its destination host group with the same "best-efforts"
+ reliability as regular unicast IP datagrams, i.e., the datagram is
+ not guaranteed to arrive intact at all members of the destination
+ group or in the same order relative to other datagrams.
+
+ The membership of a host group is dynamic; that is, hosts may join
+ and leave groups at any time. There is no restriction on the
+ location or number of members in a host group. A host may be a
+ member of more than one group at a time. A host need not be a member
+ of a group to send datagrams to it.
+
+ A host group may be permanent or transient. A permanent group has a
+ well-known, administratively assigned IP address. It is the address,
+ not the membership of the group, that is permanent; at any time a
+ permanent group may have any number of members, even zero. Those IP
+ multicast addresses that are not reserved for permanent groups are
+ available for dynamic assignment to transient groups which exist only
+ as long as they have members.
+
+ Internetwork forwarding of IP multicast datagrams is handled by
+ "multicast routers" which may be co-resident with, or separate from,
+ internet gateways. A host transmits an IP multicast datagram as a
+ local network multicast which reaches all immediately-neighboring
+ members of the destination host group. If the datagram has an IP
+ time-to-live greater than 1, the multicast router(s) attached to the
+ local network take responsibility for forwarding it towards all other
+ networks that have members of the destination group. On those other
+ member networks that are reachable within the IP time-to-live, an
+
+
+
+Deering [Page 1]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+ attached multicast router completes delivery by transmitting the
+ datagram as a local multicast.
+
+ This memo specifies the extensions required of a host IP
+ implementation to support IP multicasting, where a "host" is any
+ internet host or gateway other than those acting as multicast
+ routers. The algorithms and protocols used within and between
+ multicast routers are transparent to hosts and will be specified in
+ separate documents. This memo also does not specify how local
+ network multicasting is accomplished for all types of network,
+ although it does specify the required service interface to an
+ arbitrary local network and gives an Ethernet specification as an
+ example. Specifications for other types of network will be the
+ subject of future memos.
+
+3. LEVELS OF CONFORMANCE
+
+ There are three levels of conformance to this specification:
+
+ Level 0: no support for IP multicasting.
+
+ There is, at this time, no requirement that all IP implementations
+ support IP multicasting. Level 0 hosts will, in general, be
+ unaffected by multicast activity. The only exception arises on some
+ types of local network, where the presence of level 1 or 2 hosts may
+ cause misdelivery of multicast IP datagrams to level 0 hosts. Such
+ datagrams can easily be identified by the presence of a class D IP
+ address in their destination address field; they should be quietly
+ discarded by hosts that do not support IP multicasting. Class D
+ addresses are described in section 4 of this memo.
+
+ Level 1: support for sending but not receiving multicast IP
+ datagrams.
+
+ Level 1 allows a host to partake of some multicast-based services,
+ such as resource location or status reporting, but it does not allow
+ a host to join any host groups. An IP implementation may be upgraded
+ from level 0 to level 1 very easily and with little new code. Only
+ sections 4, 5, and 6 of this memo are applicable to level 1
+ implementations.
+
+ Level 2: full support for IP multicasting.
+
+ Level 2 allows a host to join and leave host groups, as well as send
+ IP datagrams to host groups. It requires implementation of the
+ Internet Group Management Protocol (IGMP) and extension of the IP and
+ local network service interfaces within the host. All of the
+ following sections of this memo are applicable to level 2
+
+
+
+Deering [Page 2]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+ implementations.
+
+4. HOST GROUP ADDRESSES
+
+ Host groups are identified by class D IP addresses, i.e., those with
+ "1110" as their high-order four bits. Class E IP addresses, i.e.,
+ those with "1111" as their high-order four bits, are reserved for
+ future addressing modes.
+
+ In Internet standard "dotted decimal" notation, host group addresses
+ range from 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 224.0.0.1 is assigned
+ to the permanent group of all IP hosts. This is used to address all
+ multicast hosts on the directly connected network. There is no
+ multicast address (or any other IP address) for all hosts on the
+ total Internet. The addresses of other well-known, permanent groups
+ are to be published in "Assigned Numbers".
+
+ Appendix II contains some background discussion of several issues
+ related to host group addresses.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Deering [Page 3]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+5. MODEL OF A HOST IP IMPLEMENTATION
+
+ The multicast extensions to a host IP implementation are specified in
+ terms of the layered model illustrated below. In this model, ICMP
+ and (for level 2 hosts) IGMP are considered to be implemented within
+ the IP module, and the mapping of IP addresses to local network
+ addresses is considered to be the responsibility of local network
+ modules. This model is for expository purposes only, and should not
+ be construed as constraining an actual implementation.
+
+ | |
+ | Upper-Layer Protocol Modules |
+ |__________________________________________________________|
+
+ --------------------- IP Service Interface -----------------------
+ __________________________________________________________
+ | | | |
+ | | ICMP | IGMP |
+ | IP |______________|______________|
+ | Module |
+ | |
+ |__________________________________________________________|
+
+ ---------------- Local Network Service Interface -----------------
+ __________________________________________________________
+ | | |
+ | Local | IP-to-local address mapping |
+ | Network | (e.g., ARP) |
+ | Modules |_____________________________|
+ | (e.g., Ethernet) |
+ | |
+
+ To support level 1 multicasting, a host IP implementation must
+ support the transmission of multicast IP datagrams. To support level
+ 2 IP multicasting, a host must also support the reception of
+ multicast IP datagrams. Each of these two new services is described
+ in a separate section, below. For each service, extensions are
+ specified for the IP service interface, the IP module, the local
+ network service interface, and an Ethernet local network module.
+ Extensions to local network modules other than Ethernet are mentioned
+ briefly, but are not specified in detail.
+
+
+
+
+
+
+
+
+
+
+Deering [Page 4]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+6. SENDING MULTICAST IP DATAGRAMS
+
+6.1. Extensions to the IP Service Interface
+
+ Multicast IP datagrams are sent using the same "Send IP" operation
+ used to send unicast IP datagrams; an upper-layer protocol module
+ merely specifies an IP host group address, rather than an individual
+ IP address, as the destination. However, a number of extensions may
+ be necessary or desirable.
+
+ First, the service interface should provide a way for the upper-layer
+ protocol to specify the IP time-to-live of an outgoing multicast
+ datagram, if such a capability does not already exist. If the
+ upper-layer protocol chooses not to specify a time-to-live, it should
+ default to 1 for all multicast IP datagrams, so that an explicit
+ choice is required to multicast beyond a single network.
+
+ Second, for hosts that may be attached to more than one network, the
+ service interface should provide a way for the upper-layer protocol
+ to identify which network interface is be used for the multicast
+ transmission. Only one interface is used for the initial
+ transmission; multicast routers are responsible for forwarding to any
+ other networks, if necessary. If the upper-layer protocol chooses
+ not to identify an outgoing interface, a default interface should be
+ used, preferably under the control of system management.
+
+ Third (level 2 implementations only), for the case in which the host
+ is itself a member of a group to which a datagram is being sent, the
+ service interface should provide a way for the upper-layer protocol
+ to inhibit local delivery of the datagram; by default, a copy of the
+ datagram is looped back. This is a performance optimization for
+ upper-layer protocols that restrict the membership of a group to one
+ process per host (such as a routing protocol), or that handle
+ loopback of group communication at a higher layer (such as a
+ multicast transport protocol).
+
+6.2. Extensions to the IP Module
+
+ To support the sending of multicast IP datagrams, the IP module must
+ be extended to recognize IP host group addresses when routing
+ outgoing datagrams. Most IP implementations include the following
+ logic:
+
+ if IP-destination is on the same local network,
+ send datagram locally to IP-destination
+ else
+ send datagram locally to GatewayTo( IP-destination )
+
+
+
+
+Deering [Page 5]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+ To allow multicast transmissions, the routing logic must be changed
+ to:
+
+ if IP-destination is on the same local network
+ or IP-destination is a host group,
+ send datagram locally to IP-destination
+ else
+ send datagram locally to GatewayTo( IP-destination )
+
+
+ If the sending host is itself a member of the destination group, a
+ copy of the outgoing datagram must be looped-back for local delivery,
+ unless inhibited by the sender. (Level 2 implementations only.)
+
+ A host group address should not be placed in the source address field
+ or anywhere in a source routing option of an outgoing IP datagram.
+
+6.3. Extensions to the Local Network Service Interface
+
+ No change to the local network service interface is required to
+ support the sending of multicast IP datagrams. The IP module merely
+ specifies an IP host group destination, rather than an individual IP
+ destination, when it invokes the existing "Send Local" operation.
+
+6.4. Extensions to an Ethernet Local Network Module
+
+ The Ethernet directly supports the sending of local multicast packets
+ by allowing multicast addresses in the destination field of Ethernet
+ packets. All that is needed to support the sending of multicast IP
+ datagrams is a procedure for mapping IP host group addresses to
+ Ethernet multicast addresses.
+
+ 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 Ethernet multicast address 01-00-5E-00-00-00 (hex).
+ Because there are 28 significant bits in an IP host group address,
+ more than one host group address may map to the same Ethernet
+ multicast address.
+
+6.5. Extensions to Local Network Modules other than Ethernet
+
+ Other networks that directly support multicasting, such as rings or
+ buses conforming to the IEEE 802.2 standard, may be handled the same
+ way as Ethernet for the purpose of sending multicast IP datagrams.
+ For a network that supports broadcast but not multicast, such as the
+ Experimental Ethernet, all IP host group addresses may be mapped to a
+ single local broadcast address (at the cost of increased overhead on
+ all local hosts). For a point-to-point link joining two hosts (or a
+
+
+
+Deering [Page 6]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+ host and a multicast router), multicasts should be transmitted
+ exactly like unicasts. For a store-and-forward network like the
+ ARPANET or a public X.25 network, all IP host group addresses might
+ be mapped to the well-known local address of an IP multicast router;
+ a router on such a network would take responsibility for completing
+ multicast delivery within the network as well as among networks.
+
+7. RECEIVING MULTICAST IP DATAGRAMS
+
+7.1. Extensions to the IP Service Interface
+
+ Incoming multicast IP datagrams are received by upper-layer protocol
+ modules using the same "Receive IP" operation as normal, unicast
+ datagrams. Selection of a destination upper-layer protocol is based
+ on the protocol field in the IP header, regardless of the destination
+ IP address. However, before any datagrams destined to a particular
+ group can be received, an upper-layer protocol must ask the IP module
+ to join that group. Thus, the IP service interface must be extended
+ to provide two new operations:
+
+ JoinHostGroup ( group-address, interface )
+
+ LeaveHostGroup ( group-address, interface )
+
+ The JoinHostGroup operation requests that this host become a member
+ of the host group identified by "group-address" on the given network
+ interface. The LeaveGroup operation requests that this host give up
+ its membership in the host group identified by "group-address" on the
+ given network interface. The interface argument may be omitted on
+ hosts that may be attached to only one network. For hosts that may
+ be attached to more than one network, the upper-layer protocol may
+ choose to leave the interface unspecified, in which case the request
+ will apply to the default interface for sending multicast datagrams
+ (see section 6.1).
+
+ It is permissible to join the same group on more than one interface,
+ in which case duplicate multicast datagrams may be received. It is
+ also permissible for more than one upper-layer protocol to request
+ membership in the same group.
+
+ Both operations should return immediately (i.e., they are non-
+ blocking operations), indicating success or failure. Either
+ operation may fail due to an invalid group address or interface
+ identifier. JoinHostGroup may fail due to lack of local resources.
+ LeaveHostGroup may fail because the host does not belong to the given
+ group on the given interface. LeaveHostGroup may succeed, but the
+ membership persist, if more than one upper-layer protocol has
+ requested membership in the same group.
+
+
+
+Deering [Page 7]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+7.2. Extensions to the IP Module
+
+ To support the reception of multicast IP datagrams, the IP module
+ must be extended to maintain a list of host group memberships
+ associated with each network interface. An incoming datagram
+ destined to one of those groups is processed exactly the same way as
+ datagrams destined to one of the host's individual addresses.
+
+ Incoming datagrams destined to groups to which the host does not
+ belong are discarded without generating any error report. On hosts
+ attached to more than one network, if a datagram arrives via one
+ network interface, destined for a group to which the host belongs
+ only on a different interface, the datagram is quietly discarded.
+ (These cases should occur only as a result of inadequate multicast
+ address filtering in a local network module.)
+
+ An incoming datagram is not rejected for having an IP time-to-live of
+ 1 (i.e., the time-to-live should not automatically be decremented on
+ arriving datagrams that are not being forwarded). An incoming
+ datagram is not rejected for having an IP host group address in its
+ source address field or anywhere in a source routing option. An ICMP
+ error message (Destination Unreachable, Time Exceeded, Parameter
+ Problem, Source Quench, or Redirect) is never generated in response
+ to a datagram destined to an IP host group.
+
+ The list of host group memberships is updated in response to
+ JoinHostGroup and LeaveHostGroup requests from upper-layer protocols.
+ Each membership should have an associated reference count or similar
+ mechanism to handle multiple requests to join and leave the same
+ group. On the first request to join and the last request to leave a
+ group on a given interface, the local network module for that
+ interface is notified, so that it may update its multicast reception
+ filter (see section 7.3).
+
+ The IP module must also be extended to implement the IGMP protocol,
+ specified in Appendix I. IGMP is used to keep neighboring multicast
+ routers informed of the host group memberships present on a
+ particular local network. To support IGMP, every level 2 host must
+ join the "all-hosts" group (address 224.0.0.1) on each network
+ interface at initialization time and must remain a member for as long
+ as the host is active.
+
+ (Datagrams addressed to the all-hosts group are recognized as a
+ special case by the multicast routers and are never forwarded beyond
+ a single network, regardless of their time-to-live. Thus, the all-
+ hosts address may not be used as an internet-wide broadcast address.
+ For the purpose of IGMP, membership in the all-hosts group is really
+ necessary only while the host belongs to at least one other group.
+
+
+
+Deering [Page 8]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+ However, it is specified that the host shall remain a member of the
+ all-hosts group at all times because (1) it is simpler, (2) the
+ frequency of reception of unnecessary IGMP queries should be low
+ enough that overhead is negligible, and (3) the all-hosts address may
+ serve other routing-oriented purposes, such as advertising the
+ presence of gateways or resolving local addresses.)
+
+7.3. Extensions to the Local Network Service Interface
+
+ Incoming local network multicast packets are delivered to the IP
+ module using the same "Receive Local" operation as local network
+ unicast packets. To allow the IP module to tell the local network
+ module which multicast packets to accept, the local network service
+ interface is extended to provide two new operations:
+
+ JoinLocalGroup ( group-address )
+
+ LeaveLocalGroup ( group-address )
+
+ where "group-address" is an IP host group address. The
+ JoinLocalGroup operation requests the local network module to accept
+ and deliver up subsequently arriving packets destined to the given IP
+ host group address. The LeaveLocalGroup operation requests the local
+ network module to stop delivering up packets destined to the given IP
+ host group address. The local network module is expected to map the
+ IP host group addresses to local network addresses as required to
+ update its multicast reception filter. Any local network module is
+ free to ignore LeaveLocalGroup requests, and may deliver up packets
+ destined to more addresses than just those specified in
+ JoinLocalGroup requests, if it is unable to filter incoming packets
+ adequately.
+
+ The local network module must not deliver up any multicast packets
+ that were transmitted from that module; loopback of multicasts is
+ handled at the IP layer or higher.
+
+7.4. Extensions to an Ethernet Local Network Module
+
+ To support the reception of multicast IP datagrams, an Ethernet
+ module must be able to receive packets addressed to the Ethernet
+ multicast addresses that correspond to the host's IP host group
+ addresses. It is highly desirable to take advantage of any address
+ filtering capabilities that the Ethernet hardware interface may have,
+ so that the host receives only those packets that are destined to it.
+
+ Unfortunately, many current Ethernet interfaces have a small limit on
+ the number of addresses that the hardware can be configured to
+ recognize. Nevertheless, an implementation must be capable of
+
+
+
+Deering [Page 9]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+ listening on an arbitrary number of Ethernet multicast addresses,
+ which may mean "opening up" the address filter to accept all
+ multicast packets during those periods when the number of addresses
+ exceeds the limit of the filter.
+
+ For interfaces with inadequate hardware address filtering, it may be
+ desirable (for performance reasons) to perform Ethernet address
+ filtering within the software of the Ethernet module. This is not
+ mandatory, however, because the IP module performs its own filtering
+ based on IP destination addresses.
+
+7.5. Extensions to Local Network Modules other than Ethernet
+
+ Other multicast networks, such as IEEE 802.2 networks, can be handled
+ the same way as Ethernet for the purpose of receiving multicast IP
+ datagrams. For pure broadcast networks, such as the Experimental
+ Ethernet, all incoming broadcast packets can be accepted and passed
+ to the IP module for IP-level filtering. On point-to-point or
+ store-and-forward networks, multicast IP datagrams will arrive as
+ local network unicasts, so no change to the local network module
+ should be necessary.
+
+APPENDIX I. INTERNET GROUP MANAGEMENT PROTOCOL (IGMP)
+
+ 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 an asymmetric protocol and is specified
+ here from the point of view of a host, rather than a multicast
+ router. (IGMP may also be used, symmetrically or asymmetrically,
+ between multicast routers. Such use is not specified here.)
+
+ Like ICMP, IGMP is a integral part of IP. It is required to 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. All IGMP messages of concern to hosts
+ have the following format:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |Version| Type | Unused | Checksum |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Group Address |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+
+
+
+
+
+
+Deering [Page 10]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+ Version
+
+ This memo specifies version 1 of IGMP. Version 0 is specified
+ in RFC-988 and is now obsolete.
+
+ Type
+
+ There are two types of IGMP message 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 one's complement of the one's
+ complement sum of the 8-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.
+
+Informal Protocol Description
+
+ Multicast routers send Host Membership Query messages (hereinafter
+ called Queries) to discover which host groups have members on their
+ attached local networks. Queries are addressed to the all-hosts
+ group (address 224.0.0.1), and carry an IP time-to-live of 1.
+
+ Hosts respond to a Query by generating Host Membership Reports
+ (hereinafter called Reports), reporting each host group to which they
+ belong on the network interface from which the Query was received.
+ In order to avoid an "implosion" of concurrent Reports and to reduce
+ the total number of Reports transmitted, two techniques are used:
+
+ 1. When a host receives a Query, rather than sending Reports
+ immediately, it starts a report delay timer for each of its
+ group memberships on the network interface of the incoming
+ Query. Each timer is set to a different, randomly-chosen
+ value between zero and D seconds. When a timer expires, a
+
+
+
+Deering [Page 11]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+ Report is generated for the corresponding host group. Thus,
+ Reports are spread out over a D second interval instead of
+ all occurring at once.
+
+ 2. A Report is sent with an IP destination address equal to the
+ host group address being reported, and with an IP
+ time-to-live of 1, so that other members of the same group on
+ the same network can overhear the Report. If a host hears a
+ Report for a group to which it belongs on that network, the
+ host stops its own timer for that group and does not generate
+ a Report for that group. Thus, in the normal case, only one
+ Report will be generated for each group present on the
+ network, by the member host whose delay timer expires first.
+ Note that the multicast routers receive all IP multicast
+ datagrams, and therefore need not be addressed explicitly.
+ Further note that the routers need not know which hosts
+ belong to a group, only that at least one host belongs to a
+ group on a particular network.
+
+ There are two exceptions to the behavior described above. First, if
+ a report delay timer is already running for a group membership when a
+ Query is received, that timer is not reset to a new random value, but
+ rather allowed to continue running with its current value. Second, a
+ report delay timer is never set for a host's membership in the all-
+ hosts group (224.0.0.1), and that membership is never reported.
+
+ If a host uses a pseudo-random number generator to compute the
+ reporting delays, one of the host's own individual IP address should
+ be used as part of the seed for the generator, to reduce the chance
+ of multiple hosts generating the same sequence of delays.
+
+ A host should confirm that a received Report has the same IP host
+ group address in its IP destination field and its IGMP group address
+ field, to ensure that the host's own Report is not cancelled by an
+ erroneous received Report. A host should quietly discard any IGMP
+ message of type other than Host Membership Query or Host Membership
+ Report.
+
+ Multicast routers send Queries periodically to refresh their
+ knowledge of memberships present on a particular network. If no
+ Reports are received for a particular group after some number of
+ Queries, the routers assume that that group has no local members and
+ that they need not forward remotely-originated multicasts for that
+ group onto the local network. Queries are normally sent infrequently
+ (no more than once a minute) so as to keep the IGMP overhead on hosts
+ and networks very low. However, when a multicast router starts up,
+ it may issue several closely-space Queries in order to quickly build
+ up its knowledge of local memberships.
+
+
+
+Deering [Page 12]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+ When a host joins a new group, it should immediately transmit a
+ Report for that group, rather than waiting for a Query, in case it is
+ the first member of that group on the network. To cover the
+ possibility of the initial Report being lost or damaged, it is
+ recommended that it be repeated once or twice after short delays. (A
+ simple way to accomplish this is to act as if a Query had been
+ received for that group only, setting the group's random report delay
+ timer. The state transition diagram below illustrates this
+ approach.)
+
+ Note that, on a network with no multicast routers present, the only
+ IGMP traffic is the one or more Reports sent whenever a host joins a
+ new group.
+
+State Transition Diagram
+
+ IGMP behavior is more formally specified by the state transition
+ diagram below. A host may be in one of three possible states, with
+ respect to any single IP host group on any single network interface:
+
+ - Non-Member state, when the host does not belong to the group
+ on the interface. This is the initial state for all
+ memberships on all network interfaces; it requires no storage
+ in the host.
+
+ - Delaying Member state, when the host belongs to the group on
+ the interface and has a report delay timer running for that
+ membership.
+
+ - Idle Member state, when the host belongs to the group on the
+ interface and does not have a report delay timer running for
+ that membership.
+
+ There are five significant events that can cause IGMP state
+ transitions:
+
+ - "join group" occurs when the host decides to join the group on
+ the interface. It may occur only in the Non-Member state.
+
+ - "leave group" occurs when the host decides to leave the group
+ on the interface. It may occur only in the Delaying Member
+ and Idle Member states.
+
+ - "query received" occurs when the host receives a valid IGMP
+ Host Membership Query message. To be valid, the Query message
+ must be at least 8 octets long and have a correct IGMP
+ checksum. A single Query applies to all memberships on the
+ interface from which the Query is received. It is ignored for
+
+
+
+Deering [Page 13]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+ memberships in the Non-Member or Delaying Member state.
+
+ - "report received" occurs when the host receives a valid IGMP
+ Host Membership Report message. To be valid, the Report
+ message must be at least 8 octets long, have a correct IGMP
+ checksum, and contain the same IP host group address in its IP
+ destination field and its IGMP group address field. A Report
+ applies only to the membership in the group identified by the
+ Report, on the interface from which the Report is received.
+ It is ignored for memberships in the Non-Member or Idle Member
+ state.
+
+ - "timer expired" occurs when the report delay timer for the
+ group on the interface expires. It may occur only in the
+ Delaying Member state.
+
+ All other events, such as receiving invalid IGMP messages, or IGMP
+ messages other than Query or Report, are ignored in all states.
+
+ There are three possible actions that may be taken in response to the
+ above events:
+
+ - "send report" for the group on the interface.
+
+ - "start timer" for the group on the interface, using a random
+ delay value between 0 and D seconds.
+
+ - "stop timer" for the group on the interface.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Deering [Page 14]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+ In the following diagram, each state transition arc is labelled with
+ the event that causes the transition, and, in parentheses, any
+ actions taken during the transition.
+
+ ________________
+ | |
+ | |
+ | |
+ | |
+ --------->| Non-Member |<---------
+ | | | |
+ | | | |
+ | | | |
+ | |________________| |
+ | | |
+ | leave group | join group | leave group
+ | (stop timer) |(send report, |
+ | | start timer) |
+ ________|________ | ________|________
+ | |<--------- | |
+ | | | |
+ | |<-------------------| |
+ | | query received | |
+ | Delaying Member | (start timer) | Idle Member |
+ | |------------------->| |
+ | | report received | |
+ | | (stop timer) | |
+ |_________________|------------------->|_________________|
+ timer expired
+ (send report)
+
+ The all-hosts group (address 224.0.0.1) is handled as a special case.
+ The host starts in Idle Member state for that group on every
+ interface, never transitions to another state, and never sends a
+ report for that group.
+
+Protocol Parameters
+
+ The maximum report delay, D, is 10 seconds.
+
+
+
+
+
+
+
+
+
+
+
+
+Deering [Page 15]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+APPENDIX II. HOST GROUP ADDRESS ISSUES
+
+ This appendix is not part of the IP multicasting specification, but
+ provides background discussion of several issues related to IP host
+ group addresses.
+
+Group Address Binding
+
+ The binding of IP host group addresses to physical hosts may be
+ considered a generalization of the binding of IP unicast addresses.
+ An IP unicast address is statically bound to a single local network
+ interface on a single IP network. An IP host group address is
+ dynamically bound to a set of local network interfaces on a set of IP
+ networks.
+
+ It is important to understand that an IP host group address is NOT
+ bound to a set of IP unicast addresses. The multicast routers do not
+ need to maintain a list of individual members of each host group.
+ For example, a multicast router attached to an Ethernet need
+ associate only a single Ethernet multicast address with each host
+ group having local members, rather than a list of the members'
+ individual IP or Ethernet addresses.
+
+Group Addresses as Logical Addresses
+
+ Host group addresses have been defined specifically for use in the
+ destination address field of multicast IP datagrams. However, the
+ fact that group addresses are location-independent (they are not
+ statically bound to a single network interface) suggests possible
+ uses as more general "logical addresses", both in the source as well
+ as the destination address field of datagrams. For example, a mobile
+ IP host might have a host group address as its only identity, used as
+ the source of datagrams it sends. Whenever the mobile host moved
+ from one network to another, it would join its own group on the new
+ network and depart from the group on the old network. Other hosts
+ communicating with the mobile one would deal only with the group
+ address and would be unaware of, and unaffected by, the changing
+ network location of the mobile host.
+
+ Host group addresses cannot, however, be used to solve all problems
+ of internetwork logical addressing, such as delivery to the "nearest"
+ or the "least loaded" network interface of a multi-homed host.
+ Furthermore, there are hazards in using group addresses in the source
+ address field of datagrams when the group actually contains more than
+ one host. For instance, the IP datagram reassembly algorithm relies
+ on every host using a different source address. Also, errors in a
+ datagram sent with a group source address may result in error reports
+ being returned to all members of the group, not just the sender. In
+
+
+
+Deering [Page 16]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+ view of these hazards, this memo specifies the use of host group
+ addresses only in the IP destination address field. However, it is
+ recommended that datagrams with a group source address, or a group
+ address as part of a source routing option, be accepted without
+ complaint, thereby allowing other implementations to experiment with
+ logical addressing applications of host group addresses.
+
+Allocation of Transient Host Group Addresses
+
+ This memo does not specify how transient group address are allocated.
+ It is anticipated that different portions of the IP transient host
+ group address space will be allocated using different techniques.
+ For example, there may be a number of servers that can be contacted
+ to acquire a new transient group address. Some higher-level
+ protocols (such as VMTP, specified in RFC-1045) may generate higher-
+ level transient "process group" or "entity group" addresses which are
+ then algorithmically mapped to a subset of the IP transient host
+ group addresses, similarly to the way that IP host group addresses
+ are mapped to Ethernet multicast addresses. A portion of the IP
+ group address space may be set aside for random allocation by
+ applications that can tolerate occasional collisions with other
+ multicast users, perhaps generating new addresses until a suitably
+ "quiet" one is found.
+
+ In general, a host cannot assume that datagrams sent to any host
+ group address will reach only the intended hosts, or that datagrams
+ received as a member of a transient host group are intended for the
+ recipient. Misdelivery must be detected at a level above IP, using
+ higher-level identifiers or authentication tokens. Information
+ transmitted to a host group address should be encrypted or governed
+ by administrative routing controls if the sender is concerned about
+ unwanted listeners.
+
+APPENDIX III. CHANGES FROM RFC-988
+
+ The IP multicast extensions specified in this memo are significantly
+ different from those specified in RFC-988. Most of the changes are
+ due to a shift of responsibility away from the multicast routers
+ (called "multicast agents" in RFC-988) and onto the hosts. This new
+ distribution of responsibility is consistent with the lightweight,
+ soft-state gateway architecture of the Internet, and it allows the IP
+ multicast services (in the same way as the IP unicast services) to be
+ used among hosts on a single network when no router is up or present
+ on the network. Thus, current single-network IP broadcast
+ applications may be migrated to the use of IP multicast before
+ multicast routers are widely available. The following changes are a
+ consequence of this shift of responsibility:
+
+
+
+
+Deering [Page 17]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+ - Private hosts groups and access keys have been eliminated.
+ The multicast routers are no longer considered trustworthy
+ controllers of group membership; it is up to hosts and their
+ administrators to provide their own mechanisms to prevent
+ unwanted eavesdropping on group communication, perhaps by
+ using end-to-end encryption or by imposing restrictions on the
+ flow of IP multicast datagrams into and out of particular
+ administrative domains.
+
+ - The CreateHostGroup operation has been eliminated. The
+ responsibility for allocating transient host groups has been
+ moved from multicast routers to the hosts. See Appendix II
+ for a brief discussion of some ways in which hosts might do
+ their own transient group allocation.
+
+ - The JoinHostGroup and LeaveHostGroup operations have become
+ non-blocking, because it is no longer necessary to await
+ approval from a multicast router when changing membership. It
+ is also no longer possible for a host to have its membership
+ revoked by a multicast router.
+
+ - The IGMP protocol is substantially different from that in
+ RFC-988, reflecting the changed roles of hosts and multicast
+ routers.
+
+ - The new IGMP requires that there be an "all-hosts" group.
+ There is no longer a need for an "all-multicast-agents" group.
+
+ Other changes that are not related to the shift of responsibility
+ are:
+
+ - The decision whether or not to loop back a multicast datagram
+ sent from a member of the destination group is now made at the
+ time the datagram is sent, rather than at the time the group
+ is joined. This gives the sender another degree of scope
+ control, beyond the IP time-to-live.
+
+ - The handling of IP time-to-live, and of multiple network
+ interfaces, has been more precisely specified.
+
+ - Hosts are no longer allowed to place an IP host group address
+ in a source routing option.
+
+ - The AcceptAddress and RejectAddress operations at the local
+ network service interface have been renamed JoinLocalGroup and
+ LeaveLocalGroup to emphasize their semantic similarity to the
+ JoinHostGroup and LeaveHostGroup operations at the IP service
+ interface.
+
+
+
+Deering [Page 18]
+
+RFC 1054 Host Extensions for IP Multicasting May 1988
+
+
+ - A new mapping algorithm for Ethernet multicast addresses has
+ been specified.
+
+ - The organization of the memo has been changed somewhat, and a
+ state transition diagram has been added to the IGMP
+ specification.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Deering [Page 19]
+