一、以太网的组播转发问题
当组播数据从最后一跳路由器发往组播组成员时,往往会经过交换机。由于组播数据的目的MAC地址是组播MAC地址,默认情况下交换机将泛洪此类数据帧,有可能导致不同组的组播流量会被别组的成员接收。
当Router将组播报文转发至Switch以后,Switch负责将组播报文转发给组播用户。由于组播报文的目的地址为组播组地址,在二层设备上是学习不到这一类MAC表项的,因此组播报文就会在所有接口进行广播,和它在同一广播域内的组播成员和非组播成员都能收到组播报文。这样不但浪费了网络带宽,而且影响了网络信息安全。
IGMP Snooping有效地解决了这个问题。配置IGMP Snooping后,二层组播设备可以侦听和分析组播用户和上游路由器之间的IGMP报文,根据这些信息建立二层组播转发表项,控制组播数据报文转发。这样就防止了组播数据在二层网络中的广播。
二、IGMP Snooping介绍
IGMP Snooping(互联网组管理协议侦听)是一种网络技术,用于优化局域网(LAN)上的多播流量。IGMP Snooping功能可以控制组播流量在以太网的泛洪范围,避免不同组的组播流量被别组成员接收。
在二层交换机配置IGMP Snooping,交换机可以维护一个二层组播转发表项,可以只转发到特定端口与VLAN中,提高安全性。
IGMP Snooping端口与转发表介绍
二层组播转发表项中存在两类接口:
-
路由器端口(Router Port):二层组播设备上朝向三层组播设备(DR或IGMP查询器)一侧的接口,二层组播设备从此接口接收组播数据报文。 -
成员端口(Member Port):又称组播组成员端口,表示二层组播设备上朝向组播组成员一侧的端口,二层组播设备往此接口发送组播数据报文。
成员端口生成过程:由协议生成的成员端口叫做动态成员端口。收到IGMP Report报文的接口,二层组播设备会将其标识为动态成员端口。手工配置的成员端口叫做静态成员端口。
三、IGMP Snooping转发原理
IGMP Snooping设备通过监听IGMP报文,形成二层组播转发表,并决定接口类型,具体过程如下:
路由器端口形成后会启动老化计时器(默认180s),当路由器端口收到新的普遍组查询后刷新该计时器。
成员端口形成后会启动老化计时器(默认180s),当成员端口收到新的成员关系报告报文后刷新该计时器。
IGMP Snooping不再使用成员关系报告报文抑制机制:
-
由于IGMP Snooping需要监听IGMP报文才能决定端口角色,进而指导转发,所以所有组成员都需要发送IGMP组成员关系报告报文。 -
当IGMP Snooping设备收到成员关系报告报文后,只将成员关系报告报文从路由器接口发送出去,从而避免其余组成员收到成员关系报告报文,不触发成员关系报告报文抑制机制。
维护转发表项:
收到IGMP离开报文后,成员端口的老化定时器 = 健壮系数(默认2) x 特定组查询间隔(默认1s)。
总结:默认一般情况下最后一跳路由器不是直接连接组播组成员,而是通过交换机等设备,交换机会将组播报文进行泛洪,导致所有组播组成员能够收到所有报文。通过在交换机上配置OGMP Snooping可以使得组播组成员只接收特定的组播组报文,减少组播流量泛洪。IGMP Snooping有路由器端口和成员端口,连接最后一跳路由器的端口为路由器端口,连接组播组成员的为成员端口。
如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子
本文由 mdnice 多平台发布