IGMP协议原理与配置[通俗易懂]

IGMP协议原理与配置[通俗易懂]组播通信中,发送者将组播数据数据发送到特定的组播地址。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

目录

1、组播接收端的需求

2、IGMPv1

2.1 IGMPv1的工作机制 

2.2 IGMPv1成员加入

2.3 IGMPv1组成员离开

2.4 IGMPv1查询器选举

3、IGMPv2

3.1 对v1的改进:组成员离开

3.2 对v1的改进:查询器的选举

3.3 IGMPv1和v2报文的比较

4、IGMPv3

4.1 SSM模型新需求

4.2 IGMPv3的工作机制

4.3 各个版本之间的差异

5、IGMP Snooping

5.1 二层中组播数据转发的问题

5.2 IGMP Snooping机制

6、IGMP配置


组播通信中,发送者将组播数据数据发送到特定的组播地址。要是组播报文最终能够到达接收者,需要某种机制使与连接潜在接收者网段的组播路由器能够了解到该网段内有哪些组播接收者,保证接收者可以加入到相应的组播中接收到数据。

IGMP因特网组管理协议,是TCP/IP协议族中负责IP组播成员管理的协议,它用来在接受者和与其直接相邻的组播路由器之间建立、维护组播成员关系。

1、组播接收端的需求

接收端如何接收组播数据?接收者需要声明自己要接受哪个组的数据;路由器需要了解哪些组播存在接收者。

IGMP协议原理与配置[通俗易懂]

组播源不关注接收者的位置信息,但是对连接组成员的路由器而言,其需要收集和维护组成员的信息。组播既不指定明确的接收者,也不将数据发送给网络上的所有主机。如果主机想接收发往某一组播地址的数据,它需要加入这个组,成为该组播组的成员。

2、IGMPv1

IGMP因特网组管理协议,运行于主机与组播路由器之间。IGMP协议作用:主机侧通过IGMP协议向路由器通告组成员关系;路由器侧通过IGMP协议维护组成员关系。

2.1 IGMPv1的工作机制 

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

IGMP协议原理与配置[通俗易懂]

如图所示,假设Client A和Client C想要接收组播G1的数据,Client B想要接收组播组G2的数据。普遍组查询和响应过程如下:

  • RTA发送普遍组查询报文。
  • 网段内所有主机都接收到该查询报文,Client A和Client C是组播组G1的成员,则在本地启动定时器Timer-G1。Client B是组播组G2的成员,则在本地启动定时器Timer-G2。定时器的范围为0~10之间的随机值。定时器先超时的主机发送针对该组的成员报告。Client A上的Timer-G1首先超时,向该网段发送目的地址为G1的成员报告报文。Client B上的Timer-G2超时,向该网段发送成员报告报文,目的地址为G2。
  • Client C侦听到Client A的成员报告报文,则停止定时器Timer-G1,不再发送针对G1的成员报告报文。这就是响应抑制机制,可以减少网段上的协议流量。
  • RTA接收到成员报告报文后,了解到本网段内存在组播组G1和G2的成员,一旦RTA收到G1和G2的组播数据,将向该网段转发。

IGMPv1支持两种类型的报文:

  • 普遍组查询报文General Query):路由器周期性地向224.0.0.1地址(表示同一网段内所有的主机和路由器)发送通用查询报文,默认查询周期为60s,发送周期可以通过命令配置。
  • 成员关系报告报文Membership Report):用于主机加入某个组播组。

2.2 IGMPv1成员加入

IGMP协议原理与配置[通俗易懂]
主动申请加组

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

2.3 IGMPv1组成员离开

IGMP协议原理与配置[通俗易懂]
静默离开
  • IGMPv1没有专门定义离开组消息。
  • 当Client离开组播组时,将不会在对普遍组查询报文作出回应。假设所有Client退出组播组,Client将不再对普遍组查询报文进行回应。由于网段不存在组播的其他成员,RTA不会收到任何报告报文,则在一定时间(130s=60*2+10,即组成员关系超时时间=IGMP普遍查询消息发送间隔*健壮系数+最大查询响应时间)后,删除对应的组播转发项。

2.4 IGMPv1查询器选举

IGMP协议原理与配置[通俗易懂]
查询器选举依赖于组播路由协议
  • 多台路由器同时连接到同一接收端网络时,只有一台路由器进行IGMP选举。
  • IGMPv1无查询路由器选举机制,其依赖于组播路由协议在末端网络中选举一个查询器。
  • 由于不同的组播路由协议采用不同的选取机制,所以IGMPv1中,同一末端网络中可能会存在多台查询。
  • 针对IGMPv1中的两个问题,IGMPv2进行了改进和优化。

3、IGMPv2

3.1 对v1的改进:组成员离开

IGMP协议原理与配置[通俗易懂]

如图所示,在IGMPv2中,Client B离开组播组G2的过程如下:

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

3.2 对v1的改进:查询器的选举

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

3.3 IGMPv1和v2报文的比较

IGMP协议原理与配置[通俗易懂]

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

特定组查询报文(0x11):查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。

成员离开报文(0x17):成员离开组播组时主动向路由器发送的报文,用于宣告自己离开了某个组播组。

  • 最大响应时间:表示主机响应查询返回报告的最大时间。

对于普遍组查询,最大响应时间默认为10秒。对于特定组查询,最大响应时间默认为1秒。

  • 组地址:

普遍组查询报文中,组地址设置为0。特定组查询报文中,组地址为需要查询的组地址。在成员报告或离开组的消息中,组地址为需要报告或离开的组地址。

4、IGMPv3

4.1 SSM模型新需求

IGMP协议原理与配置[通俗易懂]
只接收特定源发送的组播数据

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

4.2 IGMPv3的工作机制

IGMP协议原理与配置[通俗易懂]

IGMPv3报文变化如下:

  • IGMP报文包含两大类:查询报文和成员报告报文。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报文数量大大减少。

4.3 各个版本之间的差异

机制 IGMPv1 IGMPv2 IGMPv3
查询器选举 依靠其他协议 自己选举(IP地址小的) 自己选举
成员离开方式 静默离开 主动发送离开报文 主动发送离开报文
特点组查询 不支持 支持 支持
指定源、组 不支持 不支持 支持

5、IGMP Snooping

5.1 二层中组播数据转发的问题

组播数据帧在二层被洪泛,造成:

  • 网络资源浪费。
  • 存在安全隐患。

IGMP协议原理与配置[通俗易懂]

主机加入组播需要向上游设备发送IGMP成员报告,这样上游设备才可以将组播报文发送给主机。由于IGMP报文是封装在IP报文内的,属于三层协议报文,而二层设备不处理报文的三层信息,所以主机家族的过程二层设备并不知道,而且通过对数据链路层数据帧的源MAC地址学习也学习不到组播MAC地址(数据帧的源MAC地址不会是组播MAC地址)。

这样当二层设备在接收到一个目的MAC地址为组播MAC地址的数据帧时,在MAC地址表中就会找不到对应的表项。那么这个时候,它就会采用广播发送组播报文,这样一来就会对网络资源造成极大浪费而且影响网络安全。

5.2 IGMP Snooping机制

IGMP Snooping通过侦听组播路由器与主机之间交互的IGMP报文建立组播数据报文的二层转发表项,从而管理和控制组播数据报文在二层网络中的转发。

IGMP协议原理与配置[通俗易懂]
开启IGMP机制后,查询响应仅向路由器接口转发

IGMP Snooping可以实现组播数据帧在数据链路层的转发和控制。

使能IGMP Snooping功能后二层设备会侦听主机和路由器之间交互的IGMP报文。通过分析报文中携带的信息(报文类型、组播组地址、接收报文的接口等),建立和维护二层组播转发表,从而导致组播数据帧在数据链路层按需转发。

IGMP Snooping建立和维护二层组播转发表的过程:

  • RTA作为查询器,周期性的发送普遍组查询,该报文被扩散到交换机的所有端口,包括与交换机CPU相连的内部接口0。交换机CPU收到查询报文后,判断1号接口为连接路由器的接口。
  • Client B希望加入组播组224.1.2.3,因此以组播方式发送一个IGMP成员报告报文,报告中具有目的的MAC地址0x0100.5e01.0203。该报文将被发往路由器的接口以及交换机CPU相连的接口0;当CPU接收到Client B的IGMP报告时,CPU利用IGMP报告中的信息将该接口加入二层组播转发表中,此时表项包括Client B的接口号,连接路由器的接口号和连接交换机内部CPU的接口号。
  • 形成此转发表项的结果是使后面任何目的地址为0x0100.5e01.0203的组播帧都被控制在端口0、1和3,而且不向交换机其他端口扩散。
  • Client C加入组224.1.2.3并主动发一个IGMP报告,交换机CPU收到此报告,它在转发表项上为MAC地址0x0100.5e01.0203增加一个端口(端口4)。

6、IGMP配置

IGMP协议原理与配置[通俗易懂]

multicast routing-enable                         //开启组播功能
interface G0/0/1                                 //进接口开启IGMP功能和版本号
ip address 192.168.1.1 255.255.255.0
igmp enable
igmp version 2

<RTA>display igmp interface                      //验证
Interface information of VPN-Instance: public net
GigabitEthernet0/0/1(192.168.1.1):
IGMP is enabled
Current IGMP version is 2
IGMP state: up
IGMP group policy: none
IGMP limit: -
Value of query interval for IGMP (negotiated):-
Value of query interval for IGMP(configured): 60 s
Value of other querier timeout for IGMP: 0 s
Value of maximum query response time for IGMP: 10 s
Querier for IGMP: 192.168.1.i(this router)
Total 1 IGMP Group reported

<RTA>display igmp group
Interface group report information of VPN-Instance: public netGigabitEthernet0jo/1(192.168.1.1):
Total 1 IGMP Group reported
Group Address    Last Reporter  Uptime      Expires
239.255.255.250  192.168.1.11   00:04:18    00:02:07

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/193838.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号