1.IGMP简介
(1)组播网络的转发困境
(2)感知组播组成员
(3)IGMP协议的概述
(4)IGMP组表项与路由表项
(5)IGMP表项与组播路由表项
2.IGMP工作原理
(1)IGMPv1基本概念
(2)IGMP报文格式
(3)IGMPv1组成员加组机制
(4)IGMPv1查询器选举机制
(5)IGMPv1组成员离组机制
⦁ 组成员离开机制:
⦁ 假设组成员2想要退出组播组G2
⦁ 组成员2收到IGMP查询器发送的普遍组查询报文时,不再发送针对G2的报告报文。由于网段内不存在组G2的其他成员,IGMP查询器不会收到G2组成员的报告报文,则在一定时间(缺省值为130秒)后,删除G2所对应的IGMP表项。
⦁ 组成员1收到IGMP查询器发送的普遍组查询报文时,反馈针对G1的报告报文,IGMP查询器不删除G1相应IGMP表项
(6)IGMPv2介绍
(7)IGMPv2报文格式
⦁ IGMPv2报文各字段说明:
⦁ Type:
⦁ 报文类型。该字段有以下四种取值:
⦁ 0x11:表示查询报文。IGMPv2的查询报文包括普遍组查询报文和特定组查询报文两类。
⦁ 0x12:表示IGMPv1成员关系报告报文。
⦁ 0x16:表示IGMPv2成员关系报告报文。
⦁ 0x17:表示成员离开报文。
⦁ Max Response Time:表示主机响应查询返回报告的最大时间。
⦁ 对于普遍组查询,最大响应时间默认为10秒。
⦁ 对于特定组查询,最大响应时间默认为1秒。
⦁ Group Address:
⦁ 普遍组查询报文中,组地址设置为0。
⦁ 特定组查询报文中,组地址为需要查询的组地址。
⦁ 在成员关系报告或离开组的消息中,组地址为需要报告或离开的组地址。
(8)IGMPv2查询器选举机制
⦁ 非查询器上都会启动一个定时器(即其他查询器存在时间定时器Other Querier Present Timer)。在该定时器超时前,如果收到了来自查询器的查询报文,则重置该定时器;否则,就认为原查询器失效,并发起新的查询器选举过程。
(9)IGMPv2组成员离开机制
⦁ 组播组成员向本地网段内的所有组播路由器(目的地址为224.0.0.2)发送针对组G1的离开报文。
⦁ 查询器收到离开报文,会发送针对组G1的特定组查询报文。发送间隔和发送次数可以通过命令配置,缺省情况下每隔1秒发送一次,共发送两次。同时查询器启动组成员关系定时器(Timer-Membership=发送间隔x发送次数)。
⦁ 如果该网段内还存在组G1的其他成员,这些成员在收到查询器发送的特定组查询报文后,会立即发送针对组G1的报告报文。查询器收到针对组G1的报告报文后将继续维护该组成员关系。
⦁ 如果该网段内不存在组G1的其他成员,查询器将不会收到针对组G1的报告报文。在Timer-Membership超时后,查询器将删除(*,G1)对应的IGMP组表项。当有组G1的组播数据到达查询器时,查询器将不会向下游转发。
(10)SSM模型带来的挑战
⦁ SSM模型的组播地址范围:232.0.0.0~232.255.255.255
⦁ SSM Mapping功能将在IGMP特性章节介绍。
(11)IGMPv3介绍
(12)IGMPv3报文格式-查询报文
⦁ IGMPv3查询报文重要字段说明:
⦁ Type:报文类型,取值为0x11。
⦁ Max Response Code:最大响应时间。成员主机在收到IGMP查询器发送的普遍组查询报文后,需要在最大响应时间内做出回应。
⦁ Group Address:组播组地址。在普遍组查询报文中,该字段设为0;在特定组查询报文和特定源组查询报文中,该字段为要查询的组播组地址。
⦁ Number of Sources:报文中包含的组播源的数量。对于普遍组查询报文和特定组查询报文,该字段为0;对于特定源组查询报文,该字段非0。此参数的大小受到所在网络MTU大小的限制。
⦁ SIource Address:组播源地址,其数量受到Number of Sources字段值大小的限制。
(13)IGMPv3组成员加组机制
(14)IGMPv3组成员离组机制
⦁ 改变源组关系的成员关系报告报文很多,比如:
⦁ 设备原来接收来自S1的组播数据,那么通过发布(G1,EXCLUDE,S1)报文或(G1,CHANGE_TO_EXCLUDE_MODE,S1)报文都可以改变源组关系。
(15)IGMP个版本间的差异
3.IGMP特性介绍
(1)以太网的组播转发问题
⦁ 当Router将组播报文转发至Switch以后,Switch负责将组播报文转发给组播用户。由于组播报文的目的地址为组播组地址,在二层设备上是学习不到这一类MAC表项的,因此组播报文就会在所有接口进行广播,和它在同一广播域内的组播成员和非组播成员都能收到组播报文。这样不但浪费了网络带宽,而且影响了网络信息安全。
⦁ IGMP Snooping有效地解决了这个问题。配置IGMP Snooping后,二层组播设备可以侦听和分析组播用户和上游路由器之间的IGMP报文,根据这些信息建立二层组播转发表项,控制组播数据报文转发。这样就防止了组播数据在二层网络中的广播。
(2)IGMP Sooping介绍
(3)IGMP Sooping端口与转发表介绍
⦁ 路由器端口生成过程:
⦁ 由协议生成的路由器端口叫做动态路由器端口。收到源地址不为0.0.0.0的IGMP普遍组查询报文或PIM Hello报文(三层组播设备的PIM接口向外发送的用于发现并维持邻居关系的报文)的接口都将被视为动态路由器端口。
⦁ 手工配置的路由器端口叫做静态路由器端口。
⦁ 成员端口生成过程:
⦁ 由协议生成的成员端口叫做动态成员端口。收到IGMP Report报文的接口,二层组播设备会将其标识为动态成员端口。
⦁ 手工配置的成员端口叫做静态成员端口。
(4)IGMP Sooping工作原理-形成转发表项
⦁ 路由器端口形成后会启动老化计时器(默认180s),当路由器端口收到新的普遍组查询后刷新该计时器。
⦁ 成员端口形成后会启动老化计时器(默认180s),当成员端口收到新的成员关系报告报文后刷新该计时器。
⦁ IGMP Snooping不再使用成员关系报告报文抑制机制:
⦁ 由于IGMP Snooping需要监听IGMP报文才能决定端口角色,进而指导转发,所以所有组成员都需要发送IGMP组成员关系报告报文。
⦁ 当IGMP Snooping设备收到成员关系报告报文后,只将成员关系报告报文从路由器接口发送出去,从而避免其余组成员收到成员关系报告报文,不触发成员关系报告报文抑制机制。
(5)IGMP Snooping工作原理-维护转发表项
收到IGMP离开报文后,成员端口的老化定时器 = 健壮系数(默认2) x 特定组查询间隔(默认1s)。
IGMP携带组播源的作用主要有以下几点:
-
组播流量转发:IGMP报文中携带的组播源信息可以帮助路由器和网络设备确定源主机的位置,从而将组播数据转发到对应的组播组成员。这样,组播数据可以在网络中正确地传递给需要接收组播数据的主机。
-
节约网络带宽:通过使用IGMP携带组播源信息,网络设备可以根据需要仅将组播数据转发到对应的组播组成员,避免将组播数据发送到所有网络设备,从而节约了网络带宽和资源。
-
提供可扩展性:IGMP协议支持动态加入和离开组播组的功能。通过携带组播源信息,可以及时通知路由器和网络设备有关组播源的变化,从而提供了灵活的组播组管理和可扩展性。
总的来说,IGMP携带组播源的作用是告知路由器和网络设备某个主机或路由器正在发送组播数据。这样,路由器和网络设备可以根据这个信息,将组播数据转发到对应的组播组成员,实现有效的组播数据传输,节约网络带宽,并提供可扩展性。
4.IGMP SSM Mapping介绍
(1)IGMP SSM Mapping介绍
⦁ 无论使用IGMPv1,IGMPv2或IGMPv3加入SSM组播组,SSM组播组的地址依然是232.0.0.0~232.255.255.255。
(2)IGMP SSM Mapping工作原理
⦁ 配置了SSM Mapping规则后,当IGMP查询器收到来自成员主机的IGMPv1或IGMPv2报告报文时,首先检查该报文中所携带的组播组地址G,然后根据检查结果的不同分别进行处理。
⦁ 如果G在ASM(Any-Source Multicast)范围内,则只提供ASM服务。
⦁ 如果G在SSM组地址范围内(缺省情况下为232.0.0.0~232.255.255.255):
⦁ 如果路由器上没有G对应的SSM Mapping规则,则无法提供SSM服务,丢弃该报文。
⦁ 如果路由器上有G对应的SSM Mapping规则,则依据规则将报告报文中所包含的(*, G)信息映射为(G, INCLUDE, (S1, S2...))信息,提供SSM服务。
⦁ IGMP SSM Mapping不处理IGMPv3的报告报文。为了保证同一网段运行任意版本IGMP的主机都能得到SSM服务,需要在与成员主机所在网段相连的组播路由器接口上运行IGMPv3。
5.IGMP代理介绍
(1)IGMP Proxy介绍
(2)IGMP Proxy基本概念
(3)IGMP Proxy工作机制-成员加组
⦁ IGMP代理设备收到某组播组的报告报文后,会在IGMP组表项中查找该组播组:
⦁ 如果没有找到相应的组播组,IGMP代理设备会向接入设备发送针对该组播组的报告报文,并在组播转发表中添加该组播组;
⦁ 如果找到相应的组播组,IGMP代理设备就不需要向接入设备发送报告报文。
⦁ IGMPv1/IGMPv2/IGMPv3成员加组机制不再赘述
(4)IGMP Proxy工作机制-成员离组
⦁ IGMP代理设备收到某组播组G1的离开报文后,会向接收到该离开报文的接口发送一个特定组查询报文,检查该接口下是否还存在组播组G1的其他成员:
⦁ 如果没有其他成员,在组播转发表中将该接口删除,然后判断组播组G1是否还有其他接口。
⦁ 如果没有,IGMP代理设备再会向接入设备发送针对该组播组的离开报文;
⦁ 如果有,IGMP代理设备不向接入设备发送针对该组播组的离开报文;
⦁ 如果有其他成员,IGMP代理设备会继续向该接口转发组播数据。
⦁ IGMPv1/IGMPv2/IGMPv3成员离组机制不再赘述。
6.IGMP配置
(1)IGMP协议的基本配置(1)
(2)IGMP协议的基本配置(2)
7.案例:IGMP小实验
topo如下:实验前提ip已配置,ospf实现了互通
(1)配置组播源
设置vlc.exe的路径
(2)路由器配置
(3)pc端加入组播组
可以看见成功播放了
接下来是拓展,查看其过程,探究各个版本区别。