rfc2236.txt
来自「RFC 的详细文档!」· 文本 代码 · 共 1,348 行 · 第 1/4 页
TXT
1,348 行
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]
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?