IGMP

定义
组播组管理协议
功能
管理主机加入和离开组播组
维护本地组播组信息表
IGMPv1
主机加入
- I.路由器向开启了IGMP的端口发送查询报文,询问该接口下有没有组播接收者
- II.收到查询报文的主机,如果希望接收某个组的组播,则向路由器回复report报文,把希望加入的组播组地址通告给路由器;如果不希望接收任何组播,则不回复
- III.收到report报文后,路由器就会在本地建立组播信息表,记录改组的(*、G)表项,后续将会转发该组组播
主机离开
- 默默离开
- 当路由器在后续的查询报文中没有收到某个组的report报文时,路由器将会把该组的(*、G)表项删除,不再转发该组组播
查询器选举
- 一个网段中只能有一个路由器负责处理组播,该路由器就是查询器
- IGMPv1没有查询器选举机制,只能依靠上层组播路由协议选举
成员报告抑制机制
- 主机以组播224.0.0.1的地址发送report报文,该报文会发送至其他主机
- 收到该report报文的主机会启动计时器(10s);在该计时器时间内,如果本机也希望加入该组播组,不会重复发送report报文
主机希望加入某个组播组,不用等到路由器发送查询报文,会直接向路由器发送report报文
IGMPv2
主机加入
- 路由器会周期性向开启了IGMP的接口发送普遍查询报文
- 其他和IGMPv1一致
主机离开
- I.主机主动向路由器发送Leave报文,通告希望离开的组播组地址
- II.路由器收到leave报文后,会发送指定组查询报文,询问该网段内是否还有主机希望接收该组的组播
- III.如网段内还有该组接收者,则该接收者会向路由器回复membership-report报文,通告路由器本机还希望接收该组播;如果不希望接收该组播,则不回复
- IV.如接收到membership-report报文,则不对组播组信息做任何操作;如没有接收到任何报文,则删除该组播组信息
查询器选举
- 自动选举
- IP地址小的优先
成员报告抑制机制
- 与IGMPv1一致
IGMPv3
主机上维护的组播信息
- 组地址 过滤模式 源列表
- 主机通过发送membership-report报文向路由器通告本机当前组播信息状态、过滤模式变化、源列表变化
路由器维护的组播信息
- 组状态 (组地址、组定时器、过滤模式、源列表)
- 源列表 (源地址、源定时器)
主机加入
- I.路由器发送普遍查询报文
- II.收到普遍查询报文的主机,如果希望加入某个组播组,就会发送membership-report报文;报文格式会包含组地址、源过滤模式、源列表
- III.路由器收到report报文后,会根据报文的汇总信息,生成相应的组播信息表项
主机离开
离开某个组播源
- I.主动向路由器发送membership-report报文、报文会包含希望变更的组播组地址、离开的源地址
- II.路由器收到该报文后,会发送指定组查询报文,询问是否还有其他主机希望接收该组播源在该组播地址发送的组播
- III.如果未收到回复,路由器则在组状态中删除该组播源;如果收到,则不做任何操作
离开某个组播组
- I.主动向路由器发送membership-report报文;报文包含希望离开的组播组和TO_IN(NULL)消息
- II.路由器收到该报文,会发送指定组查询报文,询问是否还有其他主机希望继续接收该组播
- III.如果未收到回复,路由器则删除该组播组的信息记录;如果收到,则不做任何操作
取消成员报告抑制机制
IGMP Snooping
- 用于在交换机上建立二层组播信息
- 二层交换机在不使能IGMP Snooping的情况下,默认把组播报文当做广播处理
工作原理
- 开启IGMP Snooping后,交换机会把收到普遍查询报文的接口设置为路由器接口
- 交换机只会把从路由器接口收到的组播报文转发至成员端口;从非路由器端口收到的组播报文丢弃
- 交换机从某个端口收到IGMP Report报文后,就自动把该端口加入到组播转发表的成员端口
- 交换机只会把Report报文从路由器端口转发,所有其他主机不会收到Report报文,不会触发成员报告抑制机制
组播VLAN
- 路由器只在组播VLAN内复制数据,减轻路由器负担,节省网络带宽资源
- 二层交换机在该组播Vlan的所有子Vlan中复制组播报文
相关命令
1 | [h3c]igmp #进入IGMP视图 |








