IGMP原理与案例配置

1.IGMP(Internet Group Management Protocol,因特网组管理协议)
组成员可以将加组消息发送给组播网络,从而让组播网络感知到组成员的位置和所加组播组
IGMP是TCP/IP协议族中负责IPv4组播成员管理的协议,用来在接收者主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系

2.组播网络感知组播组成员有两种方法:
手工静态配置:在组播路由器上静态指定连接组播组成员的接口,静态配置组成员加组信息,手工静态方式灵活性差,配置工作量大,但相对比较稳定,对于新上线的组成员能够快速建立组播转发通路
动态感知:通过IGMP协议通知组播网络,组播网络根据IGMP消息感知组播组成员所在接口,以及组成员加组信息,动态感知方式较为灵活,且配置简单,现网一般使用动态感知方式

3.IGMP协议的概述
IGMP通过在组播组成员和组播路由器之间交互IGMP报文实现组成员管理功能,IGMP报文封装在IP报文中
到目前位置,IGMP有三个版本:
IGMPv1
IGMPv2
IGMPv3
组播路由器与组成员间交互报文后会生成IGMP路由表项与IGMP组表项
IGMP路由表项与IGMP组表项将帮助设备生成组播路由表项

4.IGMPv1
4.1 IGMPv1主要基于查询和响应机制完成组播组管理
查询和响应机制由两种报文实现:
A.普遍组查询报文(General Query):查询器向共享网络上所有主机和路由器发送的查询报文,用于查询哪些组播组存在成员
B.成员关系报告报文(Report):主机向查询器发送的报告报文,用于申请加入某个组播组或者应答查询报文
4.2 IGMPv1报文格式
IGMPv1普遍组查询报文与成员关系报告报文均为组播报文,目的地址为224.0.0.1



4.3 IGMPv1查询器选举机制:
普遍组查询是组播报文,因此同一网段内只需要一台查询器即可查询所有组成员的加组信息
IGMPv1将组播路由协议(PIM)选举出唯一的组播信息转发者(Assert Winner或DR)作为IGMPv1的查询器,负责该网段的组成员关系查询



4.4 IGMPv1组成员离组机制:
IGMPv1没有专门定义离开组消息,当组播组成员离开组播组时,将不会再对普遍组查询报文做出回应

5.IGMPv2
5.1 IGMPv1在离组机制与查询器选举机制上有一定缺陷:
A. IGMPv1离组使用超时机制,组成员只能静默离组。在未超时的时间内,组播流量依然会被组播路由器转发。
B. IGMPv1查询器选举必须要依赖PIM协议,导致查询器选举不够灵活。
IGMPv2改善了IGMPv1的缺陷:
A. IGMPv2组成员加组机制与IGMPv1基本相同
B. IGMPv2增加了离开组机制
C. IGMPv2增加了查询器选举机制
为了改善组成员离开机制,IGMPv2新增了两种报文:



成员离开报文(Leave):成员离开组播组时主动向查询器发送的报文,用于宣告自己离开了某个组播组。成员离开报文目的地址为224.0.0.2。
特定组查询报文(Group-Specific Query):查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。特定组查询报文目的地址为所查询组播组的组地址。
IGMPv2对普遍组查询报文格式也做了改进,添加了最大响应时间(Max Response Time)字段。此字段取值可以通过命令配置,用于控制成员对于查询报文的响应速度
5.2 IGMPv2查询器选举机制
IGMPv2查询器选举机制与IGMPv1有较大差异。IGMPv2使用独立的查询器选举机制,当共享网段上存在多个组播路由器时,IP地址最小的路由器成为查询器

6.IGMPv3
6.1 IGMPv3大部分工作机制与IGMPv2类似
IGMPv3查询报文除了包含普遍组查询报文和特定组查询报文,还新增了特定源组查询报文(Group-and-Source-Specific Query)。
IGMPv3成员关系报告报文不仅包含主机想要加入的组播组,而且包含主机想要接收来自哪些组播源的数据。
由于同个组播组的不同成员可能希望接收来自不同源的组播,因此IGMPv3无需成员关系报告报文抑制机制。
IGMPv3没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达
6.2 IGMPv3报文格式,有三种:
普遍组查询报文(General Query)。该报文作用与IGMPv1,IGMPv2中的普遍组查询报文作用一致。
特定组查询报文(Group-Specific Query) 。该报文作用与IGMPv2中的特定组查询报文作用一致。
特定源组查询报文(Group-and-Source-Specific Query)。该报文用于查询该组成员是否愿意接收特定源发送的数据。特定源组查询通过在报文中携带一个或多个组播源地址来达到这一目的。
6.3 IGMPv3成员关系报告报文的目的地址为224.0.0.22



6.4 IGMPv3组成员加组机制

7.IGMP Snooping:
7.1 IGMP Snooping功能可以控制组播流量在以太网的泛洪范围,避免不同组的组播流量被别组成员接收
当主机和上游三层设备之间传递的IGMP协议报文通过二层组播设备时,IGMP Snooping分析报文携带的信息,根据这些信息建立和维护二层组播转发表,从而指导组播数据在数据链路层按需转发
二层组播转发表项中存在两类接口:
路由器端口(Router Port):二层组播设备上朝向三层组播设备(DR或IGMP查询器)一侧的接口,二层组播设备从此接口接收组播数据报文。
成员端口(Member Port):又称组播组成员端口,表示二层组播设备上朝向组播组成员一侧的端口,二层组播设备往此接口发送组播数据报文
7.2 IGMP Snooping工作原理 – 形成转发表项
A.IGMP Snooping设备通过监听IGMP报文,形成二层组播转发表,并决定接口类型

B.IGMP Snooping设备通过监听IGMP离开报文,IGMP成员关系报告报文决定特定端口是否还需要发送特定组播






8.IGMP SSM Mapping
8.1 背景:现网中存在部分只能运行IGMPv1与IGMPv2的老旧终端,在部署SSM模式的组播时,由于IGMPv1与IGMPv2报文中无法携带组播源信息,因此无法使用SSM模式的组播网络
8.2 原理:IGMP SSM Mapping通过静态的将组播源与组播组进行绑定,使得IGMPv1与IGMPv2的组成员也能接入SSM组播网络
8.3 IGMP SSM Mapping工作原理:
A.在IGMP查询器上静态配置SSM地址的映射规则,将IGMPv1或IGMPv2成员关系报告中的组信息映射为源组信息




9.IGMP Proxy代理
现网中可能存在一台IGMP查询器需要管理大量组成员的情况,大量成员主机频繁加入/离开组播组时,会产生大量的IGMP成员关系报告/离开报文,从而给IGMP查询器带来较大的处理压力。
通过IGMP Proxy功能可减少IGMP查询器接收IGMP成员关系报告/离开报文的数量,减轻IGMP查询器压力
IGMP Proxy通常被部署在IGMP查询器和成员主机之间的三层设备上



IGMP Proxy定义了两类接口:
主机接口(Host Interface):IGMP Proxy设备上配置IGMP Proxy功能的接口,该接口一般面向IGMP查询器
路由器接口(Router Interface):IGMP Proxy设备上配置IGMP功能的接口,该接口一般面向组成员

10.IGMP配置
1.使能IGMP功能
[Huawei - GigabitEthernet1/0/0] igmp enable
配置IGMP版本
[Huawei - GigabitEthernet1/0/0] igmp version number
全局使能IGMP snopping功能
[Huawei ]igmp-snooping enable
VLAN下使能IGMP代理功能
[Huawei-vlan10] igmp-snooping proxy
在接口下使能IGMP SSM Mapping
[Huawei - GigabitEthernet1/0/0] igmp ssm-mapping enable

11.IGMP基础实验
1.在上述路由器配置IGMP协议,实现IP组播成员管理。
通过配置RTA的GE0/0/1口使能IGMP协议,RTA成为查询器负责发送接收IGMP报文。



2.RTA的配置如下:
[RTA]multicast routing-enable
[RTA]interface g0/0/1
[RTA-GigabitEthernet0/0/1]ip address 192.168.1.1 24
[RTA-GigabitEthernet0/0/1]igmp enable
[RTA-GigabitEthernet0/0/1]igmp version 2