查看文章 |
RFC2236: 因特网组管理协议,第2版(译)
2006年12月18日 星期一 下午 12:51
1、定义 略 2、简介 因特网组管理协议(IGMP)被IP主机用于向所有的直接相邻的多播路由器报告它们的多播组成员关系。本文档只描述在主机和路由器之间的确定组成员关系的IGMP应用。作为多播组成员的路由器应当还能表现为一台主机,甚至能对自己的查询作出响应。IGMP还可以应用在路由器之间,但这种应用不在这里描述。 就像ICMP一样,IGMP作为整合在IP里面的一部分。所有希望接收IP组播的主机都应当实现IGMP。IGMP消息被封装在IP数据报中,IP协议号为2。本文档所描述的所有IGMP消息在发送时TTL都为1,并在它们的IP首部中含有一个路由器警告选项。主机所关心的所有IGMP消息都具有以下格式: 8位类型+8位最大响应时间+16位校验和+32位组地址 2.1、类型 主机跟路由器交互时所关心的IGMP消息有三种类型: 0x11=组成员关系查询 组成员关系查询有两种子类型: -普通查询,用于获知一个相连的网络上有哪些组具有成员。 -组特定的查询,用于获知在一个相连的网络上,某一个特定的组是否具有成员。 这两种消息是通过组地址来区分的,具体描述见1.4节(译者注:好像没有1.4节)。成员关系查询消息以下简称为“查询”消息。 0x16=第2版的成员关系报告 0x17=离开一个组 除此之外,还有一种类型的消息,只是为了对IGMPv1保持向下兼容: 0x12=第一版的成员关系报告。 这份文档把成员关系报告简称为“报告”。如果不指明版本,那么内容对两个版本均适用。 未识别的消息类型会被忽略。在更新版本的IGMP中可能还会有新的消息类型,以被多播路由协议,或其它使用。 2.2、最大响应时间 最大响应时间只在成员关系查询消息中有意义,它以1/10秒为单位标明相应的报告发送所允许的最大延迟时间。在其它类型的消息中,发送者把该字段清0,接收者忽略这个字段。 这个修改允许IGMPv2的路由器可以调节“离开延时”(最后一台主机离开组的时刻到路由协议被通过该组已经没有成员之间的时间间隔),具体描述见7.8节。它也可以调节子网内IGMP流量的爆炸,具体描述见7.3节。 2.3、校验和 校验和是以16位为一段对整个IGMP消息(一个完整的IP负载)的取反求和。为计算校验和,校验和字段应当先被清0。当发送数据报时,必须计算校验和并放到该字段中。当收到一个数据报后,在处理之前,必须先验证校验和。 2.4、组地址 在一个成员关系查询消息中,在发送一个普通的查询之前,组地址字段必须被清0,在发送一个指定组的查询之前,把组地址设置为需要查询的那个组。 在一个组成员关系报告或离开组的消息中,组地址字段应当是被报告的或要离开的那个组的IP地址。 2.5、其它字段 需要注意的是,IGMP消息是可能大于8个字节的,特别是将来的向下兼容的IGMP版本。只要类型字段是可以被识别的,IGMPv2的实现在处理数据报时必须忽略超过8个字节的内容。但是IGMP校验和始终是针对整个数据报的,而不仅仅是前面的8个字节。 3、协议描述 定时器的缺省值在本文档的稍后部分给出。定时器和计数器的名称在方括号中。 名词“接口”在本文档中有时被用于表示“一个相连接的网络上的主接口”。如果一台路由器在单个网络中有多个物理接口,本协议只需要在其中的一个上面运行。但另一方面,主机需要在跟它的成员关系相关的所有网络接口上面执行相应的行为。 多播路由器使用IGMP来了解与它相连的每一个物理网络中哪些组拥有成员。一个多播路由器为每一个相连的网络维护了一个多播组成员的列表。“多播组成员”表示在一个给定的相连网络中,一个多播组至少有一个成员,而不是所有成员的一个列表。对于每一个与它相连的网络,多播路由器可能是查询者,也可能是非查询者。通常情况下,每一个物理网络只有一个查询者。所有的多播路由器在启动的时候,在它的每一个相连的网络中都是查询者。如果一个多播路由器接收到另一台多播由器的一个查询消息,并且它的IP地址要比自己小,那它在该网络中要马上变成一个非查询者。如果一台路由器没有收到来自其它路由器的查询消息[其它查询者存在间隔],它继续担任查询者的角色。路由器周期性地[查询间隔]向它担任查询者的相连网络发送普通查询请求,以得到成员信息。在启动的时候,路由器应当间隔较小[启动查询间隔]的发送多个[启动查询计数]普通查询,以快速并可靠地确定成员信息。一个普通查询应当被发往所有系统多播组(224.0.0.1),其组播地址字段置0,并拥有一个最大响应时间[查询响应间隔]。 当一台主机收到一个普通查询,它为收到查询的那个接口所在的每一个组(不包括“所有主机”组)设置延迟定时器。每个定时器都被设置成不同的随机值,该随机值采用主机所能达到的最高时间精度,值的范围是(0,最大响应时间],最大响应时间已在查询数据报里标明。当主机收到一个指定组的查询时,如果收到该查询的接口属于该指定组,它也像上面一样,把延时定时器设置成(0,最大响应时间]中的一个随机值。如果该组的定时器已经在运行,只有当查询请求的最大响应时间比定时器当前的剩余时间还要小的时候,重置定时器为一个新的随机数。当一个组的定时器超时,主机向组内多播一个第2版的成员报告,TTL设1。如果主机在它的定时器运行的时候,收到来自另一台主机的报告(版本1或者版本2),为了减少重复报告,它中止该组的定时器,不发送报告。 当一台路由器接收到一个报告,它把所报告的组加入到发出报告的那个网络的多播组成员列表中,并把组成员定时器设置成[组成员间隔]。重复的报告会刷新这个定时器,如果关于某一特定的组在定时器超时前还没有报告收到。路由器就假设这个组没有本地成员,就不需要把来自远程的该组的数据报转发到这个网络中。 当一台主机加入到一个多播组,它应当立即主动向组发送一个第2版组成员报告,以防它是这个组的第一个成员。考虑到最初的组成员报告可能会丢失或被破坏,建议在较短的时间间隔内[主动报告间隔]将该报告重复一到两次(实现这个的一个简单的办法是发送第一个第2版组成员报告后,就假设收到了一个关于该组的指定组查询,然后设置相应的定时器)。 当一台主机离开一个多播组,如果它是响应该组的查询并发送报告的最后一台主机,它应当向“所有路由器”多播组(224.0.0.2)发送一个离开组消息。如果它不是最后一台响应查询的主机,它可以什么也不发,因为子网内肯定还有另一个成员在,这是减少网络流量的一种优化。如果主机没有足够的存储来记住它自己是否是最后一台响应的主机,在离开组时,它总是发送一个离开组消息。路由器应当接受发往要离开的那个组的离开组消息,以适应该标准的早期版本的实现。离开组消息被发往“所有路由器”组是因为其它的组成员不需要知道有主机离开这个组,但是发往这个组也是无害的。 当查询者收到一个离开组消息,并且该组在接收接口上还有组成员。它每隔一定的时间[最后一个成员查询间隔]发送一个指定组查询,发送一定的数量[最后一个成员查询计数]。这些指定组查询的最大响应时间被设置为[最后一个成员查询间隔]。如果最后一个查询超时了,还是没有收到报告,路由器就假定这个组已经没有本地成员了。在这段时间内,任何的查询者和非查询者的转变都被忽略,由同一个路由器发送完这些指定组查询。 非查询者必须忽略离开组消息,如果接收接口上没有该组的成员,查询者也应当忽略该离开组消息。 当非查询者收到一个指定组的查询消息,如果它的已存在的组成员定时器比消息中指定的最大响应时间乘以[最后一个成员查询计数]还要大,它就把组成员定时器设置为该值。 4、与IGMPv1路由器的兼容 一台IGMPv2主机可能被放置在某一子网内,而该子网的路由器没有升级到IGMPv2。就产生了以下需求: IGMPv1路由器会发送普通查询,其最大响应时间为0,它必须被解释为100(10秒)。 IGMPv1路由器发出查询后,期望收到第1版的成员报告,并不会关心第2版的成员报告。因此,每一个接口上必须维护一个状态变量,描述该接口上的多播查询者正在运行IGMPv1还是IGMPv2,这个变量的设置是根据在最后的几秒钟[第1版路由器存在超时]之内是否收到IGMPv1的查询来确定,不能根据最后收到的查询的类型来确定。这个变量用于决定在主动成员报告和响应查询的成员报告中发送哪一种类型的成员报告。 在一个只有IGMPv1路由器的网络中,IGMPv2主机可能禁止发送离开组消息。 一台IGMPv2的路由器可能被放置在某一子风内,而该子网内至少有一台路由器没有升级到IGMPv2。这就产生了以下需求: 如果存在IGMPv1的路由器,查询者必须使用IGMPv1。IGMPv1的使用必须由管理系统配置,因为找不到一种可靠的方法来动态地确定网络内是否存在IGMPv1路由器。具体的实现可以提供一种方法让系统管理员在他们的路由器上启用IGMPv1;如果没有显式的配置,缺省值必须设为IGMPv2。在IGMPv1模式下,路由器必须周期性地发送最大响应时间为0的查询,并且必须忽离开组消息。它们还应当在收到IGMPv2查询时发出警告,但这种警告的频率必须受到限制。 如果一台路由器没有被显式地配置成IGMPv1,但收到了一个IGMPv1查询,它应当记下一条警告日志,这些警告的频率必须受到限制。 5、与IGMPv1主机的兼容 一台IGMPv2主机可能被放置在某一个子网内,该子网内有几台主机还没有升级到IGMPv2,这就产生了以下需求: 主机必须允许自己的成员报告被一个版本1的成员报告或者版本2的成员报告中止。 一台IGMPv2的路由器可能被放置在某一个子网内,该子网内有几台主机还没有升级到IGMPv2,这就产生了以下需求: 如果路由器收到一个版本1的成员报告,它必须设置定时器,以知道有版本1的主机存在,并且是它收到的报告的那个组的成员,这个定时器应当跟[组成员间隔]相同。 如果一个特定的组内有版本1的主机存在,路由器必须忽略该组的离开组消息。 6、主机状态图 下面的状态转化图更为正式的说明了主机的行为。一台主机可能处于跟某一个网络接口上的某一个IP多播组相关的三种状态的其中之一: -“非成员”状态,当主机不属于接口上的这个组时即为这个状态。这是所有网络接口上所有成员关系的初始状态。它不需要主机的存储。 -“延时成员”状态,当主机属于接口上的某一个组并且为该成员关系正在运行一个延时报告定时器时即为这个状态。 -“空闲成员”状态,当主机属于接口上的某一个组,并且当前不在为该成员关系运行一个延时报告定时器时即为这个状态。 有五类重要事件可以引起IGMP状态变化: -当主机决定加入接口上的某一个组时会发生“加入组”事件,该事件只在非成员状态时发生。 -当主机决定离开接口上的某一个组时会发生“离开组”事件,该事件只在延时成员状态和空闲成员状态时发生。 -当主机收到一个有效的普通成员查询信息或者一个有效的指定组成员查询信息时,会发生“收到查询”事件。为保证有效,查询消息必须至少是8字节长,并且有一个正确的IGMP校验和。IGMP首部中的组地址必须是0(普通查询)或者是一个有效的多播组地址(指定组查询)。一个普通查询作用于收到查询的接口上的所有组成员关系。一个指定组查询只作用于收到查询的接口上的单个组的成员关系。在非成员状态,对组成员查询忽略。 -当主机收到一个有效的IGMP成员报告消息(版本1或者版本2),就会发生“收到报告”事件。为保证有效,报告消息至少必须有8字节长并且有一个正确的校验和。一个组成员报告只作用于收到该成员报告的接口上的,该报告自己所标明的那个组的成员。非成员状态和空闲成员状态忽略该报告。 -当一个接口上的某个组的延时报告定时器超时时,就会发生“定时器超时”事件。它只在延时成员状态时发生。 其它的事件,比如说接收到一个无效的IGMP消息,或者是查询和报告之外的IGMP消息,这三种状态都会忽略。 应对上面的几个事件,会发生五种可能的行为: -在接口上为一个组“发送报告”。报告的类型由接口的状态决定,报告信息被发往要报告的那个组。 -在接口上为一个组“发送离开消息”。如果这个接口的状态表明查询者正在运行IGMPv1,那就应当跳过这个行为不执行。如果那个表明本机是最后一个发送报告的标志已经被清除,那也可以跳过这个行为不执行。离开消息应当发往“所有路由器”组(224.0.0.2)。 -如果本机是组内最后一个发送报告的成员,则“设置标志”。 -如果本机已经不是组内最后一个发送报告的成员了,则“清除标志”。 -为接口上的一个组“设置定时器”,延迟时间从(0,最大响应时间]中统一选取,最大响应时间在查询中会有标明。如果这是一个主动报告,定时器的时间从(0,[主动报告间隔]]中选取。 -把接口上的某一个组的定时器“重置”为一个新的值。延迟时间跟“设置定时器”一样,从(0,最大响应时间]中统一选取。 -为接口上的某个组“中止定时器”。 (状态变换图略,参考RFC1112的状态变换图,内容略有扩展) 另外,对于单个网络接口,一台主机可能处于以下两种可能的状态之一: -当主机在[第1版路由器存在超时]时段内没有收到IGMPv1类型的查询,则认为“不存在IGMPv1的路由器”,这是初始状态。 -当主机在[第1版路由器存在超时]时段内收到了IGMPv1类型的查询,则认为“存在IGMPv1的路由器”。 有两类事件可以引起这种状态变化: -当主机收到一个查询,它的最大响应时间字段的值为0,则“收到IGMPv1查询”。 -当用于获知IGMPv1路由器存在的定时器超时,即“定时器超时”事件。 还有一种可由事件触发的行为: -“设置定时器”把定时器设置成它的最大值[第1版路由器存在超时],并启动(重启)它。 _____________ |不存在第 | |-->|一版路由器 |------ | -------------------- | 定时器 | |收到IGMPv1 超时 | |查询(设置定时器) | | | | | _____________ | ----|存在第一 |<-- --->|版路由器 |----------- | --------------------- | |_______________________| 收到IGMPv1查询 (设置定时器) 7、路由器状态图 通过下面的状态变换图,能更加正式的说明路由器的行为。 相对于某一相连的单独网络,路由器可能处于以下两种可能的状态之一: -“查询者”,当路由器被分派在该网络中发送IGMP成员查询的时候,即为查询者。 -“非查询者”,当该网络中,有另一台路由器被分派发送IGMP成员查询的时候,该路由器即为非查询者。 下面的三类事件可以引起路由器的状态变化: -用于查询发送的定时器超时,就会发生“查询定时器”超时事件。 -当收到同一网络中另一台拥有更小的IP地址值的路由器的IGMP成员查询时,会发生“收到更小IP值的路由器的查询”事件。 -当用于获知同一网络中有更小IP地址值的另外路由器存在的定时器超时,会发生“其它路由器存在定时器超时”事件。 对应于上述的事件,会发生三种可能的行为: -为相连的网络“启动普通查询定时器”。 -为相连的网络“启动其它查询者存在定时器”,定时器时长为[其它查询者存在间隔]。 -在相连的网络上“发送普通查询”。普通查询被发往“所有主机”组(224.0.0.1),其最大响应时间为[查询响应间隔]。 ___________ ______|______ |普通查询定时器超时 ________ |查询者 | |(发送普通查询,设 |初始状态|--------------->| | |置普通查询定时器) ----------- (发送普通查询| |<------- 设置普通查询 | | 定时器) | | | | __________ | |<--------| | | | | | ---------------------- | 其它路由器存在定时器 收到拥有更小| |超时(发送普通查询,设 IP地址值的路 | |置普通查询定时器) 由器的查询 | _____________ | (设置其它路 | | 非查询者 | | 由器存在定时| | | | 器) |------->| |___________| | | | | | | |-------->| |_________ | | | | | -------------------- | | | ---------------------------------------------| 收到拥有更小IP地址值的路由器 的查询(设置其它路由器存在定时器) 一个路由器应当在所有的相连网络上以“初始状态”启动,并立即进入查询者状态。 另外,为了随时跟踪哪些组拥有成员,一台路由器应当处于跟单个相连网络上的单个IP多播组相关的下列四种状态之一: -“不存在成员”状态。如果在某一网络中,没有主机为某一多播组发送报告,则处于该状态。这是路由器上所有组的初始状态。它不需要主机的存储。 -“有成员存在”状态。如果在网络中,至少有一台主机为某一个多播组发送报告,则处于这种状态。 -“第1版成员存在”状态。如果网络中有一台IGMPv1的主机,为该组发送了一个IGMPv1的成员报告,则处于该状态。 -“确认成员”状态。如果路由器收到一个离开组的消息,之后到目前为止还未收到关于该组的成员报告,则处于该状态。 有六类重要事件,可能引起路由器的状态变化: -当路由器收到接口上的某个组的第2版成员报告,会产生“收到第2版报告”事件。为保证有效,报告消息必须至少有8字节长度,并有一个正确的IGMP校验和。 -当路由器收到接口上的某个组的第1版成员报告,会产生“收到第1版报告”事件。有效性要求同上。 -当路由器收到接口上的某个组的离开组IGMP消息,会产生“收到离开消息”事件。为保证有效,消息必须至少有8字节长度,并有一个正确的IGMP校验和。 -当组成员关系的定时器超时,会产生“定时器超时”事件。 -当指定组成员查询重传定时器超时,会产生“重传定时器超时”事件。 -当用于获知第1版成员主机存在的定时器超时,会产生“v1主机定时器超时”事件。 对应于上述的事件,有六种可能的行为会发生: -为接口上的成员关系“启动定时器”,如果定时器已经在运行,把定时器重置为它的初始值[组成员关系间隔]。 -为接口上的成员关系“启动定时器”,如果这台路由器是查询者的话,这次的行为把定时器设置为[最后一个成员查询间隔]*[最后一个成员查询计数]。如果这台路由器不是查询者,则把定时器设置为收到数据报里的[最大响应时间]*[最后一个成员查询计数]。 -为接口上的成员关系“启动重传定时器”,时间间隔为[最后一个成员查询间隔]。 -为接口上的成员关系“启动v1定时器”,同时,如果定时器已经在运行,把定时器设置为它的初始值[组成员关系间隔]。 -为相连网络上的某个组“发送指定组查询”,指定组查询被发往所要查询的那个组。它的最大响应时间是[最后一个成员查询间隔]。 -“通知路由+”事件通知路由协议相连网络上的某一个组内拥有成员。 -“通知路由-”事件通知路由协议相连网络上的某一个组内已经没有成员。 作为查询者的路由器的状态变化图如下: (由于图太大,请直接参阅RFC2236 第7节)。 作为非查询者的路由器的状态变化图类似,但是非查询者不发送任何类型的消息并只由消息接收来驱动,需要注意的非查询者不关心成员报告消息是第1版还是第2版。 (图请直接参阅RFC2236 第7节)。 8、定时器缺省值列表 这些定时器大多数是可配置的。如果不使用缺省设置,在单个连接上的所有路由器必须保持一致。 8.1、健壮性变量 略 8.2、查询间隔 查询间隔是指查询者发送普通查询之间的时间间隔。缺省值是125秒。 管理员可能要修改查询间隔以调节子网内的IGMP消息的数量,值越大,IGMP查询的发送频率越低。 8.3、查询报告间隔 就是周期性普通查询数据报中的最大响应时间,缺省值是100(10秒)。 管理员可以通过修改[查询报告间隔]来调节子网内的IGMP消息的并发机率;值越大,并发的可能性越低。因为主机的响应时刻会被分散在一个更大的间隔内,[查询响应间隔]的秒数必须比[查询间隔]的秒数少。 8.4、组成员关系间隔 组成员关系间隔是指一台多播路由器在确定某一个网络内的某一个组内没有成员之前,必须要经过的时长。这个值必须是((健壮性变量)*(查询间隔))+(一个查询响应间隔)。 8.5、其它查询者存在间隔 其它查询者存在间隔是指一台路由器在确定网络内没有其它作为查询者的路由器存在之前,必须要经过的时长。这个值必须是((健壮性变量)*(查询间隔)+(1.5倍的查询响应间隔)。 8.6、启动查询间隔 启动查询间隔是指在查询者启动的时候,发送普通查询之间的间隔。它的缺省值是1/4的查询间隔。 8.7、启动查询计数 启动查询计数是指在启动的时候,发出去的查询的数量,查询间的间隔是[启动查询间隔],缺省值是健壮性变量。 8.8、最后一个成员查询间隔 最后一个成员查询间隔是指为响应离开组消息而发送的指定组查询中的最大响应时间,同时它也是指定组查询间的时间间隔。缺省值是10(1秒)。 这个值可以通过修改网络中的“离开延迟”来调节。值越小,用于探测最后一个组成员离开花费的时间越少。 8.9、最后一个成员查询计数 最后一个成员查询计数是指路由器在确定某个组已经没有本地成员之前,需要发出去的指定组查询的数量。缺省值是健壮性变量。 8.10、主动报告间隔 主动报告间隔是指主机作为某一个组的成员的最初的报告之间的时间间隔,缺省值是10秒。 8.11、第一版路由器存在超时 第一版路由器存在超时是指主机在收到一个第一版的查询之后,必须等待的一个时间,之后它才可以发送IGMPv2的消息。值是400秒。 9、消息的目的地址 这些信息在本文档的其它地方也会提供,但为了方便起见,在这儿作一下总结: 消息类型 目的组 普通查询 所有主机组(224.0.0.1) 指定组查询 被查询的那个组 成员报告 要报告的那个组 离开消息 所有路由器组(224.0.0.2) 注意:IGMPv2的较老版本(非标准,现已废弃)中,主机向要离开的那个组发离开消息。所以,路由器应当接收发往要离开的组的那些离开消息,以跟这些较老版本的主机保持兼容性。但是,主机应当向“所有路由器”发送离开消息,以符合这份标准。 10、安全性方面的考虑 我们要考虑到每一种消息类型的伪造。 查询消息: 从一台具有更小IP地址值的机器发出的一个伪造查询消息会导致查询者的职责被伪造者获取。如果伪造者从此不再发送查询消息,其它路由器的“其它查询者存在定时器”会超时,并且有一台路由器会继续查询者的职责。在这段时间内,如果伪造者忽略了离开消息,那么没有成员的组的数据也会继续流向该网络直到[组成员关系间隔]时间之后。 一个发向拥有成员的组的伪造的查询消息会使该组的成员主机报告它们的成员关系。这会在局域网内造成一定额外的流量,但是不会引起协议上的问题。 报告消息: 一个伪造的报告消息会使多播路由器错误地认为子网内某个没有成员的组拥有成员。来自本地子网内的伪造的报告消息没有任何意义,因为在一台主机上加入一个组不是一个特权操作,所以一个本地用户不需要伪造报告消息就可以轻易造成同样的效果。从外部源产生的伪造消息就会带来一些麻烦,对于外部产生的伪造消息有两种防卸措施: -如果你不能判定数据报的源地址属于接收到数据报的那个接口所在的子网,那就忽略这个报告。这个解决办法意味着在本地子网内由移动主机发出的不带有地址信息的报告都会被忽略。 -不带有路由器警告选项[RFC2113]的报告都会被忽略,同时,要求路由器不能转发报告消息(这个要求并不是对转发路由的普通过滤提出要求,因为数据报已经带有路由警告选项)。这个解决方案跟某些不带路由器警告选项的该标准的早期实现不兼容。 一个伪造的第1版报告消息可能会让路由器处于某一个组的“第1版成员存在”状态,这意味着路由器会忽略离开消息,这会造成没有成员的组的数据流量,直到[组成员关系间隔]时间之后。针对伪造的v1报告,有两种防卸措施: -针对外部源的v1报告,如果你不能判定数据的源地址属于接收到数据报的那个接口所在的子网,就忽略这个报告。这个解决方案意味着本地子网内由移动主机发出的不带有地址信息的v1报告都会被忽略。 -给路由器提供一个配置开关,以完全忽略v1报告。这就跟v1的主机不能兼容了,所以只能用于那些对“快速离开”要求很严的场合。这个解决方案也能保护本地子网不受v1伪造报告的影响。 离开消息 一个伪造的离开消息会造成查询者向那个组发送指定组的查询消息。这会造成每一个路由器和组内每一个成员的额外处理,但是不会造成预期的数据的丢失。针对伪造的离开消息,有两种防卸措施: -如果你不能判定数据报的源地址属于收到这个数据的那个网络接口所在的子网,就丢弃这个离开消息。这个解决方案意味着子网内不带有地址的移动主机发出的离开消息都会被忽略。 -忽略没有路由警告选项[RFC2113]的离开消息,并要求路由器不能转发离开消息。(因为数据报已经有了路由器警告选项,这个需求不会对路由转发的普通过滤产生新的需求)但是这个方案与早期的不带有路由警告选项的实现不兼容。 11、致谢 12、参考 13、附录1-对IGMPv1的修改 IGMPv1的“版本”和“类型”字段被合并成一个字段“类型”。 第2版的IGMPv2成员报告中有了一个新的IGMP类型,这样,路由器就可以区分IGMPv1和IGMPv2的主机报告。 为IGMPv2离开组消息创建了一个新的IGMP类型。 成员查询消息被修改,先前未使用的一个字段现在有了新的值,即最大响应时间。 IGMPv2标准提出了一个查询者选举机制。在IGMPv1中,查询者的选举是由多播路由协议来完成的,不同的协议使用不同的机制。这会造成同一个网络中有多个查询者的现象,所以选举机制在IGMPv2中被规范化。但是,这也意味着当一个IGMPv2路由器和一个使用早期的选举机制的IGMPv1路由器需要并存的时候,就要特别注意。即一个IGMPv2路由器在某一个网络内被配置后,要能够像一个IGMPv1路由器那样运行,包括: -在所有的查询消息中,把最大响应时间设置为0。 -忽略离开组消息。 IGMPv2标准减轻了成员查询和成员报告的有效性检查的负担。 IGMPv2标准要求所有的数据报中都有IP路由器警告选项。 |
最近读者: