更新时间:2024-01-09
1 IGMP-snooping配置
1.1 IGMP-snooping配置任务
IGMP-snooping的任务是维护VLAN与组地址的对应关系,并且能够与多播组的变化同步更新,这样交换机就可以按照多播组的拓扑结构转发数据。其功能主要包括侦听IGMP报文、维护组地址和VLAN的对应表,保持主机IGMP协议实体和路由器IGMP协议实体的状态一致性,解决“flooding”问题。
需要注意的是:由于igmp-snooping是通过监听igmp的query、report报文来实现上述描述的问题,因此必须在有组播路由器的环境下igmp-snooping才能正常工作,即交换机必须能周期性地收到路由器发来的igmp查询报文,因此igmp-snooping的router age定时器设置必须大于和其进行连接的组播路由器的组查询周期。可以通过show ip igmp-snooping命令来查看打开igmp-snooping功能的各vlan中的组播路由器信息。
• 开启/关闭VLAN的IGMP-snooping功能
• 增加/删除VLAN的静态组播地址
• 配置VLAN的immediate-leave特性
• 配置VLAN的静态路由端口
• 配置生成组播转发表时的IPACL
• 配置过滤目的地址未注册的组播报文的功能
• 配置IGMP-snooping的Router Age定时器
• 配置IGMP-snooping的Response Time定时器
• 配置IGMP-snooping的IGMP Querier
• 配置IGMP-snooping的Querier Time定时器
• 配置IGMP-snooping的forward-l3-to-mrouter转发数据报文到路由端口
• 配置IGMP-snooping的sensitive模式及value值
• 配置IGMP-snooping的v3-leave-check功能
• 配置IGMP-snooping的forward-wrongiif-within-vlan功能
• 配置IGMP-snooping的端口下IPACL功能
• 配置IGMP-snooping的端口下最大组播IP地址数量功能
• IGMP-snooping的监控与维护
• 配置IGMP-snooping的示例
1.1.1 开启/关闭VLAN的IGMP-snooping功能
在全局配置模式下进行下列配置:
命令
|
目的
|
ip igmp-snooping [vlan vlan_id ]
|
开启VLAN的IGMP-snooping功能。
|
no ip igmp-snooping [vlan vlan_id ]
|
恢复缺省设置。
|
如果不指定vlan参数,则开启和关闭动作将对系统中所有的vlan(包括后来创建的)生效。
缺省情况下所有VLAN的IGMP-snooping功能被关闭。
例如,如果只想在VLAN3启用IGMP-snooping,并在系统重启后也保持配置不变,可先使用”no ip IGMP-snooping”命令关闭所有VLAN的IGMP-snooping,再配置”ip IGMP-snooping VLAN 3”,并保存配置。
1.1.2 增加/删除VLAN的静态组播地址
静态组播地址的配置使一些不支持IGMP协议的主机也能接收到相应的组播报文。
在全局配置模式下进行下列配置:
命令
|
目的
|
ip igmp-snooping vlan vlan_id static A.B.C.D interface intf
|
增加VLAN的静态组播地址。
|
no ip igmp-snooping vlan vlan_id static A.B.C.D interface intf
|
删除VLAN的静态组播地址。
|
1.1.3 配置VLAN的immediate-leave特性
配置immediate-leave特性可以使交换机收到leave 报文后立即从对应组播组的端口列表中删除相应的端口,而不再开启定时器等待是否还有其他主机加入了这个组播,如果同一端口下的其他主机也属于这个组但并不想离开,这些用户的组播通信可能会受到影响,此时不应启用immediate-leave功能。
在全局配置模式下进行下列配置:
命令
|
操作
|
ip igmp-snooping vlan vlan_id immediate-leave
|
配置VLAN的immediate-leave特性。
|
no ip igmp-snooping vlan vlan_id immediate-leave
|
恢复VLAN的immediate-leave特性为默认值。
|
缺省情况下VLAN的immediate-leave特性是关闭的。
1.1.4配置端口的immediate-leave特性
配置端口的immediate-leave特性可以使交换机在该端口收到leave 报文后立即从对应组播组的端口列表中删除该端口,而不再开启定时器等待是否还有其他主机加入了这个组播。如果同一端口下的其他主机也属于这个组但并不想离开,这些用户的组播通信可能会受到影响,此时不应启用immediate-leave功能。
端口的immediate-leave配置和VLAN下的immediate-leave配置同时起作用。
在接口配置模式下进行下列配置:
命令
|
操作
|
ip igmp-snooping immediate-leave
|
配置端口的immediate-leave特性。
|
no ip igmp-snooping immediate-leave
|
恢复端口的immediate-leave特性为默认值。
|
缺省情况下端口的immediate-leave特性是关闭的。
1.1.5 配置VLAN的静态路由端口
配置静态的路由端口将组播报文发往该路由端口。交换机会把组播的report报文发送给vlan下的所有路由端口。
在全局配置模式下进行下列配置:
命令
|
目的
|
ip igmp-snooping vlan vlan_id mrouter interface intf
|
增加VLAN的静态路由端口。
|
no ip igmp-snooping vlan vlan_id mrouter interface intf
|
删除VLAN的静态路由端口。
|
1.1.6配置 生成组播转发表时的IPACL
全局配置模式下配置IPACL可以制订交换机在收到igmp report报文后,生成组播转发表时的规则和限制。
命令
|
目的
|
ip igmp-snooping policy word
|
增加生成组播转发表时的IPACL。
|
no ip igmp-snooping policy
|
删除已配置的生成组播转发表时的IPACL。
|
1.1.7配置过滤目的地址未注册的组播报文的功能
当组播报文目标查找失败(DLF,即目的地址未通过igmp-snooping注册在交换芯片中)时,默认的处理方式是在报文所属的vlan内所有端口上进行转发,可以通过配置改变该处理方式,使其丢弃所有目的地址未注册在任何端口的组播报文。
命令
|
操作
|
ip igmp-snooping dlf-drop
|
丢弃组播目的地址查找失败的报文。
|
no ip igmp-snooping dlf-drop
|
恢复默认设置(forward)。
|
注意:
1)该属性的设置是针对所有vlan进行的。
•缺省情况下交换机对该类报文的处理方式为forward(在vlan内广播)。
1.1.8 配置IGMP-snooping的Router Age定时器
Router Age定时器用于监视IGMP 查询者是否存在,IGMP查询者维护通过发送查询报文来维护管理组播地址,IGMP-snooping依赖IGMP查询者和主机之间的通信来工作。
在全局配置模式下进行下列配置:
命令
|
操作
|
ip igmp-snooping timer router-age timer_value
|
配置IGMP-snooping的Router Age值。
|
no ip igmp-snooping timer router-age
|
恢复IGMP-snooping的Router Age为默认值。
|
注意:
该定时器的设置要参考IGMP查询者的查询周期的设置,不能小于查询周期的时间,建议为查询周期的三倍。
缺省情况下IGMP-snooping的Router Age 为260 秒。
1.1.9 配置IGMP-snooping的Response Time定时器
Response Time定时器是当IGMP查询者发送查询报文后,主机报告组播的最晚时间,如果在该定时器老化后还没有收到报告报文,则交换机将删除该组播地址。
在全局配置模式下进行下列配置:
命令
|
操作
|
ip igmp-snooping timer response-time timer_value
|
配置IGMP-snooping的Response Time值。
|
no ip igmp-snooping timer response-time
|
恢复IGMP-snooping的Response Time为默认值。
|
注意:
该定时器值不能过小,过小会造成组播通信不稳定。
缺省情况下IGMP-snooping的Response Time值为15 秒。
1.1.10 配置IGMP-snooping的querier
如果启用IGMP-snooping特性的VLAN中不存在组播路由器,可以使用IGMP-snooping模块的Querier功能来模拟组播路由器定期发送IGMP组查询报文(该功能是全局性质的,即只能在所有启用IGMP-snooping的VLAN中开启或关闭)。
当局域网中没有组播路由器且组播流量不需要路由时,可以通过IGMP querier来激活交换机自发query的功能,使得IGMP snooping保持正常工作。
在全局配置模式下进行下列配置:
命令
|
操作
|
[no] ip igmp-snooping querier [address [ip_addr]
|
配置IGMP-snooping的Querier,可选参数address为Query报文的源IP地址。
|
缺省情况下IGMP-snooping querier处于关闭状态。伪Query报文的源IP地址默认为10.0.0.200。
注意:
如果启动了Querier功能,则VLAN中存在组播路由器时,该功能自动失效,而组播路由器超时的情况下,该功能又可自动激活。
1.1.11配置IGMP-snooping的 Querier Time定时器
Querier Time定时器是当交换机作为本地IGMP查询者发送查询报文的时间间隔,定时器老化后则在vlan内广播query报文。
在全局配置模式下进行下列配置:
命令
|
操作
|
ip igmp-snooping querier querier-timer timer_value
|
配置IGMP-snooping的Querier Time值。
|
no ip igmp-snooping querier querier-timer
|
恢复IGMP-snooping的Querier Time为默认值。
|
缺省情况下IGMP-snooping querier处于关闭状态。Query报文的间隔时间默认为200秒。
注意:
如果启动了Querier功能,则不应把querier-timer设得过长,在子网内有其他开启querier的交换机的情况下querier-timer过长(长于其他交换机的router-age)则会导致子网内的querier选举不稳定。
1.1.12配置IGMP-snooping的forward-l3-to-mrouter转发数据报文到路由端口
如果启用了三层组播特性igmp-snooping没有join报文加入下游端口,通过多播路由只能学习到下游的vlan 端口,开启forward-l3-to-mrouter功能可以学习到vlan下的所有路由端口,将数据报文发送给PIM-SM报文注册的多播路由端口,而不会向下游所有的物理端口广播报文。该命令主要用于下面的情况。
当多台交换机级联开启了三层组播时,上游设备只能通过多播路由协议学习得到下游的vlan端口,上下游设备之间没有igmp报文交互,因此上游设备的snooping无法学习到与下游设备连接的具体的物理端口,这样上游设备转发多播流量时,会向vlan内所有物理端口发送;开启该功能后,可以仅将报文转发到连接下游设备的物理端口,避免报文在下游vlan广播。
在全局配置模式下进行下列配置:
命令
|
操作
|
[no] ip igmp-snooping forward-l3-to-mrouter
|
配置IGMP-snooping的forward-l3-to-mrouter功能。
|
缺省情况下IGMP-snooping forward-l3-to-mrouter关闭。
注意:
该命令可以将数据报文转发到多播路由端口,但是交换芯片对于源数据端口有抑制功能,所以不会将报文转发给源数据端口,只能够将报文转发到PIM-SM注册的下游多播路由端口。
1.1.13配置IGMP-snooping的sensitive模式及value值
如果启用IGMP-snooping 的sensitive特性,则当处于trunk模式的端口shutdown时,将处于active状态的mrouter的router-age时间设置为sensitive value值,迅速发出query报文。
在全局配置模式下进行下列配置:
命令
|
操作
|
[no] ip igmp-snooping sensitive [value [3-30] ]
|
配置IGMP-snooping的sensitive,可选参数value为当前active的mrouter的router-age时间。
|
缺省情况下IGMP-snooping sensitive处于关闭状态。
注意:
当处于sensitive模式时,使用sensitive value更新router-age只针对当前一次周期,下一次router-age恢复为配置的time router-age时间。
1.1.14配置IGMP-snooping的v3-leave-check功能
如果启用IGMP-snooping 的v3-leave-check特性,当收到v3的leave报文后,发送special query报文,否则,不做处理。
在全局配置模式下进行下列配置:
命令
|
操作
|
[no] ip igmp-snooping v3-leave-check
|
配置IGMP-snooping的v3-leave-check。收到 v3 leave报文后,发送special query 报文。
|
1.1.15配置IGMP-snooping的forward-wrongiif-within-vlan功能
如果启用IGMP-snooping 的forward-wrongiif-within-vlan功能,则将从错误的vlan interface 端口接收到的组播数据报文在源vlan内做二层转发,将报文转发至本vlan 内相关的组成员端口,否则,报文被丢弃。
在全局配置模式下进行下列配置:
命令
|
操作
|
[no] ip igmp-snooping forward-wrongiif-within-vlan
|
配置IGMP-snooping的forward-wrongiif-within-vlan,将数据报文在本vlan内转发给相关的组成员端口。
|
缺省情况下IGMP-snooping forward-wrongiif-within-vlan处于开启状态。
注意:
ip igmp-snooping forward-wrongiif-within-vlan 该命令只有在三层组播开启时才有意义。
1.1.16 配置IGMP-snooping的端口下IPACL功能
如果启用IGMP-snooping的端口下IPACL功能,则将在端口下使用IPACL来指定某组播IP地址的报文需要处理或忽略。
在物理端口配置模式下进行下列配置:
命令
|
操作
|
ip igmp-snooping filter word
|
增加端口所需处理的组播报文的IPACL。
|
no ip igmp-snooping filter
|
删除已配置的端口所需处理的组播报文的IPACL。
|
1.1.17配置IGMP-snooping的VLAN下的组播过滤功能
如果启用IGMP-snooping的VLAN下的组播过滤功能,则在VLAN下只有过滤列表中的组播组report请求才被接受并加组,否则被丢弃并且不加组。
在全局配置模式下进行下列配置:
命令
|
操作
|
ip igmp-snooping vlan value filter vlanid-list
|
配置IGMP-snooping的VLAN下的组播过滤功能。参数vlanid-list为用”, ”和”- “连接的VLAN ID列表。注意“,”和“-”后面均要跟至少一个空格。
|
ip igmp-snooping vlan value filter vlanid-list
|
删除VLAN下的组播过滤
|
1.1.18 配置IGMP-snooping的端口下最大组播IP地址数量功能
如果配置IGMP-snooping的端口下最大组播IP地址数量功能则会在IGMP-snooping生成转发表项时判断该端口下已申请的组是否达到了该配置的数量,若超过该数目则不再生成该端口的表项。
在物理端口配置模式下进行下列配置:
命令
|
操作
|
[no] ip igmp-snooping limit [value [1-2048] ]
|
配置IGMP-snooping的端口下最大组播组数量。
|
缺省情况下IGMP-snooping端口下的最大组加入数为2048。
1.1.19配置IGMP-snooping的report-suppression功能
如果配置了IGMP-snooping的report-suppression功能,则同一VLAN中,对一个组播组的report请求,无论是客户端初始状态下主动发起,还是对query的应答,交换机只向mrouter端口转发有限的个数。转发个数由max-number后的参数决定,范围为1-5。若省略max-number关键字,则转发个数缺省为1。
此功能是为了保证IGMP Snooping功能正常的情况下,减轻本交换机和上游交换机的处理开销,节省转发report报文的带宽。
在全局配置模式下进行下列配置:
命令
|
操作
|
[no] ip igmp-snooping report-suppression [max-number value [1-5] ]
|
配置IGMP-snooping report-suppression及其report最大转发数。
|
缺省情况下IGMP-snooping的report-suppression功能关闭。
若配置了ip igmp-snooping report-suppression,但省略了关键字max-number,则report转发个数缺省为1。
1.1.20配置IGMP-snooping的proxy-leave功能
如果配置了IGMP-snooping的proxy-leave功能,则同一VLAN中,只有当一个组播组的成员全部真正离组后,才由交换机向上游设备发送该组播组的leave报文。
此功能是为了保证IGMP Snooping功能正常的情况下,减轻本交换机和上游交换机的处理开销,节省转发leave的带宽。
在全局配置模式下进行下列配置:
命令
|
操作
|
[no] ip igmp-snooping proxy-leave
|
配置IGMP-snooping proxy-leave功能。
|
缺省情况下IGMP-snooping的proxy-leave功能关闭。
1.1.21IGMP-snooping的监控与维护
请在管理态下进行下列操作:
命令
|
操作
|
show ip igmp-snooping
|
显示IGMP-snooping的配置信息。
|
show ip igmp-snooping timer
|
显示IGMP-snooping时钟信息。
|
show ip igmp-snooping groups
|
显示IGMP-snooping多播组信息。
|
show ip igmp-snooping groups interface
|
显示端口所加IGMP-snooping多播组信息。
|
show ip igmp-snooping statistics [message|packet|hardware|vlan vlanid]
|
显示IGMP-snooping统计信息。
|
show ip igmp-snooping vlan
|
显示IGMP-snooping的vlan信息。
|
[ no ] debug ip igmp-snooping [ packet | timer | event | error ]
|
开启/关闭IGMP-snooping数据包/时钟调试/事件/错误打印开关,如果不指定具体调试开关,则所有调试开关被打开/关闭。
|
显示运行IGMP-snooping功能的vlan信息:
switch # show ip igmp-snooping
Global IGMP snooping configuration:
-----------------------------------
Globally enable : Enabled
VLAN nodes : 1,50,100,200,400,500
Dlf-frames filtering : Disabled
Sensitive : Disabled
Querier : Enabled
Querier address : 10.0.0.200
Querier interval : 140 s
Router age : 260 s
Response time : 15 s
vlan_id Immediate-leave Ports Router Ports
--------------------------------------------------------------
1 Disabled 5-10 SWITCH(querier);
50 Disabled 1-4 SWITCH(querier);
100 Disabled NULL SWITCH(querier);G1/1(static);
200 Disabled NULL SWITCH(querier);
400 Disabled NULL SWITCH(querier);
500 Disabled NULL SWITCH(querier);
|
显示IGMP-snooping多播组信息:
switch# show ip igmp-snooping groups
The total number of groups 2
Vlan Group Type Port(s)
---- --------------- ---- ----------------------------------------------------
1 226.1.1.1 IGMP G1/1 G1/3
1 225.1.1.16 IGMP G1/1 G1/3
|
|
显示端口所加IGMP-snooping多播组信息:
Switch#show ip igmp-snooping groups interface g0/4
Number of joined groups: 1
Vlan Group Mode Source Num
---- --------------- ------- ----------
2 230.1.1.1 Exclude 0
|
|
显示IGMP-snooping定时器:
switch#show ip igmp-snooping timers
vlan 1 mrouter on port 3 : 251 表示路由器老化定时器超时时间。
vlan 1 multicast address 0100.5e00.0809 response time : 1 表示自从收到上一个多播组查询报文后到现在的时间;如果本定时器超时时端口上仍没有主机响应,则该端口将被删除。
|
显示IGMP-snooping统计:
Switch_config#show ip igmp-s statistics
IGMP Snooping Message Statistics
------------------------------------
L2 main messages sent OK : 75 L2发送igmp-snooping任务消息成功数
L2 main messages sent failed : 0 L2发送igmp-snooping任务消息失败数
L2 packets received : 72 L2收到与igmp-snooping有关报文数
L2 packets sent : 72 L2发给igmp-snooping任务报文数
L2 packets sent failed : 0 L2发给igmp-snooping任务报文失败数
L2 link-status messages : 3 L2发给igmp-snooping任务链路状态消息数
IGMP Snooping messages received: 79 igmp-snooping任务收到消息数
IGMP packet messages received : 72 igmp-snooping任务收到报文消息数
IGMP Snooping Packet Statistics
-----------------------------------------
Received packets : 72 igmp-snooping任务收到报文数
IGMP packets : 29 igmp-snooping任务收到IGMP报文数
M-routing protocol packets : 0 igmp-snooping收到组播路由协议报文数
Other packets : 43 igmp-snooping收到其他报文数
Received IGMP general queries : 0 igmp-snooping收到general query数
Received IGMPv2 specific queries : 0 igmp-snooping收到v2 specific query数
Received IGMPv3 g specific queries : 0 igmp-snooping收到v3 group specific query数
Received IGMPv3 gs specific queries: 0 igmp-snooping收到v3 group-source specific query数
Received IGMPv1 reports : 0 igmp-snooping收到v1 report数
Received IGMPv2 reports : 0 igmp-snooping收到v1 repor2数
Received IGMP leaves : 0 igmp-snooping收到leave数
Received IGMPv3 reports : 29 igmp-snooping收到v3 report数
Flooded queries : 0 igmp-snooping转发的v1 query数
Forwarded and proxy-sent reports : 0 igmp-snooping转发或代理发送的 report数
Forwarded and proxy-sent leaves : 0 igmp-snooping转发或代理发送的 leavet数
IGMP Snooping Hardware Operation Statistics
-------------------------------------------
Total : 0 硬件操作总次数
Succeeded : 0 硬件操作成功次数
Failed : 0 硬件操作失败梳失败次数
Report/leave processing: 0 处理report和leave而操作硬件次数
Response timer expiring: 0 响应定时器老化而产生的硬件操作次数
Group creating/updating: 0 创建、更新组而产生的硬件操作次数
Group deleting : 0 删除组而产生的硬件操作次数
|
显示IGMP-snooping的vlan信息:
Switch_config#show ip igmp-snooping vlan
vlan_id Immediate-leave Ports Router Ports
-----------------------------------------------------------------
1 Disabled 7-30
2 Disabled NULL
|
调试IGMP-snooping报文信息:
switch#debug ip igmp-snooping packet
Jan 1 02:22:28 IGMP-snooping: Receive IGMPv3 report from G1/1, vlan 1:
Jan 1 02:22:28 IGMP-snooping: Flood packet from G1/1 to vlan 1 rc = 0.
Jan 1 02:22:29 IGMP-snooping: Receive IGMPv3 report from G1/1, vlan 1:
Jan 1 02:22:29 IGMP-snooping: Flood packet from G1/1 to vlan 1 rc = 0.
Jan 1 02:22:38 IGMP-snooping: Receive IGMPv3 report from G1/1, vlan 1:
Jan 1 02:22:38 IGMP-snooping: Flood packet from G1/1 to vlan 1 rc = 0.
Jan 1 02:22:39 IGMP-snooping: Receive IGMPv3 report from G1/1, vlan 1:
Jan 1 02:22:39 IGMP-snooping: Flood packet from G1/1 to vlan 1 rc = 0.
Jan 1 02:23:11 IGMP-snooping: Receive IGMPv3 report from G1/1, vlan 1:
Jan 1 02:23:11 IGMP-snooping: Flood packet from G1/1 to vlan 1 rc = 0.
Jan 1 02:23:12 IGMP-snooping: Receive IGMPv3 report from G1/1, vlan 1:
Jan 1 02:23:12 IGMP-snooping: Flood packet from G1/1 to vlan 1 rc = 0.
|
调试IGMP-snooping报文定时器:
switch#debug ip igmp-snooping timer
Jan 1 02:30:36 IGMP-snooping: Vlan 1 router on interface (null) expiry.
Jan 1 02:30:36 IGMP-snooping: Vlan 100 router on interface (null) expiry.
Jan 1 02:30:36 IGMP-snooping: Vlan 200 router on interface (null) expiry.
Jan 1 02:30:36 IGMP-snooping: Vlan 400 router on interface (null) expiry.
Jan 1 02:30:36 IGMP-snooping: Vlan 500 router on interface (null) expiry.查询响应定时器超时
|
1.1.22 IGMP-snooping配置示例
示例网络连接如图1:
配置Switch:
(1)开启连接Private Network A的VLAN 1的IGMP-snooping
Switch_config#ip igmp-snooping vlan 1
(2)开启连接Private Network B的VLAN 2的IGMP-snooping
Switch_config#ip igmp-snooping vlan 2