目录
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组播成员管理的协议,它用来在接受者和与其直接相邻的组播路由器之间建立、维护组播成员关系。
接收端如何接收组播数据?接收者需要声明自己要接受哪个组的数据;路由器需要了解哪些组播存在接收者。
组播源不关注接收者的位置信息,但是对连接组成员的路由器而言,其需要收集和维护组成员的信息。组播既不指定明确的接收者,也不将数据发送给网络上的所有主机。如果主机想接收发往某一组播地址的数据,它需要加入这个组,成为该组播组的成员。
IGMP因特网组管理协议,运行于主机与组播路由器之间。IGMP协议作用:主机侧通过IGMP协议向路由器通告组成员关系;路由器侧通过IGMP协议维护组成员关系。
如图所示,假设Client A和Client C想要接收组播G1的数据,Client B想要接收组播组G2的数据。普遍组查询和响应过程如下:
IGMPv1支持两种类型的报文:
新接入的主机Client D想加入组播组G3,为了加速接收组播数据,不等待普遍组查询报文,而立即发送G3的成员报告报文。RTA收到成员报告报文后,了解到本网段内出现了组播组G3的成员。一旦有G3的组播数据到达RTA,将向该网段转发。
如图所示,在IGMPv2中,Client B离开组播组G2的过程如下:
特定组查询报文(0x11):查询器向共享网段内指定组播组发送的查询报文,用于查询该组播组是否存在成员。
成员离开报文(0x17):成员离开组播组时主动向路由器发送的报文,用于宣告自己离开了某个组播组。
对于普遍组查询,最大响应时间默认为10秒。对于特定组查询,最大响应时间默认为1秒。
普遍组查询报文中,组地址设置为0。特定组查询报文中,组地址为需要查询的组地址。在成员报告或离开组的消息中,组地址为需要报告或离开的组地址。
如果Client A和RTC之间运行的是IGMPv1或IGMPv2,Client A无法对组播源进行选择,无论其是否需要,都会同时接收到来自组播源Source A和Source B的数据。为了满足SSM(特定源组播)模型的新需求,IGMPv3提供了在报文中携带指定组播源信息的能力。
IGMPv3报文变化如下:
机制 | IGMPv1 | IGMPv2 | IGMPv3 |
查询器选举 | 依靠其他协议 | 自己选举(IP地址小的) | 自己选举 |
成员离开方式 | 静默离开 | 主动发送离开报文 | 主动发送离开报文 |
特点组查询 | 不支持 | 支持 | 支持 |
指定源、组 | 不支持 | 不支持 | 支持 |
组播数据帧在二层被洪泛,造成:
主机加入组播需要向上游设备发送IGMP成员报告,这样上游设备才可以将组播报文发送给主机。由于IGMP报文是封装在IP报文内的,属于三层协议报文,而二层设备不处理报文的三层信息,所以主机家族的过程二层设备并不知道,而且通过对数据链路层数据帧的源MAC地址学习也学习不到组播MAC地址(数据帧的源MAC地址不会是组播MAC地址)。
这样当二层设备在接收到一个目的MAC地址为组播MAC地址的数据帧时,在MAC地址表中就会找不到对应的表项。那么这个时候,它就会采用广播发送组播报文,这样一来就会对网络资源造成极大浪费而且影响网络安全。
IGMP Snooping通过侦听组播路由器与主机之间交互的IGMP报文建立组播数据报文的二层转发表项,从而管理和控制组播数据报文在二层网络中的转发。
IGMP Snooping可以实现组播数据帧在数据链路层的转发和控制。
使能IGMP Snooping功能后二层设备会侦听主机和路由器之间交互的IGMP报文。通过分析报文中携带的信息(报文类型、组播组地址、接收报文的接口等),建立和维护二层组播转发表,从而导致组播数据帧在数据链路层按需转发。
IGMP Snooping建立和维护二层组播转发表的过程:
multicast routing-enable //开启组播功能
interface G0/0/1 //进接口开启IGMP功能和版本号
ip address 192.168.1.1 255.255.255.0
igmp enable
igmp version 2
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
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