您好,欢迎来到钮旅网。
搜索
您的当前位置:首页IGMP协议原理

IGMP协议原理

来源:钮旅网
课程XXXX IGMP协议基本原理(M0000 0030) Issue1.1

1.1 因特网组管理协议

1.1.1 IGMP简介

IGMP——ÏîÔÉ濎¦Üí½Í­ÏélIGMPÍ­ÏéÇÄÓð¸úÐë¿«ÐÆÃðÓ®¹ä˨ϸ;îÍ­ÏélRFC1112¶æ´¨¾ÈIGMP V1£¨Ó§±Ówindows95£¦lRFC2236¶æ¨´¾ÈIGMP V2£¨Ó§±Ówindows·Êï²´­ýÇUnix¬îÍ¿Á³«þËñ©£ü¦lDraft-ietf-idmr-igmp-v3-03.txt¶æ´¨¾È¬îÍ¿³ÁIGMP V3 IGMP协议运行于主机与和主机直接相连的组播路由器之间,主机通过此协议告诉本地路由器希望加入并接受某个特定组播组的信息,同时路由器通过此协议周期性地查询局域网内某个已知组的成员是否处于活动状态(即该网段是否仍有属于某个组播组的成员),实现所连网络组成员关系的收集与维护。它是主机与组播路由器之间唯一的信令协议。IGMP不包含组播路由器之间上下游关系的传播和维护,这部分工作由各个组播路由协议来完成。

IGMP有三个版本,IGMPv1由RFC1112定义,目前通用的是IGMPv2,由RFC2236定义。IGMPv3 由Draft-ietf-idmr_igmp-v3-03.txt定义,目前仍然是一个草案。IGMPv1中定义了基本的组成员查询和报告过程,IGMPv2在此基础上添加了组成员快速离开的机制,IGMPv3中增加的主要功能是成员可以指定接收或指定不接收某些组播源的报文。这里着重介绍IGMPv2协议的功能。

IGMPv2通过查询器选举机制为所连网段选举唯一的查询器。查询器周期性的发送普遍组查询消息进行成员关系查询;主机发送报告消息来应答查询。当要加入组播组时,主机不必等待查询消息,主动发送报告消息。当要离开组播组时,主机发送离开组消息;收到离开组消息后,查询器发送特定组查询消息来确定是否所有组成员都已离开。

另外,对于作为组成员的路由器而言,该路由器的行为和普通的主机一样,它响应其它路由器的查询。通常本协议中,\"接口\"指在一个所连网络上的主接口,若

1

课程XXXX IGMP协议基本原理(M0000 0030) Issue1.1

一个路由器连在同一个网络上的接口有多个,则只需要在其中一个接口上运行此协议即可。另一方面,对主机而言,则需要在有组成员的所有的接口上都运行此协议。

通过上述IGMP机制,在组播路由器里建立起一张表,其中包含路由器的各个端口以及在端口所对应的子网上都有哪些组的成员。当路由器接收到某个组G的数据报文后,只向那些有G的成员的端口上转发数据报文。至于数据报文在路由器之间如何转发则由路由协议决定,IGMP协议并不负责。

2

课程XXXX IGMP协议基本原理(M0000 0030) Issue1.1

1.1.2 IGMP V2

IGMPÓÍ¿«ÐÆÃð¡¢Óð¸ú´¯¬ðӴ𯪨µæ¹ÐÅë¬éÃéÒª°éίìÐÌ¥¨ªµæ½§ë¼¬éÌûÌ¢µ´Ó¨é¬°éί IGMP在主机与路由器之间是不对称的:

路由器需要定时发送普通查询消息,然后根据收到的组成员关系报告来确定某个特定组是否有主机存在;主机收到查询消息后,如果主机正属于某个组,则需要以组成员关系报告响应组播路由器的组成员关系查询,报告中包含主机加入组的组地址。路由器若长时间没收到关于某组的报告,将删除该组,不再向该网段转发组播数据。

主机想加入某个组时,主动发送组成员关系报告;路由器收到组报告后,如果是新组的报告则向该网段转发组播数据,如果组已存在则刷新组状态。

主机想离开某组时,如果主机是本网段最后一个主机则将向路由器发送离开组消息,若不是则安静的离开;路由器收到离开组消息时,发出指定组查询,以确定某个特定组是否已无成员。在一较短的时间内路由器若没有收到该组的报告,则删除该组。

在共享网段上,有多个路由器(如:备份路由器)时,怎么办?

3

课程XXXX IGMP协议基本原理(M0000 0030) Issue1.1

IGMPÓͶ°ÌíÊø´Ë¿«ÐÆÃ𴯬ð10.10.0.1/16°Îé¯ÌûÌ¢10.10.0.3/16°Îé¯ÌûÌ¢»Î·¡Ç§©ÜÊ£«¢°éίÌûÌ¢¿Ð«ÆÃðǧͧʣ«¢°éίÌûÌ¢ÓÍÔ¿«¢ÈʰéίÌûÌ¢ 当有多个组播路由器连接在同一个LAN网段上时,为了减少网段上的查询消息,将由一个特殊的路由器来发送查询消息,其它路由器监听并接收查询消息和成员关系报告。这个特殊的路由器就是查询器。它从同接在一个LAN上的路由器中选举产生。

任何路由器启动组播服务时,它都默认自己为查询器,并发送普遍查询消息。查询器在收到更小源IP地址的查询消息后就停止发送普遍查询消息,变成非查询器。

当查询器失效不再发送查询消息。非查询器将变成查询器重新发送查询消息。 非查询器如何知道查询器失效?所有非查询器都启动一个查询定时器。无论何时,非查询器只要收到普遍查询消息就重新启动定时器。当定时器超时,非查询器立即发送查询消息,变成查询器。

4

课程XXXX IGMP协议基本原理(M0000 0030) Issue1.1

ªµ¨æÏÓÓöý±É10.10.0.1/16°Îé¯ÌûÌ¢ÌÐ쥪¨µæÌÐ쥪¨µæÌÐ쥪¨µæÌÐ쥪¨µælll¿Ð«Æðô¨ÃÖ¢«ÈÊé°Î¯¬ÊÐøÓÍÀ¼µö¬éÓ¸ÐÍϸµö±ÆÑª«¢ÈÊÌìÐ¥ª¨µæÃûäȱƪѪ¸ÏÓÃÓ°¸ÕÑ«¢Èʨªµæ 当共享网段上有多个主机位于同一组播组时,可能会有多台主机同时响应路由器发出的组查询消息,形成报告风暴。这时我们需要使用报告抑制机制来避免在网段上形成报告风暴。IGMP定义了报告抑制机制,即:当主机收到查询消息并不立即发送响应报告,而是启动定时器,延时一个随机长短的时间才发送响应报告。其间,主机只要收到自己所属组的任一台主机发出的组成员关系报告(这台主机计时器计时结束),就不再发送成员关系报告。这样,每一个组中只有一台主机发送响应报告,避免了报告风暴。

最后,看看IGMP消息的报文格式(版本2)。

5

课程XXXX IGMP协议基本原理(M0000 0030) Issue1.1

IGMPv2ª¨ËÁµñǺ0½Í­Ê1¬²îïÌìХǪ¹ä¬°é¤¬é³ÔÓ«2ÍΣé·Ê3lϬÑÓºÖ˧³¤Ë¸ 类型:有关主机和路由器相互作用的IGMP消息有三种类型:

0x11表示组播组查询。这种类型又有两种子类型:普遍查询和指定组查询; 0x16表示版本2组播组查询报告消息; 0x17表示离开组播组。

为了与IGMPv1兼容,又定义了一些新的消息类型: 0x12表示版本1组播组报告消息。

最大响应时间:描述了主机发送一个响应消息前的最大允许延时时间。只对组播组查询消息(包括普遍查询和特定组查询)才有意义。

校验和:为整个IGMP包的二进制反码的和的二进制反码(也包括IP包的包头)。计算校验和时,校验和字段被置0。收到包在处理之前,先确认校验和。 组播组地址:普遍查询时,组播组地址被置0。指定组查询时,组播组地址置为特定的组播组地址(224.0.0.1)。

IGMP消息封装在IP报文内传送,协议号为2。

6

课程XXXX IGMP协议基本原理(M0000 0030) Issue1.1

1.1.3 IGMP三版本比较

IGMPÅý©æª»ªÅºÌIGMP V1°¯éÎÃðΡ»Õ½¼ë§«ºÇºÓ¨µ´¬é°éίӴµ¨Ñ²¡¢¬é¹ÐÅëÏ¼Æ½Ì°ã¿«ÐÆÍ­ÏéÁÁ¬¬½ë¼§ËÞËÞIGMP V2¬¹Ñ·Î¡»ÕӴ𯫢±ö½ë¼§ª¨ËÁÐÍËÞIGMP V3¬¹Ñ·Î¡»ÕӴ𯫢±ö½ë¼§ª¨ËÁÐÍÐÍ IGMPv1与IGMPv2相比,IGMPv1较为简单。IGMPv1没有定义主机离开消息、指定组查询消息,也没有定义查询器的选举。IGMPv1主机离开时将不发送任何消息,仅仅是安静地离开。路由器通过组成员定时器超时来判断组已无成员存在。在IGMPv1下,查询器也是依靠组播路由协议,由指定路由器(DR)来担任的。 IGMPv3目前还不成熟。

7

课程XXXX IGMP协议基本原理(M0000 0030) Issue1.1

1.1.4 IGMP v2 与 IGMP v1 的兼容

©ªæ»1Ðë©æª»2¹æÅݲ¥½í©ªæ»1ð¸Óú©ªæ»1ð¸Óú©ªæ»2ð¸Óú©ªæ»1«Ð¿ÆÃð©ªæ»2«Ð¿ÆÃð¿Ð«ÆÃð©²æª©»1«ºÇº¤¬¶ðÓ¾©æª»1´¨ÇªÃð±¬Çª©ªæ»2Óð¸ú¸©ªæª»1Óðúª¸¨µæÏÓÓéªæ»2Ó¡ñǵº¹æÅÝæª©»1Ó¡ñǵº©ªæ»2¿«ÐÆðÄüÓÃÂä˧檩»1«ºÇº©ªæ»2ð¸Óú©ªæ»1Óð¸ú¨µªæÏÓÓÃæª©»2Óð¸ú©ªæ»2Ó¡ñǵº¹æÅÝæª©»1Ó¡ñǵº©ªæ»2¿«ÐÆðÄüÓÃÂä˧檩»1«ºÇº©ªæ»1«Ð¿ÆÃð©ªæ»2«Ð¿ÆÃð¿Ð«ÆÃð©²æª©»1«ºÇº¤¬¶ð 版本2主机与版本1路由器兼容

版本2主机在收到IGMPv1普遍查询消息时,判断最大响应时间字段为0,发送IGMPv1成员关系报告。版本2主机能被版本1主机的报告抑制,只能发送IGMPv1成员关系报告。

版本1主机与版本2路由器兼容

版本1主机收到普遍查询消息时,发送IGMPv1成员关系报告;版本2主机在收到IGMPv2普遍查询消息时,发送IGMPv2报告。版本1主机成员关系报告不能被IGMPv2报告抑制。因此,路由器将始终都能接收到IGMPv1报告。 当版本2路由器收到IGMPv1报告时,进入有版本1主机状态,并启动版本1主机存在定时器。在定时器超时前,路由器不对离开消息作任何处理。当定时器超时,路由器就认为没有版本1主机存在,将完全按照IGMPv2动作。 混合版本1与版本2路由器兼容

如果有版本1路由器存在于子网中,版本2路由器必须被强制地按IGMPv1配置。以便于正常使用。

8

课程XXXX IGMP协议基本原理(M0000 0030) Issue1.1

1.1.5 IGMP窃听(IGMP Snooping)

IGMPÄÑÉýº¨¾¢·Êˬ¸¤¬éIGMPª¨µæ1CPU¬«§¢ªíMAC³ÔÓ«´¼ÈÖIGMP°éί001£­02£­030 1 3 52345 前面提到能够具有组播功能的二层交换机能够建立组播MAC地址转发项,但它究竟如何建立起来的?常用解决方案是IGMP窃听。 IGMP监听的工作原理如下:

1、主机发出IGMP成员报告消息,这个消息是给路由器的;在IGMP成员报告经过交换机时,交换机对这个消息进行监听并记录下来,形成组成员和端口的对应关系。

2、交换机在收到组播数据报文时,根据组成员和端口的对应关系,仅向具有组成员的端口转发组播报文。

3、当交换机收到IGMP查询消息后将向所有端口转发以维护转发项,但交换机只向路由器发送一次成员关系报告以响应查询。

这个原理看似简单,但实现起来相当复杂。首先,要求交换机具有提取第三层信息的功能;其次,要求交换机对所有的组播报文进行监听和解读,这会产生很多的无效工作;此外,监听和解读工作会占用大量的CPU处理时间。

IGMP最原始的设计是在共享介质(如Ethernet)上运行的。当用二层交换机搭建一个局域网时,许多的厂家在交换机中内嵌IGMP SNOOPING,以避免IP组播报文在所有端口泛滥。当前在局域网中,针对IPv4组播最好的经验是用IGMP Snooping来避免不必要的IPv4组播泛滥。

9

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- niushuan.com 版权所有 赣ICP备2024042780号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务