IGMP SNOOPING笔记

IGMP SNOOPING

  1. 普遍组查询
    IGMP查询器定期向本地网段内的所有主机与路由器(224.0.0.1)发送IGMP普遍组查询报文,以查询该网段有哪些组播组的成员。
    在收到IGMP普遍组查询报文时,交换机将其通过VLAN内除接收端口以外的其它所有端口转发出去,并对该报文的接收端口做如下处理:
    如果在路由器端口列表中已包含该动态路由器端口,则重置其老化定时器。
    如果在路由器端口列表中尚未包含该动态路由器端口,则将其添加到路由器端口列表中,并启动其老化定时器。
  2. 报告成员关系
    主机会向IGMP查询器发送IGMP成员关系报告报文:
    当组播组的成员主机收到IGMP查询报文后,会回复IGMP成员关系报告报文。
    如果主机要加入某个组播组,它会主动向IGMP查询器发送IGMP成员关系报告报文以声明加入该组播组。
    在收到IGMP成员关系报告报文时,交换机将其通过VLAN内的所有路由器端口转发出去,从该报文中解析出主机要加入的组播组地址,并对该报文的接收端口做如下处理:
    如果不存在该组播组所对应的转发表项,则创建转发表项,将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;
    如果已存在该组播组所对应的转发表项,但其出端口列表中不包含该端口,则将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;
    如果已存在该组播组所对应的转发表项,且其出端口列表中已包含该动态成员端口,则重置其老化定时器。
    交换机不会将IGMP成员关系报告报文通过非路由器端口转发出去,因为根据主机上的IGMP成员关系报告抑制机制,如果非路由器端口下还有该组播组的成员主机,则这些 主机在收到该报告报文后便抑制了自身的报告,从而使交换机无法获知这些端口下还有该组播组的成员主机。(IGMP SNOOPING默认关闭last report机制)

  3. 离开组播组
    运行IGMPv1的主机离开组播组时不会发送IGMP离开组报文,因此交换机无法立即获知主机离开的信息。但是,由于主机离开组播组后不会再发送IGMP成员关系报告报文,因此当其对应的动态成员端口的老化定时器超时后,交换机就会将该端口对应的转发表项从转发表中删除。
    运行IGMPv2或IGMPv3的主机离开组播组时,会通过发送IGMP离开组报文,以通知组播路由器自己离开了某个组播组。当交换机从某动态成员端口上收到IGMP离开组报文时,首先判断要离开的组播组所对应的转发表项是否存在,以及该组播组所对应转发表项的出端口列表中是否包含该接收端口:
    如果不存在该组播组对应的转发表项,或者该组播组对应转发表项的出端口列表中不包含该端口,交换机不会向任何端口转发该报文,而将其直接丢弃;
    如果存在该组播组对应的转发表项,且该组播组对应转发表项的出端口列表中包含该端口,交换机会将该报文通过VLAN内的所有路由器端口转发出去。同时,由于并不知道该接收端口下是否还有该组播组的其它成员,所以交换机不会立刻把该端口从该组播组所对应转发表项的出端口列表中删除,而是重置其老化定时器。
    当IGMP查询器收到IGMP离开组报文后,从中解析出主机要离开的组播组的地址,并通过接收端口向该组播组发送IGMP特定组查询报文。交换机在收到IGMP特定组查询报文后,将其通过VLAN内的所有路由器端口和该组播组的所有成员端口转发出去。对于IGMP离开组报文的接收端口(假定为动态成员端口),交换机在其老化时间内:
    如果从该端口收到了主机响应该特定组查询的IGMP成员关系报告报文,则表示该端口下还有该组播组的成员,于是重置其老化定时器;
    如果没有从该端口收到主机响应特定组查询的IGMP成员关系报告报文,则表示该端口下已没有该组播组的成员,则在其老化时间超时后,将其从该组播组所对应转发表项的出端口列表中删除。
    IGMP SNOOPING PROXY
    配置IGMP Snooping功能后,交换机对上游IGMP查询器的Query报文和下游主机的Report和Leave报文都是原封不动地转发。当网络中存在大量用户主机时,冗余的IGMP报文给上游设备带来处理压力。配置IGMP Snooping Proxy功能后,交换机可以代替上游三层设备向下游发送IGMP Query报文、也可以代替下游主机向上游三层设备发送IGMP Report和IGMP Leave报文,有效节约上游三层设备和本设备之间的带宽。配置了代理功能的设备只有在组播组开始有成员加入需要建立组播表项或者响应IGMP查询报文时向上游发送Report报文;或者组播组最后成员都已经离开需要删除组播表项时向上游发送Leave报文。
    当Switch上配置IGMP Snooping Proxy时,Switch可以终结上游的IGMP查询报文,并且自己构造查询报文向下游主机发送;终结下游主机的IGMP报告/离开报文,并自己构造统一的报告/离开报文向上游发送。
    当三层设备没有启用IGMP时,例如只配置了静态组播组,不会有查询器发送Query报文,这样即使设备使能了IGMP Snooping功能也无法建立和维护组成员关系。通过IGMP Snooping Proxy功能,可以使交换机发送Query报文,相对下游主机而言,就是一台查询器。

igmp proxy和igmp snooping模式的区别在于proxy充当“代理人”的角色,即对下层主机它充当组播路由器的角色,对上层组播路由器它充当主机的角色,对下层用户发送上来的igmp report报文进行分析,而不把该报文透传到上层网络,而是自己以主机的身份向上层组播路由器申请组播节目,同样对于上层组播路由器发送的查询报文也进行拦截,而自己以组播路由器的身份向主机发送查询报文;而snooping则仅仅是侦听,对下层主机和上层组播路由器发送的igmp报文进行侦听,同时透传。当然无论是igmp proxy还是igmp snooping,设备都根据下层主机发送的igmp report报文建立转发表项,从而实现可控组播。

IGMP Snooping和IGMP Snooping Proxy实现功能相同但原理不同。IGMP Snooping仅仅是通过侦听IGMP报文来获取相关用户信息,而IGMP Snooping Proxy则拦截和抑制了终端用户的IGMP请求并进行自身相关处理后,才将它转发给上层路由器。
相对于仅实现IGMP Snooping的设备来说,实现了IGMP Snooping Proxy的二层网络设备对于用户侧承担了Server的角色,定期查询用户信息;对于网络侧又承担了Client的角色,在收到查询时将当前用户信息进行上报。因此相比IGMP Snooping来说,不仅能达到抑制二层网络组播泛滥的目的,而且能有效减少网络中的协议消息,降低网络负荷。但由于其需要维护和计算表项的状态变化同时需要代理路由器的功能,因而也相应增加了设备的实现复杂度和处理开销。

自我思考:
igmp proxy在设备建立组播路由表项指导组播流量转发,设备需要启用组播路由表。,对上游路由器而言是组播接收者,对下游pc来说是组播查询者,不会透传报文。不仅能达到抑制二层网络组播泛滥的目的,而且能有效减少网络中的协议消息,降低网络负荷,但是会增加自身负荷。
igmp snooping proxy是侦听拦截,建立的是二层组播转发表项,区别在于收到组播离开报文,igmp snooping proxy交换机,收到对应的(*,G)离开报文,如果存在对应表项,且该接口也在表项的成员接口,那么向

猜你喜欢

转载自blog.51cto.com/14866584/2551610