IGMPv1,v2,v3的原理报文形式

1 IGMP 协议汇聚路由器
      IGMP用来动态的将各个主机注册到特定局域网中的一个组播组中。主机向本地的组播路由器发送IGMP消息来表明自己所属的组播组。在IGMP协议中,路由器侦听IGMP消息并周期的发出查询,以发现某个子网上哪些组是活动的,哪些是不活动的。
      IGMP消息在IP数据报内发送,用IP协议号2来标识。同时,将IP存活时间(TTL)字段值设定为1,因此IGMP信息处于本地范围本子网内传送并且不会被路由器转发。
1989年,IGMP版本1(RFClll2)第一次详细定义了IGMP规范。后来施乐公司对最早的IGMP版本1进行了大幅更新,产生了IGMP版本2(RFC2236)。到目前为止IGMP版本3规范己经称为IETF正式标准(RFC3376),通用的是IGMPv2。IGMPvl实现简单,但是有离开延迟过大和选择查询路由器需要依赖组播路由协议的缺点,IGMPv2对此进行了改进。IGMPv3协议的主要目的是支持源特定组播,并进一步对IGMPv2进行完善。
1.1 IGMPv1协议
1.1.1 IGMPv1的工作原理
在IGMPvl中定义了基本规则、组成员查询机制和报告机制。当某接收主机希望接收到某个组播组的数据时,它会向本地链路上的查询路由器发送加入消息,通知查询路由器本机希望申请加入的组播组;查询路由器收到加入消息之后,把这条消息加入到查询路由器所维护的状态列表,同时向源发起建立组播分发树的请求;查询路由器在设定的周期内发起组成员查询消息;接收主机收到查询消息之后,会向查询路由器发送报告消息来应答查询,否则查询路由器会认为不存在接受主机;主机如果想离开某个组播组,就对路由器的查询保持沉默,经过一定时间,路由器便知道子网内没有组成员了。
1.1.2 IGMPv1报文格式
IGMPvl报文格式如图2-4所示,
图2-4 IGMPv1报文格式
      其主要内容包括:
(1)    版本字段表示IGMP协议的版本号,在IGMP中置为1.
(2)    类型字段,在IGMPv1中,只有两个值:
取值为0x11,表示该报文为成员关系查询(Membership Query),主要是由路由器使用。
取值为0x12,表示该报文为成员关系报告(Membership Report),主要是主机使用。
(3)    校验和字段用于数据报文的校验。
(4)    组地址字段。当用于成员关系查询时,本字段置为0,并被主机忽略;当用于成员关系报告时,本字段包含组播组地址。
IGMPv1报文在网络中传输完整的报文格式如图2-5:
图2-5 在网络中传输的IGMPv1报文
1.1.3 IGMPv1工作过程
在IGMPv1中,路由器利用查询一响应过程来确定在本地子网中是否有加入某个组播组的主机存在,如果有,则这台路由器就要完成向本子网组播数据包的功能;如果没有,则这台路由器就不必向此子网转发组播包。路由器周期性地向子网上的所有主机发送组播成员关系
查询报文,希望加入某个组播组的主机就响应该查询,发送一个组播成员关系报告报文到子网上,在IGMP报文的组地址地段中加入想要加入的组播组的地址。路由器接收到来自主机的成员关系报告报文后,就知道了在该子网上有主机要加入组播组,组播组地址在报文中可以获得,接下来,路由器就会根据所使用的路由协议建立起相应的转发状态。
当一个子网上有多台主机想加入同一个组播组时,就可以利用报告响应抑制功能,来减少子网中的重复信息传递。处理流程如下:主机接收到IGMP成员关系查询报文后,对加入的每个组播组启动一个倒数计时器。当计时器的值为0时,主机发送IGMP成员关系报告报文,通知路由器子网内仍有处于活动状态的组播接收者。当计时器到达0之前,若主机接收到来自其他主机发送的同一组成员关系报告报文,那么它就停止与该计时器得到的数,重新计时,这样,就避免了发送同一个成员关系报告报文给路由器。
如果在一个子网中有多个组播路由器,那么多个路由器都发送IGMP查询报文是一种浪费,所以应当确定一个路由器作为查询路由器就可以了。但是在IGMPv1中,没有提供选举查询路由器的机制,而是把这一任务留给了组播路由协议。由于不同的协议使用不同的选举机制,会造成在一个子网中出现多个查询路由器,这也是IGMPv1的缺点之一。
但是IGMPv1的另一个缺点是缺乏显式的离开方式。当一台主机想要离开一个组播组时,并不显式地表示出来,而只是不再对路由器的查询报文进行响应。当一个网段内某个组播组的最后一个成员退出后,路由器还会继续组播这个组的数据,直到一段时间内路由器接收不到任何来自该组的成员响应,才会知道该组已经没有接收者了,然后停止转发该组的组播数据报文。因此,路由器中需要为子网中的每一个组维护一个计时器。当路由器接收到某台主机发送的报告报文时,就会将该组的计时器清零;当某个组的计时器超时后,就说明在本网段上已经没有接收者,于是停止转发该组报文。
下面是工作过程图解:
1)     组成员加入
图2-6 IGMPv1组成员加入
2)     查询与响应
图2-7 IGMPv1组成员查询
3)      响应抑制机制
图2-8 IGMPv1响应抑制机制
 
4)     组成员离开
图2-9 IGMPv1组成员离开
1.2 IGMPv2协议
1.2.1 IGMPv2的工作原理
IGMPv1的主要缺点是离开延迟过大和选择查询路由器需要依赖组播路由协议进行。针对这些缺点,IGMPv2做了相关的改进。在IGMPv2中,增加了离开组的报文格式,当主机想要离开某个组播组时,不必等待路由器发出查询报文,而是可以直接向路由器发送成员关系报告报文,这样可以有效地缩短离开延迟。另外在IGMPv2中,还明确了查询路由器的选举机制。除此之外,IGMPv2的工作原理与IGMPv1基本一致
1.2.2 IGMPv2的报文格式
IGMPv2的报文格式如图2-10所示:
图2-10 IGMPv2报文格式
它在IGMPvl的基础上,进行了两处改动:一个是将v1的版本字段和类型字段进行了合并;另一个是增加了最大响应时间字段  (MaxResponseTime)。其主要内容如下:
(1)类型字段,在兼容IGMPv1的基础上,IGMPv2中新增了两种报文类型。
·0xll:成员关系查询。与IGMPv1不同,IGMPv2的查询分为两种类型:通用查询 (GeneralQuery),组地址字段置为全0,对所有的组进行组成员查询;特定组查询  (GrouPpecificQuery),针对特定组进行组成员查询,组地址字段置为特定组的地址。

本文发布于:2024-09-21 22:40:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/370791.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:路由器   查询   组播   报文   成员   关系   报告   发送
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议