1.组播网络的转发困境
组播数据从组播源发出,路由器收到之后需要知道,1.那些组播组成员需要接收数据,2.需要接收哪个组的组播数据3.组播组成员还在
感知组播组成员的方式:一种是静态感知,由管理员在路由器上手工配置,实用性比较差,一种是动态感知,通过IGMP协议动态感知组播组成员(局限于ipv4)
2.IGMP的报文
1.普遍查询组报文:用来询问网络中所有的组成员,需不需要加入组播组,用来知道某个组播组是否还存在组播组成员
2.成员关系报告报文:组播成员收到普遍查询组报文之后就会使用成员关系报告报文来做出回应,表示希望加入到这个组
3.加组机制
路由器会周期性的(60s)发送普遍组查询报文,目的地址是224.0.0.1。告诉网络中所有组成员,有没有要接收组播数据的
普遍组查询报文经过了交换机之后,因为是组播,交换机默认无法学习组播数据帧,所以会泛洪。
组成员接收到普遍组查询报文之后,就会回应一个成员关系报告报文,告诉查询器,自己要接收组播数据,希望加入到组播组。成员关系报告报文里面包含了组成员所希望加入的组播组
成员关系报告报文抑制机制:组播组成员在收到IGMP查询器发下来的普遍组查询报文,需要等待(0-10s随机值)才发送成员关系报文回应,这个定时器是为了接收其他组成员接收的成员关系报告,如果在定时器内组播接收者收到了其他组成员的成员关系报告报文,并且组地址是和自己希望加入的组地址是一样的,那么这一台组成员就不会在发送成员关系报告报文了
4.查询器选举机制
查询器选举机制:普遍组查询报文只能由IGMP查询器来发送,如果一个网络内有多台IGMP路由器,那么多台路由都发送普遍组查询报文,可能会带来重复的组播数据的问题,那么就需要一个查询选举机制,而IGMPV1本身并不支持查询器选举,查询器选举需要依赖其他的组播协议去选举,比如PIM协议
5.离开组机制
如果组成员不希望接收组播数据,那么可以离开这个组,而在IGMPV1里,组成员的离开是静默离开,就是组成员的离开不会发送任何的报文来通知IGMP查询器,路由器也不知道这个组还有没有组成员了
周期性发送普遍组查询报文,如果这个组里面有接受者收到,那么接受者会使用成员关系报告报文回应,那么路由器就会刷新计时器
如果接受者在130s(60s*2+10,也就是两个普遍组查询报文的时间外加10s)后还是没有回应,那么这个组就会老化掉这个IBGP组表项
6.IGMPV2
改善的缺陷:
1.增加了离开组机制
2.增加了查询器机制
7.IGMPV2的报文格式
成员离开报文:成员离开报文:组成员离开组会发送一个离开组报文,目的地址是希望离开那个组的组IP地址,路由器收到之后立即删除IGMP表项
特定组查询报文:是为了知道这个组里还有没其他的组成员。2s发送一次,间隔1s,再发一次
8.查询器查询机制
IP地址小的成为查询器
9.IGMPV3的报文跟变化
普遍组查询报文(General Query)。该报文作用与IGMPv1,IGMPv2中的普遍组查询报文作用一致。
特定组查询报文(Group-Specific Query) 。该报文作用与IGMPv2中的特定组查询报文作用一致。
特定源组查询报文(Group-and-Source-Specific Query)。该报文用于查询该组成员是否愿意接收特定源发送的数据。特定源组查询通过在报文中携带一个或多个组播源地址来达到这一目的。
变化如下:
1.IGMPv3查询报文除了包含普遍组查询报文和特定组查询报文,还新增了特定源组查询报文(Group-and-Source-Specific Query)。
2.IGMPv3成员关系报告报文不仅包含主机想要加入的组播组,而且包含主机想要接收来自哪些组播源的数据。
3.由于同个组播组的不同成员可能希望接收来自不同源的组播,因此IGMPv3无需成员关系报告报文抑制机制。
4.IGMPv3没有定义专门的成员离开报文,成员离开通过特定类型的报告报文来传达。
10.IGMP各个版本的差异以及兼容性
IGMP是向下兼容
如果IGMP查询器收到的IGMP报文版本比自己低,那么查询器是可以处理的,但是如果收到的报文版本比自己高,无法处理
11.IGMP snooping
当组播数据经过二层交换机,交换机默认情况下是无法学习组播mac地址,所以接收到的所有的组播流量,都会泛洪,那么就会导致组播组成员会接收到其他组的数据流量
IGMP snooping就可以动态的侦听组播流量,从而让交换机具备学习mac地址的能力
路由器接口:交换机连接路由器的接口,因为只有路由器会发送普遍查询组报文和特定组查询报文
成员接口:连接接受者的接口
12.IGMP SSM Mapping
有些场景下,我们可能会使用SSM的模型,但是使用这种模型IGMP版本必须是v3,如果是V1或者是V2,则无法实现组播流量的转发,这时候就可以使用IGMP SSM Mapping机制,去把组播组和组播源的单播IP地址进行绑定,从而让运行v1或者v2的终端也行跑SSM模型
13.IGMP代理
组播网络大起来的时候,组播数据也就会越来越多,IGMP查询器所处理的普遍组查询,特定组查询,离开组,成员关系报告报文等,查询器处理起来比较吃力
我们可以使用接收者的三层设备,来代理IGMP工作,接收者发出的组播报文,都由接收者的三层设备来代理完成