77范文网 - 专业文章范例文档资料分享平台

IGMP Snooping原理及应用(2)

来源:网络收集 时间:2019-03-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

如图3所示。

IGMP报文通过IP首部中协议字段值为2来指明。

Internet组管理协议(IGMP)是基于LAN的信令协议,用来管理组成员的关系。每个LAN都有一台指定的多播路由器,它负责定期查询所有主机,以刷新组成员关系,并吸收新的成员。对于路由器的查询,属于组的端节点产生应答报告,其中包含所在的组或要加入的组。查询和应答消息的TTL值都是1,以便将交换范围限制在本地子网。

多播主机利用IGMP通知路由器,路由器所在子网的一台计算机想加入一个特定的多播组。IGMP是IP多播方案的基础。要想使它正常工作,两个多播节点之间的所有路由器都必须提供对IGMP的支持。例如,假定机器A和B加入了多播组224.1.2.3,两者间总共存在着三个路由器。此时,三个路由器都必须具有IGMP能力,以保障通信的成功进行。若某个路由器不具备IGMP能力(即不支持IGMP),那么收到多播数据后,会将它草草地丢弃了事。若一个应用加入了多播组,一条IGMP“加入”命令便会发给子网上那个特殊的“所有路由器”地址(224.0.0.2)。该命令用于通知所有路由器,有客户机对一个特定的多播地址产生了兴趣,即它们想加入那个多播组。以后,假如路由器收到了发给那个多播地址的数据,便会将其转发给所有多播客户机。

此外,若一个端点加入多播组,便会同时指定一个“生存时间”(TTL)参数。通过该参数,我们便知道对于在端点机器上运行的多播应用程序来说,为了收发数据,中途需要经历多少个路由器。例如,假定我们编写了一个IP多播应用,令其加入组1,同时TTL值设为2。此时,一个加入命令会传给本地子网上的“所有路由器”组。子网内的路由器会根据这一命令,判断出自己以后应将多播数据转发到那个地址。随后,路由器会将TTL值减1,再将一条加入命令传给与自己相邻的各个网络。那些网络上的路由器会如法炮制,最后又将TTL值减去1。就我们的例子来说,此时的TTL 值已经变成了0,所以“加入”命令不会再继续传递下去(不再传给相邻的网络)。从中可以看出,TTL实际限制了多播数据能够蔓延得多“远”。若一个路由器拥有由工作站注册的一个或多个多播组,便会向“所有主机”组(224.0.0.1)定时发送一条“组查询”消息,查询当初通过一条加入命令通知它的每个多播地址。假如网络上的客户机仍在使用那个多播地址,便会用另一条IGMP消息做出响应,让路由器放心,以便继续转发与那个地址对应的数据。否则的话,路由器便会停止为那个地址转发任何数据。

有时可能产生错误:客户机可能在放弃了多播组1成员资格后,马上便加入了组2。但另一方面,除非路由器执行了一次组查询,但没有接收到响应,否则会将发给多播组1和2的数据都转发到网上。假如这两个组的传输数据总量大于网络本身允许的带宽,为此,可考虑换用IGMP协议的第2版。允许客户机向路由器发送一条“离开”消息,明确告诉它停止转发指定多播地址的数据。当然,针对每个特定的地址,路由器都维持着一个参考性的客户机计数。因此,除非子网上的所有客户机都脱离了一个特定的地址,否则发给那个地址的数据仍会继续“蔓延”下去。IGMP共有三个版本,随着版本的升级,协议功能不断扩展。

1.3.1 IGMPv1

图4显示了长度为8字节的IGMPv1报文格式。

3

0IGMP版本/434IGMP类型/478未用/81516检验和/1631组地址/32

图4 IGMPv1报文的字段格式

IGMP类型为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。检验和计算和ICMP协议相同。

组地址为D类IP地址。在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址。

1.3.1.1 IGMPv1查询响应过程

192.168.1.1192.168.1.2224.1.1.1H1退出报告224.0.0.2H2成员报告224.1.1.1特定组查询 224.1.1.1192.168.1.3224.1.1.1H3R1R2

图5 IGMPv1查询响应过程

路由器R1(IGMPv1查询器)周期性地,向所有的主机多播组组播地址(224.0.0.1),即向当前子网上的所有主机发送IGMPv1成员关系查询。只要主机支持多播并想要收到查询,就必须接收上述查询信息。

所有满足接收IGMPv1查询消息的主机都要收到IGMPv1成员关系查询,并且某一主机(H2)首先通过向多播分组224.1.1.1发送IGMPv1成员关系报告做出反应。报告通知子网中的路由器至少有一主机对多播组224.1.1.1信息感兴趣。但是对于某一查询,当前子网中对于每个组只能有一个成员响应成员报告。这样可以节约子网带宽及主机处理时间。这一过程称为响应抑制。报告抑制机理有助于减少当前子网的消息流数量以及降低路由器的处理负担。

在本地子网上的主机H3也收到IGMPv1成员关系查询,并且通过向多播组224.2.2.2发送IGMPv1成员关系报告做出反应。报告通知路由器在子网中至少有一个主机对多播组224.2.2.2的多播信息感兴趣。

作为查询响应交换的结果,路由器R1现在知道在局部子网中有接收站点需要多播组224.1.1.1和224.2.2.2就会根据使用的组播路由协议建立起相应的转发状态。

4

1.3.1.2 IGMPv1加入过程

成员加入一个多播组不用等待路由器发出下一次成员关系查询报文时再响应加入,可以主动发动成员报告表示加入,特别是当主机是第一次加入子网的组播组时,这样在组内没有其他组成员的情况下缩短了成员加入多播组的延迟。因此,当主机想加入多播组的时候,它要立即向想要加入的多播组发送一个或多个未经同意的成员关系报告。

224.2.2.2H1H2报告H3R1

图6 IGMP加入过程

图6显示了主动的加入过程。这里,主机H3想要收到多播组224.2.2.2的信息流。它并不等待来自路由器A的下一次成员关系查询,而是立即向组224.2.2.2发送未经同意的IGMPv1成员关系报告,以便通知路由器它想要加入的组。

1.3.1.3 IGMPv1离开过程

在IGMPv1中没有为主机定义特殊的离开机制。IGMPv1主机可以在任何时候离开多播组而不用给路由器发任何离开组通知。当主机不再需要从特定组收到多播信息流时,主机仅仅停止处理多播组信息,并且停止对组IGMP成员关系报告的IGMP查询做出反应。 如果子网内还有同一多播组的多个成员,那么主机这样离开多播组不会出现什么问题,因为子网中还需要继续接收多播信息流。但如果离开多播组的是子网内的最后一个成员,那么路由器在一段时间内仍会继续转发这个无用的多播组的信息到这个网段,虽然这时这一网段内已不存在该组成员。

终止多播信息的发送取决于IGMPv1查询路由器,只要在经过几个查询间隔后没有得到响应即可导致多播组超时而不再向该网段上发送组播信息。但是这样做缺乏效率,特别是当多播组个数太多并且这些组的传输负担很重时。

因此,IGMPv1路由器知道在子网中不再有任何活动的多播组的接收站点的唯一方法是弄清楚何时路由器停止得到主机发送的成员关系报告。因此IGMPv1路由器需要对子网中的每个多播组维护一个计时器。当路由器接收到子网中的主机发送来的成员关系报告时,该多播组的计时器就复位。当与某个多播组相关的计时器超时后,就说明在本网段上已经没有活动的该组多播组接收者,则停止继续向该网段上转发该多播组信息。对于IGMPv1路由器来说,超时时间间隔一般是查询时间间隔的3倍。

5

1.3.2 IGMPv2

IGMPv2大多数变化的主要目的不但包括解决在最初的协议规范中存在的二义性问题,而且还要解决离开和加入多播组存在的延时问题,图7为IGMPv2格式报文。

IGMPv2新特征:

查询选择过程:IGMPv2的路由器提供选择查询路由器的能力,而不用依赖多播路由协议来进行。

最大响应时间字段:查询信息的新字段,允许查询路由器指定最大查询响应时间。 特定组查询消息:IGMPv2中加上了特定组查询以允许路由器只查询某一个特定组而不是所有组的成员执行查询操作。这是为找出某组中是否还留有成员的优化办法,不要求所有组发出响应报告。特定组查询和普遍查询的区别就在于普遍查询多播到所有主机组地址(224.0.0.1)而特定组查询只组播到特定组的多播地址。

离开组消息:IGMPv2中还加上了一种离开组消息,以允许主机告诉路由器它们要离开多播组。

0IGMP报文类型/878最大响应时间/81516检验和/1631组地址/32

图7 IGMPv2报文的字段格式

表2给出了IGMPv2报文类型字段,IGMPv1成员关系查询消息包括4bit版本字段中的一个0x1和4bit类型字段中的一个0x1。它们合并在一起形成0x11的8bit值,这和作为成员关系查询的IGMPv2类型代码完全一样。为使IGMPv2类型代码与第一版的一致,就是用来在IGMPv1和IGMPv2之间提供兼容性。这使IGMPv2主机和路由器在网络有其他IGMPv1

表2 IGMPv2的类型字段 类型 成员关系报告 退出报告 值 0x16或00010110 0x17或00010111 IGMP报文查询(一般或特殊) 0x11或00010001 查询成员报告退出报告一般的特殊的 图8 IGMPv2的报文类型

主机和路由器时能够识别IGMPv1消息。图8给出了IGMPv2报文类型的框图。

6

1.3.2.1 IGMPv2查询响应过程

IGMPv2的成员关系查询和成员关系报告信息与IGMPv1信息几乎完全相同,只有两个例外。第一个差别在于IGMPv2查询信息分为两类:普遍查询,与旧的IGMPv1查询执行同样的功能;特定组查询-直接对单个组查询,而且它的目的是为了查询某一个组而不是所有组。在特定组查询里,组地址字段包含正在查询的特定组。收到消息的IGMPv2主机用同样的方法做出响应,正如它们对常规查询所用的方式。第二个差别是IGMPv1成员关系报告(类型代码=0x12)和IGMPv2成员关系报告(类型代码=0x16)有不同的IGMP类型码。但是IGMPv2的查询响应过程和IGMPv1一样。

1.3.2.2 IGMPv2离开过程

IGMPv2规定,当主机离开多播组时,它们将发送IGMPv2定义的一种新的离开组信息类型。当某个主机离开组播组时,如果它是响应组成员关系报告查询的最后一个主机,它就要向所有路由器的组播组(224.0.0.2)发送离开组信息。增加的离开组和特定组的IGMPv2信息,与最大响应时间字段配合,使得IGMPv2把离开延迟减少到仅仅几秒钟。这是对IGMPv1的重要改进。当IGMP版本2路由器收到一个离开报文时,路由器就对于该组发出一个特定组查询,以判断是否仍有其它主机希望接收这个组播组的信息。

192.168.1.1192.168.1.2224.1.1.1H1退出报告224.0.0.2H2成员报告224.1.1.1特定组查询 224.1.1.1192.168.1.3224.1.1.1H3R1R2

图9 IGMPv2主机离开过程

图9中多播组224.1.1.1有几个组成员,当前某个主机要离开该组,具体过程如下: 主机向所有多播组路由器(224.0.0.2)发送IGMPv2离开组信息以便通知子网中的所有路由器它正在离开组。

IGMP查询路由器(假定R1),收到来自主机的离开组信息。然后路由器发送一个特定组(224.1.1.1)查询以确定当前子网中,该组是否还有主机为接收者。

如果还有主机是组224.1.1.1的成员,那么其中一个主机收到该特定组查询,便对IGMPv2成员关系报告查询做出响应,以便通知子网中的路由器组成员仍然存在;如果在子网中没有一个组224.1.1.1的成员了,那么就没有主机对该特定组查询做出响应,路由器R1停止转发该多播组信息到该子网上。

7

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库IGMP Snooping原理及应用(2)在线全文阅读。

IGMP Snooping原理及应用(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/525047.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: