IGMP版本
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.1.1 IGMP的版本
到目前为止,IGMP有三个版本:
●IGMPv1(由RFC 1112定义)
●IGMPv2(由RFC 2236定义)
●IGMPv3(由RFC 3376定义)
所有版本的IGMP都支持ASM(Any-Source Multicast,任意信源组播)模型;
IGMPv3为可以直接应用于SSM(Source-Specific Multicast,指定信源组播)
模型。
4.1.2 IGMPv1工作机制
IGMPv1主要基于查询和响应机制来完成对组播组成员的管理。
当一个网段内有多台组播路由器时,由于它们都能从主机那里收到IGMP成员
关系报告报文(Membership Report Message),因此只需要其中一台路由器
发送IGMP查询报文(Query Message)就足够了。这就需要有一个查询器
(Querier)的选举机制来确定由哪台路由器作为IGMP查询器。
对于IGMPv1来说,由组播路由协议(如PIM)选举出唯一的组播信息转发者
DR(Designated Router,指定路由器)作为IGMP查询器。
说明:
有关DR的介绍,请参见“5.1.4 2. DR选举”。
图4-1 IGMP查询响应示意图
如图4-1所示,假设Host B与Host C想要收到发往组播组G1的组播数据,
而Host A想要收到发往组播组G2的组播数据,那么主机加入组播组以及IGMP
查询器(Router B)维护组播组成员关系的基本过程如下:
(1)主机会主动向其要加入的组播组发送IGMP成员关系报告报文以声明加
入,而不必等待IGMP查询器发来的IGMP查询报文;
(2)IGMP查询器周期性地以组播方式向本地网段内的所有主机与路由器发
送IGMP查询报文(目的地址为224.0.0.1);
(3)在收到该查询报文后,关注G1的Host B与Host C其中之一(这取决于
谁的延迟定时器Delay Timer先超时)——譬如Host B会首先以组播方
式向G1发送IGMP成员关系报告报文,以宣告自己要加入G1。由于本
地网段中的所有主机和路由器都能收到Host B发往G1的报告报文,因
此当Host C收到该报告报文后,将不再发送同样针对G1的报告报文,
因为IGMP路由器(Router A和Router B)已知道本地网段中有对G1
感兴趣的主机了。这个机制称为IGMP成员关系报告抑制机制,该机制有
助于减少本地网段的信息流量;
(4)与此同时,由于Host A关注的是G2,所以它也将以组播方式向G2发送
报告报文,以宣告自己要加入G2;
(5)经过以上的查询和响应过程,IGMP路由器了解到本地网段中有组播组
G1和G2的成员,于是由组播路由协议(如PIM)生成(*,G1)和(*,
G2)组播转发项作为组播数据的转发依据,其中的“*”代表任意组播源;
(6)当由组播源发往G1或G2的组播数据经过组播路由到达IGMP路由器
时,由于IGMP路由器上存在(*,G1)和(*,G2)组播转发项,于是
将该组播数据转发到本地网段,接收者主机便能收到该组播数据了。
IGMPv1没有专门定义离开组播组的报文。当运行IGMPv1的主机离开某组播
组时,将不会向其要离开的组播组发送报告报文。当网段中不再存在该组播组
的成员后,IGMP路由器将收不到任何发往该组播组的报告报文,于是IGMP
路由器在一段时间之后便删除该组播组所对应的组播转发项。
4.1.3 IGMPv2的改进
与IGMPv1相比,IGMPv2增加了查询器选举机制和离开组机制。
1. 查询器选举机制
在IGMPv1中,当某共享网段上存在多个组播路由器时,由组播路由协议(如
PIM)选举的指定路由器充当查询器。
在IGMPv2中,增加了独立的查询器选举机制,其选举过程如下:
(1)所有IGMPv2路由器在初始时都认为自己是查询器,并向本地网段内的
所有主机和路由器发送IGMP普遍组查询(General Query)报文(目的
地址为224.0.0.1);
(2)本地网段中的其它IGMPv2路由器在收到该报文后,将报文的源IP地址
与自己的接口地址作比较。通过比较,IP地址最小的路由器将成为查询器,
其它路由器成为非查询器(Non-Querier);
(3)所有非查询器上都会启动一个定时器(即非查询器存在时间定时器Other
Querier Present Timer)。在该定时器超时前,如果收到了来自查询器的
IGMP查询报文,则重置该定时器;否则,就认为原查询器失效,并发起
新的查询器选举过程。
2. 离开组机制
在IGMPv1中,主机离开组播组时不会向任何组播路由器发出任何通知,导致
组播路由器只能依靠组播组成员查询的响应超时来获知组播组成员的离开。
而在IGMPv2中,当一个主机离开某组播组时:
(1)该主机向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送离
开组(Leave Group)报文;
(2)当查询器收到该报文后,向该主机所声明要离开的那个组播组发送特定
组查询(Group-Specific Query)报文(目的地址字段和组地址字段均填
充为所要查询的组播组地址);
(3)如果该网段内还有该组播组的其它成员,则这些成员在收到特定组查询
报文后,会在该报文中所设定的最大响应时间(Max Response Time)内
发送成员关系报告报文;
(4)如果在最大响应时间内收到了该组播组其它成员发送的成员关系报告报
文,查询器就会继续维护该组播组的成员关系;否则,查询器将认为该网
段内已无该组播组的成员,于是不再维护这个组播组的成员关系。
4.1.4 IGMPv3的改进
IGMPv3在兼容和继承IGMPv1和IGMPv2的基础上,进一步增强了主机的控
制能力,并增强了查询和报告报文的功能。
1. 主机控制能力的增强
IGMPv3在特定组查询的基础上增加了针对组播源的过滤模式
(INCLUDE/EXCLUDE),使主机在加入某组播组G的同时,能够明确要求
接收或拒绝来自某特定组播源S的组播信息。当主机加入组播组时:
●若要求只接收来自指定组播源如S1、S2、……的组播信息,则其报告
报文中可以标记为INCLUDE Sources(S1,S2,……);
●若拒绝接收来自指定组播源如S1、S2、……的组播信息,则其报告报
文中可以标记为EXCLUDE Sources(S1,S2,……)。
如图4-2所示,网络中存在Source 1(S1)和Source 2(S2)两个组播源,
均向组播组G发送组播报文。Host B仅对从Source 1发往G的信息感兴趣,
而对来自Source 2的信息没有兴趣。