📄 rfc2236.txt
字号:
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 19977. 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]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -