Network Working Group                                            W. Fenner
Request for Comments: 2236                                      Xerox PARC
Updates: 1112                                                November 1997
Category: Standards Track
        
Network Working Group                                            W. Fenner
Request for Comments: 2236                                      Xerox PARC
Updates: 1112                                                November 1997
Category: Standards Track
        

Internet Group Management Protocol, Version 2

Internet组管理协议,版本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.

本文件规定了互联网社区的互联网标准跟踪协议,并要求进行讨论和提出改进建议。有关本协议的标准化状态和状态,请参考当前版本的“互联网官方协议标准”(STD 1)。本备忘录的分发不受限制。

Copyright Notice

版权公告

Copyright (C) The Internet Society (1997). All Rights Reserved.

版权所有(C)互联网协会(1997年)。版权所有。

Abstract

摘要

This memo documents IGMPv2, used by IP hosts to report their multicast group memberships to routers. It updates STD 5, RFC 1112.

此备忘录记录了IP主机用来向路由器报告其多播组成员身份的IGMPv2。它更新了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.

IGMPv2允许快速向路由协议报告组成员资格终止,这对于具有高度易失性组成员资格的高带宽多播组和/或子网非常重要。

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).

本文档是Internet工程任务组内的域间多播路由工作组的产品。征求意见,并应发送至工作组的邮件列表:idmr@cs.ucl.ac.uk和/或作者。

1. Definitions
1. 定义

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].

本文件中的关键词“必须”、“不得”、“要求”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照RFC 2119[RFC 2119]中的说明进行解释。

2. Introduction
2. 介绍

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

IP主机使用Internet组管理协议(IGMP)向任何相邻的多播路由器报告其多播组成员身份。本备忘录仅描述主机和路由器之间使用IGMP来确定组成员身份。作为多播组成员的路由器应能正常工作

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.

作为主机和路由器,甚至可以响应自己的查询。IGMP也可在路由器之间使用,但此处未指定此类使用。

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:

与ICMP一样,IGMP也是IP不可分割的一部分。它需要由希望接收IP多播的所有主机实现。IGMP消息封装在IP数据报中,IP协议号为2。本文档中描述的所有IGMP消息均与IP TTL 1一起发送,并在其IP报头中包含IP路由器警报选项[RFC 2113]。主机关注的所有IGMP消息的格式如下:

    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                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        
    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
2.1. 类型

There are three types of IGMP messages of concern to the host-router interaction:

主机-路由器交互涉及三种类型的IGMP消息:

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.

0x11=成员资格查询有两个子类型的成员资格查询消息:-常规查询,用于了解哪些组在连接的网络上有成员。-特定于组的查询,用于了解特定组在连接的网络上是否有任何成员。

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.

如第1.4节所述,这两条消息通过组地址进行区分。成员资格查询消息简称为“查询”消息。

   0x16 = Version 2 Membership Report
        
   0x16 = Version 2 Membership Report
        
   0x17 = Leave Group
        
   0x17 = Leave Group
        

There is an additional type of message, for backwards-compatibility with IGMPv1:

对于与IGMPv1的向后兼容性,还有一种额外类型的消息:

   0x12 = Version 1 Membership Report
        
   0x12 = Version 1 Membership Report
        

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.

无法识别的消息类型应被静默忽略。新的消息类型可由较新版本的IGMP、多播路由协议或其他用途使用。

2.2. Max Response Time
2.2. 最大响应时间

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.

“最大响应时间”字段仅在成员资格查询消息中有意义,并以1/10秒为单位指定发送响应报告之前允许的最大时间。在所有其他消息中,发送方将其设置为零,接收方将其忽略。

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.

改变此设置允许IGMPv2路由器调整“离开延迟”(从最后一台主机离开组到路由协议被通知不再有成员之间的时间),如第7.8节所述。它还允许调整子网上IGMP流量的突发性,如第7.3节所述。

2.3. Checksum
2.3. 校验和

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.

校验和是整个IGMP消息(整个IP有效负载)的16位1的补码和。为了计算校验和,校验和字段设置为零。传输数据包时,必须计算校验和并将其插入该字段。接收数据包时,必须在处理数据包之前验证校验和。

2.4. Group Address
2.4. 组地址

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.

在成员资格报告或离开组消息中,组地址字段保存正在报告或离开的组的IP多播组地址。

2.5. Other fields
2.5. 其他领域

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.

请注意,IGMP消息可能长于8个八位字节,特别是IGMP的未来向后兼容版本。只要类型是可识别的类型,IGMPv2实现就必须在处理数据包时忽略超过前8个八位字节的任何内容。然而,IGMP校验和总是在整个IP有效负载上计算,而不仅仅是在前8个八位字节上。

3. Protocol Description
3. 协议描述

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].

多播路由器使用IGMP来了解哪些组在每个连接的物理网络上都有成员。多播路由器为每个连接的网络保留多播组成员的列表,并为每个成员保留计时器。“多播组成员资格”是指在给定的连接网络上存在多播组的至少一个成员,而不是所有成员的列表。对于每个连接的网络,多播路由器可以承担两个角色之一:查询者或非查询者。每个物理网络通常只有一个查询器。所有多播路由器在每个连接的网络上作为查询器启动。如果多播路由器听到来自IP地址较低的路由器的查询消息,它必须成为该网络上的非查询者。如果一个路由器没有从另一个路由器听到[Other Querier Present Interval]的查询消息,它将恢复Querier的角色。路由器定期[Query Interval]在该路由器作为查询者的每个连接网络上发送一般查询,以请求成员信息。在启动时,路由器应发送[startup Query Count]常规查询,并将[startup Query Interval]紧密隔开,以便快速可靠地确定成员信息。一般查询发往所有系统多播组(224.0.0.1),组地址字段为0,最大响应时间为[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

当主机接收到常规查询时,它会在接收查询的接口上为其所属的每个组(不包括所有系统组)设置延迟计时器。使用主机上可用的最高时钟粒度,将每个计时器设置为不同的随机值,从查询数据包中指定的最大响应时间范围(0,最大响应时间)中选择。当主机接收到特定于组的查询时,它将延迟计时器设置为从该范围中选择的随机值(0,最大响应时间]如上所述,对于被查询的组,如果该组是从中接收查询的接口上的成员。如果该组的计时器已在运行,则仅当请求的最大响应时间小于运行计时器的剩余值时,才会将其重置为随机值。当组的计时器过期时,主机将停止多播向组发送版本2成员身份报告,IP TTL为1。如果主机收到另一个

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.

主机的报告(版本1或2)当计时器运行时,它会停止指定组的计时器,并且不发送报告,以抑制重复的报告。

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.

当路由器收到报告时,它会将报告的组添加到其接收报告的网络上的多播组成员列表中,并将成员身份计时器设置为[group membership Interval]。重复的报告刷新计时器。如果在此计时器过期之前未收到特定组的报告,路由器将假定该组没有本地成员,并且不需要将该组的远程起源的多播转发到连接的网络上。

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).

当主机加入多播组时,如果它是网络上该组的第一个成员,它应该立即为该组发送未经请求的版本2成员报告。为了弥补初始成员报告丢失或损坏的可能性,建议在短时间延迟后重复一次或两次[未经请求的报告间隔]。(实现这一点的一个简单方法是发送初始版本2成员资格报告,然后就好像接收到该组的特定于组的查询一样,并适当地设置计时器)。

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.

当主机离开一个多播组时,如果它是最后一个用该组的成员报告答复查询的主机,它应该向所有路由器多播组发送一条离开组消息(224.0.0.2)。如果它不是最后一个答复查询的主机,它可能不会发送任何内容,因为子网上必须有另一个成员。这是一个减少流量的优化;如果主机没有足够的存储空间来记住它是否是最后一个应答的主机,那么它在离开组时可能会始终发送离开组消息。路由器应接受发送给被留下的组的离开组消息,以适应本标准早期版本的实施。“离开”组消息被发送到“所有路由器”组,因为其他组成员不需要知道主机已离开该组,但将消息发送到该组不会造成任何伤害。

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.

当查询者在接收界面上接收到具有组成员的组的请假组消息时,它会每隔[Last Member Query Interval]向要离开的组发送[Last Member Query Count]组特定查询。这些特定于组的查询的最大响应时间设置为[上次成员查询间隔]。如果在最后一个查询的响应时间到期后没有收到任何报告,路由器将假定该组没有本地成员,如上所述。在此期间,将忽略任何查询器到非查询器的转换;同一路由器不断发送特定于组的查询。

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
4. 与IGMPv1路由器的兼容性

An IGMPv2 host may be placed on a subnet where the Querier router has not yet been upgraded to IGMPv2. The following requirements apply:

IGMPv2主机可能位于查询路由器尚未升级到IGMPv2的子网上。以下要求适用:

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).

IGMPv1路由器将发送最大响应时间设置为0的常规查询。这必须解释为100(10秒)的值。

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.

IGMPv1路由器需要版本1成员资格报告来响应其查询,而不会关注版本2成员资格报告。因此,必须为每个接口保留一个状态变量,描述该接口上的多播查询器是运行IGMPv1还是IGMPv2。此变量必须基于在最后[Version 1 Router Present Timeout]秒内是否听到IGMPv1查询,并且不得基于听到的最后一次查询的类型。此状态变量必须用于决定为未经请求的成员资格报告以及响应查询的成员资格报告发送何种类型的成员资格报告。

An IGMPv2 host MAY suppress Leave Group messages on a network where the Querier is using IGMPv1.

IGMPv2主机可以在查询者正在使用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:

IGMPv2路由器可以放置在子网上,其中子网上至少有一个路由器尚未升级到IGMPv2。以下要求适用:

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.

如果存在任何IGMPv1路由器,查询者必须使用IGMPv1。必须对IGMPv1的使用进行管理配置,因为没有可靠的方法动态确定网络上是否存在IGMPv1路由器。实施可能为系统管理员提供一种方法,使其能够在路由器上使用IGMPv1;在没有显式配置的情况下,配置必须默认为IGMPv2。在IGMPv1模式下,路由器必须发送最大响应时间为0的定期查询,并且必须忽略离开组消息。他们还应该就接收IGMPv2查询发出警告,尽管此类警告必须有速率限制。

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.

如果路由器未明确配置为使用IGMPv1并听到IGMPv1查询,则应记录警告。这些警告必须是有限制的。

5. Compatibility with IGMPv1 Hosts
5. 与IGMPv1主机的兼容性

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:

IGMPv2主机可以放置在子网中,其中有尚未升级到IGMPv2的主机。以下要求适用:

The host MUST allow its Membership Report to be suppressed by either a Version 1 Membership Report or a Version 2 Membership Report.

主机必须允许其成员资格报告被版本1成员资格报告或版本2成员资格报告抑制。

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:

IGMPv2路由器可以放置在子网中,其中有尚未升级到IGMPv2的主机。以下要求适用:

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].

如果路由器收到版本1成员资格报告,它必须设置计时器以注意存在版本1主机,这些主机是它听到报告的组的成员。此计时器应与[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.

如果特定组存在版本1主机,路由器必须忽略它为该组接收的任何离开组消息。

6. Host State Diagram
6. 主机状态图

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:

下面的状态转换图更正式地指定了主机行为。对于任何单个网络接口上的任何单个IP多播组,主机可能处于三种可能状态之一:

- "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.

- “Delaying Member”(延迟成员)状态,主机属于接口上的组,并且该成员的报告延迟计时器正在运行。

- "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:

有五个重要事件可导致IGMP状态转换:

- "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.

- 当主机收到有效的一般成员资格查询消息或有效的特定于组的成员资格查询消息时,会发生“查询已接收”。为了有效,查询消息必须至少有8个八位字节长,并且具有正确的IGMP校验和。IGMP标头中的组地址必须为零(常规查询)或有效的多播组地址(特定于组的查询)。一般查询适用于接收查询的接口上的所有成员身份。特定于组的查询适用于接收查询的接口上单个组的成员资格。对于非成员国中的成员身份,将忽略查询。

- "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.

- 当主机收到有效的IGMP成员资格报告消息(版本1或版本2)时,会发生“已接收报告”。为了有效,报告消息必须至少有8个八位字节长,并且具有正确的IGMP校验和。成员资格报告仅适用于接收成员资格报告的界面上由成员资格报告确定的集团成员资格。对于非成员国或空闲成员国的成员身份,它将被忽略。

- "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.

所有其他事件,如接收无效的IGMP消息,或除查询或报告之外的IGMP消息,在所有状态下都将被忽略。

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.

- 界面上组的“发送报告”。报告的类型由接口的状态决定。报告消息将发送到正在报告的组。

- "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).

- 界面上组的“发送休假”。如果接口状态表示查询器正在运行IGMPv1,则应跳过此操作。如果清除了表示我们是最后一个报告的主机的标志,则可能会跳过此操作。离开消息被发送到全路由器组(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] ].

- “启动计时器”用于接口上的组,使用从间隔(0,最大响应时间)中统一选择的延迟值,其中在查询中指定了最大响应时间。如果这是未经请求的报告,则计时器设置为从间隔(0,[未经请求的报告间隔])中统一选择的延迟值。

- "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".

- 如“启动计时器”中所述,使用从间隔(0,最大响应时间)中统一选择的延迟值,将接口上的组“重置计时器”设置为新值。

- "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.

在以下所有状态图中,每个状态转换弧都标有导致转换的事件,括号中还标有转换期间采取的任何操作。注意,转换总是由事件触发;即使动作是有条件的,转换仍然会发生。

                              ________________
                             |                |
                             |                |
                             |                |
                             |                |
                   --------->|   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) |
    -------------------
        
                              ________________
                             |                |
                             |                |
                             |                |
                             |                |
                   --------->|   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.

所有系统组(地址224.0.0.1)作为特例处理。主机在每个接口上以该组的空闲成员状态启动,从不转换到另一个状态,也从不发送该组的报告。

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路由器”,当主机未听到[Version 1 Router Present Timeout]的IGMPv1样式查询时。这是初始状态。

- "IGMPv1 Router Present", when the host has heard an IGMPv1 style query within the [Version 1 Router Present Timeout].

- “IGMPv1路由器存在”,当主机在[Version 1 Router Present Timeout]内听到IGMPv1样式的查询时。

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.

- 当主机接收到最大响应时间字段设置为0的查询时,“IGMPv1查询已接收”。

- "timer expires", when the timer set to note the presence of an IGMPv1 router expires.

- “timer expires”,当设置为记录IGMPv1路由器存在的计时器过期时。

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.

- “设置计时器”,将计时器设置为其最大值[版本1路由器当前超时]并(重新)启动它。

                              ________________
                             |                |
                             |                |
                             |   No IGMPv1    |
                             |     Router     |
                             |    Present     |
                             |                |
                        ---->|                |----
                       |     |                |    |
                       |     |________________|    |
         timer expires |                           | IGMPv1 query
                       |      ________________     | received
                       |     |                |    | (set timer)
                       |     |                |    |
                       |     |                |    |
                        -----|     IGMPv1     |<---
                             |     Router     |
                             |    Present     |
                             |                |
                        ---->|                |----
                       |     |________________|    |
                       |                           |
                       | IGMPv1 query received     |
                       | (set timer)               |
                        ---------------------------
        
                              ________________
                             |                |
                             |                |
                             |   No IGMPv1    |
                             |     Router     |
                             |    Present     |
                             |                |
                        ---->|                |----
                       |     |                |    |
                       |     |________________|    |
         timer expires |                           | IGMPv1 query
                       |      ________________     | received
                       |     |                |    | (set timer)
                       |     |                |    |
                       |     |                |    |
                        -----|     IGMPv1     |<---
                             |     Router     |
                             |    Present     |
                             |                |
                        ---->|                |----
                       |     |________________|    |
                       |                           |
                       | IGMPv1 query received     |
                       | (set timer)               |
                        ---------------------------
        
7. Router State Diagram
7. 路由器状态图

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.

- “查询器”,当此路由器被指定在此网络上传输IGMP成员资格查询时。

- "Non-Querier", when there is another router designated to transmit IGMP membership Queries on this network.

- “非查询者”,当有另一个路由器指定在此网络上传输IGMP成员资格查询时。

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.

- 当从同一网络上具有较低IP地址的路由器接收IGMP成员资格查询时,会发生“从具有较低IP地址的路由器接收的查询”。

- "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.

- “other querier present timer expired”(其他查询器当前计时器已过期)发生在设置为注意网络上存在另一个IP地址较低的查询器的计时器过期时。

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].

- 连接网络上的“发送常规查询”。一般查询发送到所有系统组(224.0.0.1),最大响应时间为[查询响应间隔]。

                                      --------------------------------
                              _______|________  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)           |
                        ---------------------------
        
                                      --------------------------------
                              _______|________  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:

此外,为了跟踪哪些组具有成员,路由器可能处于关于任何单个连接网络上的任何单个IP多播组的四种可能状态之一:

- "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.

- “Members Present”(成员存在)状态,当网络上有主机已发送此多播组的成员报告时。

- "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.

- “Version 1 Members Present”(版本1成员存在)状态,即网络上存在已为此多播组发送版本1成员报告的IGMPv1主机。

- "Checking Membership" state, when the router has received a Leave Group message but has not yet heard a Membership Report for the multicast group.

- “Checking Membership”(检查成员资格)状态,当路由器已收到离开组消息但尚未听到多播组的成员资格报告时。

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.

- 当路由器在接口上接收到组的版本2成员身份报告时,会发生“v2 report received”。为了有效,报告消息的长度必须至少为8个八位字节,并且必须具有正确的IGMP校验和。

- "v1 report received" occurs when the router receives a Version 1 Membership report for the group on the interface. The same validity requirements apply.

- 当路由器在接口上接收到组的版本1成员资格报告时,会发生“收到v1报告”。同样的有效性要求也适用。

- "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.

- 当路由器在接口上接收到组的IGMP组离开消息时,“已接收离开”发生。为了有效,离开消息必须至少有8个八位字节长,并且必须有正确的IGMP校验和。

- "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.

- “retransmit timer expired”(重新传输计时器已过期)发生在设置为重新传输特定于组的成员资格查询的计时器过期时。

- "v1 host timer expired" occurs when the timer set to note the presence of version 1 hosts as group members expires.

- “v1主机计时器已过期”在设置为记录组成员中存在版本1主机的计时器过期时发生。

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.

- “启动计时器*”用于接口上的组成员资格-如果此路由器是查询者,此替代操作将计时器设置为[上次成员查询间隔]*[上次成员查询计数],如果此路由器是非查询者,则将数据包中的[最大响应时间]设置为[上次成员查询计数]。

- "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.

- 对于接口上的组成员身份,“启动v1主机计时器”,如果计时器当前正在运行,也会将计时器重置为其初始值[组成员身份间隔]。

- "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 routing -" notify the routing protocol that there are no longer any members of this group on this connected network.

- “notify routing”-通知路由协议此连接的网络上不再有此组的任何成员。

The state diagram for a router in Querier state follows:

处于查询状态的路由器的状态图如下所示:

                              ________________
 ----------------------------|                |<-----------------------
|                            |                |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)  |
 -----------------     --------------------------
        
                              ________________
 ----------------------------|                |<-----------------------
|                            |                |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)  |
 -----------------     --------------------------
        

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.

处于非查询器状态的路由器的状态图类似,但非查询器不发送任何消息,仅由消息接收驱动。请注意,非查询器不关心成员资格报告消息是版本1还是版本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)   |
    -----------------
        
                              ________________
                             |                |
                             |                |
                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
8. 计时器和默认值列表

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
8.1. 稳健性变量

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

鲁棒性变量允许调整子网上的预期数据包丢失。如果预计子网有损,则稳健性变量可能会增加。IGMP对(鲁棒性变量-1)数据包丢失具有鲁棒性。稳健性变量不得为零,也不应为一。默认值:2

8.2. Query Interval
8.2. 查询间隔

The Query Interval is the interval between General Queries sent by the Querier. Default: 125 seconds.

查询间隔是查询者发送的常规查询之间的间隔。默认值:125秒。

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.

通过改变[查询间隔],管理员可以调整子网上IGMP消息的数量;值越大,发送IGMP查询的频率越低。

8.3. Query Response Interval
8.3. 查询响应间隔

The Max Response Time inserted into the periodic General Queries. Default: 100 (10 seconds)

插入到定期常规查询中的最大响应时间。默认值:100(10秒)

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].

通过改变[查询响应间隔],管理员可以调整子网上IGMP消息的突发性;值越大,流量的突发性就越小,因为主机响应分布的时间间隔越大。[Query Response Interval]表示的秒数必须小于[Query Interval]。

8.4. Group Membership Interval
8.4. 组成员间隔

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
8.5. 其他查询当前间隔

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
8.6. 启动查询间隔

The Startup Query Interval is the interval between General Queries sent by a Querier on startup. Default: 1/4 the Query Interval.

启动查询间隔是查询器在启动时发送的常规查询之间的间隔。默认值:查询间隔的1/4。

8.7. Startup Query Count
8.7. 启动查询计数

The Startup Query Count is the number of Queries sent out on startup, separated by the Startup Query Interval. Default: the Robustness Variable.

Startup Query Count是启动时发送的查询数,以启动查询间隔分隔。默认值:稳健性变量。

8.8. Last Member Query Interval
8.8. 最后成员查询间隔

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)

最后一个成员查询间隔是插入组特定查询以响应离开组消息的最大响应时间,也是组特定查询消息之间的时间量。默认值:10(1秒)

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
8.9. 上次成员查询计数

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.

Last Member Query Count是路由器假定没有本地成员之前发送的特定于组的查询数。默认值:稳健性变量。

8.10. Unsolicited Report Interval
8.10. 主动报告间隔

The Unsolicited Report Interval is the time between repetitions of a host's initial report of membership in a group. Default: 10 seconds.

主动报告时间间隔是指主机重复首次报告组成员资格之间的时间间隔。默认值:10秒。

8.11. Version 1 Router Present Timeout
8.11. 版本1路由器存在超时

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.

Version 1 Router Present Timeout是主机在听到Version 1查询后必须等待多长时间才能发送任何IGMPv2消息。数值:400秒。

9. Message destinations
9. 消息目的地

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)
        
   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.

注意:在IGMPv2的较旧(即非标准和现已过时)版本中,主机会向要离开的组发送离开消息。为了与这些主机向后兼容,路由器应该接受发送给被留下的组的留言。但是,在所有情况下,主机必须发送到all-ROUTERS地址才能符合此规范。

10. Security Considerations
10. 安全考虑

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].

来自IP地址低于当前查询者的计算机的伪造查询消息将导致将查询者职责分配给伪造者。如果伪造者不再发送查询消息,其他路由器的其他查询器当前计时器将超时,其中一个将恢复查询器的角色。在此期间,如果伪造者忽略离开消息,流量可能会流向在[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.

发送到具有成员的组的伪造查询消息将导致作为该组成员的主机报告其成员身份。这会在LAN上产生少量额外流量,但不会导致协议问题。

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.

- 忽略没有路由器警报选项的报告消息[RFC 2113],并要求路由器不转发报告消息。(该要求不是转发路径中的通用过滤要求,因为数据包中已经有路由器警报选项)。此解决方案打破了与本规范早期版本(不需要路由器警报)实现的向后兼容性。

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:

伪造的版本1报告消息可能会将路由器置于特定组的“版本1成员存在”状态,这意味着路由器将忽略离开消息。这可能会导致流量流向在[Group Membership Interval]内没有成员的组。针对伪造v1报告有两种防御措施:

- 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.

- 为了防御外部来源的v1报告,如果无法将数据包的源地址标识为属于分配给接收数据包的接口的子网,请忽略该报告。此解决方案意味着将忽略本地子网上没有地址的移动主机发送的v1报告。

- 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.

- 为路由器提供配置开关,以完全忽略版本1消息。这会破坏与版本1主机的自动兼容性,因此仅应在“快速离开”至关重要的情况下使用。此解决方案还可以防止来自本地子网的伪造版本1报告。

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.

- 忽略没有路由器警报选项的留言[RFC 2113],并要求路由器不转发留言。(该要求不是转发路径中的通用过滤要求,因为数据包中已经有路由器警报选项)。此解决方案打破了与本规范早期版本(不需要路由器警报)实现的向后兼容性。

11. Acknowledgments
11. 致谢

IGMPv2 was designed by Rosen Sharma and Steve Deering.

IGMPv2由Rosen Sharma和Steve Deering设计。

12. References
12. 工具书类

RFC 2119 Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

RFC 2119 Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

RFC 2113 Katz, D., "IP Router Alert Option," RFC 2113, February 1997.

RFC 2113 Katz,D.,“IP路由器警报选项”,RFC 2113,1997年2月。

RFC 1112 Deering, S., "Host Extensions for IP Multicasting", STD 5, RFC 1112, August 1989.

RFC 1112 Deering,S.,“IP多播的主机扩展”,STD 5,RFC 1112,1989年8月。

13. Appendix I - Changes from IGMPv1
13. 附录I-对IGMPv1的变更

The IGMPv1 "Version" and "Type" fields are combined into a single "Type" field.

IGMPv1的“版本”和“类型”字段合并为一个“类型”字段。

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.

新的IGMP类型被分配给版本2成员报告消息,因此路由器可能会区分IGMPv1和IGMPv2主机报告之间的差异。

A new IGMP Type is created for the IGMPv2 Leave Group message.

将为IGMPv2离开组消息创建新的IGMP类型。

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:

IGMPv2规范现在指定了一种更具查询性的选举机制。在IGMPv1中,查询器的选择由多播路由协议决定,不同的协议使用不同的机制。这可能导致每个网络有多个查询器,因此IGMPv2中的选举机制已经标准化。然而,这意味着当IGMPv2路由器试图与使用不同查询器选择机制的IGMPv1路由器共存时,必须小心。特别是,这意味着IGMPv2路由器必须能够充当特定网络上的IGMPv1路由器(如果配置为这样做)。所需行动包括:

- Set the Max Response Time field to 0 in all queries.

- 在所有查询中将“最大响应时间”字段设置为0。

- 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.

IGMPv2规范放宽了成员资格查询和成员资格报告的有效性检查要求。升级实现时,请确保删除任何不属于的检查。

The IGMPv2 spec requires the presence of the IP Router Alert option [RFC 2113] in all packets described in this memo.

IGMPv2规范要求在本备忘录中描述的所有数据包中都存在IP路由器警报选项[RFC 2113]。

14. Author's Address
14. 作者地址

William C. Fenner Xerox PARC 3333 Coyote Hill Road Palo Alto, CA 94304 Phone: +1 650 812 4816

William C.Fenner Xerox PARC 3333 Coyote Hill Road Palo Alto,CA 94304电话:+1 650 812 4816

   EMail: fenner@parc.xerox.com
        
   EMail: fenner@parc.xerox.com
        
15. Full Copyright Statement
15. 完整版权声明

Copyright (C) The Internet Society (1997). All Rights Reserved.

版权所有(C)互联网协会(1997年)。版权所有。

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.

本文件和其中包含的信息是按“原样”提供的,互联网协会和互联网工程任务组否认所有明示或暗示的保证,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。