16-组播协议操作
本章节下载 (631.2 KB)
IGMP Snooping是Internet Group Management Protocol Snooping(互联网组管理协议窥探)的简称,它是运行在二层设备上的组播约束机制,用于管理和控制组播组。
运行IGMP Snooping的二层设备通过对收到的IGMP报文进行分析,为端口和MAC组播组建立起映射关系,并根据这样的映射关系转发组播数据。
如图1-1所示,当二层设备没有运行IGMP Snooping时,组播数据在二层被广播;当二层设备运行了IGMP Snooping后,已知组播组的组播数据不会在二层被广播,而在二层被组播给指定的接收者。
如图1-2所示,路由器A连接组播源,在交换机A和交换机B上分别运行IGMP Snooping,主机A和主机C为接收主机(即组播组成员)。
结合图1-2,介绍一下IGMP Snooping相关的端口概念:
l 路由器端口(Router Port):交换机上连接组播路由器的端口,如交换机A和交换机B各自的GigabitEthernet1/0/1端口。交换机将本设备上的所有路由器端口都记录在路由器端口列表中。
l 成员端口(Member Port):又称组播组成员端口,表示交换机上连接组播组成员的端口,如交换机A的GigabitEthernet1/0/2和GigabitEthernet1/0/3端口,以及交换机B的GigabitEthernet1/0/2端口。交换机将本设备上的所有成员端口都记录在IGMP Snooping转发表中。
& 说明:
本文中提到的路由器端口都是指交换机上连接组播路由器的端口,而不是指路由器上的端口。
定时器 |
说明 |
超时前应收到的报文 |
超时后交换机的动作 |
路由器端口老化定时器 |
交换机为其上的每个路由器端口都启动一个定时器,其超时时间为路由器端口老化时间 |
源地址不为0.0.0.0的IGMP普遍组查询报文或PIM Hello报文 |
将该端口从路由器端口列表中删除 |
成员端口老化定时器 |
当一个端口加入某组播组时,交换机为该端口启动一个定时器,其超时时间为成员端口老化时间 |
IGMP成员关系报告报文 |
将该端口从组播组的转发表中删除 |
运行了IGMP Snooping的交换机对不同IGMP动作的处理方式如下:
IGMP查询器定期向本地网段内的所有主机与路由器发送IGMP普遍组查询报文,以查询该网段有哪些组播组的成员。
在收到IGMP普遍组查询报文时,交换机将通过VLAN内除接收端口以外的其它所有端口转发出去,并对该报文的接收端口做如下处理:
l 如果该端口是路由器端口列表中已有的路由器端口,则重置该路由器端口的老化定时器。
l 如果该端口不是路由器端口列表中已有的路由器端口,则将其加入路由器端口列表,并启动该路由器端口的老化定时器。
以下情况,主机会向组播路由器发送IGMP成员关系报告报文:
l 当组播组的成员主机收到IGMP查询报文后,会回复IGMP成员关系报告报文。
l 如果主机要加入某个组播组,它会主动向组播路由器发送IGMP成员关系报告报文以声明加入该组播组。
在收到IGMP成员关系报告报文时,交换机将其通过VLAN内的所有路由器端口转发出去,并对该报文的接收端口做如下处理:
l 从该报文中解析出主机要加入的组播组的地址,并在转发表中为该端口增加转发表项。
l 启动或重置该端口的成员端口老化定时器。
& 说明:
交换机不会将IGMP成员关系报告报文通过非路由器端口转发出去,原因如下:根据IGMP成员关系报告抑制机制,如果非路由器端口下还有该组播组的成员主机,则这些主机在收到该报告报文后便抑制了自身的报告,从而使交换机无法获知这些端口下还有该组播组的成员主机。
运行IGMPv1的主机离开组播组时不会发送IGMP离开组报文,因此交换机无法立即获知主机离开的信息。但是,由于主机离开组播组后不会再发送IGMP成员关系报告报文,因此当其对应的成员端口的老化定时器超时后,交换机就会将该端口对应的转发表项从转发表中删除。
运行IGMPv2或IGMPv3的主机离开组播组时,会通过发送IGMP离开组报文,以通知组播路由器自己离开了某个组播组。
当从最后一个成员端口上收到IGMP离开组报文时,交换机会将该报文通过VLAN内的所有路由器端口转发出去,同时由于并不知道该报文的接收端口下是否还有该组播组的其它成员,所以交换机不会立刻把该端口对应的转发表项从转发表中删除,而是重置该成员端口的老化定时器。
当IGMP查询器收到IGMP离开组报文后,从中解析出主机要离开的组播组的地址,并通过接收端口向该组播组发送IGMP特定组查询报文,交换机在收到该报文后,将其通过VLAN内的所有路由器端口和该组播组的所有成员端口转发出去。
对于IGMP离开组报文的接收端口,交换机在该成员端口的老化时间内:
l 如果从该端口收到了主机发送的响应该组播组的IGMP成员关系报告报文,则表示该端口下还有该组播组的成员,于是重置该成员端口的老化定时器;
l 如果没有从该端口收到主机发送的响应该组播组的IGMP成员关系报告报文,则表示该端口下已没有该组播组的成员,则在在查询响应计时器超时后,将转发表中该端口对应该组播组的转发表项删除。
表1-2 IGMP Snooping配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置IGMP Snooping基本功能 |
使能IGMP Snooping |
必选 |
|
配置IGMP Snooping版本 |
可选 |
||
配置端口老化定时器 |
可选 |
||
配置端口功能 |
配置静态端口 |
可选 |
|
配置模拟主机加入 |
可选 |
||
配置端口快速离开 |
可选 |
||
配置IGMP成员关系报告报文抑制 |
可选 |
||
配置IGMP相关功能 |
使能IGMP Snooping查询器 |
可选 |
|
配置IGMP定时器 |
可选 |
||
配置IGMP查询报文源IP地址 |
可选 |
||
配置丢弃未知组播数据报文 |
可选 |
||
配置端口的组播组策略 |
配置组播组过滤器 |
可选 |
|
配置组播数据报文源端口过滤 |
可选 |
||
配置端口通过的组播组最大数量 |
可选 |
||
配置组播组替换 |
可选 |
& 说明:
l 在IGMP-Snooping视图下所作的配置对所有的VLAN都有效,在VLAN视图下所作的配置只对属于该VLAN的以太网端口有效,而后者的优先级高于前者。
l IGMP-Snooping视图下的配置具有全局性;以太网端口视图下的配置只对当前端口有效;端口组视图下的配置对当前端口组中的所有端口有效。
l 系统优先采用以太网端口视图或端口组视图下的配置,当在以太网端口视图或端口组视图下没有进行配置时,才采用IGMP-Snooping视图下的配置。
在配置IGMP Snooping基本功能之前,需完成以下任务:
l 配置相应VLAN
l 配置相应端口组
在配置IGMP Snooping基本功能之前,需准备以下数据:
l IGMP Snooping的版本
l 路由器端口老化时间
l 成员端口老化时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
全局使能IGMP Snooping,并进入IGMP-Snooping视图 |
igmp-snooping |
必选 缺省情况下,IGMP Snooping处于关闭状态 |
退回系统视图 |
quit |
- |
进入VLAN视图 |
vlan vlan-id |
- |
在VLAN内使能IGMP Snooping |
igmp-snooping enable |
必选 缺省情况下,VLAN内的IGMP Snooping处于关闭状态 |
& 说明:
l 在VLAN内使能IGMP Snooping之前,必须先在系统视图下全局使能IGMP Snooping,否则将无法在VLAN内使能IGMP Snooping。
l 在指定VLAN内使能了IGMP Snooping之后,该功能只在属于该VLAN的以太网端口上生效。
配置IGMP Snooping的版本,实际上就是配置IGMP Snooping可以分析处理的IGMP报文的版本:
l 当版本为2时,IGMP Snooping能够对IGMPv1和IGMPv2的报文进行分析处理,对IGMPv3的报文则不进行分析处理,而是在VLAN内将其广播;
l 当版本为3时,IGMP Snooping能够对IGMPv1、IGMPv2和IGMPv3的报文进行分析处理。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置IGMP Snooping的版本 |
igmp-snooping version version-number |
可选 缺省情况下,IGMP Snooping的版本为2 |
注意:
当把IGMP Snooping由版本3切换到版本2时,系统将清除所有IGMP Snooping转发表项,但是:
l 如果配置了指定源的静态加入,那么转发表项会清除,并且再次切换回版本3时,转发表项会重新恢复;
l 如果配置了非指定源的静态加入,那么转发表项不会清除。
如果在路由器端口老化时间超时前,没有收到IGMP普遍组查询报文或者PIM Hello报文,交换机将把该端口从路由器端口列表中删除。
如果在成员端口老化时间超时前,没有收到该组播组的IGMP成员关系报告报文,交换机将把该端口从该组播组的转发表中删除。
如果组播组成员的变动比较频繁,可以把成员端口老化时间设置小一些,反之亦然。
表1-5 全局配置端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置路由器端口老化时间 |
router-aging-time interval |
可选 缺省情况下,路由器端口的老化时间为105秒 |
配置成员端口老化时间 |
host-aging-time interval |
可选 缺省情况下,成员端口的老化时间为260秒 |
表1-6 在VLAN内配置端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置路由器端口老化时间 |
igmp-snooping router-aging-time interval |
可选 缺省情况下,路由器端口的老化时间为105秒 |
配置成员端口老化时间 |
igmp-snooping host-aging-time interval |
可选 缺省情况下,成员端口的老化时间为260秒 |
在配置端口功能之前,需完成以下任务:
l 在VLAN内使能IGMP Snooping
在配置端口功能之前,需准备以下数据:
l 组播组和组播源的地址
l 是否使能端口快速离开功能
l 是否使能IGMP成员关系报告报文抑制功能
如果某端口所连接的主机需要固定接收某个组播组或组播源组的组播数据,可以配置该端口静态加入该组播组或组播源组,成为静态成员端口。
在拓扑稳定的网络中,可以将交换机上的路由器端口配置为静态路由器端口,交换机可以通过该端口接收路由器发来的IGMP报文。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置静态成员端口 |
igmp-snooping static-group group-address [ source-ip source-address ] vlan vlan-id |
必选 缺省情况下,静态成员端口功能处于关闭状态 |
|
配置静态路由器端口 |
igmp-snooping static-router-port vlan vlan-id |
必选 缺省情况下,静态路由器端口功能处于关闭状态 |
l 只有指定了一个有效的组播源地址,且当IGMP Snooping的版本为3时,配置静态加入组播源组的功能才会有效。
l 在配置静态成员端口,即使能或关闭静态加入组播组或组播源组功能时,端口不会主动发送IGMP成员关系报告报文或IGMP离开组报文。
l 静态成员端口和静态路由器端口都不会老化,只能通过配置命令删除。
通常情况下,运行IGMP的主机会对组播路由器发出的IGMP查询报文进行响应。如果主机由于某种原因无法响应,就可能导致组播路由器认为该网段没有该组播组的成员,从而取消相应的转发路径。
为避免这种情况的发生,可以将交换机的某个端口配置成为组播组成员(即配置模拟主机加入)。当收到IGMP查询报文时由该端口进行响应,从而保证该交换机能够继续收到组播报文。
通过配置模拟主机加入可以实现如下功能:
l 在以太网端口上启动模拟主机加入功能时,模拟主机会发送一个IGMP成员关系报告报文;
l 在收到IGMP普遍组查询报文后,模拟主机同样会响应一个IGMP成员关系报告报文;
l 在以太网端口上关闭模拟主机加入的功能时,模拟主机也会发送一个IGMP离开组报文。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置模拟主机加入组播组或组播源组 |
igmp-snooping host-join group-address [ source-ip source-address ] vlan vlan-id |
必选 缺省情况下,模拟主机加入组播组或组播源组的功能处于关闭状态 |
& 说明:
l 每配置一次模拟主机加入,即相当于启动了一台独立的主机。例如,当收到IGMP查询报文时,每条配置所对应的模拟主机将分别进行响应。
l 模拟主机所采用的IGMP版本与设备当前所采用的IGMP Snooping版本一致。
在没有使能端口快速离开功能之前,交换机从某端口收到离开某组播组的IGMP离开组报文时不会直接将该端口从组播转发表中删除,而是先向该端口发送针对该组播组的IGMP特定组查询报文,如果等待一段时间后没有得到响应,才将该端口从组播组中删除。
在使能了端口快速离开功能之后,交换机从某端口收到离开某个组播组的IGMP离开组报文时,将直接把该端口从组播转发表中删除,而不再向该端口发送针对该组播组的IGMP特定组查询报文。
表1-9 全局配置端口快速离开
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置端口快速离开 |
fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
表1-10 在端口上配置端口快速离开
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置端口快速离开 |
igmp-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
注意:
在配置了端口快速离开后,当端口下有多个用户时,一个用户的离开会导致该端口下属于同一组播组的其它用户无法收到组播数据。
当二层设备收到来自某组播组成员的IGMP成员关系报告报文时,会将该报文转发给与其直连的三层设备。这样,当二层设备上存在属于某组播组的多个成员时,与其直连的三层设备会收到这些成员发送的相同IGMP成员关系报告报文。
当使能了IGMP成员关系报告报文抑制功能后,在一个查询间隔内二层设备只会把收到的某组播组内的第一个IGMP成员关系报告报文转发给三层设备,而不继续向三层设备转发来自同一组播组的其它IGMP成员关系报告报文,这样可以减少网络中的报文数量。
表1-11 配置IGMP成员关系报告报文抑制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
使能IGMP成员关系报告报文抑制功能 |
report-aggregation |
可选 缺省情况下,IGMP成员关系报告报文抑制功能处于使能状态 |
在配置IGMP相关功能之前,需完成以下任务:
l 在VLAN内使能IGMP Snooping
在配置IGMP相关功能之前,需准备以下数据:
l 发送IGMP普遍组查询报文的时间间隔
l 发送IGMP特定组查询报文的时间间隔
l IGMP普遍组查询的最大响应时间
l IGMP普遍组查询报文的源IP地址
l IGMP特定组查询报文的源IP地址
l 是否使能丢弃未知组播数据报文功能
在运行了IGMP的组播网络中,会有一台三层组播设备充当IGMP查询器,负责发送IGMP查询报文。
但是,在一个没有三层组播设备的网络中,由于二层设备并不支持IGMP,因此无法实现IGMP查询器的相关功能。为了解决这个问题,可以在二层设备上使能IGMP Snooping查询器,使其能够在数据链路层建立并维护组播转发表项,从而实现IGMP查询器的相关功能。
表1-12 使能IGMP Snooping查询器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能IGMP Snooping查询器 |
igmp-snooping querier |
必选 缺省情况下,IGMP Snooping查询器处于关闭状态 |
注意:
l IGMP Snooping查询器不参与IGMP查询器的选举。
l 在运行了IGMP的组播网络中,配置IGMP Snooping查询器没有实际的意义,反而可能会由于其发送的IGMP普遍组查询报文的源IP地址较小而影响IGMP查询器的选举。
可以根据网络的实际情况来修改发送IGMP普遍组查询报文的时间间隔。
在收到IGMP查询报文(包括普遍组查询和特定组查询)后,主机会为其所加入的每个组播组都启动一个定时器,定时器的值在0到最大响应时间(该时间值由主机从所收到的IGMP查询报文的最大响应时间字段获得)中随机选定,当定时器的值减为0时,主机就会向该定时器对应的组播组发送IGMP成员关系报告报文。
合理配置IGMP查询的最大响应时间,既可以使主机对IGMP查询报文做出快速响应,又可以减少由于定时器同时超时,造成大量主机同时发送报告报文而引起的网络拥塞:
l 对于IGMP普遍组查询报文来说,通过配置IGMP普遍组查询的最大响应时间来填充其最大响应时间字段;
l 对于IGMP特定组查询报文来说,所配置的发送IGMP特定组查询报文的时间间隔将被填充到其最大响应时间字段。也就是说,IGMP特定组查询的最大响应时间从数值上与发送IGMP特定组查询报文的时间间隔相同。
表1-13 全局配置IGMP定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置IGMP普遍组查询的最大响应时间 |
max-response-time interval |
可选 缺省情况下,IGMP普遍组查询的最大响应时间为10秒 |
配置发送IGMP特定组查询报文的时间间隔 |
last-member-query-interval interval |
可选 缺省情况下,发送IGMP特定组查询报文的时间间隔为1秒 |
表1-14 在VLAN内配置IGMP定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置发送IGMP普遍组查询报文的时间间隔 |
igmp-snooping query-interval interval |
可选 缺省情况下,发送IGMP普遍组查询报文的时间间隔为60秒 |
配置IGMP普遍组查询的最大响应时间 |
igmp-snooping max-response-time interval |
可选 缺省情况下,IGMP普遍组查询的最大响应时间为10秒 |
配置发送IGMP特定组查询报文的时间间隔 |
igmp-snooping last-member-query-interval interval |
可选 缺省情况下,发送IGMP特定组查询报文的时间间隔为1秒 |
注意:
在配置时,应确保发送IGMP普遍组查询报文的时间间隔大于IGMP普遍组查询的最大响应时间。
对于收到源IP地址为0.0.0.0的查询报文的端口,交换机不会将其设置为路由器端口,所以建议将IGMP查询报文的源IP地址配置为一个有效的IP地址。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置IGMP普遍组查询报文源IP地址 |
igmp-snooping general-query source-ip { current-interface | ip-address } |
可选 缺省情况下,IGMP普遍组查询报文的源IP地址为0.0.0.0 |
配置IGMP特定组查询报文源IP地址 |
igmp-snooping special-query source-ip { current-interface | ip-address } |
可选 缺省情况下,IGMP特定组查询报文的源IP地址为0.0.0.0 |
注意:
IGMP查询报文源IP地址的改变可能会影响网段内IGMP查询器的选择。
未知组播数据报文是指在组播转发表中不存在对应转发表项的组播数据报文。
表1-16 在VLAN内配置丢弃未知组播数据报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能丢弃未知组播数据报文功能 |
igmp-snooping drop-unknown |
必选 缺省情况下,丢弃未知组播数据报文的功能处于关闭状态,即对未知组播数据报文进行广播 |
& 说明:
在使能了丢弃未知IPv4组播数据报文功能的同时,系统也将同时使能丢弃未知IPv6组播数据报文功能。
在配置端口的组播组策略之前,需完成以下任务:
l 在VLAN内使能IGMP Snooping
在配置端口的组播组策略之前,需准备以下数据:
l 组播组过滤的ACL规则
l 是否使能组播数据报文源端口过滤功能
l 允许端口通过的组播组最大数量
l 是否使能组播组替换功能
在使能了IGMP Snooping的交换机上,通过配置组播组过滤器,可以限制用户对组播节目的点播。
在实际应用中,当用户点播某个组播节目时,主机会发起一个IGMP成员关系报告报文,该报文到达交换机后,进行ACL检查,如果该接收端口可以加入这个组播组,则将其列入到IGMP Snooping组播组列表中;否则交换机就丢弃该报文。这样,组播数据就不会送到该端口,从而达到控制用户点播组播节目的目的。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置组播组过滤器 |
group-policy acl-number [ vlan vlan-list ] |
必选 缺省情况下,没有配置组播组过滤器,即主机可以加入任一组播组 |
表1-18 在端口上配置组播组过滤器
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置组播组过滤器 |
igmp-snooping group-policy acl-number [ vlan vlan-list ] |
必选 缺省情况下,没有配置组播组过滤器,即主机可以加入任一组播组 |
通过配置组播数据报文源端口过滤功能,可以允许或禁止端口作为组播源端口:
l 使能了该功能后,端口下不能连接组播源,因为该端口将过滤掉所有的组播数据报文(但允许组播协议报文通过),只能连接组播数据接收者;
l 关闭了该功能后,端口下既可以连接组播源,也可以连接组播数据接收者。
表1-19 全局配置组播数据报文源端口过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
使能组播数据报文源端口过滤功能 |
source-deny port interface-list |
必选 缺省情况下,组播数据报文源端口过滤功能处于关闭状态 |
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
使能组播数据报文源端口过滤功能 |
igmp-snooping source-deny |
必选 缺省情况下,组播数据报文源端口过滤功能处于关闭状态 |
& 说明:
在使能IPv4组播数据报文源端口过滤功能时,系统将同时使能IPv6组播数据报文源端口过滤功能。
通过配置端口通过的组播组的最大数量,可以限制用户点播组播节目的数量,从而控制了端口上的数据流量。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置端口通过的组播组最大数量 |
igmp-snooping group-limit limit [ vlan vlan-list ] |
可选 缺省情况下,端口上允许通过的组播组最大数量为128个 |
& 说明:
l 在对端口通过的组播组最大数量进行配置时,如果当前端口上的组播组数量已经超过了配置值,系统将把该端口从所有相关的IGMP Snooping转发表中删除,该端口上的主机需要重新加入组播组。
l 如果手工配置了静态成员端口或者模拟主机加入,系统在把该端口从所有相关的IGMP Snooping转发表中删除后,会把这些配置重新运行生效一次,直至该端口加入的组播组数量达到限制值为止。
由于某些特殊的原因,当前交换机或以太网端口上通过的组播组数目有可能会超过交换机或以太网端口的限定。针对这种情况,可以在交换机或者某些以太网端口上使能组播组替换功能。当以太网端口上加入的组播组数量已达到限定值时:
l 若使能了组播组替换功能,则新加入的组播组会自动替代已存在的组播组,替代规则是替代IP地址最小的组播组;
l 若没有使能组播组替换功能,则自动丢弃新的IGMP成员关系报告报文。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置组播组替换功能 |
overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,组播组替换功能处于关闭状态 |
表1-23 在端口上配置组播组替换
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置组播组替换功能 |
igmp-snooping overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,组播组替换功能处于关闭状态 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后IGMP Snooping的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除组播组信息。
命令 |
|
查看IGMP Snooping窥探到的组播组信息 |
display igmp-snooping group [ vlan vlan-id ] [ verbose ] |
查看IGMP Snooping窥探到的IGMP报文的统计信息 |
display igmp-snooping statistics |
清除IGMP Snooping表项信息 |
reset igmp-snooping group { group-address | all } [ vlan vlan-id ] |
清除IGMP Snooping窥探到的所有IGMP报文的统计信息 |
reset igmp-snooping statistics |
& 说明:
l reset igmp-snooping group命令只对使能了IGMP Snooping的VLAN有效。
l 通过reset igmp-snooping group命令不能够清除通过静态配置加入的IGMP Snooping表项。
要求通过配置,使主机A和主机B不论是否加入了组播组224.1.1.1,都能够收到来自组播源1.1.1.1/24、发往组播组224.1.1.1的组播数据。
# 创建VLAN100。
<SwitchA> system-view
[SwitchA] vlan 100
# 把端口GigabitEthernet1/01到GigabitEthernet1/0/4添加到VLAN100中。
[SwitchA-vlan100] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/4
[SwitchA-vlan100] quit
(2) 配置模拟主机加入组播源组
# 在VLAN100内使能IGMP Snooping,并将其版本设为3。
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
[SwitchA] vlan 100
[SwitchA-vlan100] igmp-snooping enable
[SwitchA-vlan100] igmp-snooping version 3
[SwitchA-vlan100] quit
# 在GigabitEthernet1/0/3和GigabitEthernet1/0/4上使能模拟主机加入组播源组功能。
[SwitchA] interface GigabitEthernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] igmp-snooping host-join 224.1.1.1 source-ip 1.1.1.1 vlan 100
[SwitchA-GigabitEthernet1/0/3] quit
[SwitchA] interface GigabitEthernet 1/0/4
[SwitchA-GigabitEthernet1/0/4] igmp-snooping host-join 224.1.1.1 source-ip 1.1.1.1 vlan 100
[SwitchA-GigabitEthernet1/0/4] quit
(3) 检验配置效果
# 查看VLAN100内的组播组详细信息。
[SwitchA] display igmp-snooping group vlan 100 verbose
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, A-Aggregation port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):100.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 1 port.
GigabitEthernet1/0/1 (D) ( 00:01:30 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:224.1.1.1
(1.1.1.1, 224.1.1.1):
Attribute: Host Port
Host port(s):total 2 port.
GigabitEthernet1/0/3 (D) ( 00:03:23 )
GigabitEthernet1/0/4 (D) ( 00:03:23 )
MAC group(s):
MAC group address:0100-5e01-0101
Host port(s):total 2 port.
GigabitEthernet1/0/3
GigabitEthernet1/0/4
SwitchA上的端口GigabitEthernet1/0/3和GigabitEthernet1/0/4已经加入了组播源组(1.1.1.1,224.1.1.1)。
如图1-4所示,RouterB上未运行任何组播协议,要求通过配置使交换机A将组播数据转发到该路由器上。
(1) 配置VLAN
# 创建VLAN100。
<SwitchA> system-view
[SwitchA] vlan 100
# 把端口GigabitEthernet1/0/1到GigabitEthernet1/0/4添加到VLAN100中。
[SwitchA-vlan100] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/4
[SwitchA-vlan100] quit
(2) 配置静态路由器端口
# 在VLAN100内使能IGMP Snooping。
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
[SwitchA] vlan 100
[SwitchA-vlan100] igmp-snooping enable
[SwitchA-vlan100] quit
# 把GigabitEthernet1/0/4配置为静态路由器端口。
[SwitchA] interface GigabitEthernet 1/0/4
[SwitchA-GigabitEthernet1/0/4] igmp-snooping static-router-port vlan 100
[SwitchA-GigabitEthernet1/0/4] quit
(3) 检验配置效果
# 查看VLAN100内的组播组详细信息。
[SwitchA] display igmp-snooping group vlan 100 verbose
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, A-Aggregation port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):100.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 2 port.
GigabitEthernet1/0/1 (D) ( 00:01:30 )
GigabitEthernet1/0/4 (S) ( 00:01:30 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:224.1.1.1
(1.1.1.1, 224.1.1.1):
Attribute: Host Port
Host port(s):total 1 port.
GigabitEthernet1/0/3 (D) ( 00:03:23 )
MAC group(s):
MAC group address:0100-5e01-0101
Host port(s):total 1 port.
GigabitEthernet1/0/3
SwitchA上的端口GigabitEthernet1/0/4已经成为了静态路由器端口。
交换机不能实现IGMP snooping二层组播功能。
IGMP Snooping没有使能。
(1) 使用display current-configuration命令查看IGMP Snooping的运行状态。
(2) 如果是没有使能IGMP snooping,则需先在系统视图下使用igmp-snooping命令全局使能IGMP Snooping,然后在VLAN视图下使用igmp-snooping enable命令使能VLAN内的IGMP snooping。
(3) 如果只是没有在相应VLAN下使能IGMP snooping,则只需在VLAN视图下使用igmp-snooping enable命令使能VLAN内的IGMP snooping。
配置了组播组策略,只允许主机加入某些特定的组播组,但主机仍然可以收到发往其它组播组的组播数据。
l ACL规则配置不正确;
l 组播组策略应用不正确,如果使用了一个不存在的或配置为空的ACL规则做为组播策略,将过滤掉所有的组播组;
l 没有使能丢弃未知组播数据报文的功能,使得属于过滤策略之外的组播数据报文(即未知组播数据报文)被广播;
l 端口被配置为静态加入组播组,且该配置与所配置的组播组策略冲突。
(1) 使用display acl命令查看所配置的ACL规则,检查其是否与所要实现的组播组过滤策略相符合。
(2) 使用display this命令查看是否应用了正确的组播组策略。如果没有,则使用igmp-snooping group-policy命令应用正确的组播组策略。
(3) 使用display current-configuration命令查看是否已使能丢弃未知组播数据报文的功能。如果没有使能,则使用igmp-snooping drop-unknown命令使能丢弃未知组播数据报文功能。
(4) 使用display igmp-snooping group命令检查是否有端口被配置为静态加入组播组。如果有,则检查所配置的端口静态加入组播组与组播组策略之间是否冲突,如有冲突,则建议删除端口静态加入组播组的相关配置。
MLD Snooping是Multicast Listener Discovery Snooping(组播侦听发现协议窥探)的简称。它是运行在二层设备上的IPv6组播约束机制,用于管理和控制IPv6组播组。
运行MLD Snooping的二层设备通过对收到的MLD报文进行分析,为端口和MAC组播组建立起映射关系,并根据这样的映射关系转发IPv6组播数据。
如图2-1所示,当二层设备没有运行MLD Snooping时,IPv6组播数据报文在二层被广播;当二层设备运行了MLD Snooping后,已知IPv6组播组的组播数据报文不会在二层被广播,而在二层被组播给指定的接收者。
如图2-2所示,路由器A连接组播源,在交换机A和交换机B上分别运行MLD Snooping,主机A和主机C为接收主机(即IPv6组播组成员)。
结合图2-2,介绍一下MLD Snooping相关的端口概念:
l 路由器端口(Router Port):交换机上连接组播路由器的端口,如交换机A和交换机B各自的GigabitEthernet1/0/1端口。交换机将本设备上的所有路由器端口都记录在路由器端口列表中。
l 成员端口(Member Port):又称IPv6组播组成员端口,表示交换机上连接IPv6组播组成员的端口,如交换机A的GigabitEthernet1/0/2和GigabitEthernet1/0/3端口,以及交换机B的GigabitEthernet1/0/2端口。交换机将本设备上的所有成员端口都记录在MLD Snooping转发表中。
& 说明:
本文中提到的路由器端口都是指交换机上连接组播路由器的端口,而不是指路由器上的端口。
表2-1 MLD Snooping端口老化定时器
定时器 |
说明 |
超时前应收到的报文 |
超时后交换机的动作 |
路由器端口老化定时器 |
交换机为其上的每个路由器端口都启动一个定时器,其超时时间为路由器端口老化时间 |
源地址不为0::0的MLD普遍组查询报文或IPv6 PIM Hello报文 |
将该端口从路由器端口列表中删除 |
成员端口老化定时器 |
当一个端口加入某IPv6组播组时,交换机为该端口启动一个定时器,其超时时间为成员端口老化时间 |
MLD成员关系报告报文 |
将该端口从IPv6组播组的转发表中删除 |
运行了MLD Snooping的交换机对不同MLD动作的具体处理方式如下:
MLD查询器定期向本地网段内的所有主机与路由器发送MLD普遍组查询报文,以查询该网段有哪些IPv6组播组的成员。
在收到MLD普遍组查询报文时,交换机将其通过VLAN内除接收端口以外的其它所有端口转发出去,并对该报文的接收端口做如下处理:
l 如果该端口是路由器端口列表中已有的路由器端口,则重置该路由器端口的老化定时器。
l 如果该端口不是路由器端口列表中已有的路由器端口,则将其加入路由器端口列表,并启动该路由器端口的老化定时器。
以下情况,主机会向组播路由器发送MLD成员关系报告报文:
l 当IPv6组播组的成员主机收到MLD查询报文后,会回复MLD成员关系报告报文。
l 如果主机要加入某个IPv6组播组,它会主动向组播路由器发送MLD成员关系报告报文以声明加入该IPv6组播组。
在收到MLD成员关系报告报文时,交换机将其通过VLAN内的所有路由器端口转发出去,并对该报文的接收端口做如下处理:
l 从该报文中解析出主机要加入的IPv6组播组的地址,并在转发表中为该端口增加转发表项。
l 启动或重置该端口的成员端口老化定时器。
& 说明:
交换机不会将MLD成员关系报告报文通过非路由器端口转发出去,原因如下:根据MLD成员关系报告抑制机制,如果非路由器端口下还有该IPv6组播组的成员主机,则这些主机在收到该报告报文后便抑制了自身的报告,从而使交换机无法获知这些端口下还有该IPv6组播组的成员主机。
当主机离开IPv6组播组时,会通过发送MLD离开组报文,以通知组播路由器自己离开了某个IPv6组播组。
当从最后一个成员端口上收到MLD离开组报文时,交换机会将该报文通过VLAN内的所有路由器端口转发出去,同时由于并不知道该报文的接收端口下是否还有该IPv6组播组的其它成员,所以交换机不会立刻把该端口对应的转发表项从转发表中删除,而是重置该成员端口的老化定时器。
当MLD查询器收到MLD离开组报文后,从中解析出主机要离开的IPv6组播组的地址,并通过接收端口向该IPv6组播组发送MLD特定组查询报文,交换机在收到该报文后,将其通过VLAN内的所有路由器端口和该IPv6组播组的所有成员端口转发出去。
对于MLD离开组报文的接收端口,交换机在该成员端口的老化时间内:
l 如果从该端口收到了主机发送的响应该IPv6组播组的MLD成员关系报告报文,则表示该端口下还有该IPv6组播组的成员,于是重置该成员端口的老化定时器;
l 如果没有从该端口收到主机发送的响应该IPv6组播组的MLD成员关系报告报文,则表示该端口下已没有该IPv6组播组的成员,则在该成员端口老化时间超时后,将转发表中该端口对应该IPv6组播组的转发表项删除。
配置任务 |
说明 |
详细配置 |
|
配置MLD Snooping基本功能 |
使能MLD Snooping |
必选 |
|
配置端口老化定时器 |
可选 |
||
配置端口功能 |
配置静态端口 |
可选 |
|
配置模拟主机加入 |
可选 |
||
配置端口快速离开 |
可选 |
||
配置MLD成员关系报告报文抑制 |
可选 |
||
配置MLD相关功能 |
使能MLD Snooping查询器 |
可选 |
|
配置MLD定时器 |
可选 |
||
配置MLD查询报文源IPv6地址 |
可选 |
||
配置丢弃未知IPv6组播数据报文 |
可选 |
||
配置端口的IPv6组播组策略 |
配置IPv6组播组过滤器 |
可选 |
|
配置IPv6组播数据报文源端口过滤 |
可选 |
||
配置端口通过的IPv6组播组最大数量 |
可选 |
||
配置IPv6组播组替换 |
可选 |
& 说明:
l 在MLD-Snooping视图下所作的配置对所有的VLAN都有效,在VLAN视图下所作的配置只对属于该VLAN的以太网端口有效,而后者的优先级高于前者。
l MLD-Snooping视图下的配置具有全局性;以太网端口视图下的配置只对当前端口有效;端口组视图下的配置对当前端口组中的所有端口有效。
l 系统优先采用以太网端口视图或端口组视图下的配置,当在以太网端口视图或端口组视图下没有进行配置时,才采用MLD-Snooping视图下的配置。
在配置MLD Snooping基本功能之前,需完成以下任务:
l 配置相应VLAN
l 配置相应端口组
在配置MLD Snooping基本功能之前,需准备以下数据:
l 路由器端口老化时间
l 成员端口老化时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
全局使能MLD Snooping,并进入MLD-Snooping视图 |
mld-snooping |
必选 缺省情况下,MLD Snooping处于关闭状态 |
退回系统视图 |
quit |
- |
进入VLAN视图 |
vlan vlan-id |
- |
在VLAN内使能MLD Snooping |
mld-snooping enable |
必选 缺省情况下,VLAN内的MLD Snooping处于关闭状态 |
& 说明:
l 在VLAN内使能MLD Snooping之前,必须先在系统视图下全局使能MLD Snooping,否则将无法在VLAN内使能MLD Snooping。
l 在指定VLAN内使能了MLD Snooping之后,该功能只在属于该VLAN的以太网端口上生效。
如果在路由器端口老化时间超时前,没有收到MLD普遍组查询报文或者IPv6 PIM Hello报文,交换机将把该端口从路由器端口列表中删除。
如果在成员端口老化时间超时前,没有收到该IPv6组播组的MLD成员关系报告报文,交换机将把该端口从该IPv6组播组的转发表中删除。
如果IPv6组播组成员的变动比较频繁,可以把成员端口老化时间设置小一些,反之亦然。
表2-4 全局配置端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置路由器端口老化时间 |
router-aging-time interval |
可选 缺省情况下,路由器端口的老化时间为260秒 |
配置成员端口老化时间 |
host-aging-time interval |
可选 缺省情况下,成员端口的老化时间为260秒 |
表2-5 在VLAN内配置端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置路由器端口老化时间 |
mld-snooping router-aging-time interval |
可选 缺省情况下,路由器端口的老化时间为260秒 |
配置成员端口老化时间 |
mld-snooping host-aging-time interval |
可选 缺省情况下,成员端口的老化时间为260秒 |
在配置端口功能之前,需完成以下任务:
l 在VLAN内使能MLD Snooping
在配置端口功能之前,需准备以下数据:
l IPv6组播组的地址
l 是否使能端口快速离开功能
l 是否使能MLD成员关系报告报文抑制功能
如果某端口所连接的主机需要固定接收某个IPv6组播组的IPv6组播数据,可以配置该端口静态加入该IPv6组播组,成为静态成员端口。
在拓扑稳定的网络中,可以将交换机上的路由器端口配置为静态路由器端口,交换机可以通过该端口接收路由器发来的MLD报文。
表2-6 配置静态端口
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置静态成员端口 |
mld-snooping static-group ipv6-group-address vlan vlan-id |
必选 缺省情况下,静态成员端口功能处于关闭状态 |
|
配置静态路由器端口 |
mld-snooping static-router-port vlan vlan-id |
必选 缺省情况下,静态路由器端口功能处于关闭状态 |
& 说明:
l 在配置静态成员端口,即使能或关闭静态加入IPv6组播组功能时,端口不会主动发送MLD成员关系报告报文或MLD离开组报文。
l 静态成员端口和静态路由器端口都不会老化,只能通过配置命令删除。
通常情况下,运行MLD的主机会对组播路由器发出的MLD查询报文进行响应。如果主机由于某种原因无法响应,就可能导致组播路由器认为该网段没有该IPv6组播组的成员,从而取消相应的转发路径。
为避免这种情况的发生,可以将交换机的某个端口配置成为IPv6组播组成员(即配置模拟主机加入)。当收到MLD查询报文时由该端口进行响应,从而保证该交换机能够继续收到IPv6组播报文。
通过配置模拟主机加入可以实现如下功能:
l 在以太网端口上使能模拟主机加入功能时,模拟主机会主动向该端口发送一个MLD成员关系报告报文;
l 在收到MLD普遍组查询报文后,使能了模拟主机加入功能的端口同样会响应一个MLD成员关系报告报文;
l 在以太网端口上关闭模拟主机加入的功能时,模拟主机也会向该端口发送一个MLD离开组报文。
表2-7 配置模拟主机加入
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置模拟主机加入IPv6组播组 |
mld-snooping host-join ipv6-group-address vlan vlan-id |
必选 缺省情况下,模拟主机加入IPv6组播组的功能处于关闭状态 |
& 说明:
每配置一次模拟主机加入,即相当于启动了一台独立的主机。例如,当收到MLD查询报文时,每条配置所对应的模拟主机将分别进行响应。
在没有使能端口快速离开功能之前,交换机从某端口收到离开某IPv6组播组的MLD离开组报文时不会直接将该端口从组播转发表中删除,而是先向该端口发送针对该IPv6组播组的MLD特定组查询报文,如果等待一段时间后没有得到响应,才将该端口从IPv6组播组中删除。
在使能了端口快速离开功能之后,交换机从某端口收到离开某个IPv6组播组的MLD离开组报文时,将直接把该端口从组播转发表中删除,而不再向该端口发送针对该IPv6组播组的MLD特定组查询报文。
表2-8 全局配置端口快速离开
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置端口快速离开 |
fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
表2-9 在端口上配置端口快速离开
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置端口快速离开 |
mld-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
注意:
在配置了端口快速离开后,当端口下有多个用户时,一个用户的离开会导致该端口下属于同一IPv6组播组的其它用户无法收到IPv6组播数据。
当二层设备收到来自某IPv6组播组成员的MLD成员关系报告报文时,会将该报文转发给与其直连的三层设备。这样,当二层设备上存在属于某IPv6组播组的多个成员时,与其直连的三层设备会收到这些成员发送的相同MLD成员关系报告报文。
当使能了MLD成员关系报告报文抑制功能后,在一个查询间隔内二层设备只会把收到的某IPv6组播组内的第一个MLD成员关系报告报文转发给三层设备,而不继续向三层设备转发来自同一组播组的其它MLD成员关系报告报文,这样可以减少网络中的报文数量。
表2-10 配置MLD成员关系报告报文抑制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
使能MLD成员关系报告报文抑制功能 |
report-aggregation |
可选 缺省情况下,MLD成员关系报告报文抑制功能处于使能状态 |
在配置MLD相关功能之前,需完成以下任务:
l 在VLAN内使能MLD Snooping
在配置MLD相关功能之前,需准备以下数据:
l 发送MLD普遍组查询报文的时间间隔
l 发送MLD特定组查询报文的时间间隔
l MLD普遍组查询的最大响应时间
l MLD普遍组查询报文的源IPv6地址
l MLD特定组查询报文的源IPv6地址
l 是否使能丢弃未知IPv6组播数据报文功能
在运行了MLD的IPv6组播网络中,会有一台三层组播设备充当MLD查询器,负责发送MLD查询报文。
但是,在一个没有三层组播设备的网络中,由于二层设备并不支持MLD,因此无法实现MLD查询器的相关功能。为了解决这个问题,可以在二层设备上使能MLD Snooping查询器,使其能够在数据链路层建立并维护IPv6组播转发表项,从而实现MLD查询器的相关功能。
表2-11 使能MLD Snooping查询器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能MLD Snooping查询器 |
mld-snooping querier |
必选 缺省情况下,MLD Snooping查询器处于关闭状态 |
注意:
l MLD Snooping查询器不参与MLD查询器的选举。
l 在运行了MLD的IPv6组播网络中,配置MLD Snooping查询器没有实际的意义,反而可能会由于其发送的MLD普遍组查询报文的源IPv6地址较小而影响MLD查询器的选举。
可以根据网络的实际情况来修改发送MLD普遍组查询报文的时间间隔。
在收到MLD查询报文(包括普遍组查询和特定组查询)后,主机会为其所加入的每个IPv6组播组都启动一个定时器,定时器的值在0到最大响应时间(该时间值由主机从所收到的MLD查询报文的最大响应时间字段获得)中随机选定,当定时器的值减为0时,主机就会向该定时器对应的IPv6组播组发送MLD成员关系报告报文。
合理配置MLD查询的最大响应时间,既可以使主机对MLD查询报文做出快速响应,又可以减少由于定时器同时超时,造成大量主机同时发送报告报文而引起的网络拥塞:
l 对于MLD普遍组查询报文来说,通过配置MLD普遍组查询的最大响应时间来填充其最大响应时间字段;
l 对于MLD特定组查询报文来说,所配置的发送MLD特定组查询报文的时间间隔将被填充到其最大响应时间字段。也就是说,MLD特定组查询的最大响应时间从数值上与发送MLD特定组查询报文的时间间隔相同。
表2-12 全局配置MLD定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置MLD普遍组查询的最大响应时间 |
max-response-time interval |
可选 缺省情况下,MLD普遍组查询的最大响应时间为10秒 |
配置发送MLD特定组查询报文的时间间隔 |
last-member-query-interval interval |
可选 缺省情况下,发送MLD特定组查询报文的时间间隔为1秒 |
表2-13 在VLAN内配置MLD定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置发送MLD普遍组查询报文的时间间隔 |
mld-snooping query-interval interval |
可选 缺省情况下,发送MLD普遍组查询报文的时间间隔为125秒 |
配置MLD普遍组查询的最大响应时间 |
mld-snooping max-response-time interval |
可选 缺省情况下,MLD普遍组查询的最大响应时间为10秒 |
配置发送MLD特定组查询报文的时间间隔 |
mld-snooping last-member-query-interval interval |
可选 缺省情况下,发送MLD特定组查询报文的时间间隔为1秒 |
注意:
在配置时,应确保发送MLD普遍组查询报文的时间间隔大于MLD普遍组查询的最大响应时间。
表2-14 配置MLD查询报文源IPv6地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置MLD普遍组查询报文源IPv6地址 |
mld-snooping general-query source-ip { current-interface | ipv6-address } |
可选 缺省情况下,MLD普遍组查询报文的源IPv6地址为fe80::02ff:ffff:fe00:0001 |
配置MLD特定组查询报文源IPv6地址 |
mld-snooping special-query source-ip { current-interface | ipv6-address } |
可选 缺省情况下,MLD特定组查询报文的源IPv6地址为fe80::02ff:ffff:fe00:0001 |
注意:
MLD查询报文源IPv6地址的改变可能会影响网段内MLD查询器的选择。
未知IPv6组播数据报文是指在组播转发表中不存在对应转发表项的IPv6组播数据报文。
表2-15 在VLAN内配置丢弃未知IPv6组播数据报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能丢弃未知IPv6组播数据报文功能 |
mld-snooping drop-unknown |
必选 缺省情况下,丢弃未知IPv6组播数据报文的功能处于关闭状态,即对未知IPv6组播数据报文进行广播 |
& 说明:
当使能了丢弃未知IPv6组播数据报文功能的同时,系统也将同时使能丢弃未知IPv4组播数据报文功能。
在配置端口的IPv6组播组策略之前,需完成以下任务:
l 在VLAN内使能MLD Snooping
在配置端口的IPv6组播组策略之前,需准备以下数据:
l IPv6组播组过滤的IPv6 ACL规则
l 是否使能IPv6组播数据报文源端口过滤功能
l 允许端口通过的IPv6组播组最大数量
l 是否使能IPv6组播组替换功能
在使能了MLD Snooping的交换机上,通过配置IPv6组播组过滤器,可以限制用户对组播节目的点播。
在实际应用中,当用户点播某个组播节目时,主机会发起一个MLD成员关系报告报文,该报文到达交换机后,进行ACL检查,如果该接收端口可以加入这个IPv6组播组,则将其列入到MLD Snooping组播组列表中;否则交换机就丢弃该报文。这样,IPv6组播数据就不会送到该端口,从而达到控制用户点播组播节目的目的。
表2-16 全局配置IPv6组播组过滤器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置IPv6组播组过滤器 |
group-policy acl6-number [ vlan vlan-list ] |
必选 缺省情况下,没有配置IPv6组播组过滤器,即主机可以加入任一IPv6组播组 |
表2-17 在端口上配置IPv6组播组过滤器
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置IPv6组播组过滤器 |
mld-snooping group-policy acl6-number [ vlan vlan-list ] |
必选 缺省情况下,没有配置IPv6组播组过滤器,即主机可以加入任一IPv6组播组 |
通过配置IPv6组播数据报文源端口过滤功能,可以允许或禁止端口作为组播源端口:
l 使能了该功能后,端口下不能连接组播源,因为该端口将过滤掉所有的IPv6组播数据报文(但允许IPv6组播协议报文通过),只能连接IPv6组播数据接收者;
l 关闭了该功能后,端口下既可以连接组播源,也可以连接IPv6组播数据接收者。
表2-18 全局配置IPv6组播数据报文源端口过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
使能IPv6组播数据报文源端口过滤功能 |
source-deny port interface-list |
必选 缺省情况下,IPv6组播数据报文源端口过滤功能处于关闭状态 |
表2-19 在端口上配置IPv6组播数据报文源端口过滤
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
使能IPv6组播数据报文源端口过滤功能 |
mld-snooping source-deny |
必选 缺省情况下,IPv6组播数据报文源端口过滤功能处于关闭状态 |
& 说明:
在使能IPv6组播数据报文源端口过滤功能时,系统将同时使能IPv4组播数据报文源端口过滤功能。
通过配置端口通过的IPv6组播组的最大数量,可以限制用户点播组播节目的数量,从而控制了端口上的数据流量。
表2-20 配置端口通过的IPv6组播组最大数量
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置端口通过的IPv6组播组最大数量 |
mld-snooping group-limit limit [ vlan vlan-list ] |
可选 缺省情况下,端口上允许通过的IPv6组播组最大数量为128个 |
& 说明:
l 在对端口通过的IPv6组播组最大数量进行配置时,如果当前端口上的IPv6组播组数量已经超过了配置值,系统将把该端口从所有相关的MLD Snooping转发表中删除,该端口上的主机需要重新加入IPv6组播组。
l 如果手工配置了静态成员端口或者模拟主机加入,系统在把该端口从所有相关的MLD Snooping转发表中删除后,会把这些配置重新运行生效一次,直至该端口加入的组播组数量达到限制值为止。
由于某些特殊的原因,当前交换机或以太网端口上通过的IPv6组播组数目有可能会超过交换机或以太网端口的限定。针对这种情况,可以在交换机或者某些以太网端口上使能IPv6组播组替换功能。当以太网端口上加入的IPv6组播组数量已达到限定值时:
l 若使能了IPv6组播组替换功能,则新加入的IPv6组播组会自动替代已存在的IPv6组播组,替代规则是替代IPv6地址最小的IPv6组播组;
l 若没有使能IPv6组播组替换功能,则自动丢弃新的MLD成员关系报告报文。
表2-21 全局配置IPv6组播组替换
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置IPv6组播组替换功能 |
overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,IPv6组播组替换功能处于关闭状态 |
表2-22 在端口上配置IPv6组播组替换
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置IPv6组播组替换功能 |
mld-snooping overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,IPv6组播组替换功能处于关闭状态 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后MLD Snooping的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除IPv6组播组信息。
配置 |
命令 |
查看MLD Snooping窥探到的IPv6组播组信息 |
display mld-snooping group [ vlan vlan-id ] [ verbose ] |
查看MLD Snooping窥探到的MLD报文的统计信息 |
display mld-snooping statistics |
清除MLD Snooping表项信息 |
reset mld-snooping group { ipv6-group-address | all } [ vlan vlan-id ] |
清除MLD Snooping窥探到的所有MLD报文的统计信息 |
reset mld-snooping statistics |
& 说明:
l reset mld-snooping group命令只对使能了MLD Snooping的VLAN有效。
l 通过reset mld-snooping group命令不能够清除通过静态配置加入的MLD Snooping表项。
要求通过配置,使主机A和主机B不论是否加入了IPv6组播组FF1E::1,都能够收到发往IPv6组播组FF1E::1的IPv6组播数据。
(1) 配置VLAN
# 创建VLAN100。
<SwitchA> system-view
[SwitchA] vlan 100
# 把端口GigabitEthernet1/0/1到GigabitEthernet1/0/4添加到VLAN100中。
[SwitchA-vlan100] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/4
[SwitchA-vlan100] quit
(2) 配置模拟主机加入IPv6组播组
# 在VLAN100内使能MLD Snooping。
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
[SwitchA] vlan 100
[SwitchA-vlan100] mld-snooping enable
[SwitchA-vlan100] quit
# 在GigabitEthernet1/0/3和GigabitEthernet1/0/4上启动模拟主机加入IPv6组播组功能。
[SwitchA] interface GigabitEthernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] mld-snooping host-join ff1e::1 vlan 100
[SwitchA-GigabitEthernet1/0/3] quit
[SwitchA] interface GigabitEthernet 1/0/4
[SwitchA-GigabitEthernet1/0/4] mld-snooping host-join ff1e::1 vlan 100
[SwitchA-GigabitEthernet1/0/4] quit
(3) 检验配置效果
# 查看VLAN100内的IPv6组播组详细信息。
[SwitchA] display mld-snooping group vlan 100 verbose
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, A-Aggregation port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):100.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 1 port.
GigabitEthernet1/0/1 (D) ( 00:01:30 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:FF1E::1
(::, FF1E::1):
Attribute: Host Port
Host port(s):total 2 port.
GigabitEthernet1/0/3 (D) ( 00:03:23 )
GigabitEthernet1/0/4 (D) ( 00:03:23 )
MAC group(s):
MAC group address:3333-0000-0001
Host port(s):total 2 port.
GigabitEthernet1/0/3
GigabitEthernet1/0/4
SwitchA上的端口GigabitEthernet1/0/3和GigabitEthernet1/0/4已经加入了IPv6组播组ff1e::1。
如图2-4所示,RouterB上未运行任何组播协议,要求通过配置使交换机A将IPv6组播数据转发到该路由器上。
(1) 配置VLAN
# 创建VLAN100。
<SwitchA> system-view
[SwitchA] vlan 100
# 把端口GigabitEthernet1/0/1到GigabitEthernet1/0/4添加到VLAN100中。
[SwitchA-vlan100] port GigabitEthernet 1/0/1 to GigabitEthernet 1/0/4
[SwitchA-vlan100] quit
(2) 配置静态路由器端口
# 在VLAN100内使能MLD Snooping。
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
[SwitchA] vlan 100
[SwitchA-vlan100] mld-snooping enable
[SwitchA-vlan100] quit
# 把GigabitEthernet1/0/4配置为静态路由器端口。
[SwitchA] interface GigabitEthernet 1/0/4
[SwitchA-GigabitEthernet1/0/4] mld-snooping static-router-port vlan 100
[SwitchA-GigabitEthernet1/0/4] quit
(3) 检验配置效果
# 查看VLAN100内的IPv6组播组详细信息。
[SwitchA] display mld-snooping group vlan 100 verbose
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, A-Aggregation port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):100.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 2 port.
GigabitEthernet1/0/1 (D) ( 00:01:30 )
GigabitEthernet1/0/4 (S) ( 00:01:30 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:FF1E::1
(::, FF1E::1):
Attribute: Host Port
Host port(s):total 1 port.
GigabitEthernet1/0/3 (D) ( 00:03:23 )
MAC group(s):
MAC group address:3333-0000-0001
Host port(s):total 1 port.
GigabitEthernet1/0/3
SwitchA上的端口GigabitEthernet1/0/4已经成为了静态路由器端口。
交换机不能实现MLD snooping二层组播功能。
MLD Snooping没有使能。
(1) 使用display current-configuration命令查看MLD Snooping的运行状态。
(2) 如果是没有使能MLD snooping,则需先在系统视图下使用mld-snooping命令全局使能MLD Snooping,然后在VLAN视图下使用mld-snooping enable命令使能VLAN内的MLD snooping。
(3) 如果只是没有在相应VLAN下使能MLD snooping,则只需在VLAN视图下使用mld-snooping enable命令使能VLAN内的MLD snooping。
配置了IPv6组播组策略,只允许主机加入某些特定的IPv6组播组,但主机仍然可以收到发往其它IPv6组播组的IPv6组播数据。
l IPv6 ACL规则配置不正确;
l IPv6组播组策略应用不正确,如果使用了一个不存在的或配置为空的IPv6 ACL规则做为IPv6组播策略,将过滤掉所有的IPv6组播组;
l 没有使能丢弃未知IPv6组播数据报文的功能,使得属于过滤策略之外的IPv6组播数据报文(即未知IPv6组播数据报文)被广播;
l 端口被配置为静态加入IPv6组播组,且该配置与所配置的IPv6组播组策略冲突。
(1) 使用display acl ipv6命令查看所配置的IPv6 ACL规则,检查其是否与所要实现的IPv6组播组过滤策略相符合。
(2) 使用display this命令查看是否应用了正确的IPv6组播组策略。如果没有,则使用mld-snooping group-policy命令应用正确的IPv6组播组策略。
(3) 使用display current-configuration命令查看是否已使能丢弃未知IPv6组播数据报文的功能。如果没有使能,则使用mld-snooping drop-unknown命令使能丢弃未知IPv6组播数据报文功能。
(4) 使用display mld-snooping group命令检查是否有端口被配置为静态加入IPv6组播组。如果有,则检查所配置的端口静态加入IPv6组播组与IPv6组播组策略之间是否冲突,如有冲突,则建议删除端口静态加入IPv6组播组的相关配置。
在传统的组播点播方式下,当连接在二层设备上、属于不同VLAN的用户分别进行组播点播时,三层设备需要为每个VLAN都复制一份组播数据,再分别传送给每个VLAN。这样既造成了带宽的浪费,也给三层设备增加了额外的负担。
在配置了组播VLAN后,当连接在二层设备上、属于不同VLAN的用户分别进行组播点播时,可以在二层设备上把这些VLAN都配置为一个组播VLAN的子VLAN,并在该组播VLAN内使能二层组播功能。这样,三层设备只需把组播数据传送给该组播VLAN即可,而不必再为每个VLAN都复制一份。
在配置组播VLAN及其子VLAN前,应先配置好相应的VLAN。
表3-1 配置组播VLAN
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能指定VLAN为组播VLAN |
multicast-vlan vlan-id enable |
必选 缺省情况下,VLAN不是组播VLAN |
为指定组播VLAN配置子VLAN |
multicast-vlan vlan-id subvlan vlan-list |
必选 缺省情况下,组播VLAN内没有子VLAN |
& 说明:
在配置组播VLAN的子VLAN时,应该满足下列全部条件,否则会导致操作失败:
l 使能了相应的组播VLAN;
l 要配置的子VLAN已存在;
l 要配置的子VLAN不是组播VLAN;
l 要配置的子VLAN不是其他组播VLAN的子VLAN;
l 组播VLAN的子VLAN总数没有超过系统限制(S5500-SI支持1个组播VLAN,每个组播VLAN下可配置63个子VLAN);
注意:
在配置成为组播VLAN的VLAN内必须使能二层组播功能,才能实现组播VLAN功能;而在组播VLAN的子VLAN内不必使能二层组播功能。
l RouterA的接口GigabitEthernet1/0/1使能了IGMP和PIM-DM;
l SwitchA的端口GigabitEthernet1/0/1属于VLAN1024,端口GigabitEthernet1/0/2到GigabitEthernet1/0/6分别属于VLAN11到VLAN15,HostA到HostE分别连接到SwitchA的端口GigabitEthernet1/0/2到GigabitEthernet1/0/6;
l 通过配置组播VLAN,使RouterA向SwitchA下的这五台主机传送组播数据时,只需要向VLAN1024发送一份即可,而不必向每个VLAN都发送。
(1) 配置RouterA
# 在GigabitEthernet1/0/1上使能IGMP和PIM-DM。
<RouterA> system-view
[RouterA] multicast routing-enable
[RouterA] interface GigabitEthernet 1/0/1
[RouterA-GigabitEthernet1/0/1] pim dm
[RouterA-GigabitEthernet1/0/1] igmp enable
(2) 配置SwitchA
# 全局使能IGMP Snooping。
<SwitchA> system-view
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
# 配置VLAN11,将GigabitEthernet1/0/2加入该VLAN。
[SwitchA] vlan 11
[SwitchA-vlan11] port GigabitEthernet1/0/2
[SwitchA-vlan11] quit
VLAN12到VLAN15的配置与VLAN11相似,配置过程略。
# 配置VLAN1024,将GigabitEthernet1/0/1加入该VLAN,并在该VLAN内使能IGMP Snooping。
[SwitchA] vlan 1024
[SwitchA-vlan1024] port GigabitEthernet1/0/1
[SwitchA-vlan1024] igmp-snooping enable
[SwitchA-vlan1024] quit
# 使能VLAN1024为组播VLAN,并把VLAN11到VLAN15都配置为该组播VLAN的子VLAN。
[SwitchA] multicast-vlan 1024 enable
[SwitchA] multicast-vlan 1024 subvlan 11 to 15
(3) 检验配置效果
# 查看SwitchA上所有组播VLAN及其子VLAN的信息。
[SwitchA] display multicast-vlan
multicast vlan 1024's subvlan list:
vlan 11-15
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!