目录
一、IGMP定义
IGMP:Internet Group Management Protocol 因特网组管理协议
负责组播成员管理 运行在主机和组播路由器之间
主机侧:通过IGMP向路由器通告组成员关系
路由器侧:通过IGMP协议维护组成员关系
组播通信中 发送者将组播数据发送到特定的组播地址
要使组播报文最终能够到达接收者
需要某种机制使与连接潜在的接收者网段的组播路由器能够了解到该网段有哪些组播接收者
保证接收者可以加入到相应的组播组中接收数据
IGMP(Internet Group Management Protocol)因特网组管理协议
使TCP/IP协议族中负责IP组播成员管理的协议
它用来在接收者和与其直接相邻的组播路由器之间建立 维护组播组成员关系
二、组播组管理协议工作机制
主机加入或离开组播组
路由器维护组播组
查询器选举
成员报告抑制
三、IGMP发展
IGMP v1-ASM
IGMP v2-ASM
IGMP v3-ASM SSM
四、IGMPv1
查询query 0x11
报告report 0x12
路由器周期性的发送成员关系查询 默认查询周期为60s
成员关系报告的发送可以被动发送也可以主动发送
被动发送:主机收到成员关系查询消息后 发送成员关系报告
主动发送:主机主动发送成员关系报告
一个查询后再发送
一个主动发送
普遍组查询-224.0.0.1 向域内所有节点(包括主机 路由器)发送查询信息
每个收到查询的主机会启动一个计时器 默认0-10s随机值 超时后发送报告
注:130s = 602+10
即组成员关系超时时间=IGMP普遍查询消息发送间隔健壮系数+最大查询响应时间
静默离开这个机制很差
查询器选举依赖PIM(不是依赖IGMP本身)
五、IGMPv2
IGMPv2增加最大响应时间字段 以动态地调整主机对查询报文的响应时间
querier查询器选举:IP地址最小的获胜
特定组查询:A离开时 查询器会发送Query报文询问有无主机对我这个组感兴趣
用来验证申请离开的组成员是否已经离开 如果没有发送Report 则说明已经离开
若有别的主机对该组感兴趣 则A不会删除该条信息
特定组查询会连发两次Query specific报文 确定没有人回应才算组成员离开
普遍组查询general
特定组查询specific
考虑断流的情况
普遍组查询最大响应时间字段:10s
特定组查询最大响应时间字段:1s
六、IGMP Snooping背景
七、IGMP Snooping概述
Snooping-嗅探
解决组播报文在二层泛洪的问题
运行在数据链路层 是二层交换机上的组播约束机制 用于管理和控制组播组
通过监听IGMP报文 建立组播MAC地址表
路由端口:面向路由器的端口 而不是三层口 可以理解为上游口
成员端口:面向组成员的端口 可理解为下游口
主机会发送报告-收到报告的接口为成员端口
路由器会发送查询-收到查询的接口为路由器端口
八、IGMP Snooping工作原理
RTA作为查询器 周期性的发送普遍组查询 该报文被扩散到交换机的所有端口
包括与交换机CPU相连的内部接口0 交换机CPU收到查询报文后 判断1号接口为连接路由器的接口
Client B希望加入组播组224.1.2.3 因此以组播方式发送一个IGMP成员报告报文
报告中具有目的MAC地址0x0100.5w01.0203 最初转发表上没有这个组播MAC地址的表项
所以该报告被扩散到交换机的所有接口 包括与交换机CPU相连的内部接口0
当CPU收到Client B的IGMP报告时 CPU利用IGMP报告中的信息建立了一个转发表项
此表项包括Client B的接口号 连接路由器的接口号和连接交换机内部CPU的接口号
九、IGMP Snooping配置