original link http://blog.163.com/song_jk/blog/static/235693562007022112149449/
目前在IP网络中,运营商的网络出于提供更多的服务为目的,不再以xDSL的形式想用户提供,而是直接提供统一的宽度接口,在一些宽带小区中这种形式尤为普遍。
就目前看,在宽带小区上应用最多的除了上网服务之外,更多的是提供IPTV的应用。而在IPTV的推广中,对于涉及的接入层交换设备,一般都要求设备支持VLAN技术和组播技术。而对于接入层的交换机来讲,对于组播的支持不外下面这两种:IGMP Snooping和IGMP Proxy。
IGMP Snooping相对比较简单,它是通过监听客户端和路由器端之间的IGMP报文,从而在建立针对某个组播的组播表条目。包括了组播地址、物理端口和VLAN的映射关系。通过使用IGMP Snooping可以在不支持IGMP的二层交换设备上建立组播表,从而达到节省带宽,控制组播报文转发方向的目的。
这里重点关注一下IGMP Proxy,因为对于原来的交换设备,不支持Snooping几乎没有,但是对于Proxy的支持就不是了。
IGMP Proxy是靠拦截用户和路由器之间的IGMP报文建立组播表,Proxy设备的上联端口执行主机的角色,下联端口执行路由器的角色。
1.下联端口执行路由器的角色,完全按照IGMP V2中规定的机制执行,包括查询者选举机制,定期发送通用查询信息,收到离开包时发送特定查询等。
2.上联端口执行主机的角色,响应来自路由器的查询,当新增用户组或者某组最后一个用户退出时,主动发送成员报告包或者离开包。
IGMP Proxy在两个端口分别实现不同的功能,工作量相对较大,其优点是当网络中没有路由器时,IGMP Proxy设备可以起到查询者的作用,而且如果要扩展组播路由功能,Proxy比Snooping方便。
不难看出,IGMP Snooping只是监听IGMP报文来建立组播表,而IGMP报文的产生是通过上端的路由器和客户端来完成的。也就是说如果没有路由器存在,就不能实现组播表的建立,而只能采用广播的形式来实现数据的传输。而Proxy则更多的参与了进来,它直接和客户端和上端的路由器来进行对话,而不再是一个完全透明的角色。因为它做了更多的本地处理,减少了对于上端的路由器的依赖程度,但是也增加了本地的系统负担。但是,从另一方面来讲,使用IGMP Proxy可以减轻上端路由器的负荷。正如上面提到的,Proxy会参与组播组的建立工作,当有一个用户请求提交上来,Proxy首先会检查本地的组播组,如果在本地已经有这个组播组存在,那么它就把该用户加入到这个组播组的成员中,而不需要向上端的路由器发送加入申请;反之,如果在本地没有找到相应的组播组,那么Proxy就会向上端的路由器发送申请,并在本地建立组播组。在组播成员退出的时候,Proxy也会检查该组播组中是否有其它的组播成员存在,如果有,那么它只是把组播组中申请退出的成员删去;反之,它才会通知上端的路由器,注销该组播组。
所以,上述的两种应用方案各有利弊,基于应用应视整体环境而定。
需要补充说明的是,上面介绍的是在局域网的环境中实施的组播功能,在DSLAM和xDSL环境中也是类似的原理和应用,其中DSLAM设备充当了局域网中支持IGMP Snooping或者Proxy的交换机的角色,原理是一样的。