
组播——IGMP协议讲解
IGMP是运行在最后一跳路由器和组成员之间的控制协议,路由器通过IGMP协议来了解每个接口连接的网段上是否存在组播组的接收者,以此将组播组在对应接口转发(如果组播源和组成员之间为二层网络,则不需要配置IGMP协议)当多台主机属于同一组播组时,计时器(最大响应时间)先超时的主机发送成员报告报文后,其余主机收到该成员报告报文后停止计时,不再发送成员报告报文。IGMP因特网组管理协议,负责IPv4组播成
目录
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无响应抑制机制了
并且成员离开不再发送特定的报文,而是使用含有组记录的成员报告来表达
报文格式
特定组及源查询报文的格式
报告报文的格式
更多推荐
所有评论(0)