4)成员离开
图2-15 IGMPv2组成员离开
1.3 IGMPv3协议
1.3.1 IGMPv3的工作原理
IGMPv3的提出,主要是为了配合源特定组播的实现,即组播组成员可以指定接收或指定不接收某些组播源的报文。这样主机就可以有选择性接收来自某个特定组播源的数据包,而不是被动接收该组中所有组播源的数据包。IGMPv3的这一特性,可以实现源特定组播SSM技术。源特定组播(Source Specific Multicast,SSM)是一种区别于传统组播的新的业务模型,SSM保留了传统PIM-SM模式中的主机显式加入组播组的高效性,但是跳过了PIM-SM模式中的共享树和RP规程。SSM直接建立由(S,G)标志的一个组播最短路径树。SSM的一个(S,G)对也被称为一个频道(Channel)。PIM-SSM是对传统PIM协议的扩展,使用SSM,用户能直接从组播源接收组播报文,需要汇聚点(RP)的帮助。
IGMPv3在IGMPvl/v2的基础上提供了额外的源过滤组播功能(Source FilteredMulticast,SFM)。在IGMPvl/v2中,主机只根据组地址来决定加入某个组,并从任何一个源接收发给该组地址的报文。具有源过滤组播功能(SFM)的主机使用IGMPv3来表示主机所希望加入的组播组,同时还表示该主机所希望接收的组播源的地址。主机可以使用一个包括列表(Inclusion List)或一个排除列表 (Exclusion List)来表示对源地址的限制。即组播组成员可以指定接收或指定不接收某些组播源的报文。这样主机就可以有选择性接收来自某个特定组播源的数据包,而不是被动接收该组中所有组播源的数据包。
1.3.2 IGMPv3的报文格式
IGMPv3的报文类型有以下几种:
0xll:成员关系查询报文 (MembershipQeury)。
0x22:版本3成员关系报告报文(version 3 Membership Report) 0x12:版本1成员关系报告报文(version 1 Membership Report) 0x16:版本2成员关系报告报文 (version 2 Membership Report) 0x17:版本2离开报文 (version 2 LeaveGroup)。
报文类型的值填写在报文中的类型字段。在IGMPv3中,查询报文和报告报文格式有较大差异,需要分别描述。图2-16为查询报文的格式
图2-16 IGMPv3查询信息格式
(1)类型字段,设置为0xll,代表该报文为查询报文。 (2)最大响应时间字段,指明了主机发出响应的最长时间。
(3)组地址字段,功能与IGMPv2一样,可以用于通用查询和组特定查询。 (4)s字段,置为1时,其他路由器不对该报文进行处理。
(5)QRV字段,查询路由器的健壮值(Querier’s RobustnessVariable),该值影响计时器和重试次数的取值。
(6)QQIC字段,查询路由器的查询间隔码(Querier’s QueryIntervalCode),该值影响查询路由器的查询间隔时间,非查询路由器按照此值更新自己的缺省值。
(7)源地址数目字段,该值表在这个报文中包含了多少个源地址。当进行通用查询(GeneraQuery)或者组特定查询 (GroupSpecific Query)时,该值置为0;当进行特定组和源查询 (Group Source pecific Query,用于PIM一SSM)时,该值为源特定地址的数目。虽然该值最大可为65536,但是实际上受限于数据链路层的MTU,例如在以太网上,1P数据报最长为1500字节,除去IP报头的24字节和IGMP报头的12字节,剩余1464字节,所以最多包含366(1464/4)个源地址。 (8)源地址地段。
IGMPv3查询信息报文在网络中传输完整的报文格式如图2-17:
图2-17 在网络中传输的IGMPv3查询报文格式
IGMPv3报告报文的格式较为复杂,如图2-18所示。
图2-18 IGMPv3侦听者报告格式
(1)类型字段,置为0x22,表示该报文为IGMPv3报告报文。 (2)组记录数目字段,表示此报文中包含的组记录数目。
(3)组记录字段。包含若干个组记录,每个组记录长度不固定,其内容如图2-19:
图2-19 IGMPv3组记录格式
①组记录类型字段,表示该组记录中包含的数据的类型,目前定义了六种类
型,分别是:
·MODE IS INCLUDE。表示该主机的过滤模式为INCLUDE.也就是说,后面列出的地址都是主机想要接收的组播源地址。
·MODE IS EXCLUDE。表示该主机的过滤模式为EXCLUDE,也就是说,后面列 出的地址都是主机想要拒绝的组播源地址。
·CHANGE TO INCLUDE MODE。表示该主机的过滤模式从EXCLUDE切换为INCLUDE模式。 ·CHANGE TO EXCLUDE MODE。表示该主机的过滤模式从INCLUDE切换为EXCLUDE模式。 ·ALLOW NEW SOURCES。表示该主机中新增的想要接收的源地址。 ·BLOCK OLD SOURCES。表示从该主机中删除的不想接收的源地址。
②辅助数据长度字段,在组记录的最后,可以增加以4字节为单位的辅助数据,如果没有辅助数据,则置为0。
③源地址数目字段,表示该记录中包含了多少个组播源地址。 ④组地址字段,与源地址共同表示特定源组播。
⑤源地址字段,每个长度为32bits。标志源地址,数目由源地址数目字段表示。
⑥辅助数据字段。为将来的应用预留,在IGMPv3中并不需要。一台主机在发送报告报文的时候,应当把自己的源IP地址包含在IP数据报中,当主机还没有获得IP地址的时候,可以使用0.0.0.0作为源IP地址,支持IGMPv3的路由器必须接收来自0.0.0.0的数据报。主机的IGMP报文的目的地址标志为224.0.0.22,代表子网中所有支持IGMPv3的路由器。
1.3.3 IGMPv3的主要改进
IGMPv3除了支持原特定组播外,其工作原理与IGMPv2相比,并没有本质的改变,只是在某些地方做了改进和优化。以下列出了IGMPv3的主要特点和改进: ① 支持源特定组播SSM; ② 向后兼容IGMPvl和IGMPv2; ③ 主机可以定义要接收的组播源地址;
④ 非查询路由器可以与查询路由器保持参数值同步; ⑤ 最大响应时问从25.5s增加到53min,适合于较大的网络; ⑥ 辅助数据字段为将来的应用预留了空间;
⑦关系成员报告报文发送给目的地址224.0.0.22,可以帮助二层交换机更有效地实现IGMP监听 (IGMPSnooping)功能;
⑧报告报文中可以包含多个组记录,可以有效地减少网络通信量;