02-IGMP Snooping配置
本章节下载: 02-IGMP Snooping配置 (547.3 KB)
IGMP Snooping是Internet Group Management Protocol Snooping(互联网组管理协议窥探)的简称,它是运行在二层设备上的组播约束机制,用于管理和控制组播组。
运行IGMP Snooping的二层设备通过对收到的IGMP报文进行分析,为端口和MAC组播地址建立起映射关系,并根据这样的映射关系转发组播数据。
如图1-1所示,当二层设备没有运行IGMP Snooping时,组播数据在二层被广播;当二层设备运行了IGMP Snooping后,已知组播组的组播数据不会在二层被广播,而在二层被组播给指定的接收者。
IGMP Snooping通过二层组播将信息只转发给有需要的接收者,可以带来以下好处:
l 减少了二层网络中的广播报文,节约了网络带宽;
l 增强了组播信息的安全性;
l 为实现对每台主机的单独计费带来了方便。
如图1-2所示,Router A连接组播源,在Switch A和Switch B上分别运行IGMP Snooping,Host A和Host C为接收者主机(即组播组成员)。
结合图1-2,介绍一下IGMP Snooping相关的端口概念:
l 路由器端口(Router Port):交换机上朝向三层组播设备(DR或IGMP查询器)一侧的端口,如Switch A和Switch B各自的GigabitEthernet1/0/1端口。交换机将本设备上的所有路由器端口都记录在路由器端口列表中。
l 成员端口(Member Port):又称组播组成员端口,表示交换机上朝向组播组成员一侧的端口,如Switch A的GigabitEthernet1/0/2和GigabitEthernet1/0/3端口,以及Switch B的GigabitEthernet1/0/2端口。交换机将本设备上的所有成员端口都记录在IGMP Snooping转发表中。
l 本文中提到的路由器端口都是指交换机上朝向组播路由器的端口,而不是指路由器上的端口。
l 如不特别指明,本文中提到的路由器/成员端口均包括动态和静态端口。
l 在运行了IGMP Snooping的交换机上,所有收到源地址不为0.0.0.0的IGMP普遍组查询报文或PIM Hello报文的端口都将被视为动态路由器端口。有关PIM Hello报文的详细介绍,请参见“IP组播配置指导”中的“PIM配置”。
表1-1 IGMP Snooping动态端口老化定时器
定时器 |
说明 |
超时前应收到的报文 |
超时后交换机的动作 |
动态路由器端口老化定时器 |
交换机为其每个动态路由器端口都启动一个定时器,其超时时间就是动态路由器端口老化时间 |
源地址不为0.0.0.0的IGMP普遍组查询报文或PIM Hello报文 |
将该端口从路由器端口列表中删除 |
动态成员端口老化定时器 |
当一个端口动态加入某组播组时,交换机为该端口启动一个定时器,其超时时间就是动态成员端口老化时间 |
IGMP成员关系报告报文 |
将该端口从IGMP Snooping转发表中删除 |
IGMP Snooping端口老化机制只针对动态端口,静态端口永不老化。
运行了IGMP Snooping的交换机对不同IGMP动作的具体处理方式如下:
IGMP查询器定期向本地网段内的所有主机与路由器(224.0.0.1)发送IGMP普遍组查询报文,以查询该网段有哪些组播组的成员。
在收到IGMP普遍组查询报文时,交换机将其通过VLAN内除接收端口以外的其它所有端口转发出去,并对该报文的接收端口做如下处理:
l 如果在路由器端口列表中已包含该动态路由器端口,则重置其老化定时器。
l 如果在路由器端口列表中尚未包含该动态路由器端口,则将其添加到路由器端口列表中,并启动其老化定时器。
以下情况,主机会向IGMP查询器发送IGMP成员关系报告报文:
l 当组播组的成员主机收到IGMP查询报文后,会回复IGMP成员关系报告报文。
l 如果主机要加入某个组播组,它会主动向IGMP查询器发送IGMP成员关系报告报文以声明加入该组播组。
在收到IGMP成员关系报告报文时,交换机将其通过VLAN内的所有路由器端口转发出去,从该报文中解析出主机要加入的组播组地址,并对该报文的接收端口做如下处理:
l 如果不存在该组播组所对应的转发表项,则创建转发表项,将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;
l 如果已存在该组播组所对应的转发表项,但其出端口列表中不包含该端口,则将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;
l 如果已存在该组播组所对应的转发表项,且其出端口列表中已包含该动态成员端口,则重置其老化定时器。
交换机不会将IGMP成员关系报告报文通过非路由器端口转发出去,因为根据主机上的IGMP成员关系报告抑制机制,如果非路由器端口下还有该组播组的成员主机,则这些主机在收到该报告报文后便抑制了自身的报告,从而使交换机无法获知这些端口下还有该组播组的成员主机。有关主机上的IGMP成员关系报告抑制机制的详细介绍,请参见“IP组播配置指导”中的“IGMP配置”。
运行IGMPv1的主机离开组播组时不会发送IGMP离开组报文,因此交换机无法立即获知主机离开的信息。但是,由于主机离开组播组后不会再发送IGMP成员关系报告报文,因此当其对应的动态成员端口的老化定时器超时后,交换机就会将该端口对应的转发表项从转发表中删除。
运行IGMPv2或IGMPv3的主机离开组播组时,会通过发送IGMP离开组报文,以通知组播路由器自己离开了某个组播组。当交换机从某动态成员端口上收到IGMP离开组报文时,首先判断要离开的组播组所对应的转发表项是否存在,以及该组播组所对应转发表项的出端口列表中是否包含该接收端口:
l 如果不存在该组播组对应的转发表项,或者该组播组对应转发表项的出端口列表中不包含该端口,交换机不会向任何端口转发该报文,而将其直接丢弃;
l 如果存在该组播组对应的转发表项,且该组播组对应转发表项的出端口列表中包含该端口,交换机会将该报文通过VLAN内的所有路由器端口转发出去。同时,由于并不知道该接收端口下是否还有该组播组的其它成员,所以交换机不会立刻把该端口从该组播组所对应转发表项的出端口列表中删除,而是重置其老化定时器。
当IGMP查询器收到IGMP离开组报文后,从中解析出主机要离开的组播组的地址,并通过接收端口向该组播组发送IGMP特定组查询报文。交换机在收到IGMP特定组查询报文后,将其通过VLAN内的所有路由器端口和该组播组的所有成员端口转发出去。对于IGMP离开组报文的接收端口(假定为动态成员端口),交换机在其老化时间内:
l 如果从该端口收到了主机响应该特定组查询的IGMP成员关系报告报文,则表示该端口下还有该组播组的成员,于是重置其老化定时器;
l 如果没有从该端口收到主机响应特定组查询的IGMP成员关系报告报文,则表示该端口下已没有该组播组的成员,则在其老化时间超时后,将其从该组播组所对应转发表项的出端口列表中删除。
为了减少上游设备收到的IGMP报告报文和离开报文的数量,可以通过在边缘设备上配置IGMP Snooping Proxying(IGMP Snooping代理)功能,使其能够代理下游主机来向上游设备发送报告报文和离开报文。配置了IGMP Snooping Proxying功能的设备称为IGMP Snooping代理设备,在其上游设备看来,它就相当于一台主机。
尽管在其上游设备看来,IGMP Snooping代理设备相当于一台主机,但主机上的IGMP成员关系报告抑制机制在IGMP Snooping代理设备上并不会生效。有关主机上的IGMP成员关系报告抑制机制的详细介绍,请参见“IP组播配置指导”中的“IGMP配置”。
图1-3 IGMP Snooping Proxying组网图
如图1-3所示,作为IGMP Snooping代理设备的Switch A,对其上游的IGMP查询器Router A来说相当于一台主机,代理下游主机向Router A发送报告报文和离开报文。
IGMP Snooping代理设备对IGMP报文的处理方式如表1-2所示。
表1-2 IGMP Snooping代理设备对IGMP报文的处理方式
IGMP报文类型 |
处理方式 |
普遍组查询报文 |
收到普遍组查询报文后,向本VLAN内除接收端口以外的所有端口转发;同时根据本地维护的组成员关系生成报告报文,并向所有路由器端口发送 |
特定组查询报文 |
收到针对某组播组的特定组查询报文时,若该组对应的转发表项中还有成员端口,则向所有路由器端口回复该组的报告报文 |
报告报文 |
从某端口收到某组播组的报告报文时,若已存在该组对应的转发表项,且其出端口列表中已包含该动态成员端口,则重置其老化定时器;若已存在该组对应的转发表项,但其出端口列表中不包含该端口,则将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;若尚不存在该组对应的转发表项,则创建转发表项,将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器,然后向所有路由器端口发送该组的报告报文 |
离开报文 |
从某端口收到某组播组的离开报文后,向该端口发送针对该组的特定组查询报文。只有当删除某组播组对应转发表项中的最后一个成员端口时,才会向所有路由器端口发送该组的离开报文 |
与IGMP Snooping相关的协议规范有:
l RFC 4541:Considerations for Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) Snooping Switches
表1-3 IGMP Snooping配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置IGMP Snooping基本功能 |
使能IGMP Snooping |
必选 |
|
配置IGMP Snooping版本 |
可选 |
||
配置静态组播MAC地址表项 |
可选 |
||
配置IGMP Snooping端口功能 |
配置动态端口老化定时器 |
可选 |
|
配置静态端口 |
可选 |
||
配置模拟主机加入 |
可选 |
||
配置端口快速离开 |
可选 |
||
禁止端口成为动态路由器端口 |
可选 |
||
配置IGMP Snooping查询器 |
使能IGMP Snooping查询器 |
可选 |
|
配置IGMP查询和响应 |
可选 |
||
配置IGMP查询报文源IP地址 |
可选 |
||
配置IGMP Snooping Proxying |
使能IGMP Snooping Proxying |
可选 |
|
配置代理发送IGMP报文的源IP地址 |
可选 |
||
配置IGMP Snooping策略 |
配置组播组过滤器 |
可选 |
|
配置组播数据报文源端口过滤 |
可选 |
||
配置丢弃未知组播数据报文 |
可选 |
||
配置IGMP成员关系报告报文抑制 |
可选 |
||
配置端口加入的组播组最大数量 |
可选 |
||
配置组播组替换 |
可选 |
||
配置IGMP报文的802.1p优先级 |
可选 |
||
配置组播用户控制策略 |
可选 |
对于IGMP Snooping的相关配置来说:
l IGMP-Snooping视图下的配置对所有VLAN都有效,VLAN视图下的配置只对当前VLAN有效。对于某VLAN来说,优先采用该VLAN视图下的配置,只有当在该VLAN视图下没有进行配置时,才采用IGMP-Snooping视图下的相应配置。
l IGMP-Snooping视图下的配置对所有端口都有效;二层以太网端口视图下的配置只对当前端口有效;二层聚合接口视图下的配置只对当前接口有效;端口组视图下的配置对当前端口组中的所有端口有效。对于某端口来说,优先采用二层以太网端口视图、二层聚合接口视图或端口组视图下的配置,只有当在上述视图下没有进行配置时,才采用IGMP-Snooping视图下的相应配置。
l 二层聚合接口与其各成员端口上的配置互不影响,且成员端口上的配置只有当该端口退出聚合组后才会生效,二层聚合接口上的配置也不会参与聚合计算。
在配置IGMP Snooping基本功能之前,需完成以下任务:
l 配置相应VLAN
在配置IGMP Snooping基本功能之前,需准备以下数据:
l IGMP Snooping的版本
操作 |
命令 |
说明 |
进入系统视图 |
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 对于S5500-EI系列交换机来说,在VLAN内使能IGMP Snooping之后,不允许在该VLAN所对应的VLAN接口上再使能IGMP和PIM,反之亦然。
l 在指定VLAN内使能了IGMP Snooping之后,该功能只在属于该VLAN的端口上生效。
配置IGMP Snooping的版本,实际上就是配置IGMP Snooping可以处理的IGMP报文的版本:
l 当IGMP Snooping的版本为2时,IGMP Snooping能够对IGMPv1和IGMPv2的报文进行处理,对IGMPv3的报文则不进行处理,而是在VLAN内将其广播;
l 当IGMP Snooping的版本为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转发表项;对于在版本3下通过手工配置而静态加入的IGMP Snooping转发表项,则分为以下两种情况进行不同的处理:
l 如果配置的仅仅是静态加入组播组,而没有指定组播源,则这些转发表项将不会被清除;
l 如果配置的是指定了组播源的静态加入组播源组,则这些转发表项将会被清除,并且当再次切换回版本3时,这些转发表项将被重新恢复。
在二层组播中,除了可通过二层组播协议(如IGMP Snooping)动态建立组播MAC地址表项外,还可以通过手工方式配置组播MAC地址表项,将端口与组播MAC地址进行静态绑定,以便灵活控制组播信息送达的目的端口。
表1-6 系统视图下配置静态组播MAC地址表项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置静态组播MAC地址表项 |
mac-address multicast mac-address interface interface-list vlan vlan-id |
必选 缺省情况下,没有配置静态组播MAC地址表项 |
表1-7 接口视图下配置静态组播MAC地址表项
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入二层以太网端口或二层聚合接口视图 |
interface interface-type interface-number |
二者必选其一 进入二层以太网端口或二层聚合接口视图后,下面进行的配置只在当前接口生效;进入端口组视图后,下面进行的配置将在端口组的所有接口生效 |
进入端口组视图 |
port-group manual port-group-name |
||
配置静态组播MAC地址表项 |
mac-address multicast mac-address vlan vlan-id |
必选 缺省情况下,没有配置静态组播MAC地址表项 |
l 系统视图下的配置对指定端口有效,而断口视图下的配置只对当前端口(或当前端口组内的所有端口)有效。
l 可手工配置的组播MAC地址表项为除0100-5Exx-xxxx以外的任意合法的组播MAC地址,其中x代表0~F的任意一个十六进制数。
在配置IGMP Snooping端口功能之前,需完成以下任务:
l 在VLAN内使能IGMP Snooping
l 配置相应端口组
在配置IGMP Snooping端口功能之前,需准备以下数据:
l 动态路由器端口老化时间
l 动态成员端口老化时间
l 组播组和组播源的地址
对于动态路由器端口,如果在其老化时间超时前没有收到IGMP普遍组查询报文或者PIM Hello报文,交换机将把该端口从路由器端口列表中删除。
对于动态成员端口,如果在其老化时间超时前没有收到该组播组的IGMP成员关系报告报文,交换机将把该端口从该组播组所对应转发表项的出端口列表中删除。
如果组播组成员的变动比较频繁,可以把动态成员端口老化时间设置小一些,反之亦然。
表1-8 全局配置动态端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置动态路由器端口老化时间 |
router-aging-time interval |
可选 缺省情况下,动态路由器端口的老化时间为105秒 |
配置动态成员端口老化时间 |
host-aging-time interval |
可选 缺省情况下,动态成员端口的老化时间为260秒 |
表1-9 在VLAN内配置动态端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置动态路由器端口老化时间 |
igmp-snooping router-aging-time interval |
可选 缺省情况下,动态路由器端口的老化时间为105秒 |
配置动态成员端口老化时间 |
igmp-snooping host-aging-time interval |
可选 缺省情况下,动态成员端口的老化时间为260秒 |
如果某端口所连接的主机需要固定接收发往某组播组或组播源组的组播数据,可以配置该端口静态加入该组播组或组播源组,成为静态成员端口。
可以通过将交换机上的端口配置为静态路由器端口,从而使交换机上所有收到的组播数据可以通过该端口被转发出去。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入二层以太网端口或二层聚合接口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group manual port-group-name |
||
配置静态成员端口 |
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时,配置参数source-ip source-address才会有实际的意义。
l 静态成员端口不会对IGMP查询器发出的查询报文进行响应;当配置静态成员端口或取消静态成员端口的配置时,端口也不会主动发送IGMP成员关系报告报文或IGMP离开组报文。
l 静态成员端口和静态路由器端口都不会老化,只能通过相应的undo命令删除。
通常情况下,运行IGMP的主机会对IGMP查询器发出的查询报文进行响应。如果主机由于某种原因无法响应,就可能导致组播路由器认为该网段没有该组播组的成员,从而取消相应的转发路径。
为避免这种情况的发生,可以将交换机的端口配置成为组播组成员(即配置模拟主机加入)。当收到IGMP查询报文时由模拟主机进行响应,从而保证该交换机能够继续收到组播报文。
模拟主机加入功能的实现原理如下:
l 在某端口上使能模拟主机加入功能时,交换机会通过该端口主动发送一个IGMP成员关系报告报文;
l 在某端口上使能了模拟主机加入功能后,当收到IGMP普遍组查询报文时,交换机会通过该端口响应一个IGMP成员关系报告报文;
l 在某端口上关闭模拟主机加入功能时,交换机会通过该端口发送一个IGMP离开组报文。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入二层以太网端口或二层聚合接口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group manual port-group-name |
||
配置模拟主机加入组播组或组播源组 |
igmp-snooping host-join group-address [ source-ip source-address ] vlan vlan-id |
必选 缺省情况下,没有配置模拟主机加入组播组或组播源组 |
l 每配置一次模拟主机加入,即相当于启动了一台独立的主机。例如,当收到IGMP查询报文时,每条配置所对应的模拟主机将分别进行响应。
l 与静态成员端口不同,配置了模拟主机加入的端口会作为动态成员端口而参与动态成员端口的老化过程。
端口快速离开是指当交换机从某端口收到主机发送的离开某组播组的IGMP离开组报文时,直接把该端口从对应转发表项的出端口列表中删除。此后,当交换机收到对该组播组的IGMP特定组查询报文时,交换机将不再向该端口转发。
在交换机上,在只连接有一个接收者的端口上,可以通过使能端口快速离开功能来节约带宽和资源;而在连接有多个接收者的端口上,如果交换机或该端口所在的VLAN已使能了丢弃未知组播数据报文功能,则不要再使能端口快速离开功能,否则,一个接收者的离开将导致该端口下属于同一组播组的其它接收者无法收到组播数据。
表1-12 全局配置端口快速离开
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
使能端口快速离开功能 |
fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
表1-13 在端口上配置端口快速离开
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入二层以太网端口或二层聚合接口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group manual port-group-name |
||
使能端口快速离开功能 |
igmp-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
目前,在组播用户接入网络中存在以下问题:
l 如果交换机收到了某用户主机发来的IGMP普遍组查询报文或PIM Hello报文,那么该主机所在的端口就将成为动态路由器端口,从而使VLAN内的所有组播报文都会向该端口转发,导致该用户主机收到的组播报文失控。
l 同时,用户主机发送IGMP普遍组查询报文或PIM Hello报文,也会影响该接入网络中三层设备上的组播路由协议状态(如影响IGMP查询器或DR的选举),严重时可能导致网络中断。
当禁止某端口成为动态路由器端口后,即使该端口收到了IGMP普遍组查询报文或PIM Hello报文,该端口也不会成为动态路由器端口,从而能够有效解决上述问题,提高网络的安全性和对组播用户的控制能力。
表1-14 禁止端口成为动态路由器端口
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入二层以太网端口或二层聚合接口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group manual port-group-name |
||
禁止端口成为动态路由器端口 |
igmp-snooping router-port-deny [ vlan vlan-list ] |
必选 缺省情况下,不禁止端口成为动态路由器端口 |
本配置与静态路由器端口的配置互不影响。
在配置IGMP Snooping查询器之前,需完成以下任务:
l 在VLAN内使能IGMP Snooping
在配置IGMP Snooping查询器之前,需准备以下数据:
l 发送IGMP普遍组查询报文的时间间隔
l 发送IGMP特定组查询报文的时间间隔
l IGMP普遍组查询的最大响应时间
l IGMP普遍组查询报文的源IP地址
l IGMP特定组查询报文的源IP地址
在运行了IGMP的组播网络中,会有一台三层组播设备充当IGMP查询器,负责发送IGMP查询报文,使三层组播设备能够在网络层建立并维护组播转发表项,从而在网络层正常转发组播数据。
但是,在一个没有三层组播设备的网络中,由于二层设备并不支持IGMP,因此无法实现IGMP查询器的相关功能。为了解决这个问题,可以在二层设备上使能IGMP Snooping查询器,使二层设备能够在数据链路层建立并维护组播转发表项,从而在数据链路层正常转发组播数据。
表1-15 使能IGMP Snooping查询器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能IGMP Snooping查询器 |
igmp-snooping querier |
必选 缺省情况下,IGMP Snooping查询器处于关闭状态 |
尽管IGMP Snooping查询器并不参与IGMP查询器的选举,但在运行了IGMP的组播网络中,配置IGMP Snooping查询器不但没有实际的意义,反而可能会由于其发送的IGMP普遍组查询报文的源IP地址较小而影响IGMP查询器的选举。
有关IGMP查询器的详细介绍,请参见“IP组播配置指导”中的“IGMP配置”。
可以根据网络的实际情况来修改发送IGMP普遍组查询报文的时间间隔。
在收到IGMP查询报文(包括普遍组查询和特定组查询)后,主机会为其所加入的每个组播组都启动一个定时器,定时器的值在0到最大响应时间(该时间值由主机从所收到的IGMP查询报文的最大响应时间字段获得)中随机选定,当定时器的值减为0时,主机就会向该定时器对应的组播组发送IGMP成员关系报告报文。
合理配置IGMP查询的最大响应时间,既可以使主机对IGMP查询报文做出快速响应,又可以减少由于定时器同时超时,造成大量主机同时发送报告报文而引起的网络拥塞:
l 对于IGMP普遍组查询报文来说,通过配置IGMP普遍组查询的最大响应时间来填充其最大响应时间字段;
l 对于IGMP特定组查询报文来说,所配置的发送IGMP特定组查询报文的时间间隔将被填充到其最大响应时间字段。也就是说,IGMP特定组查询的最大响应时间从数值上与发送IGMP特定组查询报文的时间间隔相同。
表1-16 全局配置IGMP查询和响应
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置IGMP普遍组查询的最大响应时间 |
max-response-time interval |
可选 缺省情况下,IGMP普遍组查询的最大响应时间为10秒 |
配置发送IGMP特定组查询报文的时间间隔 |
last-member-query-interval interval |
可选 缺省情况下,发送IGMP特定组查询报文的时间间隔为1秒 |
表1-17 在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 Snooping查询器时,可以把IGMP查询报文的源IP地址配置为一个有效的IP地址以避免上述问题的出现。
表1-18 配置IGMP查询报文源IP地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置IGMP普遍组查询报文源IP地址 |
igmp-snooping general-query source-ip { ip-address | current-interface } |
可选 缺省情况下,IGMP普遍组查询报文的源IP地址为0.0.0.0 |
配置IGMP特定组查询报文源IP地址 |
igmp-snooping special-query source-ip { ip-address | current-interface } |
可选 缺省情况下,IGMP特定组查询报文的源IP地址为0.0.0.0 |
IGMP查询报文源IP地址的改变可能会影响网段内IGMP查询器的选举。
在配置IGMP Snooping Proxying之前,需完成以下任务:
l 在VLAN内使能IGMP Snooping
在配置IGMP Snooping Proxying之前,需准备以下数据:
l 代理发送IGMP报告报文的源IP地址
l 代理发送IGMP离开报文的源IP地址
当在有组播需求的VLAN内使能了IGMP Snooping代理功能后,该设备就成为该VLAN内的IGMP Snooping代理设备。
表1-19 使能IGMP Snooping Proxying
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
在VLAN内使能IGMP Snooping代理功能 |
igmp-snooping proxying enable |
必选 缺省情况下,VLAN内的IGMP Snooping代理功能处于关闭状态 |
通过本配置可以改变代理发送的IGMP报告报文和离开报文的源IP地址。
表1-20 配置代理发送IGMP报文的源IP地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置代理发送IGMP报告报文的源IP地址 |
igmp-snooping report source-ip { ip-address | current-interface } |
必选 缺省情况下,代理发送IGMP报告报文的源IP地址为0.0.0.0 |
配置代理发送IGMP离开报文的源IP地址 |
igmp-snooping leave source-ip { ip-address | current-interface } |
缺省情况下,代理发送IGMP离开报文的源IP地址为0.0.0.0 |
在配置IGMP Snooping策略之前,需完成以下任务:
l 在VLAN内使能IGMP Snooping
在配置IGMP Snooping策略之前,需准备以下数据:
l 组播组过滤的ACL规则
l 允许端口通过的组播组最大数量
l IGMP报文的802.1p优先级
在使能了IGMP Snooping的交换机上,通过配置组播组过滤器,可以限制用户对组播节目的点播。
在实际应用中,当用户点播某个组播节目时,主机会发起一个IGMP成员关系报告报文,该报文到达交换机后,进行ACL检查:如果该接收端口可以加入这个组播组,则将其列入到IGMP Snooping转发表中;否则交换机就丢弃该报文。这样,未通过ACL检查的组播数据就不会送到该端口,从而达到控制用户点播组播节目的目的。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置组播组过滤器 |
group-policy acl-number [ vlan vlan-list ] |
必选 缺省情况下,没有配置全局组播组过滤器,即各VLAN内主机可以加入任意合法的组播组 |
表1-22 在端口上配置组播组过滤器
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入二层以太网端口或二层聚合接口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group manual port-group-name |
||
配置组播组过滤器 |
igmp-snooping group-policy acl-number [ vlan vlan-list ] |
必选 缺省情况下,端口上没有配置组播组过滤器,即该端口下的主机可以加入任意合法的组播组 |
通过配置组播数据报文源端口过滤功能,可以允许或禁止端口作为组播源端口:
l 使能了该功能后,端口下不能连接组播源,因为该端口将过滤掉所有的组播数据报文(但允许组播协议报文通过),只能连接组播数据接收者;
l 关闭了该功能后,端口下既可以连接组播源,也可以连接组播数据接收者。
表1-23 全局配置组播数据报文源端口过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
使能组播数据报文源端口过滤功能 |
source-deny port interface-list |
必选 缺省情况下,组播数据报文源端口过滤功能处于关闭状态 |
表1-24 在端口上配置组播数据报文源端口过滤
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入二层以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group manual port-group-name |
||
使能组播数据报文源端口过滤功能 |
igmp-snooping source-deny |
必选 缺省情况下,组播数据报文源端口过滤功能处于关闭状态 |
未知组播数据报文是指在IGMP Snooping转发表中不存在对应转发表项的那些组播数据报文,当交换机收到发往未知组播组的报文时,数据报文会在VLAN内广播,这样会占用大量的网络带宽,影响转发效率。
此时用户可以在交换机上启动丢弃未知组播数据报文功能,当交换机收到未知组播数据报文时,只向其路由器端口转发,不在VLAN内广播。如果交换机没有路由器端口,数据报文会被丢弃,不再转发
表1-25 在VLAN内配置丢弃未知组播数据报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能丢弃未知组播数据报文功能 |
igmp-snooping drop-unknown |
必选 缺省情况下,丢弃未知组播数据报文的功能处于关闭状态,即对未知组播数据报文进行广播 |
当二层设备收到来自某组播组成员的IGMP成员关系报告报文时,会将该报文转发给与其直连的三层设备。这样,当二层设备上存在属于某组播组的多个成员时,与其直连的三层设备会收到这些成员发送的相同IGMP成员关系报告报文。
当使能了IGMP成员关系报告报文抑制功能后,在一个查询间隔内二层设备只会把收到的某组播组内的第一个IGMP成员关系报告报文转发给三层设备,而不继续向三层设备转发来自同一组播组的其它IGMP成员关系报告报文,这样可以减少网络中的报文数量。
表1-26 配置IGMP成员关系报告报文抑制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
使能IGMP成员关系报告报文抑制功能 |
report-aggregation |
可选 缺省情况下,IGMP成员关系报告报文抑制功能处于使能状态 |
在IGMP Snooping代理设备上,不论是否使能了IGMP成员关系报告报文抑制功能,只要存在某组播组对应的转发表项,就会将从下游收到的针对该组的报告报文都抑制掉。
通过配置允许端口加入的组播组最大数量,可以限制用户点播组播节目的数量,从而控制了端口上的数据流量。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入二层以太网端口或二层聚合接口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group manual port-group-name |
||
配置允许端口加入的组播组最大数量 |
igmp-snooping group-limit limit [ vlan vlan-list ] |
可选 缺省情况下: l S5500-EI系列交换机允许端口加入的组播组最大数量为2000 l S5500-SI系列交换机允许端口加入的组播组最大数量为1000 |
在对允许端口加入的组播组最大数量进行配置时,如果当前端口上的组播组数量已经超过了配置值,系统将把该端口相关的所有转发表项从IGMP Snooping转发表中删除,该端口上的主机需要重新加入组播组。但如果为该端口配置了静态成员端口或者模拟主机加入,系统在把该端口相关的所有转发表项删除后,会把这些配置重新生效一次,直至该端口所加入的组播组数量达到限制值为止。
由于某些特殊的原因,当前交换机或端口上通过的组播组数目有可能会超过交换机或该端口的限定;另外,在某些特定的应用中,交换机上新加入的组播组需要自动替换已存在的组播组(一个典型的应用就是“频道切换”,即用户通过加入一个新的组播组就能完成离开原组播组并切换到新组播组的动作)。
针对以上情况,可以在交换机或者某些端口上使能组播组替换功能。当交换机或端口上加入的组播组数量已达到限定值时:
l 若使能了组播组替换功能,则新加入的组播组会自动替代已存在的组播组,替代规则是替代IP地址最小的组播组;
l 若没有使能组播组替换功能,则自动丢弃新的IGMP成员关系报告报文。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
使能组播组替换功能 |
overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,组播组替换功能处于关闭状态 |
表1-29 在端口上配置组播组替换
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入二层以太网端口或二层聚合接口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group manual port-group-name |
||
使能组播组替换功能 |
igmp-snooping overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,组播组替换功能处于关闭状态 |
在使能组播组替换功能之前,必须首先配置端口通过的组播组的最大数量(具体配置过程请参见“1.7.6 配置端口加入的组播组最大数量”),否则组播组替换功能将不能生效。
可以通过本配置来改变IGMP报文的802.1p优先级。当交换机的出端口发生拥塞时,交换机通过识别报文的802.1p优先级,优先发送优先级较高的报文。
表1-30 全局配置IGMP报文的802.1p优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置IGMP报文的802.1p优先级 |
dot1p-priority priority-number |
必选 缺省情况下,IGMP报文的802.1p优先级为0 |
表1-31 在VLAN内配置IGMP报文的802.1p优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置IGMP报文的802.1p优先级 |
igmp-snooping dot1p-priority priority-number |
必选 缺省情况下,IGMP报文的802.1p优先级为0 |
组播用户控制策略通常配置在接入交换机上,是基于用户权限控制来实现的,即只有通过授权的用户才能收到相应的组播流,从而达到限制用户对组播节目点播的目的。在实际应用中,用户先要通过接入交换机向RADIUS服务器发起认证(如802.1X认证),当认证通过后再根据用户的点播行为进行策略检查:
l 当用户点播组播节目时,主机会发送IGMP成员关系报告报文,接入交换机收到该报文后对其携带的组播组和组播源地址进行策略检查,若该报文通过检查则允许该用户加入该组播组;否则,接入交换机将丢弃该报文。
l 当用户停止点播组播节目时,主机会发送IGMP离开报文,接入交换机收到该报文后对其携带的组播组和组播源地址进行策略检查,若该报文通过检查则允许该用户离开该组播组;否则,接入交换机将丢弃该报文。
表1-32 配置组播用户控制策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建User Profile,并进入User-Profile视图 |
user-profile profile-name |
- |
配置组播用户控制策略 |
igmp-snooping access-policy acl-number |
必选 缺省情况下,没有配置组播用户控制策略,即用户可以加入/离开任意合法的组播组 |
退回系统视图 |
quit |
- |
激活该User Profile |
user-profile profile-name enable |
必选 缺省情况下,User Profile处于未激活状态 |
l 有关user-profile和user-profile enable命令的详细介绍,请参见“安全命令参考”中的“User Profile配置命令”。
l 组播用户控制策略与组播组过滤器在功能上类似,二者的区别在于:前者是基于用户权限的组播控制,需要与认证、授权功能结合使用,能够控制组播用户的加入与离开;后者是基于设备端口的组播控制,无需与认证、授权功能结合使用,只能控制组播用户的加入。
在完成上述配置后,在任意视图下执行display命令可以显示配置后IGMP Snooping的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除组播组信息。
表1-33 IGMP Snooping显示和维护
命令 |
|
查看IGMP Snooping组播组的信息 |
display igmp-snooping group [ vlan vlan-id ] [ slot slot-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ] |
查看IGMP Snooping监听到的IGMP报文的统计信息 |
display igmp-snooping statistics [ | { begin | exclude | include } regular-expression ] |
查看静态组播MAC地址表信息 |
display mac-address [ mac-address [ vlan vlan-id ] | [ multicast ] [ vlan vlan-id ] [ count ] ] [ | { begin | exclude | include } regular-expression ] |
清除动态加入的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有效,而对VLAN接口上使能了IGMP的VLAN无效。
l reset igmp-snooping group命令只对动态加入的IGMP Snooping组有效,对静态加入的IGMP Snooping组无效。
l 如图1-4所示,Router A通过GigabitEthernet1/0/2接口连接组播源(Source),通过GigabitEthernet1/0/1接口连接Switch A;
l Router A上运行IGMPv2,Switch A上运行版本2的IGMP Snooping,并由Router A充当IGMP查询器;
l 通过配置,使连接在Switch A上的接收者(Receiver)Host A和Host B只能接收发往组播组224.1.1.1的组播数据;
l 通过配置,使Host A和Host B即使由于某种意外而临时中断接收组播数据时,发往组播组224.1.1.1组播数据也能够不间断地通过Switch A的接口GigabitEthernet1/0/3和GigabitEthernet1/0/4转发出去。
请按照图1-4配置各接口的IP地址和子网掩码,具体配置过程略。
(2) 配置Router A
# 使能IP组播路由,在各接口上使能PIM-DM,并在接口GigabitEthernet1/0/1上使能IGMP。
<RouterA> system-view
[RouterA] multicast routing-enable
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] igmp enable
[RouterA-GigabitEthernet1/0/1] pim dm
[RouterA-GigabitEthernet1/0/1] quit
[RouterA] interface gigabitethernet 1/0/2
[RouterA-GigabitEthernet1/0/2] pim dm
[RouterA-GigabitEthernet1/0/2] quit
(3) 配置Switch A
# 全局使能IGMP Snooping。
<SwitchA> system-view
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/4添加到该VLAN中;在该VLAN内使能IGMP Snooping,并使能丢弃未知组播数据报文功能。
[SwitchA] vlan 100
[SwitchA-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/4
[SwitchA-vlan100] igmp-snooping enable
[SwitchA-vlan100] igmp-snooping drop-unknown
[SwitchA-vlan100] quit
# 配置组播组过滤器,以限定VLAN 100内的主机只能加入组播组224.1.1.1。
[SwitchA] acl number 2001
[SwitchA-acl-basic-2001] rule permit source 224.1.1.1 0
[SwitchA-acl-basic-2001] quit
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] group-policy 2001 vlan 100
[SwitchA-igmp-snooping] quit
# 在GigabitEthernet1/0/3和GigabitEthernet1/0/4上分别配置模拟主机加入组播组224.1.1.1。
[SwitchA] interface gigabitethernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] igmp-snooping host-join 224.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 vlan 100
[SwitchA-GigabitEthernet1/0/4] quit
(4) 检验配置效果
# 查看Switch A上VLAN 100内IGMP Snooping组播组的详细信息。
[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, 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(s).
GE1/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
(0.0.0.0, 224.1.1.1):
Attribute: Host Port
Host port(s):total 2 port(s).
GE1/0/3 (D) ( 00:03:23 )
GE1/0/4 (D) ( 00:04:10 )
MAC group(s):
MAC group address:0100-5e01-0101
Host port(s):total 2 port(s).
GE1/0/3
GE1/0/4
由此可见,Switch A上的端口GigabitEthernet1/0/3和GigabitEthernet1/0/4已经加入了组播组224.1.1.1。
l 如图1-5所示,Router A通过GigabitEthernet1/0/2接口连接组播源(Source),通过GigabitEthernet1/0/1接口连接Switch A;
l Router A上运行IGMPv2,Switch A、Switch B和Switch C上都运行版本2的IGMP Snooping,并由Router A充当IGMP查询器;
l Host A和Host C均为组播组224.1.1.1的固定接收者(Receiver),通过将Switch C上的端口GigabitEthernet1/0/3和GigabitEthernet1/0/5配置为组播组224.1.1.1的静态成员端口,可以增强组播数据在传输过程中的可靠性;
l 假设由于受STP等链路层协议的影响,为了避免出现环路,Switch A—Switch C的转发路径在正常情况下是阻断的,组播数据只能通过Switch A—Switch B—Switch C的路径传递给连接在Switch C上的接收者;
l 要求通过将Switch A上连接Switch C的端口GigabitEthernet1/0/3配置为静态路由器端口,从而保证当Switch A—Switch B—Switch C的路径出现阻断时,组播数据可以几乎不间断地通过Switch A—Switch C的新路径传递给接收者。
如果没有配置静态路由器端口,那么当Switch A—Switch B—Switch C的路径出现阻断时,至少需要等待一个IGMP查询和响应周期完成后,组播数据才能通过Switch A—Switch C的新路径传递给接收者,组播数据的传输在这个过程中将中断。
有关STP(Spanning Tree Protocol,生成树协议)的详细介绍,请参见“二层技术-以太网交换配置指导”中的“MSTP配置”。
(1) 配置IP地址
请按照图1-5配置各接口的IP地址和子网掩码,具体配置过程略。
(2) 配置Router A
# 使能IP组播路由,在各接口上使能PIM-DM,并在接口GigabitEthernet1/0/1上使能IGMP。
<RouterA> system-view
[RouterA] multicast routing-enable
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] igmp enable
[RouterA-GigabitEthernet1/0/1] pim dm
[RouterA-GigabitEthernet1/0/1] quit
[RouterA] interface gigabitethernet 1/0/2
[RouterA-GigabitEthernet1/0/2] pim dm
[RouterA-GigabitEthernet1/0/2] quit
(3) 配置Switch A
# 全局使能IGMP Snooping。
<SwitchA> system-view
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/3添加到该VLAN中,并在该VLAN内使能IGMP Snooping。
[SwitchA] vlan 100
[SwitchA-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/3
[SwitchA-vlan100] igmp-snooping enable
[SwitchA-vlan100] quit
# 把GigabitEthernet1/0/3配置为静态路由器端口。
[SwitchA] interface gigabitethernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] igmp-snooping static-router-port vlan 100
[SwitchA-GigabitEthernet1/0/3] quit
(4) 配置Switch B
# 全局使能IGMP Snooping。
<SwitchB> system-view
[SwitchB] igmp-snooping
[SwitchB-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1和GigabitEthernet1/0/2添加到该VLAN中,并在该VLAN内使能IGMP Snooping。
[SwitchB] vlan 100
[SwitchB-vlan100] port gigabitethernet 1/0/1 gigabitethernet 1/0/2
[SwitchB-vlan100] igmp-snooping enable
[SwitchB-vlan100] quit
(5) 配置Switch C
# 全局使能IGMP Snooping。
<SwitchC> system-view
[SwitchC] igmp-snooping
[SwitchC-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/5添加到该VLAN中,并在该VLAN内使能IGMP Snooping。
[SwitchC] vlan 100
[SwitchC-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/5
[SwitchC-vlan100] igmp-snooping enable
[SwitchC-vlan100] quit
# 分别在端口GigabitEthernet1/0/3和GigabitEthernet1/0/5上配置静态加入组播组224.1.1.1。
[SwitchC] interface Gigabitethernet 1/0/3
[SwitchC-GigabitEthernet1/0/3] igmp-snooping static-group 224.1.1.1 vlan 100
[SwitchC-GigabitEthernet1/0/3] quit
[SwitchC] interface Gigabitethernet 1/0/5
[SwitchC-GigabitEthernet1/0/5] igmp-snooping static-group 224.1.1.1 vlan 100
[SwitchC-GigabitEthernet1/0/5] quit
(6) 检验配置效果
# 查看Switch A上VLAN 100内IGMP Snooping组播组的详细信息。
[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, 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(s).
GE1/0/1 (D) ( 00:01:30 )
GE1/0/3 (S)
IP group(s):the following ip group(s) match to one mac group.
IP group address:224.1.1.1
(0.0.0.0, 224.1.1.1):
Attribute: Host Port
Host port(s):total 1 port(s).
GE1/0/2 (D) ( 00:03:23 )
MAC group(s):
MAC group address:0100-5e01-0101
Host port(s):total 1 port(s).
GE1/0/2
由此可见,Switch A上的端口GigabitEthernet1/0/3已经成为了静态路由器端口。
# 查看Switch C上VLAN 100内IGMP Snooping组播组的详细信息。
[SwitchC] 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, 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(s).
GE1/0/2 (D) ( 00:01:23 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:224.1.1.1
(0.0.0.0, 224.1.1.1):
Attribute: Host Port
Host port(s):total 2 port(s).
GE1/0/3 (S)
GE1/0/5 (S)
MAC group(s):
MAC group address:0100-5e01-0101
Host port(s):total 2 port(s).
GE1/0/3
GE1/0/5
由此可见,Switch C上的端口GigabitEthernet1/0/3和GigabitEthernet1/0/5已经成为了组播组224.1.1.1的静态成员端口。
l 如图1-6所示,在一个没有三层设备的纯二层网络环境中,组播源Source 1和Source 2分别向组播组224.1.1.1和225.1.1.1发送组播数据,Host A和Host C是组播组224.1.1.1的接收者(Receiver),Host B和Host D则是组播组225.1.1.1的接收者;
l 所有接收者均使用IGMPv2,所有交换机上都运行版本2的IGMP Snooping,并选择距组播源较近的Switch A来充当IGMP Snooping查询器;
l 为了防止交换机在没有二层组播转发表项时将组播数据在VLAN内广播,要求在所有交换机上都使能丢弃未知组播数据报文的功能;
l 由于交换机不会将收到源IP地址为0.0.0.0的IGMP查询报文的端口设置为动态路由器端口,从而会影响二层组播转发表项的建立并导致组播数据无法正常转发,因此要求通过配置改变缺省的IGMP查询报文源IP地址(即0.0.0.0)以避免上述问题的出现。
图1-6 IGMP Snooping查询器配置组网图
(1) 配置Switch A
# 全局使能IGMP Snooping。
<SwitchA> system-view
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
# 创建VLAN 100,并把端口GigabitEthernet1/0/1到GigabitEthernet1/0/3添加到该VLAN中。
[SwitchA] vlan 100
[SwitchA-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/3
# 在VLAN 100内使能IGMP Snooping,并使能丢弃未知组播数据报文功能。
[SwitchA-vlan100] igmp-snooping enable
[SwitchA-vlan100] igmp-snooping drop-unknown
# 在VLAN 100内使能IGMP Snooping查询器。
[SwitchA-vlan100] igmp-snooping querier
# 在VLAN 100内把IGMP普遍组查询和特定组查询报文的源IP地址均设置为192.168.1.1。
[SwitchA-vlan100] igmp-snooping general-query source-ip 192.168.1.1
[SwitchA-vlan100] igmp-snooping special-query source-ip 192.168.1.1
[SwitchA-vlan100] quit
(2) 配置Switch B
# 全局使能IGMP Snooping。
<SwitchB> system-view
[SwitchB] igmp-snooping
[SwitchB-igmp-snooping] quit
# 创建VLAN 100,并把端口GigabitEthernet1/0/1到GigabitEthernet1/0/4添加到该VLAN中。
[SwitchB] vlan 100
[SwitchB-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/4
# 在VLAN 100内使能IGMP Snooping,并使能丢弃未知组播数据报文功能。
[SwitchB-vlan100] igmp-snooping enable
[SwitchB-vlan100] igmp-snooping drop-unknown
[SwitchB-vlan100] quit
Switch C和Switch D的配置与Switch B相似,配置过程略。
(3) 检验配置效果
当IGMP Snooping查询器开始工作之后,除查询器以外的所有交换机都能收到IGMP普遍组查询报文。通过使用display igmp-snooping statistics命令可以查看IGMP报文的统计信息,例如:
# 查看Switch B上收到的IGMP报文的统计信息。
[SwitchB] display igmp-snooping statistics
Received IGMP general queries:3.
Received IGMPv1 reports:0.
Received IGMPv2 reports:12.
Received IGMP leaves:0.
Received IGMPv2 specific queries:0.
Sent IGMPv2 specific queries:0.
Received IGMPv3 reports:0.
Received IGMPv3 reports with right and wrong records:0.
Received IGMPv3 specific queries:0.
Received IGMPv3 specific sg queries:0.
Sent IGMPv3 specific queries:0.
Sent IGMPv3 specific sg queries:0.
Received error IGMP messages:0.
l 如图1-7所示,Router A通过GigabitEthernet1/0/2接口连接组播源(Source),通过GigabitEthernet1/0/1接口连接Switch A;
l Router A上运行IGMPv2,Switch A上运行版本2的IGMP Snooping,并由Router A充当IGMP查询器;
l 通过配置,使Switch A能够代理下游主机向Router A发送的IGMP报告报文和离开报文,以及响应Router A发来的IGMP查询报文并向下游主机转发。
图1-7 IGMP Snooping Proxying配置组网图
(1) 配置IP地址
请按照图1-7配置各接口的IP地址和子网掩码,具体配置过程略。
(2) 配置Router A
# 使能IP组播路由,在各接口上使能PIM-DM,并在接口GigabitEthernet1/0/1上使能IGMP。
<RouterA> system-view
[RouterA] multicast routing-enable
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] igmp enable
[RouterA-GigabitEthernet1/0/1] pim dm
[RouterA-GigabitEthernet1/0/1] quit
[RouterA] interface gigabitethernet 1/0/2
[RouterA-GigabitEthernet1/0/2] pim dm
[RouterA-GigabitEthernet1/0/2] quit
(3) 配置Switch A
# 全局使能IGMP Snooping。
<SwitchA> system-view
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/4添加到该VLAN中;在该VLAN内使能IGMP Snooping,并使能IGMP Snooping Proxying。
[SwitchA] vlan 100
[SwitchA-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/4
[SwitchA-vlan100] igmp-snooping enable
[SwitchA-vlan100] igmp-snooping proxying enable
[SwitchA-vlan100] quit
(4) 检验配置效果
当配置完成后,Host A和Host B分别发送组地址为224.1.1.1的IGMP加入报文,Switch A收到该报文后通过其路由器端口GigabitEthernet1/0/1向Router A也发送该组的加入报文。通过使用display igmp-snooping group和display igmp group命令可以分别查看IGMP Snooping组播组和IGMP组播组的信息,例如:
# 查看Switch A上IGMP Snooping组播组的信息。
[SwitchA] display igmp-snooping group
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static 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(s).
GE1/0/1 (D) ( 00:01:23 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:224.1.1.1
(0.0.0.0, 224.1.1.1):
Host port(s):total 2 port(s).
GE1/0/3 (D)
GE1/0/4 (D)
MAC group(s):
MAC group address:0100-5e01-0101
Host port(s):total 2 port(s).
GE1/0/3
GE1/0/4
# 查看Router A上IGMP组播组的信息。
[RouterA] display igmp group
Total 1 IGMP Group(s).
Interface group report information of VPN-Instance: public net
GigabitEthernet1/0/1(10.1.1.1):
Total 1 IGMP Group reported
Group Address Last Reporter Uptime Expires
224.1.1.1 0.0.0.0 00:00:06 00:02:04
当Host A离开组播组224.1.1.1时,向Switch A发送该组的IGMP离开报文,但由于Host B仍未离开该组,因此Switch A并不会删除该组,也不会向Router A发送该组的离开报文,只是在该组对应转发表项的成员端口列表中将端口GigabitEthernet1/0/3删除。通过使用display igmp-snooping group命令可以查看IGMP Snooping组播组的信息,例如:
# 查看Switch A上IGMP Snooping组播组的信息。
[SwitchA] display igmp-snooping group
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static 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(s).
GE1/0/1 (D) ( 00:01:23 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:224.1.1.1
(0.0.0.0, 224.1.1.1):
Host port(s):total 1 port(s).
GE1/0/4 (D)
MAC group(s):
MAC group address:0100-5e01-0101
Host port(s):total 1 port(s).
GE1/0/4
l 如图1-8所示,三层交换机Switch A分别通过接口Vlan-interface101和Vlan-interface102连接组播源Source 1和Source 2,通过接口Vlan-interface103连接RADIUS服务器,并通过接口Vlan-interface104连接二层交换机Switch B。
l Switch A上运行IGMPv2,Switch B上运行版本2的IGMP Snooping,连接在Switch A上的组播源和连接在Switch B上的主机都使用802.1X进行认证。
l 通过在Switch A上配置组播源控制策略,禁止由Source 2发往组播组224.1.1.1的组播数据进入网络。
l 通过在Switch B上配置组播用户控制策略,使接收者(Receiver)Host A只能加入/离开组播组224.1.1.1。
(1) 配置IP地址
请按照图1-8配置各接口的IP地址和子网掩码,具体配置过程略。
(2) 配置Switch A
# 分别创建VLAN 101~104,并将端口GigabitEthernet1/0/1~GigabitEthernet1/0/4依次加入VLAN 101~104中。
<SwitchA> system-view
[SwitchA] vlan 101
[SwitchA-vlan101] port gigabitethernet 1/0/1
[SwitchA-vlan101] quit
[SwitchA] vlan 102
[SwitchA-vlan102] port gigabitethernet 1/0/2
[SwitchA-vlan102] quit
[SwitchA] vlan 103
[SwitchA-vlan103] port gigabitethernet 1/0/3
[SwitchA-vlan103] quit
[SwitchA] vlan 104
[SwitchA-vlan104] port gigabitethernet 1/0/4
[SwitchA-vlan104] quit
# 使能IP组播路由,在接口Vlan-interface101、Vlan-interface102和Vlan-interface104上使能PIM-DM,并在接口Vlan-interface104上使能IGMP。
[SwitchA] multicast routing-enable
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim dm
[SwitchA-Vlan-interface101] quit
[SwitchA] interface vlan-interface 102
[SwitchA-Vlan-interface102] pim dm
[SwitchA-Vlan-interface102] quit
[SwitchA] interface vlan-interface 104
[SwitchA-Vlan-interface104] pim dm
[SwitchA-Vlan-interface104] igmp enable
[SwitchA-Vlan-interface104] quit
# 创建名为policy1的QoS策略,不允许来自组播源2.1.1.1的组播数据向组播组224.1.1.1发送。
[SwitchA] acl number 3001
[SwitchA-acl-adv-3001] rule permit udp source 2.1.1.1 0 destination 224.1.1.1 0
[SwitchA-acl-adv-3001] quit
配置组播源控制策略时必须使用高级ACL,且在配置源地址匹配的同时还必须配置目的地址匹配,否则希望过滤掉的组播报文仍会上送CPU,从而使设备创建相应的组播表项,导致该策略失效。
[SwitchA] traffic classifier classifier1
[SwitchA-classifier-classifier1] if-match acl 3001
[SwitchA-classifier-classifier1] quit
在类视图下配置了匹配IPv4规则后,请勿再配置匹配IPv6规则,否则将导致报文匹配错误。
[SwitchA] traffic behavior behavior1
[SwitchA-behavior-behavior1] filter deny
[SwitchA-behavior-behavior1] quit
[SwitchA] qos policy policy1
[SwitchA-qospolicy-policy1] classifier classifier1 behavior behavior1
[SwitchA-qospolicy-policy1] quit
# 创建名为profile1的User Profile,在该User Profile下应用QoS策略policy1,并将该User Profile激活。
[SwitchA] user-profile profile1
[SwitchA-user-profile-profile1] qos apply policy policy1 inbound
[SwitchA-user-profile-profile1] quit
[SwitchA] user-profile profile1 enable
# 创建名为scheme1的RADIUS认证方案,配置RADIUS服务器的类型为extended类型;指定主RADIUS认证/授权服务器和计费服务器的IP地址均为3.1.1.1,共享密钥均为123321;并配置发送给RADIUS服务器的用户名不需要携带域名。
[SwitchA] radius scheme scheme1
[SwitchA-radius-scheme1] server-type extended
[SwitchA-radius-scheme1] primary authentication 3.1.1.1
[SwitchA-radius-scheme1] key authentication 123321
[SwitchA-radius-scheme1] primary accounting 3.1.1.1
[SwitchA-radius-scheme1] key accounting 123321
[SwitchA-radius-scheme1] user-name-format without-domain
[SwitchA-radius-scheme1] quit
# 创建名为domain1的ISP域,指定lan-access用户的RADIUS认证、授权和计费方案均为scheme1;并将该域指定为系统缺省的ISP域。
[SwitchA] domain domain1
[SwitchA-isp-domian1] authentication lan-access radius-scheme scheme1
[SwitchA-isp-domian1] authorization lan-access radius-scheme scheme1
[SwitchA-isp-domian1] accounting lan-access radius-scheme scheme1
[SwitchA-isp-domian1] quit
[SwitchA] domain default enable domain1
# 全局使能802.1X,并在端口GigabitEthernet1/0/1和GigabitEthernet1/0/2上分别使能802.1X。
[SwitchA] dot1x
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] dot1x
[SwitchA-GigabitEthernet1/0/1] quit
[SwitchA] interface gigabitethernet 1/0/2
[SwitchA-GigabitEthernet1/0/2] dot1x
[SwitchA-GigabitEthernet1/0/2] quit
(3) 配置Switch B
# 全局使能IGMP Snooping。
<SwitchB> system-view
[SwitchB] igmp-snooping
[SwitchB-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/3添加到该VLAN中;在该VLAN内使能IGMP Snooping。
[SwitchB] vlan 100
[SwitchB-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/3
[SwitchB-vlan100] igmp-snooping enable
[SwitchB-vlan100] quit
# 创建名为profile2的User Profile,在该User Profile下配置只允许用户加入/离开组播组224.1.1.1,并将该User Profile激活。
[SwitchB] acl number 2001
[SwitchB-acl-basic-2001] rule permit source 224.1.1.1 0
[SwitchB-acl-basic-2001] quit
[SwitchB] user-profile profile2
[SwitchB-user-profile-profile2] igmp-snooping access-policy 2001
[SwitchB-user-profile-profile2] quit
[SwitchB] user-profile profile2 enable
# 创建名为scheme2的RADIUS认证方案,配置RADIUS服务器的类型为extended类型;指定主RADIUS认证/授权服务器和计费服务器的IP地址均为3.1.1.1,共享密钥均为321123;并配置发送给RADIUS服务器的用户名不需要携带域名。
[SwitchB] radius scheme scheme2
[SwitchB-radius-scheme2] server-type extended
[SwitchB-radius-scheme2] primary authentication 3.1.1.1
[SwitchB-radius-scheme2] key authentication 321123
[SwitchB-radius-scheme2] primary accounting 3.1.1.1
[SwitchB-radius-scheme2] key accounting 321123
[SwitchB-radius-scheme2] user-name-format without-domain
[SwitchB-radius-scheme2] quit
# 创建名为domain2的ISP域,指定lan-access用户的RADIUS认证、授权和计费方案均为scheme2;并将该域指定为系统缺省的ISP域。
[SwitchB] domain domain2
[SwitchB-isp-domian2] authentication lan-access radius-scheme scheme2
[SwitchB-isp-domian2] authorization lan-access radius-scheme scheme2
[SwitchB-isp-domian2] accounting lan-access radius-scheme scheme2
[SwitchB-isp-domian2] quit
[SwitchB] domain default enable domain2
# 全局使能802.1X,并在接口GigabitEthernet1/0/2和GigabitEthernet1/0/3上分别使能802.1X。
[SwitchB] dot1x
[SwitchB] interface gigabitethernet 1/0/2
[SwitchB-GigabitEthernet1/0/2] dot1x
[SwitchB-GigabitEthernet1/0/2] quit
[SwitchB] interface gigabitethernet 1/0/3
[SwitchB-GigabitEthernet1/0/3] dot1x
[SwitchB-GigabitEthernet1/0/3] quit
(4) 配置RADIUS服务器
请在RADIUS服务器上进行与Switch A和Switch B相对应的配置,具体配置过程可参考RADIUS服务器的配置手册。
(5) 检验配置效果
配置完成后,所有的组播源和用户主机都向RADIUS服务器发起802.1X认证。当认证通过后,Source 1向组播组224.1.1.1、Source 2向组播组224.1.1.2分别发送不同的组播数据,而Host A则分别发起了对组播组224.1.1.1和224.1.1.2的加入。通过使用display igmp-snooping group命令可以查看IGMP Snooping组播组的信息:
# 查看Switch B上VLAN 100内IGMP Snooping组播组的详细信息。
[SwitchB] 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, 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(s).
GE1/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
(0.0.0.0, 224.1.1.1):
Attribute: Host Port
Host port(s):total 1 port(s).
GE1/0/3 (D) ( 00:04:10 )
MAC group(s):
MAC group address:0100-5e01-0101
Host port(s):total 1 port(s).
GE1/0/3
由此可见,Switch B上的端口GigabitEthernet1/0/3只加入了组播组224.1.1.1,而未加入组播组224.1.1.2。
此后由于管理员的操作失误,Source 2也开始向组播组224.1.1.1发送组播数据。通过使用display multicast forwarding-table命令可以查看组播转发表的信息:
# 查看Switch A上有关组播组224.1.1.1的组播转发表信息。
[SwitchA] display multicast forwarding-table 224.1.1.1
Multicast Forwarding Table of VPN-Instance: public net
Total 1 entry
Total 1 entry matched
00001. (1.1.1.1, 224.1.1.1)
MID: 0, Flags: 0x0:0
Uptime: 00:08:32, Timeout in: 00:03:26
Incoming interface: Vlan-interface101
List of 1 outgoing interfaces:
1: Vlan-interface104
Matched 19648 packets(20512512 bytes), Wrong If 0 packets
Forwarded 19648 packets(20512512 bytes)
由此可见,Switch A上只有组播源组(1.1.1.1,224.1.1.1)的转发表项,而没有组播源组(2.1.1.1,224.1.1.1)的转发表项,说明Source 2发往组播组224.1.1.1的组播数据没能进入网络。
交换机不能实现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 组播组策略应用不正确;
l 没有使能丢弃未知组播数据报文的功能,使得属于过滤策略之外的组播数据报文(即未知组播数据报文)被广播。
(1) 使用display acl命令查看所配置的ACL规则,检查其是否与所要实现的组播组过滤策略相符合。
(2) 在IGMP-Snooping视图或相应的接口视图下使用display this命令查看是否应用了正确的组播组策略。如果没有,则使用group-policy或igmp-snooping group-policy命令应用正确的组播组策略。
(3) 使用display current-configuration命令查看是否已使能丢弃未知组播数据报文的功能。如果没有使能,则使用igmp-snooping drop-unknown命令使能丢弃未知组播数据报文功能。
仅S5500-EI系列交换机支持该附录内容。
支持IGMP Snooping功能的交换机使能了三层组播路由后,在不同的情况下对各种组播协议报文的处理有所差异。具体规则如下:
(1) 如果交换机上只使能了IGMP,或同时使能了IGMP和PIM:
l 对于IGMP报文,根据报文类型为其维护相应的动态成员端口或动态路由器端口;
l 对于PIM Hello报文,为其维护相应的动态路由器端口。
(2) 如果交换机上只使能了PIM:
l 对于IGMP报文,将其当作未知报文在VLAN内进行广播;
l 对于PIM Hello报文,为其维护相应的动态路由器端口。
(3) 在交换机上关闭IGMP时:
l 如果未使能PIM,则删除所有动态成员端口和动态路由器端口;
l 如果已使能PIM,则删除动态成员端口,只保留动态路由器端口。
在使能了三层组播路由的交换机上,请使用命令display igmp group port-info来查看二层端口信息。有关display igmp group port-info命令的详细介绍,请参见“IP组播命令参考”中的“IGMP配置命令”。
(4) 在交换机上关闭PIM时:
l 如果未使能IGMP,则删除动态路由器端口;
l 如果已使能IGMP,则保留所有动态成员端口和动态路由器端口。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!