-
IGMP SNOOP
技术白皮书
一.
IGMP
SNOOP
产生的原因
IGMP
(
Internet
Group
Management
Protocol
)协议讲述了路由器如何发现自己直
连网络上
有哪些
IP
组播组存在。简单的说,就是路由器周期在自己的端
口上发送
IGMP
查询报文
(IGMP
Query
消息
)
,
路由器连接的网络上的主机
(
P
C
)
收到
IGMP
< br>查询报文后,
通过发送
IGMP
报告报文(
IGMP Report
)把自己属于的组告诉路由
器。当路由器收到
IP
组播数据时,将把组播数据转发到路由器
上有对应组播成员主机存在的端口上。当
主机退出组播组时,通过发送
< br>IGMP
离开(
IGMP Leave
< br>)报文来向路由器通告自己不再
希望接收该
IP
组播组的数据。
在组网时往往是路由器的端口
连接以太网交换机,
然后通过以太网交换机接入用户
的
PC
机,而交换机收到
IP
组播数据时、将把该组播数据发送到自己的其它所有端口,
也即把组播数据象广播数
据一样进行转发,
这就导致交换机把组播数据发送到了一些没
有
组播成员
PC
存在的交换机端口上,
那
么这些用户的
PC
机就收到了对他们来说没有意
义的数据。这既浪费这些
PC
机的
CPU
对这些数据进行处理,并且更严重的问题是:如
果交
换机上对每个端口进行了带宽限制,
那么这个端口上的用户应该得到的带宽就被浪
费了,
这样就会导致用户的抱怨。
正是因为上面的问题,导致
IGMP
SNOOP
技术在交换机上的产生。
二.
IGMP
SNOOP
的工作原理
IGMP <
/p>
SNOOP
的工作原理比较简单,即交换机监控接收到的
IGMP
报文,然后在交换
机上形成组播转发条
目,
这样当交换机接收到组播数据时,
就可以根据组播转发条目
将
数据转发到确实有组成员存在的端口上。
具体的来说,使能
IGMP SNOOP
之后,交换机接收到
IGMP
报文时的处理为:
1
.
< br>交换机对于
IGMP
报文不能按照组播的转发流程(即广
播的方式)进行转发,而
是交给
IGMP
SNOOP
模块处理;
2
.
交换机收到
IGMP QUERY
报文
时,需要记录收到该报文的端口,并将该报文转发
到该
VLAN
的其它所有端口;
3
.
交换机收到
IGMP REPORT
报
文时,交换机不能将该报文转发到同一
vlan
的其它
端口,而只能将该报文转发给收到过
IGMP
QUERY
的端口;并且,
IGMP SNOOP
模
块需要创建该组的组播转发条目,
并将该端口以及
QUERY
端口加入到该组播转发
条目
;
4
.
交换机收到
IGMP
LEAVE
p>
报文时,
只需要将该
LEAVE
消息转发到收到过
IGMP
QUERY
的端口即可;如果没有使能
IGMP
快速离开功
能,那么
IGMP
SNOOP
模块使
用老化
功能(即如果该端口在规定时间之内没收到
IGMP <
/p>
REPORT
报文)将该端口从组播
转发
条目中删除,如果使能了
IGMP
快速离开功能,那么需要立即
将该端口从组
播转发条目中删除;
三.
IGMP
FILTER
说明
从上面
IGMP
SNOOP
的工作流程可以看出,
IGMP
SNOOP
模块根据
IGMP
QUERY
、
IGMP
REPORT
、
IGMP LEAVE
消息在交换机上动态创建、删除组播组以及维护组播组的成员端
口信息,但是在实际使用时很有可能需要限制交换机的每个端口允许加入哪些组播组,
从
而产生了
IGMP
FILTER
功能。
IGMP
FILTER
是一个专门用于过滤
IGMP REPORT
p>
报文中的组播组的过滤器,如果交
换机的端口没有配置
Igmp
filter
,那么这个端口收到
IGMP REPORT
p>
报文时、会将这个
端口加入到这个组播组中;如果交换机的端口配置
了
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
则失效
ig
mp
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
参数表示使能、
< br>disable
参数表示失效,
系统缺省是没有使能快速
离开的;
快速离开的意思是:
如果在
某
个端口上收到对某个组播组的
IGMP LEAVE
消息,那么
就立即将这个端口从
这个组播组中删除掉。
(
5
)
p>
配置当
report
消息被
igmp filter
过滤后是否转发该消息
S2000M(config)#igmp-snooping drop-
filtered (enable|disable)
上面
的命令配置当一个
report
报文中的组播组被
igmp filter
过滤之后
是否转发该
report
报文到
igmp
query
端口,
参数
en
able
表示不转发、
disable
表示虽然本端口不允许加入该组播组,
但是仍然把该
repor
t
报文转发到
igmp
query<
/p>
端口;系统缺省是当某个端口不允许加入某些组播组时,那么也不将该
report
报文转发到
igmp
query
端口。
(
6
)
显示
igmp
snoop
的配置情况
S2000M(config)#show igmp-
snooping
igmpSnoop Status : enable
igmpSnoop Aging(seconds) :
300
igmpSnoop FastLeave :
disable
igmpSnoop drop-
filtered: enable
(
7
)
显示
igmp
snoop
学习到的组播条目
S2024MA#show igmp-snooping egressport-
table
Vlan MacAddr
EgressPorts
1
01-00-5e-01-02-03
1,2,5,8,9
上面的命令用于显示系统当前学习到的所
有组播转发条目,
上面的例子显示组
播组
01-00-5e-01-02-03
在端口
1
、
2
、
5
< br>、
8
、
9
上都有成员存在。
(
8
)
创建或者配置某个特定
igmp
filter
S2000M(config)# igmp-
filter <1-100>
上面的命令用于创建或者配置某个特定的
igmp
filter
,如果某个
igmp
f
ilter
不存在,那么上面的命令将创建指定序号的
igmp
filter
;如果已经存
在该
igmp
filter
那么则进入对该
igmp
filter
的配置。
(
9
)
在
igmp
filter
中添加规则
S2000M(config-igmp-filter 1)#rule
<1-100> (permit|deny)
上面的
命令将会在
igmp filt
er1
中创建
1
个规则,每个
igmp filter
最多允许
100
个规则,
permit
参数的意思是允许加入
该组播组,
deny
的意思是不允许加入
该组播组,
后面的参数是两个组播
IP
地址,
前面是最小的
ip
地址、
p>
后面是最
大
IP
地
址。
(
10
)
在
igmp
filter
中删除某个规则
S2000M(config-igmp-filter 1)#no fule
<1-100>
上面的命令用于在某个
igmp
filter
中删除某个规则。
(
11
)
将
igmp
filter
应用于某个端口
S2000M(config-igmp-filter 1)# apply-to-
ports PORTLIST
参数
PORTLIST
是一个端口列表,上面的命令用于将
1
个
igmp
filter
应用于
某些端口。
(
12
)
将
igmp
filter
不应用于任何端口
S2000M(config-igmp-filter 1)# apply-to-
ports none
上面的命令将把
igmp filter
1
不应用于所有端口;
(
13
)
显示当前系统中所有的
igmp
filter
S2000M #show igmp-
filter
上面的命令将显示系统中当前存在的所有
igmp
filter
(
14
)
显示某个特定的
igmp
filter
S2000M #show igmp-
filter <1-100>
上面的命令用于显示某个特定的
igmp
filter
的规则,下面是一个显示实例:
-
-
-
-
-
-
-
-
-
上一篇:学八字取用神必须要会的方法
下一篇:思想汇报全四篇 (1)