📄 rfc2236.txt
字号:
| | | | | |
|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) |
----------------- --------------------------
该处于非查询者路由器的状态报文 很简单,但非查询者不发送消息且仅由消息接收驱动。注意非查询者不会关心一个成员报告消息是版本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) |
-----------------
8. 定时器表和默认值
大多数定时器都可配置。如使用了非默认的设定,则他们必须在单个连接上所有的路由器中是一致的。注意这些插入语被用于组的表达以使得逻辑清楚。
8.1. 健壮性变量
健壮性变量允许在一个子网上所要的包丢失。如果子网是可以丢失的,健壮性变量可增加。 IGMP 对于 (健壮性变量 - 1) 包的丢失是健壮性的。健壮性变量不能为0,且不应为1。默认值为2。
8.2. 查询周期
查询周期是由查询者发出的一般查询间的间隔,默认值为125秒。
通过改变该[查询周期], 一个管理者可以调节子网上IGMP 消息的数目,更大的值导致了IGMP 查询发送少天10。
8.3. 查询响应周期
插入一般查询周期中的最大的响应时间。默认值为100(10秒)。
通过改变[查询响应周期], 一个管理者可以调节子网上IGMP 消息的突发性。更大一点的值可使流量少些突发性,当主机响应被散布到更大的范围时。由[查询响应周期]所代表的秒数必须小于 [查询周期].
8.4. 组成员周期
组成员周期是在组播路由器决定此处没有成员在网络上之前必须经过的秒数。该值必须是((健壮性变量)倍 (查询周期)) 加上(一个查询响应周期)。
8.5. 其它的查询存在周期
其它的查询存在周期是在组播路由器决定网络上不在有另一个应该成为查询者的组播路由器之前,所必须经过的秒数。 该变量必须为 ((健壮性变量) 倍 (查询周期)) 加上 (一个查询响应周期的一半)。
8.6. 初始查询周期
开始查询周期是在开始时由查询者发送的一般查询之间的间隔时间。默认值为: 1/4查询周期。
8.7. 初始查询周期
初始查询周期是在初始化时发出的查询数目,其中由初始查询周期的长度进行分隔。默认值为:健壮性变量。
8.8. 最后的成员查询周期
最后的成员查询周期是响应组消息所发送的特定组 查询的最大响应时间,并且也是特定组查询消息之间的时间总数。默认值为:10 (1 秒)。
该值可以调整为适合于该网络的"离开延时"。
一个降低的数值会导时间的降低,以检测组中最后一个成员的丢失。
8.9. 最后成员计数
最后成员计数是在路由器确定已没有本地成员之前,发出的特定组成员查询的数目。认值为:健壮性变量。
8.10. 非请求报告周期
非请求报告周期是在 一个组中主机的初始化成员报告消息接收之间的时间。默认值为: 10 秒。
8.11. 版本1路由器存在超时
版本1路由器存在超时是在听到了版本1的查询之后,它发出IGMPv2消息之前,所要等的时间。其默认值为?: 400 秒。
9. 消息目的地
该消息在文档的几乎任何地方 都有提供,但在此仍遵照惯列在下面列出。
消息类型 目的组
------------ -----------------
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)
注意: 在老的IGMPv2版本中 (例如,非标准的且现在淘汰了的) ,主机发出了离开消息给就要离开的组。路由器应该接受发布给正有成员离开的组的消息,以便对这些主机提供向后的兼容性。在所有的情况下,主机必须向所有路由器地址发布以适合该规范。
10. 安全考虑
我们考虑每个类型消息的分枝
查询消息:
来自拥有比当前查询者更低的IP值主机的一个伪造的查询消息会导致查询者方面的职权归伪造者所有。如果该伪造者随之不再发送查询消息,其它的路由上的其它的查询者生存计时器将会超时且有一个重新作为查询者。在这段时间中,如果仿造者忽略离开消息,流量,会散布到没有成员的组内直到[组成员周期]。
一个仿造的消息发到了一个有成员存在的组会导致该组内的主机报告的他们的成员关系。这导致了LAN中的流量略为增多,但没导致协议方面的问题。
报告消息:
一个仿造的消息可以导致组播路由器认为组中的成员都在子网上,而实际上却不是。来自于本地的子网的一个仿造的消息是没有意义的,因为加入一个主机所在的组通常是没有特权的操作,所以一个本地的用户可以简单地得到同样的结果而不需要仿造消息。一个从外部来的仿造的消息则更讨厌了,有两个方法可以防御仿造的消息。
- 忽略该报告,如果你不能认出一个属于该接口的子网上的包中的源地址,在该接口上收到了该包。这种解决 方案 意味着由移动主机发出的报告而不是在本地子网上发出的将会被忽略。
- 忽略没有路由警告选项[RFC 2113]的报告消息, 且请求路由器不转发报告消息。 (该请求不是在转发路径上一般来说经过了过滤的请求,因为这些包已经在其中包括了路由警告选项[RFC 2113]) 。该解决方案破坏了 和早期版本实现的向后的兼容性,早期的版本不要路由警告选项[RFC 2113]。
一个伪造版本1报告消息可以针对一个选定的组把一个路由器置为"版本1成员存在" 状态,这意味着该路由器会忽略离开消息。这能导致流量遍布那些没有成员的整个组内并且持续 [Group Membership Interval]。有两个方法可以防御仿造的版本1报告消息:
- 为了来自外部的源端版本1报告,忽略该报告如果你不能确定包的源地址是属于收到该包的接口上的子网。 该解决方案意味着由移动主机(不在 本地网上)发出的版本1报告将会被忽略。
- 提供带有配置开关的路由器以完全忽略版本1消息。此方法会使得不能自动的和版本1主机进行兼容,因此应该仅仅用于那些对"快速离开"要求严格的地方。该解决方案很好地防止了来自本地子网的伪造的版本1消息。
离开消息:
一个伪造的离开消息导致查询者发出一个特定组查询来查询该组。这会导致在每一个路由器上和组中的每一个成员上过多的处理,但是不会导致预期流量的减少。这儿有两个方法可以防御来自外部的伪离开消息:
- 忽略该离开消息,如果你不能确定包的源地址是属于收到该包的接口上的子网。该解决方案意味着由移动主机(不在 本地网上)发出的离开消息将会被忽略。
- 忽略没有路由器警告选项[RFC 2113]的离开消息,且要求路由器不再转发离开消息。 (该请求不是在转发路径上通常化过滤后的请求,因为该包已经包括了路由器警告选项)。该解决方案一样破坏了和早期的在该规范方面没有路由器警告选项的兼容性。
11. 致谢
IGMPv2 由Rosen Sharma 和 Steve Deering设计。
12. 参考
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.
13. 附录 I - 基于IGMPv1的改变
IGMPv1 "Version" and "Type" 域被整合为一个"Type" 域。
一个新的IGMP 类型设为版本2 的成员报告消息, 因此路由器可以在IGMPv1 和IGMPv2 主机的报告中分辨其不同。
一个新的IGMP 类型特为 IGMPv2 离开组消息创建。
改变了成员查询消息,从而以前 没有利用的域饮食了一个新的数值,为最大的响应时间。
IGMPv2 spec 现在 规定了一个查询者选举机制。在IGMPv1中 , 查询者选举机制和组播路收协议没有什么关系,而且不同的协议使用不同的机制。这会导致每一个网络中不止一个查询者,因此在IGMPv2中查询者选举机制已标准化了。 然而, 这意味着必须小心一个IGMPv2 路由器试图和一个使用不同的查询者选举机制的IGMPv1 路由器一起退出的情况。尤其是,意味着当发生了这样的配置时,IGMPv2 路由器必须能够在特定的网络上做为一个 IGMPv1 路由器。该反应包括如下:
- 在所有的查询中设置最大的响 应间为0。
- 忽略离开组消息。
IGMPv2 spec 放松了对成员查询和成员报告的有效性检查。当对其中的某个实现部分升级时,要确保移除不再属于的一些检测机制。
IGMPv2 spec 需要在所有的包中有该备忘录中所说的IP 路由器警告选项 [RFC 2113] 。
14. 作者地址
William C. Fenner
Xerox PARC
3333 Coyote Hill Road
Palo Alto, CA 94304
Phone: +1 650 812 4816
EMail: fenner@parc.xerox.com
15. 版权声明
版权(C) 属于The Internet Society (1997). 所有版权保留。
该文档及其译本可以复制和传阅,可以进一步地对其注释或者对其部分或整体地 进行实现、拷贝、出版、发行,而无任何方面的限制,以上版权注释的声明以及图列都 包含在所有的拷贝中和对其的扩展中。然而,该文档本身不能被随意改动的, 列如移走版 权的注释或者是Internet Society 的引用,或者是其它的 Internet 组织,除非是出于发展Internet 标准的目的需要,而这对于Internet标准中规定版权的程序是必须遵守的。或是按要求将其从英语翻译到其它的语言。
以上该受限的许可是永久的且不会被废弃或分配。在此所说的该文档和包含的信息是基于一个 "AS IS" 的基础和INTERNET SOCIETY以及INTERNET 工程任务组织的全部授权,表达或者是其引申意义,包含了没有受限的一些授权,因此对于某一特定的目的来说,该信息的使用不会侵犯销售产品中所授的权利和引申的权利。
RFC 2236 Internet Group Management Protocol, Version 2 Internet组管理协议,版本2
1
1
RFC中文文档翻译计划
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -