目录

简介-IGMP

IGMPv1

1.1IGMPv1支持的两种报文类型:

1.2IGMPv1工作机制

1.3IGMPv1成员加入

1.4IGMPv1存在问题

IGMPv2

2.1IGMPv2对IGMPv1的改进

2.2IGMPv2和IGMPv1报文比较

IGMPv3

3.1SSM模型的新需求:只接收特定源发送的组播数据

3.2IGMPv3工作机制

IGMP各版本之间的差异


简介-IGMP

IGMP(Internet  Group  Management  Protocol)作为因特网组管理协议,是TCP/IP协议族中负责IP组播成员管理的协议,它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

  • IGMP协议运行在主机与组播路由器之间
  • IGMP协议的作用:
    • 主机侧:通过IGMP协议向路由器通告组成员关系
    • 路由器侧:通过IGMP协议维护组成员关系
  • IGMP查询器(Querier):在多路访问网络中发送查询报文的路由器(IGMP报文是组播报文,因此只需要一个组播路由器来担任IGMP查询器)

IGMPv1

1.1IGMPv1支持的两种报文类型:

普遍组查询报文(General Query):路由器周期性地向224.0.0.1地址(表示同一网段内所有足迹和路由器)发送通用查询报文,默认查询周期为60秒,发送周期可配置。

成员关系报告报文(Membership Report):主机向查询器发送的报告报文,用于加入某个组播组或者应答查询报文。

1.2IGMPv1工作机制

  • 普遍组查询与响应
  • 响应抑制机制

如上图所示(图中接口使能IGMP),假如PC1和PC3都想接收组播组G1的数据,而                    PC2想接收组播组G2的数据,则普遍组查询与响应机制如下:

  • AR1发送目的地址为224.0.0.1的普遍组查询报文(缺省情况下每隔60秒发送一次,可配置)
  • 收到该查询报文的组成员启动定时器。PC1和PC3是组播组G1的成员,则在本地启动定时器Timer-G1,PC2是组播组G2的成员,本地启动定时器Timer-G2。定时器的范围是0~10秒之间的随机值,定时器先超时的主机发送针对该组的成员报告报文。假设PC1的定时器Timer-G1先超时,则向该网段发送目的地址为G1的成员报告报文,PC2的定时器Timer-G2超时,向该网段发送目的地址为G2的成员报告报文。
  • PC3侦听到PC1的成员报告报文,发现要加入同一组播组。则停止定时器Timer-G1,不再发送针对G1的成员报告报文,这就是响应抑制机制,可以减少网段上的协议流量。
  • AR1接收到成员报告报文后,了解到本网段内存在组播组G1和G2的成员,一旦AR1收到G1和G2的组播数据,将向该网段转发。

1.3IGMPv1成员加入

  • 主机申请加组

新接入主机PC4想加入组播组G3,为了快速接收组播数据,不等待普遍组查询报文, 而立即发送G3的成员报告报文。AR1收到成员报告报文后,了解到本网段内出现了组播组 G3的成员。一旦有G3的组播数据到达AR1,将向该网段转发。

1.4IGMPv1存在问题

问题一:查询器选举依赖于组播报文协议

  • 多台路由器同时连接到同一接收端网络时,只需要有一台路由器进行IGMP的查询。
  • IGMPv1无查询路由器选举机制,其依赖于组播路由协议在末端网络中选举一个查询器。由于不同的组播路由协议采用不同的选举机制,所以在IGMPv1中,同一末端网络中可能会存在多台查询器。

问题二:组成员离开为静默离开

  • IGMPv1没有专门定义离开组消息。
  • 当Client离开组播组时,将不会再对普遍组查询报文做出回应。假设所有Client退出组播组,Client将不再对普遍组查询报文进行响应。由于网段上不存在组播组的其他成员,RTA不会收到任何成员报告报文,则组成员关系超时(130秒=120*2+10,组成员关系超时时间=IGMP普遍查询消息发送间隔 × 健壮系数 + 最大查询响应时间)后,删除对应的组播转发项。

IGMPv2

2.1IGMPv2对IGMPv1的改进

改进1:组成员离开

如图所示,在IGMPv2中,Client B离开组播组G2的过程如下:
  • Client B向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送针对组G2的离开报文。
  • 查询器收到离开报文,会发送针对G2的特定组查询报文,同时启动组成员关系定时器Timer-Membership=发送间隔x发送次数。缺省每隔1秒发送一次,一共发送两次,发送间隔和发送次数可以配置。
  • 如果网段内不存在其他组G2的成员,则路由器不会收到组G2的成员报告报文。在Timer-Membership超时后,删除组播转发表项中对应的下游接口。路由器将不再向该网段转发G2的组播数据。如果网段内还有G2的其他成员,则这些成员在收到特定组查询报文后,会在最大响应时间内发送G2的成员报告报文。路由器继续向该网段转发G2的组播数据。

改进2:独立的查询器选举机制

  • 相对于IGMPv1,IGMPv2使用独立的查询器选举机制。
  • 所有IGMPv2路由器在初始状态时都认为自己是查询器,向本地网段内的所有主机和路由器 发送普遍组查询报文。其他路由器在收到该报文后,将报文的源IP地址与自己的接口地址 作比较。IP地址最小的路由器将成为查询器,其他路由器成为非查询器。如图所示,RTA 的接口IP地址小于RTB的接口IP地址,则RTA当选为查询器。IGMP的查询器和非查询器都 会处理IGMP组加入信息,但是只有查询器负责发送查询报文。IGMP非查询器不处理 IGMPv2离开报文。
  • 所有非查询器上都会启动一个定时器。如果在该定时器超时前收到了来自查询器的查询报 文,则重置该定时器;否则就认为原查询器失效并发起新的查询器选举。

2.2IGMPv2和IGMPv1报文比较

IGMPv1报文:
  • 版本:包含IGMP版本标识,因此设置为1。
  • 类型:普遍组查询 (0x11),成员关系报告 (0x12)。
  • 组地址:普遍组查询报文中,组地址为0;成员关系报告报文中,组地址为成员想要加入的组播组的地址。
IGMPv2报文:IGMPv2报文与IGMPv1报文略有不同,它取消了版本字段,增加了最大响应时
间字段。

类型:相比于IGMPv1,IGMPv2新增了两种报文:

  • 特定组查询报文(0x11):查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。
  • 成员离开报文(0x17):成员离开组播组时主动向路由器发送的报文,用于宣告自己离开了某个组播组。
   最大响应时间:表示主机响应查询返回报告的最大时间。
  • 对于普遍组查询,最大响应时间默认为10秒。
  • 对于特定组查询,最大响应时间默认为1秒。
    组地址:
  • 普遍组查询报文中,组地址设置为0。
  • 特定组查询报文中,组地址为需要查询的组地址。
  • 在成员报告或离开组的消息中,组地址为需要报告或离开的组地址。

IGMPv3

3.1SSM模型的新需求:只接收特定源发送的组播数据

  • 如果Client A和RTC之间运行的是IGMPv1或IGMPv2,Client A无法对组播源进行选择,无论其是否需要,都会同时接收到来自组播源Source A和Source B的数据。
  • 为了满足SSM模型的新需求,IGMPv3提供了在报文中携带指定组播源信息的能力。

3.2IGMPv3工作机制

为了满足SSM模型中的新需求,与IGMPv2相比,IGMPv3报文的变化如下:
  • IGMPv3报文包含两大类:查询报文和成员报告报文。IGMPv3没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达。查询报文中不仅包含普遍组查询报文和特定组查询报文,还新增了特定源组查询报文
  • (Group-and-Source-Specific Query)。该报文由查询器向共享网段内特定组播组成员发送,用于查询该组成员是否愿意接收特定源发送的数据。特定源组查询通过在报文中携带一个或多个组播源地址来达到这一目的。
  • 成员报告报文不仅包含主机想要加入的组播组,而且包含主机想要接收来自哪些组播源的数据。IGMPv3增加了针对组播源的过滤模式(INCLUDE/EXCLUDE),将组播组与源列表之间的对应关系简单的表示为(G,INCLUDE,(S1、S2...),表示只接收来自指定组播源S1、S2……发往组G的数据;或(G,EXCLUDE,(S1、S2...),表示接收除了组播源S1、S2……之外的组播源发给组G的数据。当组播组与组播源列表的对应关系发生了变化,IGMPv3报告报文会将该关系变化存放于组记录(Group Record)字段,发送给IGMP查询器。
  • 在IGMPv3中一个成员报告报文可以携带多个组播组信息,而之前的版本一个成员报告只能携带一个组播组。这样在IGMPv3中报文数量大大减少。

IGMP各版本之间的差异

项目 IGMPv1 IGMPv2 IGMPv3
查询器选举方式 依靠组播路由协议PIM选举 同网段组播路由器之间竞争选举 同网段组播路由器之间竞争选举
普遍组查询报文 支持 支持 支持
成员报告报文 支持 支持 支持
特定组查询报文 不支持 支持 支持
成员离开报文 不支持 支持 没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达
特定源组查询报文 不支持 不支持 支持
指定组播源 不支持 不支持 支持
可识别报文协议版本 IGMPv1 IGMPv1、IGMPv2 IGMPv1、IGMPv2、IGMPv3
ASM模型 支持 支持 支持
SSM模型 需要IGMP SSM Mapping技术支持 需要IGMP SSM Mapping技术支持 支持

IGMPv1中定义了基本的组成员查询和报告过程,IGMPv2在此基础上添加了查询器选举和组成员离开的机制,IGMPv3中增加的主要功能是成员可以指定接收或指定不接收某些组播源的报文。三个版本在演进过程中对协议报文的处理是向前兼容的,因此尽管各个版本的协议报文格式不同,但是运行IGMP高版本的路由器可以识别低版本的IGMP报文。

所有IGMP版本都支持ASM(Any-Source Multicast)模型。IGMPv3可以直接应用于SSM(Source-Specific Multicast)模型,而IGMPv1和IGMPv2则需要IGMP SSM Mapping技术的支持才可以应用于SSM模型。

IGMP版本原理及比较相关推荐

  1. IGMP协议原理与配置

    IGMP协议:因特网组管理协议 (在路由器与客户端间,不属于组播路由协议:组播路由协议:应用与路由器之间,传播路由,维护组播路由表) 作用:是TCP/IP协议族中负责IP组播成员管理的协议,用来在接收 ...

  2. IGMP基础原理与实验

    IGMP概述: IGMP是Internet Group Management Protocol的简称,又被称为互联网组管理协议,是TCP/IP协议栈中负责IPv4 组播成员注册管理的协议.IGMP 目 ...

  3. 计算机网络——ICMP/IGMP协议原理

    摘要 ICMP全称是Internet Control Message Protocol,也就是互联网控制报文协议.网络包在复杂的网络传输环境里,常常会遇到各种问题.当遇到问题的时候,总不能死个不明不白 ...

  4. 【学习笔记】IGMP snooping原理

    为什么要运行snooping? 作用1: 不运行就在本Vlan泛洪(导致有一些不想接收组播流量客户端来说,也会泛洪给它,浪费客户端的带宽资源,也会导致SW开销加大,性能下降). 运行了就会产生组播转发 ...

  5. IGMP、MLD原理

    1 IGMP 协议 IGMP用来动态的将各个主机注册到特定局域网中的一个组播组中.主机向本地的组播路由器发送IGMP消息来表明自己所属的组播组.在IGMP协议中,路由器侦听IGMP消息并周期的发出查询 ...

  6. IGMP Snooping和组播VLAN技术原理

    IGMP Snooping: 诞生原因: 由于IGMP报文是封装在IP报文内,属于三层协议报文,而二层设备不处理报文的三层信息,所以这个过程它并不知道,而且通过对数据链路层数据帧的源MAC地址的学习也 ...

  7. 计算机网络——HTTP协议原理

    摘要 在日常的开发中,很多开发的同学可能很少了解的HTTP协议的底层原理.HTTP协议的底层涉及到请求响应模型,HTTP的工作流程.cookie和session的原理等.本博文主要介绍计算机网络中HT ...

  8. R&S,数通HCIE|IGMP 协议

    目录 一.前言 二.IGMP基本原理 (一)IGMP 定义 (二)IGMP 基本工作机制 (三)IGMPv1.v2.v3的区别 三.IGMPv1 (一)报文格式 (二)组成员加入 (三)查询与响应.响 ...

  9. IP组播协议——IGMP协议之IGMPv1

    目录 前言 一.协议体系 二.IGMP协议介绍 三.IGMPv1报文格式 四.IGMPv1 IGMPv1组成员加入 IGMPv1响应抑制机制 IGMPv1组成员离开 总结 前言 上一篇文章介绍了IP组 ...

最新文章

  1. InnoDB purge原理--哪些undo log可purge
  2. 利用Simple-RTMP-Server搭建RTMP和HLS直播服务(上)
  3. 情报领域因果推理智能项目概览:以DAPAR为例
  4. activemq 开启监听_SpringBoot集成ActiveMQ怎么实现Topic发布/订阅模式通信?
  5. 关于一致性hash算法的几个问题
  6. 手机编程环境初尝试-用AIDE开发Android应用
  7. static关键字作用总结
  8. SPSS——随机抽样
  9. 果园生草对土壤质量提升的研究进展
  10. MAVEN 引入jar包没问题,但是程序中使用jar中的类报错的坑
  11. RTKLIB-RTKPOST设置介绍
  12. 日本研发创可贴式的皮肤传感器
  13. 雅马哈四轴机器人调试笔记
  14. jquery点击图片进行放大缩小
  15. win10升级win11后office文件无法直接打开的问题
  16. 少儿编程scratch如何快速上手?
  17. 计算机能够快速准确,计算机操作练习题
  18. oracle 授权 解锁,给scott解锁和授权
  19. 【大数据】第二章:搭建Hadoop集群(送尚硅谷大数据笔记)
  20. 【渝粤教育】电大中专计算机应用基础 (2)_1作业 题库

热门文章

  1. 我给面试官讲解了单例模式后,他对我竖起了大拇指!
  2. 使用python打印当前时间
  3. 移动支付商如何赚你的钱
  4. 2021年焊工(初级)复审考试及焊工(初级)实操考试视频
  5. linux common comand
  6. SyntaxError: Unexpected token u in JSON at position 0 at JSON.parse (anonymous)报错原因
  7. 深度deepin自研软件包格式“玲珑”:兼容所有Linux发行版
  8. 编程统计候选人的得票数。设有3个候选人,Li,Zhang,Fun。 要求输入投票总数n,然后每次输入一个得票的候选人的名字(区分大小写),若选民输错候选人姓名,则按废票处理。 选民投票结束后程序自动显
  9. Android性能优化之加快应用启动速度
  10. PostgreSQL 14新插件pg_surgery