igmpsnoop技术白皮书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IGMP SNOOP技术白皮书
一.IGMP SNOOP产生的原因
IGMP(Internet Group Management Protocol)协议讲述了路由器如何发现自己直连网络上有哪些IP组播组存在。简单的说,就是路由器周期在自己的端口上发送IGMP 查询报文(IGMP Query消息),路由器连接的网络上的主机(PC)收到IGMP 查询报文后,通过发送IGMP报告报文(IGMP Report)把自己属于的组告诉路由器。当路由器收到IP组播数据时,将把组播数据转发到路由器上有对应组播成员主机存在的端口上。当主机退出组播组时,通过发送IGMP离开(IGMP Leave)报文来向路由器通告自己不再希望接收该IP组播组的数据。
在组网时往往是路由器的端口连接以太网交换机,然后通过以太网交换机接入用户的PC机,而交换机收到IP组播数据时、将把该组播数据发送到自己的其它所有端口,也即把组播数据象广播数据一样进行转发,这就导致交换机把组播数据发送到了一些没有组播成员PC存在的交换机端口上,那么这些用户的PC机就收到了对他们来说没有意义的数据。这既浪费这些PC机的CPU对这些数据进行处理,并且更严重的问题是:如果交换机上对每个端口进行了带宽限制,那么这个端口上的用户应该得到的带宽就被浪费了,这样就会导致用户的抱怨。
正是因为上面的问题,导致IGMP SNOOP技术在交换机上的产生。
二.IGMP SNOOP的工作原理
IGMP SNOOP的工作原理比较简单,即交换机监控接收到的IGMP报文,然后在交换机上形成组播转发条目,这样当交换机接收到组播数据时,就可以根据组播转发条目将数据转发到确实有组成员存在的端口上。
具体的来说,使能IGMP SNOOP之后,交换机接收到IGMP报文时的处理为:1.交换机对于IGMP报文不能按照组播的转发流程(即广播的方式)进行转发,而是交给IGMP SNOOP模块处理;
2.交换机收到IGMP QUERY报文时,需要记录收到该报文的端口,并将该报文转发到该VLAN的其它所有端口;
3.交换机收到IGMP REPORT报文时,交换机不能将该报文转发到同一vlan的其它端口,而只能将该报文转发给收到过IGMP QUERY的端口;并且,IGMP SNOOP模
块需要创建该组的组播转发条目,并将该端口以及QUERY端口加入到该组播转发
条目;
4.交换机收到IGMP LEAVE报文时,只需要将该LEAVE消息转发到收到过IGMP QUERY 的端口即可;如果没有使能IGMP快速离开功能,那么IGMP SNOOP模块使用老化
功能(即如果该端口在规定时间之内没收到IGMP REPORT报文)将该端口从组播
转发条目中删除,如果使能了IGMP快速离开功能,那么需要立即将该端口从组
播转发条目中删除;
三.IGMP FILTER说明
从上面IGMP SNOOP的工作流程可以看出,IGMP SNOOP模块根据IGMP QUERY、IGMP REPORT、IGMP LEAVE消息在交换机上动态创建、删除组播组以及维护组播组的成员端口信息,但是在实际使用时很有可能需要限制交换机的每个端口允许加入哪些组播组,
从而产生了IGMP FILTER功能。
IGMP FILTER是一个专门用于过滤IGMP REPORT报文中的组播组的过滤器,如果交换机的端口没有配置Igmp filter,那么这个端口收到IGMP REPORT报文时、会将这个端口加入到这个组播组中;如果交换机的端口配置了Igmp Filter,那么这个端口收到IGMP REPORT报文时,将会根据Igmp Filter的内容决定是否允许这个端口加入该组播组。
四.烽火网络交换机IGMP SNOOP配置
1.CLI方式
(1)进入igmp snoop配置节点
S2000M(config)#igmp-snooping
上面的命令执行后将进入igmp snoop配置节点
(2)配置igmp snoop协议使能或者失效
S2000M(config)#igmp-snooping (enable|disable)
上面的命令可以配置igmp snoop功能使能或者失效,如果参数为enable 则使能igmp snoop,参数为disable则失效igmp snoop功能;缺省igmp snoop
协议处于失效状态。
(3)配置igmp snoop组播转发条目老化时间
S2000M(config)#igmp-snooping aging <30-3600>
上面的命令用于设置igmp snoop组播组的老化时间,单位为秒;如果在指定时间内某个组播组在某个端口上没有接收到这个组播组的IGMP REPORT
报文,那么就将这个端口从这个组播组中删除,如果这个组播组已经不存在任
何端口、那么将该组播组也删除。
(4)配置igmp snoop快速离开状态
S2000M(config)#igmp-snooping fast-leave (enable|disable)
上面的命令配置是否使能快速离开功能,enable参数表示使能、disable 参数表示失效,系统缺省是没有使能快速离开的;快速离开的意思是:如果在
某个端口上收到对某个组播组的IGMP LEAVE消息,那么就立即将这个端口从
这个组播组中删除掉。
(5)配置当report消息被igmp filter过滤后是否转发该消息
S2000M(config)#igmp-snooping drop-filtered (enable|disable)
上面的命令配置当一个report报文中的组播组被igmp filter过滤之后是否转发该report报文到igmp query端口,参数enable表示不转发、disable
表示虽然本端口不允许加入该组播组,但是仍然把该report报文转发到igmp
query端口;系统缺省是当某个端口不允许加入某些组播组时,那么也不将该
report报文转发到igmp query端口。
(6)显示igmp snoop的配置情况
S2000M(config)#show igmp-snooping
igmpSnoop Status : enable