组播组路由协议
(协议号/2,ttl/1,)

igmpv1定义了基本的查询(目的组,0)和成员报告过程(哪个组,哪个组)

igmpv2在此基础上添加了组成员快速离开机制(224.0.0.2,哪个组)
查询器选举机制(选路由ip地址最小的,非查询器启用定时器,超时后从新选举)
General Query 消息
它认为自己是查询者,会立刻发送General Query为了快速发现子网中激活的组员,并通知给子网中可能存在的其他多播路由器默认时间间隔为60秒发向224.0.0.1 
ip igmp query-interval 0 ~ 65535    // 修改General Query消息默认时间间隔
注:如果在2次查询时间间隔(2分钟)里没有收到Report消息,路由器将认为这个子网中没有组员
    
Max Response Time值
   规定了主机用Reports消息相应这个查询的最大等待时间
   默认为10秒
   这个值在Query消息中占8bit
   ip igmp query-max-response 0 ~ 25秒 §修改路由器等待主机响应Query消息的最大等待时间
 
Group-Specific Query消息
当收到Leave Group消息时,为了确定子网中是否还存在组员,会向子网中发送该消息
目的地址为组地址(该消息中包含组地址)
路由器会每隔1秒发送2个Group-Specific Query消息 
   为了防止Group-Specific Query被破坏或丢弃,造成主机无法相应该消息,导致路由器认为子网中没有组员

igmpv3又在基础上增加指定源的功能,取消了离组报文(不接受任何源即离组了)
(组地址,过滤模式(include,exclude),源列表)

v3的主机侧维护信息
当前状态(mode-is-indlude,mode-is-exclude)
过滤模式改变(change-to-indlude-mode,change-to-exclude-mode)
源列表改变(all-new-sources允许新的源,block-old-sources阻塞旧的源)

v3的路由侧维护信息
{组地址,组定时器,过滤模式,源列表(源地址,源定时器)}

v3普遍组查询
v3特定源查询
v3特定组查询

 

所有igmp支持asm模型,v3支持ssm模式。

实际中还需要二层组播协议

igmp 窥探 (交换机拆三层报文,(或有专门的ASIC),才推荐用这个。 )
手动配置的交换式多播树
静态的绑定端口和组播地址,主要有以下缺点:
1,手工配置,不适合大量部署。
2,不能跨越VLAN 
cisco私有(cgmp)
cisco路由和交换机都必须启cgmp,路由器产生cgmp报文,交换机解读
join---告诉交换机增加一个成员
leave--告诉交换机删除组员或删除整个组
包的目的mac为0100.0cdd.dddd
组播目的地址(gda)
单播源地址(usa)

当CGMP的路由器启动后,它向交换机发送一个CGMP的join包,这个包中的GDA为0(0000.0000.0000.0000),USA设置为自己的MAC地址。于是交换机知道多播路由器连接在它收到这个包的端口上。路由器每隔60s发送一个包来维持存活。

主机发送IGMP Membership Report,经过交换机到达路由器,路由器会发送Join包给交换机,交换机收到后,根据包的信息,建立MAC地址与组播地址的映射关系,当路由器发送IGMP查询时,交换机会把查询信息发送到除接受端口外的所有组端口上。

主机发送IGMP Leave消息,路由器收到后,发出2个IGMP Group-Specific Query查询,交换机收到后,把此消息转到组的端口上,如果有还有组员响应,那么路由器发送IGMP Leave包到交换机,交换机收到后,根据包中的描述,删除跟组员相对应的端口。如果没有组员响应,路由器也发送IGMP Leave包,交换机收到后,删除整个组。