02-IGMP Snooping配置
本章节下载: 02-IGMP Snooping配置 (698.19 KB)
1.3 基于VLAN的IGMP Snooping配置任务简介
1.6.2 配置IGMP Snooping转发表项的全局最大数量
1.13.3 基于VLAN的IGMP Snooping查询器配置举例
1.13.4 基于VLAN的IGMP Snooping Proxy配置举例
1.13.5 基于VSI的IGMP Snooping配置举例
1.13.6 基于VXLAN的IGMP Snooping配置举例
IGMP Snooping(Internet Group Management Protocol Snooping,互联网组管理协议窥探)运行在二层设备上,通过侦听三层设备与主机之间的IGMP报文来生成二层组播转发表,从而管理和控制组播数据报文的转发,实现组播数据报文在二层的按需分发。
运行IGMP Snooping的二层设备通过对收到的IGMP报文进行分析,为端口和MAC组播地址建立起映射关系,并根据这样的映射关系转发组播数据。
如图1-1所示,当二层设备没有运行IGMP Snooping时,组播数据在二层网络(包括VLAN和VSI)中被广播;当二层设备运行了IGMP Snooping后,已知组播组的组播数据不会在二层网络中被广播,而被组播给指定的接收者。
IGMP Snooping通过二层组播将信息只转发给有需要的接收者,可以带来以下好处:
· 减少了二层网络中的广播报文,节约了网络带宽;
· 增强了组播信息的安全性;
· 为实现对每台主机的单独计费带来了方便。
如图1-2所示,Device A连接组播源,在Device A和Device B上分别运行IGMP Snooping,Host A和Host C为接收者主机(即组播组成员)。根据在网络中所处位置的不同,我们将IGMP Snooping端口分为路由器端口和成员端口两类,以下分别介绍。
图1-2 IGMP Snooping端口示意图
在运行了IGMP Snooping的二层设备上,朝向上游三层组播设备的端口称为路由器端口。如图1-2中Device A的Port A1端口和Device B的Port B1端口。
根据来源不同,路由器端口可分为:
· 动态路由器端口:所有收到IGMP普遍组查询报文(源地址非0.0.0.0)或PIM Hello报文的端口,都被维护为动态路由器端口。这些端口被记录在动态路由器端口列表中,每个端口都有一个老化定时器。在老化定时器超时前,动态路由器端口如果收到了IGMP普遍组查询报文(源地址非0.0.0.0)或PIM Hello报文,该定时器将被重置;否则,该端口将被从动态路由器端口列表中删除。
· 静态路由器端口:通过命令行手工配置的路由器端口称为静态路由器端口,这些端口被记录在静态路由器端口列表中。静态路由器端口只能通过命令行手工删除,不会被老化。
· 本文中提到的路由器端口都是指二层设备上朝向三层组播设备的端口,而不是指路由器上的端口。
· 如果没有特别指明,本文中提到的路由器端口包括动态路由器端口和静态路由器端口。
在运行了IGMP Snooping的二层设备上,朝向下游组播组成员的端口称为成员端口。如图1-2中Device A的Port A2和 Port A3端口,以及Device B的Port B2端口。
根据来源不同,成员端口也可分为:
· 动态成员端口:所有收到IGMP成员关系报告报文的端口,都被维护为动态成员端口。这些端口被记录在动态IGMP Snooping转发表中,每个端口都有一个老化定时器。在老化定时器超时前,动态成员端口如果收到了IGMP成员关系报告报文,该定时器将被重置;否则,该端口将被从动态IGMP Snooping转发表中删除。
· 静态成员端口:通过命令行手工配置的成员端口称为静态成员端口,这些端口被记录在静态IGMP Snooping转发表中。静态成员端口只能通过命令行手工删除,不会被老化。
如果没有特别指明,本文中提到的成员端口包括动态成员端口和静态成员端口。
运行了IGMP Snooping的二层设备对不同IGMP动作的具体处理方式如下:
IGMP查询器定期向本地网段内的所有主机与设备(224.0.0.1)发送IGMP普遍组查询报文,以查询该网段有哪些组播组的成员。
在收到IGMP普遍组查询报文时,二层设备将其通过VLAN/VSI内除接收端口以外的其它所有端口转发出去,并对该报文的接收端口做如下处理:
· 如果在动态路由器端口列表中已包含该动态路由器端口,则重置其老化定时器。
· 如果在动态路由器端口列表中尚未包含该动态路由器端口,则将其添加到动态路由器端口列表中,并启动其老化定时器。
以下情况,主机会向IGMP查询器发送IGMP成员关系报告报文:
· 当组播组的成员主机收到IGMP查询报文后,会回复IGMP成员关系报告报文。
· 如果主机要加入某个组播组,它会主动向IGMP查询器发送IGMP成员关系报告报文以声明加入该组播组。
在收到IGMP成员关系报告报文时,二层设备将其通过VLAN/VSI内的所有路由器端口转发出去,从该报文中解析出主机要加入的组播组地址,并对该报文的接收端口做如下处理:
· 如果不存在该组播组所对应的转发表项,则创建转发表项,将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;
· 如果已存在该组播组所对应的转发表项,但其出端口列表中不包含该端口,则将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;
· 如果已存在该组播组所对应的转发表项,且其出端口列表中已包含该动态成员端口,则重置其老化定时器。
二层设备不会将IGMP成员关系报告报文通过非路由器端口转发出去,因为根据主机上的IGMP成员关系报告抑制机制,如果非路由器端口下还有该组播组的成员主机,则这些主机在收到该报告报文后便抑制了自身的报告,从而使二层设备无法获知这些端口下还有该组播组的成员主机。有关主机上的IGMP成员关系报告抑制机制的详细介绍,请参见“IP组播配置指导”中的“IGMP”。
运行IGMPv1的主机离开组播组时不会发送IGMP离开组报文,因此二层设备无法立即获知主机离开的信息。但是,由于主机离开组播组后不会再发送IGMP成员关系报告报文,因此当其对应的动态成员端口的老化定时器超时后,二层设备就会将该端口从相应转发表项的出端口列表中删除。
运行IGMPv2或IGMPv3的主机离开组播组时,会通过发送IGMP离开组报文,以通知三层组播设备自己离开了某个组播组。当二层设备从某动态成员端口上收到IGMP离开组报文时,首先判断要离开的组播组所对应的转发表项是否存在,以及该组播组所对应转发表项的出端口列表中是否包含该接收端口:
· 如果不存在该组播组对应的转发表项,或者该组播组对应转发表项的出端口列表中不包含该端口,二层设备不会向任何端口转发该报文,而将其直接丢弃;
· 如果存在该组播组对应的转发表项,且该组播组对应转发表项的出端口列表中除该端口还有别的成员端口存在,二层设备不会向任何端口转发该报文,而将其直接丢弃。同时,由于并不知道该接收端口下是否还有该组播组的其它成员,所以二层设备不会立刻把该端口从该组播组所对应转发表项的出端口列表中删除,而是向该端口发送IGMP特定组查询报文,并根据IGMP特定组查询报文调整该端口的老化定时器(老化时间为2×IGMP特定组查询报文的发送间隔);
· 如果存在该组播组对应的转发表项,且该组播组对应转发表项的出端口列表中只有该端口,二层设备会将该报文通过VLAN/VSI内的所有路由器端口转发出去。同时,由于并不知道该接收端口下是否还有该组播组的其它成员,所以二层设备不会立刻把该端口从该组播组所对应转发表项的出端口列表中删除,而是向该端口发送IGMP特定组查询报文,并根据IGMP特定组查询报文调整该端口的老化定时器(老化时间为2×IGMP特定组查询报文的发送间隔)。
当IGMP查询器收到IGMP离开组报文后,从中解析出主机要离开的组播组的地址,并通过接收端口向该组播组发送IGMP特定组查询报文。二层设备在收到IGMP特定组查询报文后,将其通过VLAN/VSI内的所有路由器端口和该组播组的所有成员端口转发出去。对于IGMP离开组报文的接收端口(假定为动态成员端口),二层设备在其老化时间内:
· 如果从该端口收到了主机响应该特定组查询的IGMP成员关系报告报文,则表示该端口下还有该组播组的成员,于是重置其老化定时器;
· 如果没有从该端口收到主机响应特定组查询的IGMP成员关系报告报文,则表示该端口下已没有该组播组的成员。当该端口的老化定时器超时后,将其从该组播组所对应转发表项的出端口列表中删除。
为了减少上游设备收到的IGMP报告报文和离开报文的数量,可以通过在边缘设备上配置IGMP Snooping Proxy(IGMP Snooping代理)功能,使其能够代理下游主机向上游设备发送报告报文和离开报文。配置了IGMP Snooping Proxy功能的设备称为IGMP Snooping代理设备,在其上游设备看来,它就相当于一台主机。但主机上的IGMP成员关系报告抑制机制在IGMP Snooping代理设备上并不会生效。有关主机上的IGMP成员关系报告抑制机制的详细介绍,请参见“IP组播配置指导”中的“IGMP”。
如图1-3所示,作为IGMP Snooping代理设备的Device A,对其上游的IGMP查询器Device A来说相当于一台主机,代理下游主机向Device A发送报告报文和离开报文。
IGMP Snooping代理设备对IGMP报文的处理方式如表1-1所示。
表1-1 IGMP Snooping代理设备对IGMP报文的处理方式
IGMP报文 |
处理方式 |
普遍组查询报文 |
收到普遍组查询报文后,向本VLAN内除接收端口以外的所有端口转发;同时根据本地维护的组成员关系生成报告报文,并向所有路由器端口发送 |
特定组/特定源组查询报文 |
收到针对某组播组的特定组/特定源组查询报文时,向本VLAN内除接收端口以外的所有路由器端口转发;若该组对应的转发表项中还有成员端口,则向本VLAN内所有路由器端口回复该组的报告报文 |
报告报文 |
从某端口收到某组播组的报告报文时,若已存在该组对应的转发表项,且其出端口列表中已包含该动态成员端口,则重置其老化定时器;若已存在该组对应的转发表项,但其出端口列表中不包含该端口,则将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;若尚不存在该组对应的转发表项,则创建转发表项,将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器,然后向所有路由器端口发送该组的报告报文 |
离开报文 |
从某端口收到某组播组的离开报文后,向该端口发送针对该组的特定组查询报文。只有当删除某组播组对应转发表项中的最后一个成员端口时,才会向所有路由器端口发送该组的离开报文 |
与IGMP Snooping相关的协议规范有:
· RFC 4541:Considerations for Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) Snooping Switches
本文中的VSI相关特性仅CSPC-GE16XP4L-E、CSPC-GE24L-E、CSPC-GP24GE8XP2L-E单板、CSPEX类单板、SPE类单板或CEPC类单板支持。
使能全局IGMP Snooping后,若还需在某指定VLAN/VSI内配置其他IGMP Snooping功能,则必须在这些VLAN/VSI下使能IGMP Snooping。
二层聚合接口与其各成员端口上的IGMP Snooping配置互不影响,且成员端口上的IGMP Snooping配置只有当该端口退出聚合组后才会生效,二层聚合接口上的IGMP Snooping配置也不会参与聚合计算。
对于既可在VLAN视图下配置,又可在IGMP-Snooping视图下对多个VLAN进行配置的功能,两个视图下配置的优先级相同,最新配置生效。
对于既可在VLAN视图下配置,又可在IGMP-Snooping视图下对所有VLAN配置的功能,VLAN视图下的配置的优先级较高。
对于既可在VSI视图下配置,又可在IGMP-Snooping视图下配置的功能,IGMP-Snooping视图下的配置对所有VSI生效,VSI视图下配置只对当前VSI生效,且VSI视图下的配置优先级较高。
对于既可在接口视图下配置,又可在IGMP-Snooping视图下配置的功能,IGMP-Snooping视图下的配置对指定VLAN内的所有端口生效,接口视图下配置只对当前接口生效,且接口视图下的配置优先级较高。
基于VLAN的IGMP Snooping配置任务如下:
(1) 使能IGMP Snooping
(2) (可选)配置IGMP Snooping基本功能
(3) (可选)配置IGMP Snooping端口功能
¡ 配置静态成员端口
¡ 配置模拟主机加入
(4) (可选)配置IGMP Snooping查询器
(5) (可选)配置IGMP Snooping Proxy
(6) (可选)调整IGMP报文
(7) (可选)配置IGMP Snooping策略
¡ 配置组播组过滤器
基于VSI的IGMP Snooping配置任务如下:
(1) 使能IGMP Snooping
(2) (可选)配置IGMP Snooping基本功能
(3) (可选)配置动态端口老化定时器
(4) (可选)配置IGMP Snooping查询器
(5) (可选)调整IGMP报文
(6) (可选)配置IGMP Snooping策略
(1) 进入系统视图。
system-view
(2) 全局使能IGMP Snooping,并进入IGMP-Snooping视图。
igmp-snooping
缺省情况下,IGMP Snooping处于全局关闭状态。
(3) 使能多个VLAN内的IGMP Snooping。
enable vlan vlan-list
缺省情况下,VLAN内的IGMP Snooping处于关闭状态。
在VLAN内使能了IGMP Snooping之后,IGMP Snooping只在属于该VLAN的端口上生效。
(1) 进入系统视图。
system-view
(2) 全局使能IGMP Snooping,并进入IGMP-Snooping视图。
igmp-snooping
缺省情况下,IGMP Snooping处于全局关闭状态。
(3) 退回系统视图。
quit
(4) 进入VLAN视图。
vlan vlan-id
(5) 使能单个VLAN内的IGMP Snooping。
igmp-snooping enable
缺省情况下,VLAN内的IGMP Snooping处于关闭状态。
在VLAN内使能了IGMP Snooping之后,IGMP Snooping只在属于该VLAN的端口上生效。
(1) 进入系统视图。
system-view
(2) 全局使能IGMP Snooping,并进入IGMP-Snooping视图。
igmp-snooping
缺省情况下,IGMP Snooping处于全局关闭状态。
(3) 退回系统视图。
quit
(4) 进入VSI视图。
vsi vsi-name
(5) 在VSI内使能IGMP Snooping。
igmp-snooping enable
缺省情况下, VSI内的IGMP Snooping处于关闭状态。
在VSI内使能了IGMP Snooping之后,IGMP Snooping只在属于该VSI的端口上生效。
配置IGMP Snooping的版本,实际上就是配置IGMP Snooping可以处理的IGMP报文的版本:
· 当IGMP Snooping的版本为2时,IGMP Snooping能够对IGMPv1和IGMPv2的报文进行处理,对IGMPv3的报文则不进行处理,而是在VLAN/VSI内将其广播;
· 当IGMP Snooping的版本为3时,IGMP Snooping能够对IGMPv1、IGMPv2和IGMPv3的报文进行处理。
当IGMP Snooping的版本由版本3切换到版本2时,系统将清除所有通过动态加入的IGMP Snooping转发表项;对于在版本3下通过手工配置而静态加入的IGMP Snooping转发表项,则分为以下两种情况进行不同的处理:
· 如果配置的仅仅是静态加入组播组,而没有指定组播源,则这些转发表项将不会被清除;
· 如果配置的是指定了组播源的静态加入组播源组,则这些转发表项将会被清除,并且当再次切换回版本3时,这些转发表项将被重新恢复。有关静态加入的详细配置,请参见“1.7.2 配置静态成员端口”
(1) 进入系统视图。
system-view
(2) 进入IGMP-Snooping视图。
igmp-snooping
(3) 配置多个VLAN内的IGMP Snooping的版本。
version version-number vlan vlan-list
缺省情况下,VLAN内IGMP Snooping的版本为2。
(1) 进入系统视图。
system-view
(2) 进入VLAN视图。
vlan vlan-id
(3) 配置单个VLAN内的IGMP Snooping版本。
igmp-snooping version version-number
缺省情况下,VLAN内IGMP Snooping的版本为2。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 在VSI内配置IGMP Snooping的版本。
igmp-snooping version version-number
缺省情况下, VSI内IGMP Snooping的版本为2。
用户可以调整IGMP Snooping转发表项(包括动态表项和静态表项)的全局最大数量,当设备上维护的表项数量达到或超过最大数量后,系统不再创建新的表项,也不会主动删除多余表项,直至有表项被老化或被手工删除,所以当设备上维护的表项数量达到或超过最大数量后,为避免此后无法再创建新的表项,建议用户手工删除多余表项。
(1) 进入系统视图。
system-view
(2) 进入IGMP-Snooping视图。
igmp-snooping
(3) 配置IGMP Snooping转发表项的全局最大数量。
entry-limit limit
缺省情况下,IGMP Snooping转发表项的全局最大数量为4294967295。
合理配置IGMP特定组查询的最大响应时间,既可以使主机对IGMP查询报文做出快速响应,又可以减少由于定时器同时超时,造成大量主机同时发送报告报文而引起的网络拥塞。
二层设备所发送的IGMP特定组查询报文,其报文的最大响应时间字段由所配置的IGMP特定组查询报文的发送间隔来填充,在主机在收到IGMP特定组查询报文后,会为其所加入的该组播组启动一个定时器,定时器的值在0到最大响应时间(该时间值由主机从所收到的IGMP特定组查询报文的最大响应时间字段获得)中随机选定,当定时器的值减为0时,主机就会向该定时器对应的组播组发送IGMP成员关系报告报文。
(1) 进入系统视图。
system-view
(2) 进入IGMP-Snooping视图。
igmp-snooping
(3) 全局配置IGMP特定组查询报文的发送间隔。
last-member-query-interval interval
缺省情况下,IGMP特定组查询报文的发送间隔为1秒。
(1) 进入系统视图。
system-view
(2) 进入VLAN视图。
vlan vlan-id
(3) 在VLAN内配置IGMP特定组查询报文的发送间隔。
igmp-snooping last-member-query-interval interval
缺省情况下,IGMP特定组查询报文的发送间隔为1秒。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 在VSI内配置IGMP特定组查询报文的发送间隔。
igmp-snooping last-member-query-interval interval
缺省情况下,IGMP特定组查询报文的发送间隔为1秒。
对于动态路由器端口,如果在其老化时间内没有收到IGMP普遍组查询报文或者PIM Hello报文,二层设备将把该端口从动态路由器端口列表中删除。
对于动态成员端口,如果在其老化时间内没有收到该组播组的IGMP成员关系报告报文,二层设备将把该端口从该组播组所对应转发表项的出端口列表中删除。
请根据网络环境合理设置动态端口的老化时间,比如网络中组播组成员变动比较频繁,可以把动态成员端口老化时间设置小一些,避免一些无效表项老化时间过长。
如果动态路由器端口收到的是PIMv2 Hello报文,那么该端口的老化时间将由PIMv2 Hello报文所携带的参数决定,而不受本节配置的影响。
如果二层设备向动态成员端口主动发送IGMP特定组查询报文,则该端口的老化时间将根据该IGMP特定组查询报文进行调整,调整的老化时间为2×IGMP特定组查询报文的发送间隔。二层设备IGMP特定组查询报文发送间隔的配置,请参见“1.6.3 配置IGMP特定组查询报文的发送间隔”。
(1) 进入系统视图。
system-view
(2) 进入IGMP-Snooping视图。
igmp-snooping
(3) 全局配置动态路由器端口老化时间。
router-aging-time seconds
缺省情况下,动态路由器端口的老化时间为260秒。
(4) 全局配置动态成员端口老化时间。
host-aging-time seconds
缺省情况下,动态成员端口的老化时间为260秒。
(1) 进入系统视图。
system-view
(2) 进入VLAN视图。
vlan vlan-id
(3) 在VLAN内配置动态路由器端口老化时间。
igmp-snooping router-aging-time seconds
缺省情况下,动态路由器端口的老化时间为260秒。
(4) 在VLAN内配置动态成员端口老化时间。
igmp-snooping host-aging-time seconds
缺省情况下,动态成员端口的老化时间为260秒。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 在VSI内配置动态路由器端口老化时间。
igmp-snooping router-aging-time seconds
缺省情况下,动态路由器端口的老化时间为260秒。
(4) 在VSI内配置动态成员端口老化时间。
igmp-snooping host-aging-time seconds
缺省情况下,动态成员端口的老化时间为260秒。
如果某端口所连接的主机需要固定接收发往某组播组或组播源组的组播数据,可以配置该端口静态加入该组播组或组播源组,成为静态成员端口。静态成员端口不会对IGMP查询器发出的查询报文进行响应;当配置静态成员端口或取消静态成员端口的配置时,端口也不会主动发送IGMP成员关系报告报文或IGMP离开组报文。
(1) 进入系统视图。
system-view
(2) 进入二层接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 配置静态成员端口。
igmp-snooping static-group group-address [ source-ip source-address ] vlan vlan-id
缺省情况下,端口不是静态成员端口。
可以通过将二层设备上的端口配置为静态路由器端口,从而使二层设备上收到的所有组播数据可以通过该端口被转发出去。
(1) 进入系统视图。
system-view
(2) 进入二层接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 配置静态路由器端口。
igmp-snooping static-router-port vlan vlan-id
缺省情况下,端口不是静态路由器端口。
在二层设备的端口上配置了模拟主机加入后,该模拟主机就可以模仿真实的组播组成员主机,对IGMP查询器发出的查询报文进行响应,包括:
· 启动模拟主机时,该端口会主动发送一个IGMP成员关系报告报文。
· 在模拟主机的运行过程中,当收到IGMP查询报文时,该端口会响应一个IGMP成员关系报告报文。
· 停止模拟主机时,该端口会发送一个IGMP离开组报文。
在二层设备的端口上配置了模拟主机加入后,模拟主机所采用的IGMP版本与IGMP Snooping的版本一致,并且该端口将作为动态成员端口参与动态成员端口的老化过程。
(1) 进入系统视图。
system-view
(2) 进入二层接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 配置模拟主机加入。
igmp-snooping host-join group-address [ source-ip source-address ] vlan vlan-id
缺省情况下,未配置模拟主机加入组。
端口快速离开是指当端口收到主机发来的离开指定组播组的IGMP离开组报文时,直接将该端口从相应转发表项的出端口列表中删除。此后,二层设备不会向该端口发送或转发针对该组播组的IGMP特定组查询报文。
对于一个VLAN,只有当一个端口下只有一个接收者时,才建议配置本功能;否则,当一个端口下有多个接收者时,其中一个接收者的离开会触发该端口的快速离开,从而导致属于同一组播组的其它接收者无法收到组播数据。
(1) 进入系统视图。
system-view
(2) 进入IGMP-Snooping视图。
igmp-snooping
(3) 全局开启端口快速离开功能。
fast-leave [ vlan vlan-list ]
缺省情况下,端口快速离开功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入二层接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 在端口上开启端口快速离开功能。
igmp-snooping fast-leave [ vlan vlan-list ]
缺省情况下,端口快速离开功能处于关闭状态。
在组播用户接入网络中,用户主机在某些情况下(比如测试)也会发出IGMP普遍组查询报文或PIM Hello报文:
· 如果二层设备收到了某用户主机发来的IGMP普遍组查询报文或PIM Hello报文,那么接收报文的端口就将成为动态路由器端口,从而使VLAN内的所有组播报文都会向该端口转发,导致该主机收到大量无用的组播报文。
· 同时,用户主机发送IGMP普遍组查询报文或PIM Hello报文,也会影响该接入网络中三层设备上的组播路由协议状态(如影响IGMP查询器或DR的选举),严重时可能导致网络中断。
当禁止一个端口成为动态路由器端口后,即使该端口收到了IGMP普遍组查询报文或PIM Hello报文,该端口也不会成为动态路由器端口,从而能够有效解决上述问题,提高网络的安全性和对组播用户的控制能力。
禁止端口成为动态路由器端口的配置与静态路由器端口的配置互不影响。
(1) 进入系统视图。
system-view
(2) 进入二层接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 禁止端口成为动态路由器端口。
igmp-snooping router-port-deny [ vlan vlan-list ]
缺省情况下,端口可以成为动态路由器端口。
在运行了IGMP的组播网络中,会有一台三层组播设备充当IGMP查询器,负责发送IGMP查询报文,使三层组播设备能够在网络层建立并维护组播转发表项,从而在网络层正常转发组播数据。
但是,在一个没有三层组播设备的网络中,由于二层设备并不支持IGMP,因此无法实现IGMP查询器的相关功能。为了解决这个问题,可以在二层设备上开启IGMP Snooping查询器,使二层设备能够在数据链路层建立并维护组播转发表项,从而在数据链路层正常转发组播数据。
请避免在运行了IGMP的网络中配置IGMP Snooping查询器,因为尽管IGMP Snooping查询器并不参与IGMP查询器的选举,但在运行了IGMP的网络中,配置IGMP Snooping查询器不但没有实际的意义,反而可能会由于其发送的IGMP普遍组查询报文的源IP地址较小而影响IGMP查询器的选举。有关IGMP查询器的详细介绍,请参见“IP组播配置指导”中的“IGMP”。
在VSI/VXLAN组网中,由于VSI内IGMP Snooping查询器发送查询报文不携带VLAN Tag,所以不建议在携带VLAN Tag的Ethernet接入模式下配置IGMP Snooping查询器,有关Ethernet接入模式的详细介绍,请参见“VXLAN配置指导”中的“接入模式”。
(1) 进入系统视图。
system-view
(2) 进入VLAN视图。
vlan vlan-id
(3) 开启IGMP Snooping查询器。
igmp-snooping querier
缺省情况下,IGMP Snooping查询器处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 开启IGMP Snooping查询器。
igmp-snooping querier
缺省情况下,IGMP Snooping查询器处于关闭状态。
可以根据网络的实际情况来修改IGMP普遍组查询报文的发送间隔。
合理配置IGMP普遍组查询的最大响应时间,既可以使主机对IGMP查询报文做出快速响应,又可以减少由于定时器同时超时,造成大量主机同时发送报告报文而引起的网络拥塞。
对于IGMP普遍组查询报文,其报文最大响应时间字段由所配置的IGMP普遍组查询的最大响应时间来填充,在主机收到IGMP普遍组查询报文后,会为其所加入的每个组播组都启动一个定时器,定时器的值在0到最大响应时间(该时间值由主机从所收到的IGMP普遍组查询报文的最大响应时间字段获得)中随机选定,当定时器的值减为0时,主机就会向该定时器对应的组播组发送IGMP成员关系报告报文。
为避免误删组播组成员,请确保IGMP普遍组查询报文的发送间隔大于IGMP普遍组查询的最大响应时间,否则配置虽能生效但系统会给出提示。
(1) 进入系统视图。
system-view
(2) 进入IGMP-Snooping视图。
igmp-snooping
(3) 全局配置IGMP普遍组查询的最大响应时间。
max-response-time seconds
缺省情况下,IGMP普遍组查询的最大响应时间为10秒。
(1) 进入系统视图。
system-view
(2) 进入VLAN视图。
vlan vlan-id
(3) 在VLAN内配置IGMP普遍组查询报文的发送间隔。
igmp-snooping query-interval interval
缺省情况下,IGMP普遍组查询报文的发送间隔为125秒。
(4) 在VLAN内配置IGMP普遍组查询的最大响应时间。
igmp-snooping max-response-time seconds
缺省情况下,IGMP普遍组查询的最大响应时间为10秒。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vlan vlan-id
(3) 在VSI内配置IGMP普遍组查询报文的发送间隔。
igmp-snooping query-interval interval
缺省情况下,IGMP普遍组查询报文的发送间隔为125秒。
(4) 在VSI内配置IGMP普遍组查询的最大响应时间。
igmp-snooping max-response-time seconds
缺省情况下,IGMP普遍组查询的最大响应时间为10秒。
system-view
(2) 进入VLAN视图。
vlan vlan-id
(3) 在VLAN内开启IGMP Snooping Proxy功能。
igmp-snooping proxy enable
缺省情况下,VLAN内的IGMP Snooping Proxy功能处于关闭状态。
由于IGMP Snooping查询器有可能发出源IP地址为0.0.0.0的查询报文,而收到此类查询报文的端口将不会被维护为动态路由器端口,从而影响动态IGMP Snooping转发表项的建立,最终导致组播数据无法正常转发。因此,用户可在IGMP Snooping查询器上通过本配置将IGMP查询报文的源IP地址配置为一个有效的IP地址以避免上述问题。IGMP查询报文源IP地址的改变可能会影响网段内IGMP查询器的选举。
用户也可以通过本配置改变模拟主机或IGMP Snooping代理发送的IGMP成员关系报告报文或IGMP离开组报文的源IP地址。
(1) 进入系统视图。
system-view
(2) 进入VLAN视图。
vlan vlan-id
(3) 配置IGMP普遍组查询报文的源IP地址。
igmp-snooping general-query source-ip ip-address
缺省情况下,IGMP普遍组查询报文的源IP地址为当前VLAN接口的IP地址;若当前VLAN接口没有IP地址,则采用0.0.0.0。
(4) 配置IGMP特定组查询报文的源IP地址。
igmp-snooping special-query source-ip ip-address
缺省情况下,以收到过IGMP普遍组查询报文的源IP地址作为IGMP特定组查询报文的源IP地址;否则,采用VLAN绑定的VLAN接口的IP地址;若该VLAN接口没有IP地址,则采用0.0.0.0。
(5) 配置IGMP成员关系报告报文的源IP地址。
igmp-snooping report source-ip ip-address
缺省情况下,IGMP成员关系报告报文的源IP地址为当前VLAN接口的IP地址;若当前VLAN接口没有IP地址,则采用0.0.0.0。
(6) 配置IGMP离开组报文的源IP地址。
igmp-snooping leave source-ip ip-address
缺省情况下,IGMP离开组报文的源IP地址为当前VLAN接口的IP地址;若当前VLAN接口没有IP地址,则采用0.0.0.0。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 配置IGMP普遍组查询报文的源IP地址。
igmp-snooping general-query source-ip ip-address
缺省情况下,IGMP普遍组查询报文的源IP地址为VSI绑定的VSI接口的IP地址;若绑定的VSI接口没有IP地址,则采用0.0.0.0。
(4) 配置IGMP特定组查询报文的源IP地址。
igmp-snooping special-query source-ip ip-address
缺省情况下,以收到过IGMP普遍组查询报文的源IP地址作为IGMP特定组查询报文的源IP地址;否则,采用VSI绑定的VSI接口的IP地址;若该VSI接口没有IP地址,则采用0.0.0.0。
(5) 配置IGMP成员关系报告报文的源IP地址。
igmp-snooping report source-ip ip-address
缺省情况下,IGMP成员关系报告报文的源IP地址为VSI绑定的VSI接口的IP地址;若绑定的VSI接口没有IP地址,则采用0.0.0.0。
(6) 配置IGMP离开组报文的源IP地址。
igmp-snooping leave source-ip ip-address
缺省情况下,IGMP离开组报文的源IP地址为VSI绑定的VSI接口的IP地址;若绑定的VSI接口没有IP地址,则采用0.0.0.0。
在使能了IGMP Snooping的二层设备上,通过配置组播组过滤器,可以限制用户对组播节目的点播。本配置只对动态组播组有效,对静态组播组无效。
在实际应用中,当用户点播某个组播节目时,主机会发起一个IGMP成员关系报告报文,该报文将在二层设备上接受组播组过滤器的检查,只有通过了检查,二层设备才会将该主机所属的端口加入到出端口列表中,从而达到控制用户点播组播节目的目的。
(1) 进入系统视图。
system-view
(2) 进入IGMP-Snooping视图。
igmp-snooping
(3) 全局配置组播组过滤器。
group-policy ipv4-acl-number [ vlan vlan-list ]
缺省情况下,未配置组播组过滤器,即主机可以加入任意合法的组播组。
(1) 进入系统视图。
system-view
(2) 进入二层接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 在端口上配置组播组过滤器。
igmp-snooping group-policy ipv4-acl-number [ vlan vlan-list ]
缺省情况下,未配置组播组过滤器,即主机可以加入任意合法的组播组。
通过配置组播数据报文源端口过滤功能,可以允许或禁止端口作为组播源端口:
· 开启该功能后,端口不能连接组播源,因为该端口将过滤掉所有的组播数据报文(但允许组播协议报文通过),因此只能连接组播数据接收者。
· 关闭该功能后,端口既能连接组播源,也能连接组播数据接收者。
配置组播数据报文源端口过滤在全局配置或在端口上配置的优先级相同,最新配置生效。
仅CSPC类单板(CSPC-GE16XP4L-E、CSPC-GE24L-E和CSPC-GP24GE8XP2L-E除外)或CMPE-1104单板支持本功能。
(1) 进入系统视图。
system-view
(2) 进入IGMP-Snooping视图。
igmp-snooping
(3) 开启指定端口的组播数据报文源端口过滤功能。
source-deny port interface-list
缺省情况下,组播数据报文源端口过滤功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入二层以太网接口视图。
interface interface-type interface-number
(3) 开启当前端口的组播数据报文源端口过滤功能。
igmp-snooping source-deny
缺省情况下,组播数据报文源端口过滤功能处于关闭状态。
未知组播数据报文是指在IGMP Snooping转发表中不存在对应转发表项的那些组播数据报文:
· 当开启了丢弃未知组播数据报文功能时,二层设备将丢弃所有收到的未知组播数据报文;
· 当关闭了丢弃未知组播数据报文功能时,二层设备将在未知组播数据报文所属的VLAN内广播该报文。
(1) 进入系统视图。
system-view
(2) 进入VLAN视图。
vlan vlan-id
(3) 在VLAN内开启丢弃未知组播数据报文功能。
igmp-snooping drop-unknown
缺省情况下,丢弃未知组播数据报文功能处于关闭状态,即对未知组播数据报文进行广播。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 在VSI内开启丢弃未知组播数据报文功能。
igmp-snooping drop-unknown
缺省情况下,丢弃未知组播数据报文功能处于关闭状态,即对未知组播数据报文进行广播。
当二层设备收到来自某组播组成员的IGMP成员关系报告报文时,会将该报文转发给与其直连的三层设备。这样,当二层设备上存在属于某组播组的多个成员时,与其直连的三层设备会收到这些成员发送的相同IGMP成员关系报告报文。
当开启了IGMP成员关系报告报文抑制功能后,在一个查询间隔内二层设备只会把收到的某组播组内的第一个IGMP成员关系报告报文转发给三层设备,而不继续向三层设备转发来自同一组播组的其它IGMP成员关系报告报文,这样可以减少网络中的报文数量。
(1) 进入系统视图。
system-view
(2) 进入IGMP-Snooping视图。
igmp-snooping
(3) 开启IGMP成员关系报告报文抑制功能。
report-aggregation
缺省情况下,IGMP成员关系报告报文抑制功能处于开启状态。
通过配置端口加入的组播组最大数量,可以限制用户点播组播节目的数量,从而控制了端口上的数据流量。本配置只对动态组播组有效,对静态组播组无效。
在配置端口加入的组播组最大数量时,如果当前端口上的组播组数量已超过配置值,系统将把该端口相关的所有转发表项从IGMP Snooping转发表中删除,该端口下的主机都需要重新加入组播组,直至该端口上的组播组数量达到限制值,系统将自动丢弃新的IGMP成员关系报告报文。
(1) 进入系统视图。
system-view
(2) 进入二层接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 配置端口加入的组播组最大数量。
igmp-snooping group-limit limit [ vlan vlan-list ]
缺省情况下,未对端口加入的组播组最大数量进行限制。
当端口上的组播组数目超过配置端口加入的组播组最大数量时,会自动丢弃新的IGMP成员关系报告报文。组播组替换功能开启后,当端口收到新的IGMP成员关系报告报文时,会自动离开IP地址最小的组播组并加入新的组播组。本功能主要应用于频道切换,以实现从一个组播组切换到另一个组播组。
本配置只对动态组播组有效,对静态组播组无效。
当设备上维护的IGMP Snooping转发表项达到配置的IGMP Snooping转发表项的全局最大数量并且端口新加入的组播组不在设备维护的组播组列表中时,组播组替换功能不能生效。
(1) 进入系统视图。
system-view
(2) 进入IGMP-Snooping视图。
igmp-snooping
(3) 全局开启组播组替换功能。
overflow-replace [ vlan vlan-list ]
缺省情况下,组播组替换功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入二层接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 在端口上开启组播组替换功能。
igmp-snooping overflow-replace [ vlan vlan-list ]
缺省情况下,组播组替换功能处于关闭状态。
通过开启IGMP Snooping主机跟踪功能,可以使二层设备能够记录正在接收组播数据的成员主机信息(包括主机的IP地址、加入组播组的运行时长和超时剩余时间等),以便于网络管理员对这些主机进行监控和管理。
用户在IGMP-Snooping视图下的全局配置不会对VSI生效。
(1) 进入系统视图。
system-view
(2) 进入IGMP-Snooping视图。
igmp-snooping
(3) 全局开启IGMP Snooping主机跟踪功能。
host-tracking
缺省情况下,IGMP Snooping主机跟踪功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入VLAN视图。
vlan vlan-id
(3) 在VLAN内开启IGMP Snooping主机跟踪功能。
igmp-snooping host-tracking
缺省情况下,IGMP Snooping主机跟踪功能处于关闭状态。
在完成上述配置后,在任意视图下执行display命令可以显示配置后IGMP Snooping的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除IGMP Snooping的信息。
表1-2 IGMP Snooping显示和维护
命令 |
|
显示IGMP Snooping的状态信息 |
display igmp-snooping [ global | vlan vlan-id | vsi vsi-name ] |
显示动态IGMP Snooping组播组的信息(独立运行模式) |
display igmp-snooping group [ group-address | source-address ] * [ vlan vlan-id | vsi vsi-name ] [ verbose ] [ slot slot-number ] |
显示动态IGMP Snooping组播组的信息(IRF模式) |
display igmp-snooping group [ group-address | source-address ] * [ vlan vlan-id | vsi vsi-name ] [ verbose ] [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
显示IGMP Snooping主机跟踪信息(独立运行模式) |
display igmp-snooping host-tracking vlan vlan-id group group-address [ source source-address ] [ slot slot-number [ cpu cpu-number ] ] |
显示IGMP Snooping主机跟踪信息(IRF模式) |
display igmp-snooping host-tracking vlan vlan-id group group-address [ source source-address ] [ chassis chassis-number slot slot-number[ cpu cpu-number ] ] |
显示动态路由器端口的信息(独立运行模式) |
display igmp-snooping router-port [ verbose | vlan vlan-id | vsi vsi-name [ verbose ] ] [ slot slot-number [ cpu cpu-number ] ] |
显示动态路由器端口的信息(IRF模式) |
display igmp-snooping router-port [ verbose | vlan vlan-id | vsi vsi-name [ verbose ] ] [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
显示静态IGMP Snooping组播组的信息(独立运行模式) |
display igmp-snooping static-group [ group-address | source-address ] * [ vlan vlan-id ] [ verbose ] [ slot slot-number ] |
显示静态IGMP Snooping组播组的信息(IRF模式) |
display igmp-snooping static-group [ group-address | source-address ] * [ vlan vlan-id ] [ verbose ] [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
显示静态路由器端口的信息(独立运行模式) |
display igmp-snooping static-router-port [ vlan vlan-id ] [ slot slot-number [ cpu cpu-number ] ] |
显示静态路由器端口的信息(IRF模式) |
display igmp-snooping static-router-port [ vlan vlan-id ] [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
显示IGMP Snooping监听到的IGMP报文和PIM hello报文的统计信息 |
display igmp-snooping statistics |
显示二层组播的IP组播组信息(独立运行模式) |
display l2-multicast ip [ group group-address | source source-address ] * [ vlan vlan-id | vsi vsi-name ] [ slot slot-number [ cpu cpu-number ] ] |
显示二层组播的IP组播组信息(IRF模式) |
display l2-multicast ip [ group group-address | source source-address ] * [ vlan vlan-id | vsi vsi-name ] [ chassis chassis-number slot slot-number[ cpu cpu-number ] ] |
显示二层组播的IP转发表信息(独立运行模式) |
display l2-multicast ip forwarding [ group group-address | source source-address ] * [ vlan vlan-id | vsi vsi-name ] [ slot slot-number [ cpu cpu-number ] ] |
显示二层组播的IP转发表信息(IRF模式) |
display l2-multicast ip forwarding [ group group-address | source source-address ] * [ vlan vlan-id | vsi vsi-name ] [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
显示二层组播的MAC组播组信息(独立运行模式) |
display l2-multicast mac [ mac-address ] [ vlan vlan-id | vsi vsi-name ] [ slot slot-number [ cpu cpu-number ] ] |
显示二层组播的MAC组播组信息(IRF模式) |
display l2-multicast mac [ mac-address ] [ vlan vlan-id | vsi vsi-name ] [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
显示二层组播的MAC转发表信息(独立运行模式) |
display l2-multicast mac forwarding [ mac-address ] [ vlan vlan-id | vsi vsi-name ] [ slot slot-number [ cpu cpu-number ] ] |
显示二层组播的MAC转发表信息(IRF模式) |
display l2-multicast mac forwarding [ mac-address ] [ vlan vlan-id | vsi vsi-name ] [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
清除动态IGMP Snooping组播组的信息 |
reset igmp-snooping group { group-address [ source-address ] | all } [ vlan vlan-id | vsi vsi-name ] |
清除动态路由器端口的信息 |
reset igmp-snooping router-port { all | vlan vlan-id | vsi vsi-name } |
清除IGMP Snooping监听到的IGMP报文和PIM hello报文的统计信息 |
reset igmp-snooping statistics |
· 如图1-4所示,Router A通过GigabitEthernet3/1/2接口连接组播源(Source),通过GigabitEthernet3/1/1接口连接Device A;Router A上运行IGMPv2,Device A上运行版本2的IGMP Snooping,并由Router A充当IGMP查询器。
· 通过配置,使Host A和Host B能且只能接收发往组播组224.1.1.1的组播数据,并且当Host A和Host B发生意外而临时中断接收组播数据时,发往组播组224.1.1.1组播数据也能不间断地通过Device A的接口GigabitEthernet3/1/3和GigabitEthernet3/1/4转发出去;同时,使Device A将收到的未知组播数据直接丢弃,避免在其所属的VLAN 100内广播。
图1-4 基于VLAN的组策略及模拟主机加入配置组网图
请按照图1-4配置各接口的IP地址和子网掩码,具体配置过程略。
(2) 配置Router A
# 使能IP组播路由,在接口GigabitEthernet3/1/2上使能PIM-DM,并在接口GigabitEthernet3/1/1上使能IGMP。
<RouterA> system-view
[RouterA] multicast routing
[RouterA-mrib] quit
[RouterA] interface gigabitethernet 3/1/1
[RouterA-GigabitEthernet3/1/1] igmp enable
[RouterA-GigabitEthernet3/1/1] quit
[RouterA] interface gigabitethernet 3/1/2
[RouterA-GigabitEthernet3/1/2] pim dm
[RouterA-GigabitEthernet3/1/2] quit
(3) 配置Device A
# 全局使能IGMP Snooping。
<DeviceA> system-view
[DeviceA] igmp-snooping
[DeviceA-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet3/1/1到GigabitEthernet3/1/4添加到该VLAN中;在该VLAN内使能IGMP Snooping,并开启丢弃未知组播数据报文功能。
[DeviceA] vlan 100
[DeviceA-vlan100] port gigabitethernet 3/1/1 to gigabitethernet 3/1/4
[DeviceA-vlan100] igmp-snooping enable
[DeviceA-vlan100] igmp-snooping drop-unknown
[DeviceA-vlan100] quit
# 配置组播组过滤器,以限定VLAN 100内的主机只能加入组播组224.1.1.1。
[DeviceA] acl basic 2001
[DeviceA-acl-ipv4-basic-2001] rule permit source 224.1.1.1 0
[DeviceA-acl-ipv4-basic-2001] quit
[DeviceA] igmp-snooping
[DeviceA-igmp-snooping] group-policy 2001 vlan 100
[DeviceA-igmp-snooping] quit
# 在GigabitEthernet3/1/3和GigabitEthernet3/1/4上分别配置模拟主机加入组播组224.1.1.1。
[DeviceA] interface gigabitethernet 3/1/3
[DeviceA-GigabitEthernet3/1/3] igmp-snooping host-join 224.1.1.1 vlan 100
[DeviceA-GigabitEthernet3/1/3] quit
[DeviceA] interface gigabitethernet 3/1/4
[DeviceA-GigabitEthernet3/1/4] igmp-snooping host-join 224.1.1.1 vlan 100
[DeviceA-GigabitEthernet3/1/4] quit
假设组播源分别向组播组224.1.1.1和224.2.2.2发送的组播数据,Host A和Host B也都申请加入这两个组播组。
# 显示Device A上VLAN 100内动态IGMP Snooping组播组的信息。
[DeviceA] display igmp-snooping group vlan 100
Total 1 entries.
VLAN 100: Total 1 entries.
(0.0.0.0, 224.1.1.1)
Host slots (0 in total):
Host ports (2 in total):
GE3/1/3 (00:03:23)
GE3/1/4 (00:04:10)
由此可见,Host A和Host B所在的端口GigabitEthernet3/1/4和GigabitEthernet3/1/3均已加入组播组224.1.1.1,但都未加入组播组224.2.2.2,这表明组播组过滤器已生效。
· 如图1-5所示,Router A通过GigabitEthernet3/1/2接口连接组播源(Source),通过GigabitEthernet3/1/1接口连接Device A;Router A上运行IGMPv2,Device A、Device B和Device C上都运行版本2的IGMP Snooping,并由Router A充当IGMP查询器。
· Host A和Host C均为组播组224.1.1.1的固定接收者(Receiver),通过将Device C上的端口GigabitEthernet3/1/3和GigabitEthernet3/1/5配置为组播组224.1.1.1的静态成员端口,可以增强组播数据在传输过程中的可靠性。
· 假设由于受STP等链路层协议的影响,为了避免出现环路,Device A—Device C的转发路径在正常情况下是阻断的,组播数据只能通过Device A—Device B—Device C的路径传递给连接在Device C上的接收者;要求通过将Device A的端口GigabitEthernet3/1/3配置为静态路由器端口,以保证当Device A—Device B—Device C的路径出现阻断时,组播数据可以几乎不间断地通过Device A—Device C的新路径传递给接收者。
如果没有配置静态路由器端口,那么当Device A—Device B—Device C的路径出现阻断时,至少需要等待一个IGMP查询和响应周期完成后,组播数据才能通过Device A—Device C的新路径传递给接收者,组播数据的传输在这个过程中将中断。
有关STP(Spanning Tree Protocol,生成树协议)的详细介绍,请参见“二层技术-以太网交换配置指导”中的“生成树”。
图1-5 基于VLAN的静态端口配置组网图
(1) 配置IP地址
请按照图1-5配置各接口的IP地址和子网掩码,具体配置过程略。
(2) 配置Router A
# 使能IP组播路由,在接口GigabitEthernet3/1/2上使能PIM-DM,并在接口GigabitEthernet3/1/1上使能IGMP。
<RouterA> system-view
[RouterA] multicast routing
[RouterA-mrib] quit
[RouterA] interface gigabitethernet 3/1/1
[RouterA-GigabitEthernet3/1/1] igmp enable
[RouterA-GigabitEthernet3/1/1] quit
[RouterA] interface gigabitethernet 3/1/2
[RouterA-GigabitEthernet3/1/2] pim dm
[RouterA-GigabitEthernet3/1/2] quit
(3) 配置Device A
# 全局使能IGMP Snooping。
<DeviceA> system-view
[DeviceA] igmp-snooping
[DeviceA-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet3/1/1到GigabitEthernet3/1/3添加到该VLAN中,并在该VLAN内使能IGMP Snooping。
[DeviceA] vlan 100
[DeviceA-vlan100] port gigabitethernet 3/1/1 to gigabitethernet 3/1/3
[DeviceA-vlan100] igmp-snooping enable
[DeviceA-vlan100] quit
# 把GigabitEthernet3/1/3配置为静态路由器端口。
[DeviceA] interface gigabitethernet 3/1/3
[DeviceA-GigabitEthernet3/1/3] igmp-snooping static-router-port vlan 100
[DeviceA-GigabitEthernet3/1/3] quit
(4) 配置Device B
# 全局使能IGMP Snooping。
<DeviceB> system-view
[DeviceB] igmp-snooping
[DeviceB-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet3/1/1和GigabitEthernet3/1/2添加到该VLAN中,并在该VLAN内使能IGMP Snooping。
[DeviceB] vlan 100
[DeviceB-vlan100] port gigabitethernet 3/1/1 gigabitethernet 3/1/2
[DeviceB-vlan100] igmp-snooping enable
[DeviceB-vlan100] quit
(5) 配置Device C
# 全局使能IGMP Snooping。
<DeviceC> system-view
[DeviceC] igmp-snooping
[DeviceC-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet3/1/1到GigabitEthernet3/1/5添加到该VLAN中,并在该VLAN内使能IGMP Snooping。
[DeviceC] vlan 100
[DeviceC-vlan100] port gigabitethernet 3/1/1 to gigabitethernet 3/1/5
[DeviceC-vlan100] igmp-snooping enable
[DeviceC-vlan100] quit
# 分别在端口GigabitEthernet3/1/3和GigabitEthernet3/1/5上配置静态加入组播组224.1.1.1。
[DeviceC] interface gigabitethernet 3/1/3
[DeviceC-GigabitEthernet3/1/3] igmp-snooping static-group 224.1.1.1 vlan 100
[DeviceC-GigabitEthernet3/1/3] quit
[DeviceC] interface gigabitethernet 3/1/5
[DeviceC-GigabitEthernet3/1/5] igmp-snooping static-group 224.1.1.1 vlan 100
[DeviceC-GigabitEthernet3/1/5] quit
# 显示Device A上VLAN 100内静态路由器端口的信息。
[DeviceA] display igmp-snooping static-router-port vlan 100
VLAN 100:
Router slots (0 in total):
Router ports (1 in total):
GE3/1/3
由此可见,Device A上的端口GigabitEthernet3/1/3已经成为了静态路由器端口。
# 显示Device C上VLAN 100内静态IGMP Snooping组播组的信息。
[DeviceC] display igmp-snooping static-group vlan 100
Total 1 entries.
VLAN 100: Total 1 entries.
(0.0.0.0, 224.1.1.1)
Host slots (0 in total):
Host ports (2 in total):
GE3/1/3
GE3/1/5
由此可见,Device C上的端口GigabitEthernet3/1/3和GigabitEthernet3/1/5已经成为了组播组224.1.1.1的静态成员端口。
· 如图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的接收者;所有接收者均使用IGMPv2,所有设备上都运行版本2的IGMP Snooping,并选择距组播源较近的Device A来充当IGMP Snooping查询器。
· 为防止设备在没有二层组播转发表项时将组播数据在VLAN内广播,在所有设备上都开启丢弃未知组播数据报文功能;同时,由于设备不会将收到源IP地址为0.0.0.0的IGMP查询报文的端口设置为动态路由器端口,从而会影响二层组播转发表项的建立并导致组播数据无法正常转发,因此需要将IGMP查询报文的源IP地址配置为非0.0.0.0以避免此问题。
图1-6 基于VLAN的IGMP Snooping查询器配置组网图
(1) 配置Device A
# 全局使能IGMP Snooping。
<DeviceA> system-view
[DeviceA] igmp-snooping
[DeviceA-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet3/1/1到GigabitEthernet3/1/3添加到该VLAN中;在该VLAN内使能IGMP Snooping,并开启丢弃未知组播数据报文功能。
[DeviceA] vlan 100
[DeviceA-vlan100] port gigabitethernet 3/1/1 to gigabitethernet 3/1/3
[DeviceA-vlan100] igmp-snooping enable
[DeviceA-vlan100] igmp-snooping drop-unknown
# 在VLAN 100内开启IGMP Snooping查询器。
[DeviceA-vlan100] igmp-snooping querier
[DeviceA-vlan100] quit
# 在VLAN 100内将IGMP普遍组查询和特定组查询报文的源IP地址均配置为192.168.1.1。
[DeviceA-vlan100] igmp-snooping general-query source-ip 192.168.1.1
[DeviceA-vlan100] igmp-snooping special-query source-ip 192.168.1.1
[DeviceA-vlan100] quit
(2) 配置Device B
# 全局使能IGMP Snooping。
<DeviceB> system-view
[DeviceB] igmp-snooping
[DeviceB-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet3/1/1到GigabitEthernet3/1/4添加到该VLAN中;在该VLAN内使能IGMP Snooping,并开启丢弃未知组播数据报文功能。
[DeviceB] vlan 100
[DeviceB-vlan100] port gigabitethernet 3/1/1 to gigabitethernet 3/1/4
[DeviceB-vlan100] igmp-snooping enable
[DeviceB-vlan100] igmp-snooping drop-unknown
[DeviceB-vlan100] quit
(3) 配置Device C
# 全局使能IGMP Snooping。
<DeviceC> system-view
[DeviceC] igmp-snooping
[DeviceC-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet3/1/1到GigabitEthernet3/1/3添加到该VLAN中;在该VLAN内使能IGMP Snooping,并开启丢弃未知组播数据报文功能。
[DeviceC] vlan 100
[DeviceC-vlan100] port gigabitethernet 3/1/1 to gigabitethernet 3/1/3
[DeviceC-vlan100] igmp-snooping enable
[DeviceC-vlan100] igmp-snooping drop-unknown
[DeviceC-vlan100] quit
(4) 配置Device D
# 全局使能IGMP Snooping。
<DeviceD> system-view
[DeviceD] igmp-snooping
[DeviceD-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet3/1/1到GigabitEthernet3/1/2添加到该VLAN中;在该VLAN内使能IGMP Snooping,并开启丢弃未知组播数据报文功能。
[DeviceD] vlan 100
[DeviceD-vlan100] port gigabitethernet 3/1/1 to gigabitethernet 3/1/2
[DeviceD-vlan100] igmp-snooping enable
[DeviceD-vlan100] igmp-snooping drop-unknown
[DeviceD-vlan100] quit
当IGMP Snooping查询器开始工作之后,除查询器以外的所有设备都能收到IGMP普遍组查询报文。
# 显示Device B上收到的IGMP报文的统计信息。
[DeviceB] 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 PIMv2 hello: 0
Received error IGMP messages: 0
· 如图1-7所示,Router A通过GigabitEthernet3/1/2接口连接组播源(Source),通过GigabitEthernet3/1/1接口连接Device A;Router A上运行IGMPv2,Device A上运行版本2的IGMP Snooping,并由Router A充当IGMP查询器。
· 通过配置,使Device A能够代理下游主机向Router A发送的IGMP报告报文和离开报文,以及响应Router A发来的IGMP查询报文并向下游主机转发。
图1-7 基于VLAN的IGMP Snooping Proxy配置组网图
(1) 配置IP地址
请按照图1-7配置各接口的IP地址和子网掩码,具体配置过程略。
(2) 配置Router A
# 使能IP组播路由,在接口GigabitEthernet3/1/2上使能PIM-DM,并在接口GigabitEthernet3/1/1上使能IGMP。
<RouterA> system-view
[RouterA] multicast routing
[RouterA-mrib] quit
[RouterA] interface gigabitethernet 3/1/1
[RouterA-GigabitEthernet3/1/1] igmp enable
[RouterA-GigabitEthernet3/1/1] pim dm
[RouterA-GigabitEthernet3/1/1] quit
[RouterA] interface gigabitethernet 3/1/2
[RouterA-GigabitEthernet3/1/2] pim dm
[RouterA-GigabitEthernet3/1/2] quit
(3) 配置Device A
# 全局使能IGMP Snooping。
<DeviceA> system-view
[DeviceA] igmp-snooping
[DeviceA-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet3/1/1到GigabitEthernet3/1/4添加到该VLAN中;在该VLAN内使能IGMP Snooping,并使能IGMP Snooping Proxy。
[DeviceA] vlan 100
[DeviceA-vlan100] port gigabitethernet 3/1/1 to gigabitethernet 3/1/4
[DeviceA-vlan100] igmp-snooping enable
[DeviceA-vlan100] igmp-snooping proxy enable
[DeviceA-vlan100] quit
当配置完成后,Host A和Host B分别发送组地址为224.1.1.1的IGMP加入报文,Device A收到该报文后通过其路由器端口GigabitEthernet3/1/1向Router A也发送该组的加入报文。通过使用display igmp-snooping group和display igmp group命令可以分别查看IGMP Snooping组和IGMP组的信息,例如:
# 查看Device A上IGMP Snooping组播组的信息。
[DeviceA] display igmp-snooping group
Total 1 entries.
VLAN 100: Total 1 entries.
(0.0.0.0, 224.1.1.1)
Host ports (2 in total):
GE3/1/3 (00:04:00)
GE3/1/4 (00:04:04)
# 查看Router A上IGMP组的信息。
[RouterA] display igmp group
IGMP groups in total: 1
GigabitEthernet3/1/1(10.1.1.1):
IGMP groups reported in total: 1
Group address Last reporter Uptime Expires
224.1.1.1 0.0.0.0 00:00:31 00:02:03
当Host A离开组播组224.1.1.1时,向Device A发送该组的IGMP离开报文,但由于Host B仍未离开该组,因此Device A并不会删除该组,也不会向Router A发送该组的离开报文,只是在该组对应转发表项的成员端口列表中将端口GigabitEthernet3/1/4删除。通过使用display igmp-snooping group命令可以查看IGMP Snooping组的信息,例如:
# 查看Device A上IGMP Snooping组播组的信息。
[DeviceA] display igmp-snooping group
Total 1 entries.
VLAN 100: Total 1 entries.
(0.0.0.0, 224.1.1.1)
Host ports (1 in total):
GE3/1/3 ( 00:01:23 )
· 如图1-8所示,VPN a中有三个站点,各站点之间通过VPLS网络互连。
· 站点1中的组播源(Source)、站点2中的组播接收者(Receiver)Host A和站点3中的普通主机Host B均通过VLAN 100分别与CE 1、CE 2和CE 3相连。
· 通过配置,在VPLS网络中实现二层组播转发。
图1-8 基于VSI的IGMP Snooping配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
PE 1 |
Vlan-int101 |
10.110.1.1/24 |
PE 3 |
Vlan-int102 |
10.110.2.2/24 |
|
Vlan-int102 |
10.110.2.1/24 |
|
Vlan-int103 |
10.110.3.2/24 |
|
Loop0 |
1.1.1.1/32 |
|
Loop0 |
3.3.3.3/32 |
PE 2 |
Vlan-int101 |
10.110.1.2/24 |
|
|
|
|
Vlan-int103 |
10.110.3.1/24 |
|
|
|
|
Loop0 |
2.2.2.2/32 |
|
|
|
(1) 配置IP地址和单播路由协议
请按照图1-8在VPLS网络中配置各接口的IP地址和子网掩码,并在VPLS网络内的各设备上配置OSPF协议,具体配置过程略。
(2) 配置CE 1
# 全局使能IGMP Snooping。
<CE1> system-view
[CE1] igmp-snooping
[CE1-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet3/1/2添加到该VLAN中;在该VLAN内使能IGMP Snooping,并开启丢弃未知组播数据报文功能。
[CE1] vlan 100
[CE1-vlan100] port gigabitethernet 3/1/2
[CE1-vlan100] igmp-snooping enable
[CE1-vlan100] igmp-snooping drop-unknown
# 配置端口GigabitEthernet3/1/1为Trunk模式,并允许VLAN 100报文通过。
[CE1] interface gigabitethernet 3/1/1
[CE1-GigabitEthernet3/1/1] port link-type trunk
[CE1-GigabitEthernet3/1/1] port trunk permit vlan 100
[CE1-GigabitEthernet3/1/1] quit
# 在VLAN 100内使能IGMP Snooping查询器,并将IGMP普遍组查询和特定组查询报文的源IP地址均设置为192.168.1.100。
[CE1-vlan100] igmp-snooping querier
[CE1-vlan100] igmp-snooping general-query source-ip 192.168.1.100
[CE1-vlan100] igmp-snooping special-query source-ip 192.168.1.100
(3) 配置CE 2
# 全局使能IGMP Snooping。
<CE2> system-view
[CE2] igmp-snooping
[CE2-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet3/1/2添加到该VLAN中;在该VLAN内使能IGMP Snooping,并开启丢弃未知组播数据报文功能。
[CE2] vlan 100
[CE2-vlan100] port gigabitethernet 3/1/2
[CE2-vlan100] igmp-snooping enable
[CE2-vlan100] igmp-snooping drop-unknown
# 配置端口GigabitEthernet3/1/1为Trunk模式,并允许VLAN 100报文通过。
[CE2] interface gigabitethernet 3/1/1
[CE2-GigabitEthernet3/1/1] port link-type trunk
[CE2-GigabitEthernet3/1/1] port trunk permit vlan 100
[CE2-GigabitEthernet3/1/1] quit
(4) 配置CE 3
# 全局使能IGMP Snooping。
<CE3> system-view
[CE3] igmp-snooping
[CE3-igmp-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet3/1/2添加到该VLAN中;在该VLAN内使能IGMP Snooping,并开启丢弃未知组播数据报文功能。
[CE3] vlan 100
[CE3-vlan100] port gigabitethernet 3/1/2
[CE3-vlan100] igmp-snooping enable
[CE3-vlan100] igmp-snooping drop-unknown
# 配置端口GigabitEthernet3/1/1为Trunk模式,并允许VLAN 100报文通过。
[CE3] interface gigabitethernet 3/1/1
[CE3-GigabitEthernet3/1/1] port link-type trunk
[CE3-GigabitEthernet3/1/1] port trunk permit vlan 100
[CE3-GigabitEthernet3/1/1] quit
(5) 配置PE 1
# 配置本节点的LSR ID为1.1.1.1,并使能L2VPN功能和LDP能力。
<PE1> system-view
[PE1] mpls lsr-id 1.1.1.1
[PE1] l2vpn enable
[PE1] mpls ldp
[PE1-ldp] quit
# 在接口Vlan-interface101和Vlan-interface102上分别使能MPLS能力和LDP能力。
[PE1] interface vlan-interface 101
[PE1-Vlan-interface101] mpls enable
[PE1-Vlan-interface101] mpls ldp enable
[PE1-Vlan-interface101] quit
[PE1] interface vlan-interface 102
[PE1-Vlan-interface102] mpls enable
[PE1-Vlan-interface102] mpls ldp enable
[PE1-Vlan-interface102] quit
# 创建VSI aaa,指定其使用的PW信令协议为静态配置方式,并配置PW。
[PE1] vsi aaa
[PE1-vsi-aaa] pwsignaling static
[PE1-vsi-aaa-static] peer 2.2.2.2 pw-id 3 in-label 100 out-label 100
[PE1-vsi-aaa-static-2.2.2.2-3] quit
[PE1-vsi-aaa-static] peer 3.3.3.3 pw-id 3 in-label 200 out-label 200
[PE1-vsi-aaa-static-3.3.3.3-3] quit
[PE1-vsi-aaa-static] quit
[PE1-vsi-aaa] quit
# 将接口GigabitEthernet3/1/1与VSI aaa关联。
[PE1] interface gigabitethernet 3/1/1
[PE1-GigabitEthernet3/1/1] service-instance 1
[PE1-GigabitEthernet3/1/1-srv1] encapsulation s-vid 5
[PE1-GigabitEthernet3/1/1-srv1] xconnect vsi aaa
[PE1-GigabitEthernet3/1/1-srv1] quit
[PE1-GigabitEthernet3/1/1] quit
# 全局使能IGMP Snooping。
[PE1] igmp-snooping
[PE1-igmp-snooping] quit
# 在VSI aaa内使能IGMP Snooping,并开启丢弃未知组播数据报文功能。
[PE1] vsi aaa
[PE1-vsi-aaa] igmp-snooping enable
[PE1-vsi-aaa] igmp-snooping drop-unknown
[PE1-vsi-aaa] quit
(6) 配置PE 2
# 配置本节点的LSR ID为2.2.2.2,并使能L2VPN功能和LDP能力。
<PE2> system-view
[PE2] mpls lsr-id 2.2.2.2
[PE2] l2vpn enable
[PE2] mpls ldp
[PE2-ldp] quit
# 在接口Vlan-interface101和Vlan-interface103上分别使能MPLS能力和LDP能力。
[PE2] interface vlan-interface 101
[PE2-Vlan-interface101] mpls enable
[PE2-Vlan-interface101] mpls ldp enable
[PE2-Vlan-interface101] quit
[PE2] interface vlan-interface 103
[PE2-Vlan-interface103] mpls enable
[PE2-Vlan-interface103] mpls ldp enable
[PE2-Vlan-interface103] quit
# 创建VSI aaa,指定其使用的PW信令协议为静态配置方式,并配置PW。
[PE2] vsi aaa
[PE2-vsi-aaa] pwsignaling static
[PE2-vsi-aaa-static] peer 1.1.1.1 pw-id 3 in-label 100 out-label 100
[PE2-vsi-aaa-static-1.1.1.1-3] quit
[PE2-vsi-aaa-static] peer 3.3.3.3 pw-id 3 in-label 300 out-label 300
[PE2-vsi-aaa-static-3.3.3.3-3] quit
[PE2-vsi-aaa-static] quit
[PE2-vsi-aaa] quit
# 将接口GigabitEthernet3/1/1与VSI aaa关联。
[PE2] interface gigabitethernet 3/1/1
[PE2-GigabitEthernet3/1/1] service-instance 1
[PE2-GigabitEthernet3/1/1-srv1] encapsulation s-vid 5
[PE2-GigabitEthernet3/1/1-srv1] xconnect vsi aaa
[PE2-GigabitEthernet3/1/1-srv1] quit
[PE2-GigabitEthernet3/1/1] quit
# 全局使能IGMP Snooping。
[PE2] igmp-snooping
[PE2-igmp-snooping] quit
# 在VSI aaa内使能IGMP Snooping,并开启丢弃未知组播数据报文功能。
[PE2] vsi aaa
[PE2-vsi-aaa] igmp-snooping enable
[PE2-vsi-aaa] igmp-snooping drop-unknown
[PE2-vsi-aaa] quit
(7) 配置PE 3
# 配置本节点的LSR ID为3.3.3.3,并使能L2VPN功能和LDP能力。
<PE3> system-view
[PE3] mpls lsr-id 3.3.3.3
[PE3] l2vpn enable
[PE3] mpls ldp
[PE3-ldp] quit
# 在接口Vlan-interface102和Vlan-interface103上分别使能MPLS能力和LDP能力。
[PE3] interface vlan-interface 102
[PE3-Vlan-interface102] mpls enable
[PE3-Vlan-interface102] mpls ldp enable
[PE3-Vlan-interface102] quit
[PE3] interface vlan-interface 103
[PE3-Vlan-interface103] mpls enable
[PE3-Vlan-interface103] mpls ldp enable
[PE3-Vlan-interface103] quit
# 创建VSI aaa,指定其使用的PW信令协议为静态配置方式,并配置PW。
[PE3] vsi aaa
[PE3-vsi-aaa] pwsignaling static
[PE3-vsi-aaa-static] peer 1.1.1.1 pw-id 3 in-label 200 out-label 200
[PE3-vsi-aaa-static-1.1.1.1-3] quit
[PE3-vsi-aaa-static] peer 2.2.2.2 pw-id 3 in-label 300 out-label 300
[PE3-vsi-aaa-static-2.2.2.2-3] quit
[PE3-vsi-aaa-static] quit
[PE3-vsi-aaa] quit
# 将接口GigabitEthernet3/1/1与VSI aaa关联。
[PE3] interface gigabitethernet 3/1/1
[PE3-GigabitEthernet3/1/1] service-instance 1
[PE3-GigabitEthernet3/1/1-srv1] encapsulation s-vid 5
[PE3-GigabitEthernet3/1/1-srv1] xconnect vsi aaa
[PE3-GigabitEthernet3/1/1-srv1] quit
[PE3-GigabitEthernet3/1/1] quit
# 全局使能IGMP Snooping。
[PE3] igmp-snooping
[PE3-igmp-snooping] quit
# 在VSI aaa内使能IGMP Snooping,并开启丢弃未知组播数据报文功能。
[PE3] vsi aaa
[PE3-vsi-aaa] igmp-snooping enable
[PE3-vsi-aaa] igmp-snooping drop-unknown
[PE3-vsi-aaa] quit
# 在PE 1上显示VSI aaa内动态IGMP Snooping组播组的详细信息。
[PE1] display igmp-snooping group vsi aaa verbose
Total 1 entries.
VSI aaa: Total 1 entries.
(0.0.0.0, 225.0.0.1)
Attribute: global port
FSM information: normal
Host slots (0 in total):
Host ports (1 in total):
NPW (VSI index 0 Link ID 9) (00:02:24)
VLAN pairs (1 in total):
Out VLAN 100 In VLAN 0 (00:02:24)
# 在PE 1上显示VSI aaa内动态路由器端口的详细信息。
[PE1] display igmp-snooping router-port vsi aaa verbose
VSI aaa:
Router slots (0 in total):
Router ports (1 in total):
AC (VSI index 0 Link ID 0) (00:01:46)
VLAN pairs (1 in total):
Out VLAN 100 In VLAN 0 (00:01:46)
# 在PE 2上显示VSI aaa内动态IGMP Snooping组播组的详细信息。
[PE2] display igmp-snooping group vsi aaa verbose
Total 1 entries.
VSI aaa: Total 1 entries.
(0.0.0.0, 225.0.0.1)
Attribute: global port
FSM information: normal
Host slots (0 in total):
Host ports (1 in total):
NPW (VSI index 0 Link ID 8) (00:02:07)
VLAN pairs (1 in total):
Out VLAN 100 In VLAN 0 (00:02:07)
# 在PE 2上显示VSI aaa内动态路由器端口的详细信息。
[PE2] display igmp-snooping router-port vsi aaa verbose
VSI aaa:
Router slots (0 in total):
Router ports (1 in total):
NPW (VSI index 0 Link ID 9) (00:01:26)
VLAN pairs (1 in total):
Out VLAN 100 In VLAN 0 (00:01:26)
# 在PE 3上显示VSI aaa内动态IGMP Snooping组播组的详细信息。
[PE3] display igmp-snooping group vsi aaa verbose
Total 1 entries.
VSI aaa: Total 1 entries.
(0.0.0.0, 225.0.0.1)
Attribute: global port
FSM information: normal
Host slots (0 in total):
Host ports (1 in total):
AC (VSI index 0 Link ID 0) (00:02:04)
VLAN pairs (1 in total):
Out VLAN 100 In VLAN 0 (00:02:04)
# 在PE 3上显示VSI aaa内动态路由器端口的详细信息。
[PE3] display igmp-snooping router-port vsi aaa verbose
VSI aaa:
Router slots (0 in total):
Router ports (1 in total):
NPW (VSI index 0 Link ID 9) (00:01:24)
VLAN pairs (1 in total):
Out VLAN 100 In VLAN 0 (00:01:24)
在VXLAN网络中,Device A、Device B、Device C为与服务器连接的VTEP设备。虚拟机VM 1、VM 2和VM 3同属于VXLAN 10。通过VXLAN实现不同站点间的二层互联,且站点之间的泛洪流量采用单播路由方式(头端复制方式)转发。
要求基于现有VXLAN网络,通过配置IGMP Snooping功能,实现网络中二层组播转发,以减轻VTEP设备对已知组播数据报文的复制负担。
图1-9 基于VXLAN的IGMP Snooping配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Device A |
Vlan-int11 |
11.1.1.1/24 |
Device C |
Vlan-int13 |
13.1.1.3/24 |
|
Loop0 |
1.1.1.1/32 |
|
Loop0 |
3.3.3.3/32 |
Device B |
Vlan-int12 |
12.1.1.2/24 |
Device D |
Vlan-int11 |
11.1.1.4/24 |
|
Loop0 |
2.2.2.2/32 |
|
Vlan-int12 |
12.1.1.4/24 |
|
|
|
|
Vlan-int13 |
13.1.1.4/24 |
(1) 配置IP地址和单播路由协议
请按照图1-9配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,具体配置过程略。
(2) 配置Device A
# 开启L2VPN能力。
<DeviceA> system-view
[DeviceA] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[DeviceA] vsi vpna
[DeviceA-vsi-vpna] vxlan 10
[DeviceA-vsi-vpna-vxlan-10] quit
[DeviceA-vsi-vpna] quit
# 全局使能IGMP Snooping。
[DeviceA] igmp-snooping
[DeviceA -igmp-snooping] quit
# 在VSI vpna内使能IGMP Snooping,并开启丢弃未知组播数据报文功能。
[DeviceA] vsi vpna
[DeviceA-vsi-vpna] igmp-snooping enable
[DeviceA-vsi-vpna] igmp-snooping drop-unknown
[DeviceA-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[DeviceA] interface loopback 0
[DeviceA-Loopback0] ip address 1.1.1.1 255.255.255.255
[DeviceA-Loopback0] quit
# 在Device A和Device B之间建立VXLAN隧道:
[DeviceA] interface tunnel 1 mode vxlan
[DeviceA-Tunnel1] source 1.1.1.1
[DeviceA-Tunnel1] destination 2.2.2.2
[DeviceA-Tunnel1] quit
# 在Device A和Device C之间建立VXLAN隧道。
[DeviceA] interface tunnel 2 mode vxlan
[DeviceA-Tunnel2] source 1.1.1.1
[DeviceA-Tunnel2] destination 3.3.3.3
[DeviceA-Tunnel2] quit
# 配置Tunnel1和Tunnel2与VXLAN 10关联。
[DeviceA] vsi vpna
[DeviceA-vsi-vpna] vxlan 10
[DeviceA-vsi-vpna-vxlan-10] tunnel 1
[DeviceA-vsi-vpna-vxlan-10] tunnel 2
[DeviceA-vsi-vpna-vxlan-10] quit
[DeviceA-vsi-vpna] quit
# 在接入服务器的接口GigabitEthernet3/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[DeviceA] interface gigabitethernet 3/1/1
[DeviceA-GigabitEthernet3/1/1] service-instance 1000
[DeviceA-GigabitEthernet3/1/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[DeviceA-GigabitEthernet3/1/1-srv1000] xconnect vsi vpna
[DeviceA-GigabitEthernet3/1/1-srv1000] quit
[DeviceA-GigabitEthernet3/1/1] quit
(3) 配置Device B
# 开启L2VPN能力。
<DeviceB> system-view
[DeviceB] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[DeviceB] vsi vpna
[DeviceB-vsi-vpna] vxlan 10
[DeviceB-vsi-vpna-vxlan-10] quit
[DeviceB-vsi-vpna] quit
# 全局使能IGMP Snooping。
[DeviceB] igmp-snooping
[DeviceB -igmp-snooping] quit
# 在VSI vpna内使能IGMP Snooping,并开启丢弃未知组播数据报文功能。
[DeviceB] vsi vpna
[DeviceB-vsi-vpna] igmp-snooping enable
[DeviceB-vsi-vpna] igmp-snooping drop-unknown
[DeviceB-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[DeviceB] interface loopback 0
[DeviceB-Loopback0] ip address 2.2.2.2 255.255.255.255
[DeviceB-Loopback0] quit
# 在Device A和Device B之间建立VXLAN隧道。
[DeviceB] interface tunnel 2 mode vxlan
[DeviceB-Tunnel2] source 2.2.2.2
[DeviceB-Tunnel2] destination 1.1.1.1
[DeviceB-Tunnel2] quit
# 在Device B和Device C之间建立VXLAN隧道。
[DeviceB] interface tunnel 3 mode vxlan
[DeviceB-Tunnel3] source 2.2.2.2
[DeviceB-Tunnel3] destination 3.3.3.3
[DeviceB-Tunnel3] quit
# 配置Tunnel2和Tunnel3与VXLAN10关联。
[DeviceB] vsi vpna
[DeviceB-vsi-vpna] vxlan 10
[DeviceB-vsi-vpna-vxlan-10] tunnel 2
[DeviceB-vsi-vpna-vxlan-10] tunnel 3
[DeviceB-vsi-vpna-vxlan-10] quit
[DeviceB-vsi-vpna] quit
# 在接入服务器的接口GigabitEthernet3/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[DeviceB] interface gigabitethernet 3/1/1
[DeviceB-GigabitEthernet3/1/1] service-instance 1000
[DeviceB-GigabitEthernet3/1/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[DeviceB-GigabitEthernet3/1/1-srv1000] xconnect vsi vpna
[DeviceB-GigabitEthernet3/1/1-srv1000] quit
[DeviceB-GigabitEthernet3/1/1] quit
(4) 配置Device C
# 开启L2VPN能力。
<DeviceC> system-view
[DeviceC] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[DeviceC] vsi vpna
[DeviceC-vsi-vpna] vxlan 10
[DeviceC-vsi-vpna-vxlan-10] quit
[DeviceC-vsi-vpna] quit
# 全局使能IGMP Snooping。
[DeviceB] igmp-snooping
[DeviceB -igmp-snooping] quit
# 在VSI vpna内使能IGMP Snooping,并开启丢弃未知组播数据报文和二层组播查询器功能。
[DeviceC] vsi vpna
[DeviceC-vsi-vpna] igmp-snooping enable
[DeviceC-vsi-vpna] igmp-snooping drop-unknown
[DeviceC-vsi-vpna] igmp-snooping general-query source-ip 3.3.3.3
[DeviceC-vsi-vpna] igmp-snooping querier
[DeviceC-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[DeviceC] interface loopback 0
[DeviceC-Loopback0] ip address 3.3.3.3 255.255.255.255
[DeviceC-Loopback0] quit
# 在Device A和Device C之间建立VXLAN隧道。
[DeviceC] interface tunnel 1 mode vxlan
[DeviceC-Tunnel1] source 3.3.3.3
[DeviceC-Tunnel1] destination 1.1.1.1
[DeviceC-Tunnel1] quit
# 在Device B和Device C之间建立VXLAN隧道。
[DeviceC] interface tunnel 3 mode vxlan
[DeviceC-Tunnel3] source 3.3.3.3
[DeviceC-Tunnel3] destination 2.2.2.2
[DeviceC-Tunnel3] quit
# 配置Tunnel1和Tunnel3与VXLAN 10关联。
[DeviceC] vsi vpna
[DeviceC-vsi-vpna] vxlan 10
[DeviceC-vsi-vpna-vxlan-10] tunnel 1
[DeviceC-vsi-vpna-vxlan-10] tunnel 3
[DeviceC-vsi-vpna-vxlan-10] quit
[DeviceC-vsi-vpna] quit
# 在接入服务器的接口GigabitEthernet3/1/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[DeviceC] interface gigabitethernet 3/1/1
[DeviceC-GigabitEthernet3/1/1] service-instance 1000
[DeviceC-GigabitEthernet3/1/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[DeviceC-GigabitEthernet3/1/1-srv1000] xconnect vsi vpna
[DeviceC-GigabitEthernet3/1/1-srv1000] quit
[DeviceC-GigabitEthernet3/1/1] quit
# 在Device A上显示VSI vpna内动态路由器端口信息。
[DeviceA] display igmp-snooping router-port vsi vpna
VSI vpna:
Router slots (0 in total):
Router ports (1 in total):
NPW (VXLAN ID 10 Link ID 0X5000001) (00:04:17)
# 在Device B上显示VSI vpna内动态路由器端口信息。
[DeviceB] display igmp-snooping router-port vsi vpna
VSI vpna:
Router slots (0 in total):
Router ports (1 in total):
NPW (VXLAN ID 10 Link ID 0X5000001) (00:04:07)
二层设备不能实现IGMP Snooping二层组播功能。
IGMP Snooping没有使能。
(1) 使用display igmp-snooping命令查看IGMP Snooping的运行状态。
(2) 如果是没有使能IGMP Snooping,则需先在系统视图下使用igmp-snooping命令全局使能IGMP Snooping,然后在VLAN视图/VSI视图下使用igmp-snooping enable命令使能VLAN/VSI内的IGMP Snooping。
(3) 如果只是没有在相应VLAN/VSI下使能IGMP Snooping,则只需在VLAN视图/VSI视图下使用igmp-snooping enable命令使能VLAN/VSI内的IGMP Snooping。
配置了组播组策略,只允许主机加入某些特定的组播组,但主机仍然可以收到发往其它组播组的组播数据。
· ACL规则配置不正确;
· 组播组策略应用不正确;
· 没有开启丢弃未知组播数据报文的功能,使得属于过滤策略之外的组播数据报文(即未知组播数据报文)被广播。
(1) 使用display acl命令查看所配置的ACL规则,检查其是否与所要实现的组播组过滤策略相符合。
(2) 在IGMP-Snooping视图或相应的接口视图下使用display this命令查看是否应用了正确的组播组策略。如果没有,则使用group-policy或igmp-snooping group-policy命令应用正确的组播组策略。
(3) 使用display igmp-snooping命令查看是否已开启丢弃未知组播数据报文的功能。如果没有开启,则使用igmp-snooping drop-unknown命令开启丢弃未知组播数据报文功能。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!