目录

IGMP基本概念

IGMP版本

IGMP报文类型

IGMP表项

IGMP v1

两种协议报文

成员关系报告报文格式

响应抑制机制

IGMPv1问题

IGMPv2

查询器选举——不依赖组播路由协议

三种协议报文

成员关系报告报文格式

IGMPv3

两种协议报文

报文格式


IGMP基本概念

IGMP因特网组管理协议,负责IPv4组播成员注册管理的协议,用来在接收者和与其直接相连的组播路由器之间建立、维护组播成员关系

IGMP是运行在最后一跳路由器和组成员之间的控制协议,路由器通过IGMP协议来了解每个接口连接的网段上是否存在组播组的接收者,以此将组播组在对应接口转发(如果组播源和组成员之间为二层网络,则不需要配置IGMP协议)

主机侧:通过IGMP协议向路由器通告组成员关系

路由器侧:通过IGMP协议维护组成员关系

IGMP版本

IGMP目前有三个版本,其基本区别如下

IGMPv1

普遍组查询报文、成员关系报告报文、响应抑制机制

IGMPv2--相比v1

新增特定组查询报文、增加成员离开报文、可以选举查询器、最大响应时间可更改

IGMPv3—相比v2

新增特定组播源查询报文、删除了单独的成员离开报文、删除了响应抑制机制

注意:

v1、v2、v3都支持ASM模型

v3可以直接支持SSM模型,v1、v2需要通过SSM-Mapping技术来支持SSM模型

IGMP报文类型

 

报文类型

作用

主机发送

Membership Report

主机加入组播组

Leave Group

主机离开组播组

IGMP查询器发送

General Query

普遍组查询;维护组播表项

Group-Specific Query

特殊组查询;维护组播表项

IGMP表项

IGMP的表项老化时间大概是3分钟


IGMP v1

两种协议报文

1、普遍组成员关系查询报文——报文中的组播地址字段为 0.0.0.0

  • 组播路由器周期向局域网段内通过224.0.0.1发送查询报文(周期60s)
  • 向网段内的所有主机发送的查询报文,用来查询哪些组播组存在成员
  • 网段内的所有主机、路由器都可以接收

2、成员关系报告报文——报文中的组播地址字段为D类非224.0.0.X地址

       报告成员加入了哪个组播组,发送此报文有两种情况

  • 主动报告:当主机加入某个组播组时,主动发送此报文
  • 被动报告:当主机收到查询报文后,必须在最大响应时间内随机取一个值,进行计时,计时结束后被动发送成员关系报告报文。(最大响应时间10s)
  • 最大响应时间结合响应抑制机制,可以节约网络带宽

注意:

        路由器周期性发送普遍组查询报文(缺省60s)

成员关系报告报文格式

响应抑制机制

在被动报告时,会触发相应的响应抑制机制,节约带宽

当多台主机属于同一组播组时,计时器(最大响应时间)先超时的主机发送成员报告报文后,其余主机收到该成员报告报文后停止计时,不再发送成员报告报文

IGMPv1问题

1、当成员离开组播组时,静默离开。IGMPv1中没有单独的离开报文。

   当查询130s没有收到响应时,则组播路由器就会认为该成员离开

   130s来源:查询报文周期(60s)×健壮系数(2)+最大响应时间(10s)

   健壮系数——指的是特定组查询连续发送的次数(v2有特定组查询)

2、查询器选举

当网段内只有一台组播路由器时,则此组播路由器来发送查询报文。

 当网段内有多台组播路由器时,通过选举出来一个组播路由器充当查询器来发送查询报文。

  • IGMPv1没有定义选举查询器的功能,需要依赖组播路由协议PIM来进行选举
  • 在v1版本中,查询器由PIM的DR充当。其负责周期性的发送普遍组查询报文
  • DR选举:R3和R4在建立PIM邻居时。先比较DR优先级,大的为DR。再比较连接主机端的IP地址,大的为DR。

3、IGMPv1中路由器无法控制成员的最大响应时间(10s)


IGMPv2

查询器选举——不依赖组播路由协议

当网段内有多台组播路由器时,选举IP地址最小的IGMPv2路由器为查询器。

注意:

  • 初次成为查询者时,前两次发送的普遍组查询报文间隔15s,之后再每隔60s发送一次普遍组查询报文
  • 非查询者在125s内收不到查询者发的查询报文,则会认为查询器失效,重新失效
  • 125s是“其它IGMP查询者的存活时间”,可以修改。此时间=健壮系数*普遍组报文发送间隔+一半的最大响应时间

三种协议报文

1、查询报文——细分为两种报文

  普遍组查询报文

  特定组查询报文——报文的组播地址字段为被查询的组播组IP地址

  • 向网段内特定组播组的主机发送的查询报文,用于查询该组播组是否存在成员
  • 仅当查询者收到主机的离组报文后,才发送特定组查询报文
  • 当连续2次特定组查询报文都无响应时,代表成员已经从此组播组离开

2、成员关系报告报文——与v1相比最大响应时间有变化

  • 主机收到普遍组查询报文的最大响应时间为10s(0~10取一个随机值),计时结束时发送此报文。(此最大响应时间可调---最大调为25s)
  • 主机收到特定组查询报文的最大响应时间为1s(0~1取一个随机值),计时结束时发送此报文。(此最大响应时间可调--最大为5s)

3、成员离开报文——报文的组播地址字段为被查询的组播组IP地址

  • 成员离开组播组后主动向网段内所有组播路由器发送离开报文
  • 发送的目的地址是224.0.0.2

注意:

  • v2依旧拥有响应抑制机制(普遍组查询和特定组查询都有效)

成员关系报告报文格式


IGMPv3

两种协议报文

1、查询报文——细分为三种

     普遍组查询报文

     特定组查询报文

     特定组及源查询报文——报文的组播地址字段为被查询的组播组IP地址

  • 向网段内特定组播组的主机发送的查询报文,用于查询该组成员是否愿意接收特定源发送的数据

2、报告报文(目的地址为224.0.0.22)

     IGMPv3主要使用224.0.0.22地址来进行成员关系报告

     不同于v1和v2的报告报文

        v3使用组记录来表达组播组和组播源的对应关系

        v3并且一份报文可以携带多个组记录(v1、v2一份报文只能携带一个组播组)

     组记录类型

当前状态记录MODE_IS_INCLUDE过滤模式为INCLUDE
形式:组播组G,INCLUDE,(S1、S2、S3)
表示接收组播组G中组播源为S1、S2、S3的数据
MODE_IS_EXCLUDE过滤模式为EXCLUDE
形式:组播组G,EXCLUDE,(S1、S2、S3)
表示接收组播组G中除了组播源S1、S2、S3之外的组播源的数据
状态变化记录类型CHANGE_TO_INCLUDE_MODE将当前的过滤模式更改为INCLUDE
CHANGE_TO_EXCLUDE_MODE将当前的过滤模式更改为EXCLUDE
源列表变化记录ALLOW_NEW_SOURCES如果现在的过滤模式为INCLUDE,则向现有源列表中添加这些组播源
如果现在的过滤模式为EXCLUDE,则从现有源列表中删除这些组播源
BLOCK_OLD_SOURCES如果现在的过滤模式为EXCLUDE,则向现有源列表中添加这些组播源
如果现在的过滤模式为INCLUDE,则从现有源列表中删除这些组播源

注意

        v3无响应抑制机制了

        并且成员离开不再发送特定的报文,而是使用含有组记录的成员报告来表达

报文格式

特定组及源查询报文的格式

报告报文的格式 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐