From 4bfd864f10b68b71482b35c818559068ef8d5797 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 27 Nov 2024 20:54:24 +0100 Subject: doc: Add RFC documents --- doc/rfc/rfc2236.txt | 1347 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1347 insertions(+) create mode 100644 doc/rfc/rfc2236.txt (limited to 'doc/rfc/rfc2236.txt') diff --git a/doc/rfc/rfc2236.txt b/doc/rfc/rfc2236.txt new file mode 100644 index 0000000..3a2c509 --- /dev/null +++ b/doc/rfc/rfc2236.txt @@ -0,0 +1,1347 @@ + + + + + + +Network Working Group W. Fenner +Request for Comments: 2236 Xerox PARC +Updates: 1112 November 1997 +Category: Standards Track + + + Internet Group Management Protocol, Version 2 + + +Status of this Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (1997). All Rights Reserved. + +Abstract + + This memo documents IGMPv2, used by IP hosts to report their + multicast group memberships to routers. It updates STD 5, RFC 1112. + + IGMPv2 allows group membership termination to be quickly reported to + the routing protocol, which is important for high-bandwidth multicast + groups and/or subnets with highly volatile group membership. + + This document is a product of the Inter-Domain Multicast Routing + working group within the Internet Engineering Task Force. Comments + are solicited and should be addressed to the working group's mailing + list at idmr@cs.ucl.ac.uk and/or the author(s). + +1. Definitions + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in RFC 2119 [RFC 2119]. + +2. Introduction + + The Internet Group Management Protocol (IGMP) is used by IP hosts to + report their multicast group memberships to any immediately- + neighboring multicast routers. This memo describes only the use of + IGMP between hosts and routers to determine group membership. + Routers that are members of multicast groups are expected to behave + + + +Fenner Standards Track [Page 1] + +RFC 2236 Internet Group Management Protocol November 1997 + + + as hosts as well as routers, and may even respond to their own + queries. IGMP may also be used between routers, but such use is not + specified here. + + Like ICMP, IGMP is a integral part of IP. It is required to be + implemented by all hosts wishing to receive IP multicasts. IGMP + messages are encapsulated in IP datagrams, with an IP protocol number + of 2. All IGMP messages described in this document are sent with IP + TTL 1, and contain the IP Router Alert option [RFC 2113] in their IP + header. 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Max Resp Time | Checksum | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Group Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +2.1. Type + + There are three types of IGMP messages of concern to the host- + router interaction: + + 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, as + described in section 1.4 . Membership Query messages are + referred to simply as "Query" messages. + + 0x16 = Version 2 Membership Report + + 0x17 = Leave Group + + There is an additional type of message, for backwards-compatibility + with IGMPv1: + + 0x12 = Version 1 Membership Report + + + + + + + +Fenner Standards Track [Page 2] + +RFC 2236 Internet Group Management Protocol November 1997 + + + This document refers to Membership Reports simply as "Reports". When + no version is specified, the statement applies equally to both + versions. + + Unrecognized message types should be silently ignored. New message + types may be used by newer versions of IGMP, by multicast routing + protocols, or other uses. + +2.2. 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. + + 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), as discussed in section 7.8. It also allows tuning of the + burstiness of IGMP traffic on a subnet, as discussed in section 7.3. + +2.3. 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 transmitting + packets, the checksum MUST be computed and inserted into this field. + When receiving packets, the checksum MUST be verified before + processing a packet. + +2.4. 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. + +2.5. Other fields + + Note that IGMP messages may be longer than 8 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 8 octets while processing the packet. However, the + IGMP checksum is always computed over the whole IP payload, not just + over the first 8 octets. + + + +Fenner Standards Track [Page 3] + +RFC 2236 Internet Group Management Protocol November 1997 + + +3. 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" means 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 for [Other Querier Present Interval], it + resumes the role of Querier. Routers periodically [Query Interval] + 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] General Queries spaced + closely together [Startup 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]. + + When a host receives a General Query, it sets delay timers for each + group (excluding the all-systems group) of 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 IP TTL of 1. If the host receives another + + + +Fenner Standards Track [Page 4] + +RFC 2236 Internet Group Management Protocol November 1997 + + + 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. + + 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]. 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. + + When a host joins a multicast group, it should immediately transmit + an unsolicited Version 2 Membership Report for that group, 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]. (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). + + 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 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] 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. + + + + +Fenner Standards Track [Page 5] + +RFC 2236 Internet Group Management Protocol November 1997 + + + 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. + +4. Compatibility with IGMPv1 Routers + + An IGMPv2 host may be placed on a subnet where the Querier router has + not yet been upgraded to IGMPv2. The following requirements apply: + + The IGMPv1 router will send General Queries with the Max + Response Time set to 0. This MUST be interpreted as a value of + 100 (10 seconds). + + The IGMPv1 router expects Version 1 Membership Reports in + response to its Queries, and will not pay attention to Version 2 + Membership Reports. Therefore, a state variable MUST be kept + for each interface, describing whether the multicast Querier on + that interface is running IGMPv1 or IGMPv2. This variable MUST + be based upon whether or not an IGMPv1 query was heard in the + last [Version 1 Router Present Timeout] seconds, and MUST NOT be + based upon the type of the last Query heard. This state + variable MUST be used to decide what type of Membership Reports + to send for unsolicited Membership Reports as well as Membership + Reports in response to Queries. + + An IGMPv2 host MAY suppress Leave Group messages on a network + where the Querier is using IGMPv1. + + An IGMPv2 router may be placed on a subnet where at least one router + on the subnet has not yet been upgraded to IGMPv2. The following + requirements apply: + + If any IGMPv1 routers are present, the querier MUST use IGMPv1. + The use of IGMPv1 must be administratively configured, as there + is no reliable way of dynamically determining whether IGMPv1 + routers are present on a network. Implementations MAY provide a + way for system administrators to enable the use of IGMPv1 on + their routers; in the absence of explicit configuration, the + configuration MUST default to IGMPv2. When in IGMPv1 mode, + routers MUST send Periodic Queries with a Max Response Time of + 0, and MUST ignore Leave Group messages. They SHOULD also warn + about receiving an IGMPv2 query, although such warnings MUST be + rate-limited. + + + +Fenner Standards Track [Page 6] + +RFC 2236 Internet Group Management Protocol November 1997 + + + If a router is not explicitly configured to use IGMPv1 and hears + an IGMPv1 Query, it SHOULD log a warning. These warnings MUST + be rate-limited. + +5. Compatibility with IGMPv1 Hosts + + An IGMPv2 host may be placed on a subnet where there are hosts that + have not yet been upgraded to IGMPv2. The following requirement + applies: + + The host MUST allow its Membership Report to be suppressed by + either a Version 1 Membership Report or a Version 2 Membership + Report. + + An IGMPv2 router may be placed on a subnet where there are hosts that + have not yet been upgraded to IGMPv2. The following requirements + apply: + + If a router receives a Version 1 Membership Report, it MUST set + a timer to note that there are version 1 hosts present which are + members of the group for which it heard the report. This timer + should be the same as the [Group Membership Interval]. + + If there are version 1 hosts present for a particular group, a + router MUST ignore any Leave Group messages that it receives for + that group. + +6. Host State Diagram + + Host 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 multicast 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. + + + + + + + +Fenner Standards Track [Page 7] + +RFC 2236 Internet Group Management Protocol November 1997 + + + 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 either a valid + General Membership Query message, or a valid Group-Specific + Membership Query message. To be valid, the Query message must be + at least 8 octets long, and have a correct IGMP checksum. The + group address in the IGMP header must either be zero (a General + Query) or a valid multicast group address (a Group-Specific Query). + A General Query applies to all memberships on the interface from + which the Query is received. A Group-Specific Query applies to + membership in a single group on the interface from which the Query + is received. Queries are ignored for memberships in the Non-Member + state. + + - "report received" occurs when the host receives a valid IGMP + Membership Report message (Version 1 or Version 2). To be valid, + the Report message must be at least 8 octets long and have a + correct IGMP checksum. A Membership Report applies only to the + membership in the group identified by the Membership Report, on the + interface from which the Membership 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 seven possible actions that may be taken in response to the + above events: + + - "send report" for the group on the interface. The type of report + is determined by the state of the interface. The Report Message is + sent to the group being reported. + + + + + + + + +Fenner Standards Track [Page 8] + +RFC 2236 Internet Group Management Protocol November 1997 + + + - "send leave" for the group on the interface. If the interface + state says the Querier is running IGMPv1, this action SHOULD be + skipped. If the flag saying we were the last host to report is + cleared, this action MAY be skipped. The Leave Message is sent to + the ALL-ROUTERS group (224.0.0.2). + + - "set flag" that we were the last host to send a report for this + group. + + - "clear flag" since we were not the last host to send a report for + this group. + + - "start timer" for the group on the interface, using a delay value + chosen uniformly from the interval (0, Max Response Time], where + Max Response time is specified in the Query. If this is an + unsolicited Report, the timer is set to a delay value chosen + uniformly from the interval (0, [Unsolicited Report Interval] ]. + + - "reset timer" for the group on the interface to a new value, using + a delay value chosen uniformly from the interval (0, Max Response + Time], as described in "start timer". + + - "stop timer" for the group on the interface. + + In all of the following state diagrams, each state transition arc is + labeled with the event that causes the transition, and, in + parentheses, any actions taken during the transition. Note that the + transition is always triggered by the event; even if the action is + conditional, the transition still occurs. + + + + + + + + + + + + + + + + + + + + + + +Fenner Standards Track [Page 9] + +RFC 2236 Internet Group Management Protocol November 1997 + + + ________________ + | | + | | + | | + | | + --------->| Non-Member |<--------- + | | | | + | | | | + | | | | + | |________________| | + | | | + | leave group | join group | leave group + | (stop timer, |(send report, | (send leave + | send leave if | set flag, | if flag set) + | flag set) | start timer) | + ________|________ | ________|________ + | |<--------- | | + | | | | + | |<-------------------| | + | | query received | | + | Delaying Member | (start timer) | Idle Member | + ---->| |------------------->| | + | | | report received | | + | | | (stop timer, | | + | | | clear flag) | | + | |_________________|------------------->|_________________| + | query received | timer expired + | (reset timer if | (send report, + | Max Resp Time | set flag) + | < current timer) | + ------------------- + + + The all-systems 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. + + In addition, a host may be in one of two possible states with respect + to any single network interface: + + - "No IGMPv1 Router Present", when the host has not heard an IGMPv1 + style query for the [Version 1 Router Present Timeout]. This is + the initial state. + + - "IGMPv1 Router Present", when the host has heard an IGMPv1 style + query within the [Version 1 Router Present Timeout]. + + + + +Fenner Standards Track [Page 10] + +RFC 2236 Internet Group Management Protocol November 1997 + + + There are two events that can cause state transitions: + + - "IGMPv1 query received", when the host receives a query with the + Max Response Time field set to 0. + + - "timer expires", when the timer set to note the presence of an + IGMPv1 router expires. + + And a single action that can be triggered by an event: + + - "set timer", setting the timer to its maximum value [Version 1 + Router Present Timeout] and (re)starting it. + + ________________ + | | + | | + | No IGMPv1 | + | Router | + | Present | + | | + ---->| |---- + | | | | + | |________________| | + timer expires | | IGMPv1 query + | ________________ | received + | | | | (set timer) + | | | | + | | | | + -----| IGMPv1 |<--- + | Router | + | Present | + | | + ---->| |---- + | |________________| | + | | + | IGMPv1 query received | + | (set timer) | + --------------------------- + + + + + + + + + + + + + +Fenner Standards Track [Page 11] + +RFC 2236 Internet Group Management Protocol November 1997 + + +7. Router State Diagram + + Router behavior is more formally specified by the state transition + diagrams below. + + A router may be in one of two possible states with respect to any + single attached network: + + - "Querier", when this router is designated to transmit IGMP + Membership Queries on this network. + + - "Non-Querier", when there is another router designated to transmit + IGMP membership Queries on this network. + + The following three events can cause the router to change states: + + - "query timer expired" occurs when the timer set for query + transmission expires. + + - "query received from a router with a lower IP address" occurs when + an IGMP Membership Query is received from a router on the same + network with a lower IP address. + + - "other querier present timer expired" occurs when the timer set to + note the presence of another querier with a lower IP address on the + network expires. + + There are three actions that may be taken in response to the above + events: + + - "start general query timer" for the attached network. + + - "start other querier present timer" for the attached network [Other + Querier Present Interval]. + + - "send general query" on the attached network. The General Query is + sent to the all-systems group (224.0.0.1), and has a Max Response + Time of [Query Response Interval]. + + + + + + + + + + + + + +Fenner Standards Track [Page 12] + +RFC 2236 Internet Group Management Protocol November 1997 + + + -------------------------------- + _______|________ gen. query timer | + --------- | | expired | + | Initial |---------------->| | (send general query, | + --------- (send gen. q., | | set gen. q. timer) | + set initial gen. q. | |<---------------------- + timer) | Querier | + | | + -----| |<--- + | | | | + | |________________| | + query received from a | | other querier + router with a lower | | present timer + IP address | | expired + (set other querier | ________________ | (send general + present timer) | | | | query,set gen. + | | | | q. timer) + | | | | + ---->| Non |---- + | Querier | + | | + | | + ---->| |---- + | |________________| | + | query received from a | + | router with a lower IP | + | address | + | (set other querier | + | present timer) | + --------------------------- + + A router should start in the Initial state on all attached networks, + and immediately move to Querier state. + + In addition, to keep track of which groups have members, a router may + be in one of four possible states with respect to any single IP + multicast group on any single attached network: + + - "No Members Present" state, when there are no hosts on the network + which have sent reports for this multicast group. This is the + initial state for all groups on the router; it requires no storage + in the router. + + - "Members Present" state, when there is a host on the network which + has sent a Membership Report for this multicast group. + + + + + + +Fenner Standards Track [Page 13] + +RFC 2236 Internet Group Management Protocol November 1997 + + + - "Version 1 Members Present" state, when there is an IGMPv1 host on + the network which has sent a Version 1 Membership Report for this + multicast group. + + - "Checking Membership" state, when the router has received a + Leave Group message but has not yet heard a Membership Report for + the multicast group. + + There are six significant events that can cause router state + transitions: + + - "v2 report received" occurs when the router receives a Version 2 + Membership Report for the group on the interface. To be valid, the + Report message must be at least 8 octets long and must have a + correct IGMP checksum. + + - "v1 report received" occurs when the router receives a Version 1 + Membership report for the group on the interface. The same + validity requirements apply. + + - "leave received" occurs when the router receives an IGMP Group + Leave message for the group on the interface. To be valid, the + Leave message must be at least 8 octets long and must have a + correct IGMP checksum. + + - "timer expired" occurs when the timer set for a group membership + expires. + + - "retransmit timer expired" occurs when the timer set to retransmit + a group-specific Membership Query expires. + + - "v1 host timer expired" occurs when the timer set to note the + presence of version 1 hosts as group members expires. + + There are six possible actions that may be taken in response to the + above events: + + - "start timer" for the group membership on the interface - also + resets the timer to its initial value [Group Membership Interval] + if the timer is currently running. + + - "start timer*" for the group membership on the interface - this + alternate action sets the timer to [Last Member Query Interval] * + [Last Member Query Count] if this router is a Querier, or the [Max + Response Time] in the packet * [Last Member Query Count] if this + router is a non-Querier. + + + + + +Fenner Standards Track [Page 14] + +RFC 2236 Internet Group Management Protocol November 1997 + + + - "start retransmit timer" for the group membership on the interface + [Last Member Query Interval]. + + - "start v1 host timer" for the group membership on the interface, + also resets the timer to its initial value [Group Membership + Interval] if the timer is currently running. + + - "send group-specific query" for the group on the attached network. + The Group-Specific Query is sent to the group being queried, and + has a Max Response Time of [Last Member Query Interval]. + + - "notify routing +" notify the routing protocol that there are + members of this group on this connected network. + + - "notify routing -" notify the routing protocol that there are no + longer any members of this group on this connected network. + + The state diagram for a router in Querier state follows: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fenner Standards Track [Page 15] + +RFC 2236 Internet Group Management Protocol November 1997 + + + ________________ + ----------------------------| |<----------------------- +| | |timer expired | +| timer expired| |(notify routing -, | +| (notify routing -)| No Members |clear rxmt tmr) | +| ------->| Present |<------- | +| | | | | | +|v1 report rec'd | | | | ------------ | +|(notify routing +, | |________________| | | rexmt timer| | +| start timer, | | | | expired | | +| start v1 host | v2 report received| | | (send g-s | | +| timer) | (notify routing +,| | | query, | | +| | start timer)| | | st rxmt | | +| __________|______ | _____|_|______ tmr)| | +| | |<------------ | | | | +| | | | |<----- | +| | | v2 report received | | | +| | | (start timer) | | | +| | Members Present |<-------------------| Checking | | +| ----->| | leave received | Membership | | +| | | | (start timer*, | | | +| | | | start rexmt timer,| | | +| | | | send g-s query) | | | +| | --->| |------------------->| | | +| | | |_________________| |______________| | +| | |v2 report rec'd | | | | +| | |(start timer) | |v1 report rec'd |v1 report rec'd | +| | ---------------- |(start timer, |(start timer, | +| |v1 host | start v1 host timer) | start v1 host | +| |tmr ______________V__ | timer) | +| |exp'd | |<---------------------- | +| ------| | | +| | Version 1 |timer expired | +| | Members Present |(notify routing -) | + ------->| |------------------------------------------- + | |<-------------------- + ------->|_________________| v1 report rec'd | +| v2 report rec'd | | (start timer, | +| (start timer) | | start v1 host timer) | + ----------------- -------------------------- + + + + + + + + + + + +Fenner Standards Track [Page 16] + +RFC 2236 Internet Group Management Protocol November 1997 + + + The state diagram for a router in Non-Querier state is similar, + but non-Queriers do not send any messages and are only driven by + message reception.Note that non-Queriers do not care whether a + Membership Report message is Version 1 or Version 2. + + ________________ + | | + | | + timer expired| |timer expired + (notify routing -)| No Members |(notify routing -) + --------->| Present |<--------- + | | | | + | | | | + | | | | + | |________________| | + | | | + | |report received | + | |(notify routing +,| + | | start timer) | + ________|________ | ________|________ + | |<--------- | | + | | report received | | + | | (start timer) | | + | Members Present |<-------------------| Checking | + | | g-s query rec'd | Membership | + | | (start timer*) | | + ---->| |------------------->| | + | |_________________| |_________________| + | report received | + | (start timer) | + ----------------- + +8. List of timers and default values + + Most of these timers are configurable. If non-default settings + are used, they MUST be consistent among all routers on a single + link. Note that parentheses are used to group expressions to + make the algebra clear. + +8.1. Robustness Variable + + The Robustness Variable allows tuning for the expected packet loss on + a subnet. If a subnet is expected to be lossy, the Robustness + Variable may be increased. IGMP is robust to (Robustness Variable-1) + packet losses. The Robustness Variable MUST NOT be zero, and SHOULD + NOT be one. Default: 2 + + + + + +Fenner Standards Track [Page 17] + +RFC 2236 Internet Group Management Protocol November 1997 + + +8.2. Query Interval + + The Query Interval is the interval between General Queries sent by + the Querier. Default: 125 seconds. + + By varying the [Query Interval], an administrator may tune the number + of IGMP messages on the subnet; larger values cause IGMP Queries to + be sent less often. + +8.3. Query Response Interval + + The Max Response Time inserted into the periodic General Queries. + Default: 100 (10 seconds) + + By varying the [Query Response Interval], an administrator may tune + the burstiness of IGMP messages on the subnet; larger values make the + traffic less bursty, as host responses are spread out over a larger + interval. The number of seconds represented by the [Query Response + Interval] must be less than the [Query Interval]. + +8.4. Group Membership Interval + + The Group Membership Interval is the amount of time that must pass + before a multicast router decides there are no more members of a + group on a network. This value MUST be ((the Robustness Variable) + times (the Query Interval)) plus (one Query Response Interval). + +8.5. Other Querier Present Interval + + The Other Querier Present Interval is the length of time that must + pass before a multicast router decides that there is no longer + another multicast router which should be the querier. This value + MUST be ((the Robustness Variable) times (the Query Interval)) plus + (one half of one Query Response Interval). + +8.6. Startup Query Interval + + The Startup Query Interval is the interval between General Queries + sent by a Querier on startup. Default: 1/4 the Query Interval. + +8.7. Startup Query Count + + The Startup Query Count is the number of Queries sent out on startup, + separated by the Startup Query Interval. Default: the Robustness + Variable. + + + + + + +Fenner Standards Track [Page 18] + +RFC 2236 Internet Group Management Protocol November 1997 + + +8.8. Last Member Query Interval + + The Last Member Query Interval is the Max Response Time inserted into + Group-Specific Queries sent in response to Leave Group messages, and + is also the amount of time between Group-Specific Query messages. + Default: 10 (1 second) + + This value may be tuned to modify the "leave latency" of the network. + A reduced value results in reduced time to detect the loss of the + last member of a group. + +8.9. Last Member Query Count + + The Last Member Query Count is the number of Group-Specific Queries + sent before the router assumes there are no local members. Default: + the Robustness Variable. + +8.10. Unsolicited Report Interval + + The Unsolicited Report Interval is the time between repetitions of a + host's initial report of membership in a group. Default: 10 seconds. + +8.11. Version 1 Router Present Timeout + + The Version 1 Router Present Timeout is how long a host must wait + after hearing a Version 1 Query before it may send any IGMPv2 + messages. Value: 400 seconds. + +9. Message destinations + + This information is provided elsewhere in the document, but is + summarized here for convenience. + + Message Type Destination Group + ------------ ----------------- + General Query ALL-SYSTEMS (224.0.0.1) + Group-Specific Query The group being queried + Membership Report The group being reported + Leave Message ALL-ROUTERS (224.0.0.2) + + + Note: in older (i.e., non-standard and now obsolete) versions of + IGMPv2, hosts send Leave Messages to the group being left. A + router SHOULD accept Leave Messages addressed to the group being + left in the interests of backwards compatibility with such hosts. + In all cases, however, hosts MUST send to the ALL-ROUTERS address + to be compliant with this specification. + + + + +Fenner Standards Track [Page 19] + +RFC 2236 Internet Group Management Protocol November 1997 + + +10. Security Considerations + + We consider the ramifications of a forged message of each type. + + Query Message: + + A forged Query message from a machine with a lower IP address than + the current Querier will cause Querier duties to be assigned to the + forger. If the forger then sends no more Query messages, other + routers' Other Querier Present timer will time out and one will + resume the role of Querier. During this time, if the forger + ignores Leave Messages, traffic might flow to groups with no + members for up to [Group Membership Interval]. + + A forged Query message sent to a group with members will cause the + hosts which are members of the group to report their memberships. + This causes a small amount of extra traffic on the LAN, but causes + no protocol problems. + + Report messages: + + A forged Report message may cause multicast routers to think there + are members of a group on a subnet when there are not. Forged + Report messages from the local subnet are meaningless, since + joining a group on a host is generally an unprivileged operation, + so a local user may trivially gain the same result without forging + any messages. Forged Report messages from external sources are + more troublesome; there are two defenses against externally forged + Reports: + + - Ignore the Report if you cannot identify the source + address of the packet as belonging to a subnet assigned to the + interface on which the packet was received. This solution means + that Reports sent by mobile hosts without addresses on the local + subnet will be ignored. + + - Ignore Report messages without Router Alert options [RFC 2113], + and require that routers not forward Report messages. (The + requirement is not a requirement of generalized filtering in the + forwarding path, since the packets already have Router Alert + options in them). This solution breaks backwards compatibility + with implementations of earlier versions of this specification + which did not require Router Alert. + + + + + + + + +Fenner Standards Track [Page 20] + +RFC 2236 Internet Group Management Protocol November 1997 + + + A forged Version 1 Report Message may put a router into "version 1 + members present" state for a particular group, meaning that the + router will ignore Leave messages. This can cause traffic to flow + to groups with no members for up to [Group Membership Interval]. + There are two defenses against forged v1 Reports: + + - To defend against externally sourced v1 Reports, ignore the + Report if you cannot identify the source address of the packet as + belonging to a subnet assigned to the interface on which the + packet was received. This solution means that v1 Reports sent by + mobile hosts without addresses on the local subnet will be + ignored. + + - Provide routers with a configuration switch to ignore Version 1 + messages completely. This breaks automatic compatibility with + Version 1 hosts, so should only be used in situations where "fast + leave" is critical. This solution protects against forged + version 1 reports from the local subnet as well. + + Leave message: + + A forged Leave message will cause the Querier to send out Group- + Specific Queries for the group in question. This causes extra + processing on each router and on each member of the group, but can + not cause loss of desired traffic. There are two defenses against + externally forged Leave messages: + + - Ignore the Leave message if you cannot identify the source + address of the packet as belonging to a subnet assigned to the + interface on which the packet was received. This solution means + that Leave messages sent by mobile hosts without addresses on the + local subnet will be ignored. + + - Ignore Leave messages without Router Alert options [RFC 2113], + and require that routers not forward Leave messages. (The + requirement is not a requirement of generalized filtering in the + forwarding path, since the packets already have Router Alert + options in them). This solution breaks backwards compatibility + with implementations of earlier versions of this specification + which did not require Router Alert. + +11. Acknowledgments + + IGMPv2 was designed by Rosen Sharma and Steve Deering. + + + + + + + +Fenner Standards Track [Page 21] + +RFC 2236 Internet Group Management Protocol November 1997 + + +12. References + + RFC 2119 Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + RFC 2113 Katz, D., "IP Router Alert Option," RFC 2113, + February 1997. + + RFC 1112 Deering, S., "Host Extensions for IP Multicasting", + STD 5, RFC 1112, August 1989. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fenner Standards Track [Page 22] + +RFC 2236 Internet Group Management Protocol November 1997 + + +13. Appendix I - Changes from IGMPv1 + + The IGMPv1 "Version" and "Type" fields are combined into a single + "Type" field. + + A new IGMP Type is assigned to Version 2 Membership Report messages, + so a router may tell the difference between an IGMPv1 and IGMPv2 host + report. + + A new IGMP Type is created for the IGMPv2 Leave Group message. + + The Membership Query message is changed so that a previously unused + field contains a new value, the Max Response Time. + + The IGMPv2 spec now specifies a querier election mechanism. In + IGMPv1, the querier election was left up to the multicast routing + protocol, and different protocols used different mechanisms. This + could result in more than one querier per network, so the election + mechanism has been standardized in IGMPv2. However, this means that + care must be taken when an IGMPv2 router is trying to coexist with an + IGMPv1 router that uses a different querier election mechanism. In + particular, it means that an IGMPv2 router must be able to act as an + IGMPv1 router on a particular network if configured to do so. The + actions required include: + + - Set the Max Response Time field to 0 in all queries. + + - Ignore Leave Group messages. + + The IGMPv2 spec relaxes the requirements on validity-checking for + Membership Queries and Membership Reports. When upgrading an + implementation, be sure to remove any checks that do not belong. + + The IGMPv2 spec requires the presence of the IP Router Alert option + [RFC 2113] in all packets described in this memo. + +14. Author's Address + + William C. Fenner + Xerox PARC + 3333 Coyote Hill Road + Palo Alto, CA 94304 + Phone: +1 650 812 4816 + + EMail: fenner@parc.xerox.com + + + + + + +Fenner Standards Track [Page 23] + +RFC 2236 Internet Group Management Protocol November 1997 + + +15. Full Copyright Statement + + Copyright (C) The Internet Society (1997). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + + + + + + + + + + + + + + + + + + + + + + + + +Fenner Standards Track [Page 24] + -- cgit v1.2.3