IGMP学习总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IGMP学习心得:
有关IGMP的RFC文档,本人看过后,感觉实在是太枯燥泛味了,深受其“害”,为此,我对其作了一个简单的总结,如有错误之处及时指出。
在IGMP协议中定义了各种烦琐的定时器,以下我罗列出了一些比较重要的定时器。有助于我们理解IGMP协议具体的实现过程。
查询间隔(query-interval)
查询间隔是指查询者发送普通查询(general query)之间的时间间隔。
查询报告间隔(max query response time)
就是周期性普通查询数据报中的最大响应时间,缺省值是100(10秒)。
当一台主机收到一个普通查询,它为收到查询的那个接口所在的组设置延迟定时器。每个定时器都被设置成不同的随机值(降低并发的概率),该随机值采用主机所能达到的最高时间精度,值的范围是(0,max query response time)
组成员关系间隔
组成员关系间隔是指一台多播路由器在确定某一个网络内的某一个组内没有成员之前,必须要经过的时长。
其它查询者存在间隔(querier timeout)
通常情况下,每一个物理网络只有一个查询者。所有的多播路由器在启动的时候,在它的每一个相连的网络中都是查询者。如果一个多播路由器接收到另一台多播由器的一个查询消息,并且它的IP地址要比自己小,那它在该网络中要马上变成一个非查询者,因为一个子网内只允许存在一个查询者。
其它查询者存在间隔是指一台路由器在确定网络内没有其它作为查询者的路由器存在之前,必须要经过的时长。
启动查询间隔
启动查询间隔是指在查询者启动的时候,发送普通查询之间的间隔。因为在多播路由器启动的时候,为了快速并可靠地确定组成员信息,路由器应当间隔较小的发送多个普通查询。它的缺省值是1/4的查询间隔。
最后一个成员查询间隔(Last member query response time)
最后一个成员查询间隔是指为响应离开组消息而发送的指定组查询(group specific query)中的最大响应时间,同时它也是指定组查询间的时间间隔。缺省值是10(1秒)。
主动报告间隔
主动报告间隔是指主机作为某一个组的成员的最初的报告之间的时间间隔,缺省值是10秒。
以上定时器中,query-interval,max query response time,querier timeout以及Last member query response time,在博达交换机中用show ip igmp interface vlan ID可以查看,也可以手动修改。
协议简述
IGMPV1是最早的因特网组播管理协议,实现了简单的组加入,组维持功能。通过发送普通查询报文和响应报文来维持组成员和多播路由器的关系。主机离开自己所在的组时不向查询者发送任何报文。
IGMPV2(RFC2236)
IGMPV2在IGMPV1的基础上增加了对组离开报文(leave报文)支持,并且兼容IGMPV1。
当一台主机主动加入到一个组,它立即主动向同一子网内的多播路由器发送一个V2版本的组成员报告。为了防止最初的组成员报告可能会丢失或被破坏,主机会在较短的时间间隔内将该报告重复一到三次(deb ip igmp-host可以看到其过程,用交换机作为主机时每发送一个report,会复制一份发给它自已)。
多播路由器在系统运行时,每隔一断时间(query-interval)会向邻接接口发送一个普通查询报文(general query,组地址为224.0.0.1),当一台主机收到一个普通查询报文,若自己存在某一个组中,它就会发送一个响应报文,其目的地址是自己所在的组的地址,如果主机在发送响应报文之前收到了其它主机发的且目的地址是自己组地址的响应报文,为了减少网络中的流量,它会抑制使自己不在发送响应报文,因为多播路由器只关心组是否存在,并不在乎组内有多少成员,也不在乎这些成员分布在哪里。
当一台主机离开一个组时,它主动向多播路由器发送一个离开组消息(组地址为224.0.0.2)。当多播路由器收到一个离开组消息时,它会在短时间内每隔一定的时间(最后一个成员查询间隔)发送一个指定组查询(specific query)报文。这些指定组查询的最大响应时间被设置为(最后一个成员查询间隔)。如果最后一个查询超时了,还是没有收到报告,多播路由器就假定这个组已经没有本地成员了。如果该组内的其它成员收到该组的指定组查询报文,它会向多播路由器(查询者)发送响应(report)报文,告诉查询者,这个组内还有成员在,请不要删除。
IGMPV3(RFC3376)
IGMP的V3版本相对于V2版本来说,增加了对源过滤的支持,同时兼容V1,V2版本。即主机有能力向查询者报告只接收某些特定源发送过来的组播数据(include模式),或者是只接收除某些特定源之外的组播源发送过来的数据(exclude模式)
IGMPV3中的源过滤有两种模式,即INCLUDE和EXCLUDE模式,在include模式下,只有来自源过滤列表(source-list)列出的那些IP源地址的并发往指定多播地址的数据报才会被接收。在exclude模式下,只有来自除了源过滤列表列出的那些IP源地址之外的源地址,并发往指定多播地址的数据才会被接收。
若用博达交换机模拟主机简单地加入一个组,不配置源过滤列表,则向子网内的多播由器发送TO_EX NULL报文,即表示工作在EXCLUDE模式,源过滤列表为空。若离开一个组则发送TO_IN NULL报文。(注:V3版报告在发送时,目的地址是224.0.0.22)当然,我们也可以配置带有源过滤列表的组加入命令。如:ip igmp join-group 225.0.0.8 include 1.0.0.8。
查询的变体
查询消息有三种类型的变体(V3的查询报文中包含有关源地址消息的字段):
1、“普通查询”(general query):由多播路由器发出,用于获知邻接接口(即查询所传输的网络中所相连的接口)的完整的多播接收状态。在一个普通查询中,组地址字段和源数量(N)字段都为0。
2、“指定组查询”(group specific query):由一台多播路由器发出,用于获知邻接接口中跟某一个IP地址相关的多播接收状态。在指定组查询中,“组地址”字段含有需要查询的那个组地址,源数量(N)字段为0。
3、“指定组和源查询”(grp-src specific query):由一台多播路由器发出,用于获知邻接