10-MLD Snooping配置
本章节下载: 10-MLD Snooping配置 (979.12 KB)
目 录
1.5.4 使能单个VLAN/VSI内的MLD Snooping
1.6.3 配置MLD Snooping转发表项的全局最大数量
1.9.5 配置设备在链路拓扑发生变化时立刻发送MLD普遍组查询报文
1.16.1 基于VLAN的IPv6组策略及模拟主机加入配置举例
1.16.3 基于VLAN的MLD Snooping查询器配置举例
1.16.4 基于VLAN的MLD Snooping Proxy配置举例
1.16.5 基于VXLAN的MLD Snooping配置举例
MLD Snooping(Multicast Listener Discovery Snooping,组播侦听者发现协议窥探)运行在二层设备上,通过侦听三层设备与主机之间的MLD报文来生成二层组播转发表,从而管理和控制IPv6组播数据报文的转发,实现IPv6组播数据报文在二层的按需分发。
运行MLD Snooping的二层设备通过对收到的MLD报文进行分析,为端口和MAC组播地址建立起映射关系,并根据这样的映射关系转发IPv6组播数据。
如图1-1所示,当二层设备没有运行MLD Snooping时,IPv6组播数据报文在二层网络(包括VLAN和VSI)中被广播;当二层设备运行了MLD Snooping后,已知IPv6组播组的组播数据报文不会在二层网络中被广播,而被组播给指定的接收者。
图1-1 二层设备运行MLD Snooping前后的对比
MLD Snooping通过二层组播将信息只转发给有需要的接收者,可以带来以下好处:
· 减少了二层网络中的广播报文,节约了网络带宽;
· 增强了IPv6组播信息的安全性;
· 为实现对每台主机的单独计费带来了方便。
如图1-2所示,Router A连接IPv6组播源,在Switch A和Switch B上分别运行MLD Snooping,Host A和Host C为接收者主机(即IPv6组播组成员)。根据在网络中所处位置的不同,我们将MLD Snooping端口分为路由器端口和成员端口两类,以下分别介绍。
图1-2 MLD Snooping端口示意图
在运行了MLD Snooping的二层设备上,朝向上游三层组播设备的端口称为路由器端口。如图1-2中Switch A和Switch B各自的GigabitEthernet1/0/1端口。
根据来源不同,路由器端口可分为:
· 动态路由器端口:所有收到MLD普遍组查询报文(源地址非0::0)或IPv6 PIM Hello报文的端口,都被维护为动态路由器端口。这些端口被记录在动态路由器端口列表中,每个端口都有一个老化定时器。在老化定时器超时前,动态路由器端口如果收到了MLD普遍组查询报文(源地址非0::0)或IPv6 PIM Hello报文,该定时器将被重置;否则,该端口将被从动态路由器端口列表中删除。
· 静态路由器端口:通过命令行手工配置的路由器端口称为静态路由器端口,这些端口被记录在静态路由器端口列表中。静态路由器端口只能通过命令行手工删除,不会被老化。
· 本文中提到的路由器端口都是指二层设备上朝向三层组播设备的端口,而不是指路由器上的端口。
· 如果没有特别指明,本文中提到的路由器端口包括动态路由器端口和静态路由器端口。
在运行了MLD Snooping的二层设备上,朝向下游组播组成员的端口称为成员端口。如图1-2中Switch A的GigabitEthernet1/0/2和GigabitEthernet1/0/3端口,以及Switch B的GigabitEthernet1/0/2端口。
根据来源不同,成员端口也可分为:
· 动态成员端口:所有收到MLD成员关系报告报文的端口,都被维护为动态成员端口。这些端口被记录在动态MLD Snooping转发表中,每个端口都有一个老化定时器。在老化定时器超时前,动态成员端口如果收到了MLD成员关系报告报文,该定时器将被重置;否则,该端口将被从动态MLD Snooping转发表中删除。
· 静态成员端口:通过命令行手工配置的成员端口称为静态成员端口,这些端口被记录在静态MLD Snooping转发表中。静态成员端口只能通过命令行手工删除,不会被老化。
如果没有特别指明,本文中提到的成员端口包括动态成员端口和静态成员端口。
运行了MLD Snooping的二层设备对不同MLD动作的具体处理方式如下:
MLD查询器定期向本地网段内的所有主机与路由器(FF02::1)发送MLD普遍组查询报文,以查询该网段有哪些IPv6组播组的成员。
在收到MLD普遍组查询报文时,二层设备将其通过VLAN/VSI内除接收端口以外的其它所有端口转发出去,并对该报文的接收端口做如下处理:
· 如果在动态路由器端口列表中已包含该动态路由器端口,则重置其老化定时器。
· 如果在动态路由器端口列表中尚未包含该动态路由器端口,则将其添加到动态路由器端口列表中,并启动其老化定时器。
以下情况,主机会向MLD查询器发送MLD成员关系报告报文:
· 当IPv6组播组的成员主机收到MLD查询报文后,会回复MLD成员关系报告报文。
· 如果主机要加入某个IPv6组播组,它会主动向MLD查询器发送MLD成员关系报告报文以声明加入该IPv6组播组。
在收到MLD成员关系报告报文时,二层设备将其通过VLAN/VSI内的所有路由器端口转发出去,从该报文中解析出主机要加入的IPv6组播组地址,并对该报文的接收端口做如下处理:
· 如果不存在该IPv6组播组所对应的转发表项,则创建转发表项,将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;
· 如果已存在该IPv6组播组所对应的转发表项,但其出端口列表中不包含该端口,则将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;
· 如果已存在该IPv6组播组所对应的转发表项,且其出端口列表中已包含该动态成员端口,则重置其老化定时器。
二层设备不会将MLD成员关系报告报文通过非路由器端口转发出去,因为根据主机上的MLD成员关系报告抑制机制,如果非路由器端口下还有该IPv6组播组的成员主机,则这些主机在收到该报告报文后便抑制了自身的报告,从而使二层设备无法获知这些端口下还有该IPv6组播组的成员主机。有关主机上的MLD成员关系报告抑制机制的详细介绍,请参见“IP组播配置指导”中的“MLD”。
当主机离开IPv6组播组时,会通过发送MLD离开组报文,以通知三层组播设备自己离开了某个IPv6组播组。当二层设备从某动态成员端口上收到MLD离开组报文时,首先判断要离开的IPv6组播组所对应的转发表项是否存在,以及该IPv6组播组所对应转发表项的出端口列表中是否包含该接收端口:
· 如果不存在该IPv6组播组对应的转发表项,或者该IPv6组播组对应转发表项的出端口列表中不包含该端口,二层设备不会向任何端口转发该报文,而将其直接丢弃;
· 如果存在该IPv6组播组对应的转发表项,且该IPv6组播组对应转发表项的出端口列表中除该端口还有别的成员端口存在,二层设备不会向任何端口转发该报文,而将其直接丢弃。同时,由于并不知道该接收端口下是否还有该IPv6组播组的其它成员,所以二层设备不会立刻把该端口从该IPv6组播组所对应转发表项的出端口列表中删除,而是向该端口发送MLD特定组查询报文,并根据MLD特定组查询报文调整该端口的老化定时器(老化时间为2×MLD特定组查询报文的发送间隔);
· 如果存在该IPv6组播组对应的转发表项,且该IPv6组播组对应转发表项的出端口列表中只有该端口,二层设备会将该报文通过VLAN/VSI内的所有路由器端口转发出去。同时,由于并不知道该接收端口下是否还有该IPv6组播组的其它成员,所以二层设备不会立刻把该端口从该IPv6组播组所对应转发表项的出端口列表中删除,而是向该端口发送MLD特定组查询报文,并根据MLD特定组查询报文调整该端口的老化定时器(老化时间为2×MLD特定组查询报文的发送间隔)。
当MLD查询器收到MLD离开组报文后,从中解析出主机要离开的IPv6组播组的地址,并通过接收端口向该IPv6组播组发送MLD特定组查询报文。二层设备在收到MLD特定组查询报文后,将其通过VLAN/VSI内的所有路由器端口和该IPv6组播组的所有成员端口转发出去。对于MLD离开组报文的接收端口(假定为动态成员端口),二层设备在其老化时间内:
· 如果从该端口收到了主机响应该特定组查询的MLD成员关系报告报文,则表示该端口下还有该IPv6组播组的成员,于是重置其老化定时器;
· 如果没有从该端口收到主机响应该特定组查询的MLD成员关系报告报文,则表示该端口下已没有该IPv6组播组的成员。当该端口的老化定时器超时后,将其从该IPv6组播组所对应转发表项的出端口列表中删除。
为了减少上游设备收到的MLD报告报文和离开报文的数量,可以通过在边缘设备上配置MLD Snooping Proxy(MLD Snooping代理)功能,使其能够代理下游主机向上游设备发送报告报文和离开报文。配置了MLD Snooping Proxy功能的设备称为MLD Snooping代理设备,在其上游设备看来,它就相当于一台主机。但主机上的MLD成员关系报告抑制机制在MLD Snooping代理设备上并不会生效。有关主机上的MLD成员关系报告抑制机制的详细介绍,请参见“IP组播配置指导”中的“MLD”。
如图1-3 所示,作为MLD Snooping代理设备的Switch A,对其上游的MLD查询器Router A来说相当于一台主机,代理下游主机向Router A发送报告报文和离开报文。
MLD Snooping代理设备对MLD报文的处理方式如表1-1所示。
表1-1 MLD Snooping代理设备对MLD报文的处理方式
MLD报文 |
处理方式 |
普遍组查询报文 |
收到普遍组查询报文后,向本VLAN/VSI内除接收端口以外的所有端口转发;同时根据本地维护的组成员关系生成报告报文,并向所有路由器端口发送 |
特定组/特定源组查询报文 |
收到针对某组播组的特定组/特定源组查询报文时,向本VLAN/VSI内除接收端口以外的所有路由器端口转发;若该组对应的转发表项中还有成员端口,则向本VLAN/VSI内所有路由器端口回复该组的报告报文 |
报告报文 |
从某端口收到某IPv6组播组的报告报文时,若已存在该组对应的转发表项,且其出端口列表中已包含该动态成员端口,则重置其老化定时器;若已存在该组对应的转发表项,但其出端口列表中不包含该端口,则将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;若尚不存在该组对应的转发表项,则创建转发表项,将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器,然后向所有路由器端口发送该组的报告报文 |
离开报文 |
从某端口收到某IPv6组播组的离开报文后,向该端口发送针对该组的特定组查询报文。只有当删除某IPv6组播组对应转发表项中的最后一个成员端口时,才会向所有路由器端口发送该组的离开报文 |
MLD Snooping利用M-LAG(Multichassis link aggregation,跨设备链路聚合)功能将两台物理设备连接起来形成M-LAG系统,该M-LAG系统作为一台虚拟MLD Snooping设备来使用。使用该虚拟设备连接组播源或组播接收者,可避免单点故障对组播网络造成影响,提高组播网络可靠性。有关M-LAG的详细介绍,请参见“二层技术-以太网交换配置指导”中的“M-LAG”。
MLD Snooping支持M-LAG,有如下几种组网方案:
如图1-4所示,作为M-LAG设备的Switch A和Switch B通过peer-link链路连接,Switch C与组播源相连。
组播源发送的组播数据流量,通过Switch C的聚合口进行负载分担,发送到Switch A和Switch B的M-LAG接口上。Switch A和Switch B的M-LAG接口收到组播数据报文后,会通过peer-link链路将接收到的报文发送给对端,从而使两台设备都能收到完整的组播流量。
二层网络中存在的STP(Spanning Tree Protocol,生成树协议),会选择性地阻塞某些端口来消除二层环路,因此使得组播流量只能通过Switch A或Switch B中的其中一台转发给组播接收者。当Switch A或Switch B其中一台设备发生故障时,另一台设备可以快速接替故障设备进行组播流量的转发,从而提高了组播网络的可靠性。
如图1-5所示,作为M-LAG设备的Switch A和Switch B通过peer-link链路连接,Switch C与组播接收者相连。
Switch A和Switch B通过M-LAG接口接收到来自Switch C的MLD组播组信息后,分别添加M-LAG接口后通过peer-link链路同步给对端设备,并在对端设备上生成成员端口为M-LAG接口的MLD Snooping组播组表项,从而使Switch A和Switch B之间的MLD Snooping组播组信息保持同步。
二层网络中存在的STP,会选择性地阻塞某些端口来消除二层环路,组播源发送到M-LAG系统的组播数据流量,只能被Switch A或Switch B的其中一台收到。如图1-5所示,Switch A收到组播数据流量后,会通过peer-link链路发送给Switch B。在正常情况下,Switch A会将组播流量通过M-LAG接口转发给Switch C,而Switch B不会进行转发。当Switch A发生故障时,组播数据流量将从Switch B的M-LAG接口转发给Switch C。
如果一台外部设备仅接入M-LAG系统的其中一台M-LAG设备,则该设备称为单挂设备。
如图图1-6所示,Receiver 2为单挂组播接收者。Switch A收到Receiver 2发出的MLD成员关系报文后,会无条件通过peer-link链路向对端Switch B转发,无需通过收到MLD查询报文来触发。Switch B收到MLD成员关系报文后,会生成以M-LAG接口为成员端口的MLD Snooping表项。当Switch B收到组播数据流量后,将通过该表项转发给Receiver 2。
与MLD Snooping相关的协议规范有:
· RFC 4541:Considerations for Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) Snooping Switches
对于配置了MLD Snooping功能的VLAN,如果修改该VLAN接口上绑定的VPN实例,该VLAN内二层组播流量将产生中断,此时需要通过执行reset mld-snooping group命令重置二层组播以便MLD Snooping转发表的重新建立。
用户可以在VLAN和VSI两种二层网络中配置MLD Snooping,请分别参见表1-2和表1-3。
表1-2 基于VLAN的MLD Snooping配置任务简介
配置任务 |
说明 |
详细配置 |
||||
开启设备的MLD Snooping特性 |
必选 |
|||||
使能MLD Snooping |
必选 |
|||||
配置MLD Snooping基本功能 |
配置MLD Snooping版本 |
可选 |
||||
配置MLD Snooping转发表项的全局最大数量 |
可选 |
|||||
配置IPv6静态组播MAC地址表项 |
可选 |
|||||
配置MLD特定组查询报文的发送间隔 |
可选 |
|||||
配置MLD Snooping端口功能 |
配置动态端口老化定时器 |
可选 |
||||
配置静态端口 |
可选 |
|||||
配置模拟主机加入 |
可选 |
|||||
配置端口快速离开 |
可选 |
|||||
禁止端口成为动态路由器端口 |
可选 |
|||||
配置组播数据不向VLAN内的路由器端口转发 |
可选 |
|||||
配置二层IPv6组播数据转发模式 |
可选 |
|||||
配置MLD Snooping查询器 |
开启MLD Snooping查询器 |
可选 |
||||
开启MLD Snooping查询器选举功能 |
可选 |
|||||
配置MLD普遍组查询和响应 |
可选 |
|||||
配置设备在链路拓扑发生变化时立刻发送MLD普遍组查询报文 |
可选 |
|||||
配置MLD Snooping Proxy |
开启MLD Snooping Proxy |
可选 |
||||
调整MLD报文 |
配置MLD报文的源IPv6地址 |
可选 |
||||
配置MLD报文的802.1p优先级 |
可选 |
|||||
配置MLD Snooping策略 |
配置IPv6组播组过滤器 |
可选 |
||||
配置IPv6组播数据报文源端口过滤 |
可选 |
|||||
配置丢弃未知IPv6组播数据报文 |
可选 |
|||||
配置MLD成员关系报告报文抑制 |
可选 |
|||||
配置端口加入的IPv6组播组最大数量 |
可选 |
|||||
配置IPv6组播组替换功能 |
可选 |
|||||
配置MLD Snooping主机跟踪功能 |
可选 |
|||||
配置设备发送的MLD Snooping协议报文的DSCP优先级 |
可选 |
|||||
配置MLD Snooping支持M-LAG |
可选 |
|
||||
表1-3 基于VSI的MLD Snooping配置任务简介
配置任务 |
说明 |
详细配置 |
|
开启设备的MLD Snooping特性 |
必选 |
||
使能MLD Snooping |
必选 |
||
配置MLD Snooping基本功能 |
配置MLD Snooping版本 |
可选 |
|
配置MLD Snooping转发表项的全局最大数量 |
可选 |
||
配置MLD特定组查询报文的发送间隔 |
可选 |
||
配置MLD Snooping端口功能 |
配置动态端口老化定时器 |
可选 |
|
配置MLD Snooping查询器 |
开启MLD Snooping查询器 |
可选 |
|
开启MLD Snooping查询器选举功能 |
可选 |
||
配置MLD普遍组查询和响应 |
可选 |
||
配置设备在链路拓扑发生变化时立刻发送MLD普遍组查询报文 |
可选 |
||
配置MLD Snooping Proxy |
开启MLD Snooping Proxy |
可选 |
|
调整MLD报文 |
配置MLD报文的源IPv6地址 |
可选 |
|
配置MLD Snooping策略 |
配置丢弃未知IPv6组播数据报文 |
可选 |
|
配置MLD成员关系报告报文抑制 |
可选 |
||
配置设备发送的MLD Snooping协议报文的DSCP优先级 |
可选 |
||
配置MLD Snooping支持M-LAG |
可选 |
· 对于从Secondary VLAN中收到的主机加入请求,相关的MLD Snooping转发表项都将维护在Primary VLAN中,因此MLD Snooping功能只需在Primary VLAN中配置即可,在Secondary VLAN中即使配置了也不会生效。有关Primary VLAN和Secondary VLAN的详细介绍,请参见“二层技术-以太网交换配置指导”中的“Private VLAN”。
· 二层聚合接口与其各成员端口上的配置互不影响,且成员端口上的配置只有当该端口退出聚合组后才会生效,二层聚合接口上的配置也不会参与聚合计算。
只有在开启了设备的MLD Snooping特性后,才能进行其它的MLD Snooping相关配置。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启设备的MLD Snooping特性,并进入MLD-Snooping视图 |
mld-snooping |
缺省情况下,设备的MLD Snooping特性处于关闭状态 |
使能全局的MLD Snooping或在单个或多个VLAN/VSI内使能MLD Snooping之前,必须先全局开启MLD Snooping特性,即系统视图下配置mld-snooping。
在VLAN/VSI内使能了MLD Snooping之后,MLD Snooping只在属于该VLAN/VSI的端口上生效。
对于基于VLAN的配置,用户既可在MLD-Snooping视图下对指定VLAN进行配置,也可在VLAN视图下只对当前VLAN进行配置,二者的配置优先级相同;对于基于VSI的配置,用户只能在VSI视图下对当前VSI进行配置。
即使使能了全局的MLD snooping,若要在单个或多个VLAN/VSI内配置其他MLD snooping功能,必须还要在这些单个或多个VLAN/VSI下再使能MLD snooping。单个或多个VLAN/VSI内配置MLD Snooping的优先级高于全局配置MLD Snooping。
EVPNM-LAG组网中,开启VSI的MLD Snooping功能时必须同时开启VSI的MLD Snooping Proxy功能。EVPNM-LAG的详细介绍,请参见“EVPN配置指导”中的“EVPN VXLAN”。
表1-4 使能全局的MLD Snooping
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
全局开启MLD Snooping特性,并进入MLD-Snooping视图 |
mld-snooping |
缺省情况下,MLD Snooping特性处于关闭状态 |
使能全局的MLD Snooping |
global-enable |
缺省情况下,全局MLD Snooping处于关闭状态 |
表1-5 使能多个VLAN的MLD Snooping
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
全局开启MLD Snooping特性,并进入MLD-Snooping视图 |
mld-snooping |
缺省情况下,MLD Snooping特性处于关闭状态 |
使能多个VLAN的MLD Snooping |
enable vlan vlan-list |
缺省情况下,VLAN内MLD Snooping的状态与全局MLD Snooping的状态保持一致。 |
表1-6 使能单个VLAN/VSI内的MLD Snooping
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
全局开启MLD Snooping特性,并进入MLD-Snooping视图 |
mld-snooping |
缺省情况下,MLD Snooping特性处于关闭状态 |
|
退回系统视图 |
quit |
- |
|
进入相应视图 |
进入VLAN视图 |
vlan vlan-id |
二者选其一 |
进入VSI视图 |
vsi vsi-name |
||
使能单个VLAN/VSI内的MLD Snooping |
mld-snooping enable |
缺省情况下,VLAN/VSI内MLD Snooping的状态与全局MLD Snooping的状态保持一致 |
|
单个VLAN/VSI内关闭MLD Snooping |
mld-snooping disable |
缺省情况下,VLAN/VSI内MLD Snooping的状态与全局MLD Snooping的状态保持一致 |
在配置MLD Snooping基本功能之前,需完成以下任务:
· 配置相应VLAN/VSI
在配置MLD Snooping基本功能之前,需准备以下数据:
· MLD Snooping的版本
· MLD Snooping转发表项的全局最大数量
· MLD特定组查询报文的发送间隔
配置MLD Snooping的版本,实际上就是配置MLD Snooping可以处理的MLD报文的版本:
· 当MLD Snooping的版本为1时,MLD Snooping能够对MLDv1的报文和MLDv2的查询报文进行处理,对MLDv2的成员关系报文则不进行处理,而是在VLAN/VSI内将其广播;
· 当MLD Snooping的版本为2时,MLD Snooping能够对MLDv1和MLDv2的报文进行处理。
对于基于VLAN的配置,用户既可在MLD-Snooping视图下对指定VLAN进行配置,也可在VLAN视图下只对当前VLAN进行配置,二者的配置优先级相同;对于基于VSI的配置,用户只能在VSI视图下对当前VSI进行配置。
表1-7 配置指定VLAN内的MLD Snooping版本
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置指定VLAN内的MLD Snooping的版本 |
version version-number vlan vlan-list |
缺省情况下,VLAN内MLD Snooping的版本为1 |
表1-8 在VLAN/VSI内配置MLD Snooping版本
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入VLAN视图 |
vlan vlan-id |
二者选其一 |
进入VSI视图 |
vsi vsi-name |
||
在VLAN/VSI内配置MLD Snooping的版本 |
mld-snooping version version-number |
缺省情况下,VLAN/VSI内MLD Snooping的版本为1 |
当MLD Snooping的版本由版本2切换到版本1时,系统将清除所有通过动态加入的MLD Snooping转发表项;对于在版本2下通过手工配置而静态加入的MLD Snooping转发表项,则分为以下两种情况进行不同的处理:
· 如果配置的仅仅是静态加入IPv6组播组,而没有指定IPv6组播源,则这些转发表项将不会被清除;
· 如果配置的是指定了IPv6组播源的静态加入IPv6组播源组,则这些转发表项将会被清除,并且当再次切换回版本2时,这些转发表项将被重新恢复。
用户可以调整MLD Snooping转发表项(包括动态表项和静态表项)的全局最大数量,当设备上维护的表项数量达到最大数量后,将不再创建新的表项,直至有表项被老化或被手工删除。
表1-9 配置MLD Snooping转发表项的全局最大数量
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置MLD Snooping转发表项的全局最大数量 |
entry-limit limit |
缺省情况下,MLD Snooping转发表项的全局最大数量为4294967295 |
· 进行本配置不需要使能IPv6组播路由。
· 可手工配置的组播MAC地址表项必须是尚未使用的组播MAC地址(即最高字节的最低比特位为1的MAC地址)。
在二层组播中,除了可通过二层IPv6组播协议(如MLD Snooping)动态建立IPv6组播MAC地址表项外,还可通过手工方式配置IPv6组播MAC地址表项,将端口与IPv6组播MAC地址进行静态绑定,以便灵活控制IPv6组播信息送达的目的端口。
用户既可以在系统视图对指定接口进行配置,也可以在接口视图下只对当前接口进行配置。
表1-10 系统视图下配置IPv6静态组播MAC地址表项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置静态组播MAC地址表项 |
mac-address multicast mac-address interface interface-list vlan vlan-id |
缺省情况下,没有配置静态组播MAC地址表项 本命令的详细介绍请参见“IP组播命令参考”中的“IGMP Snooping” |
表1-11 接口视图下配置IPv6静态组播MAC地址表项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
配置静态组播MAC地址表项 |
mac-address multicast mac-address vlan vlan-id |
缺省情况下,没有配置静态组播MAC地址表项 本命令的详细介绍请参见“IP组播命令参考”中的“IGMP Snooping” |
当二层设备从某动态成员端口上收到MLD离开组报文时,如果设备上存在要离开的IPv6组播组所对应的转发表项,且该IPv6组播组所对应转发表项的出端口列表中也包含该接收端口,则二层设备会向该端口发送MLD特定组查询报文,并根据MLD特定组查询报文调整该端口的老化定时器(老化时间为2×MLD特定组查询报文的发送间隔)。
合理配置MLD特定组查询的最大响应时间,既可以使主机对MLD查询报文做出快速响应,又可以减少由于定时器同时超时,造成大量主机同时发送报告报文而引起的网络拥塞。
二层设备所发送的MLD特定组查询报文,其报文的最大响应时间字段由所配置的MLD特定组查询报文的发送间隔来填充,主机在收到MLD特定组查询报文后,会为其所加入的该IPv6组播组启动一个定时器,定时器的值在0到最大响应时间(该时间值由主机从所收到的MLD特定组查询报文的最大响应时间字段获得)中随机选定,当定时器的值减为0时,主机就会向该定时器对应的IPv6组播组发送MLD成员关系报告报文。
用户既可在MLD-Snooping视图下对所有VLAN和VSI进行全局配置,也可在VLAN视图/VSI视图下只对当前VLAN/VSI进行配置,后者的配置优先级较高。
如果二层设备的某端口上开启了端口快速离开功能,该端口收到MLD离开组报文后,二层设备不会向该端口发送MLD特定组查询报文。
表1-12 全局配置MLD特定组查询报文的发送间隔
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
全局配置MLD特定组查询报文的发送间隔 |
last-listener-query-interval interval |
缺省情况下,MLD特定组查询报文的发送间隔为1秒 |
表1-13 在VLAN/VSI内配置MLD特定组查询报文的发送间隔
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入VLAN视图 |
vlan vlan-id |
二者选其一 |
进入VSI视图 |
vsi vsi-name |
||
在VLAN/VSI内配置MLD特定组查询报文的发送间隔 |
mld-snooping last-listener-query-interval interval |
缺省情况下,MLD特定组查询报文的发送间隔为1秒 |
在配置MLD Snooping端口功能之前,需完成以下任务:
· 在VLAN/VSI内使能MLD Snooping
在配置MLD Snooping端口功能之前,需准备以下数据:
· 动态路由器端口老化时间
· 动态成员端口老化时间
· IPv6组播组和IPv6组播源的地址
对于动态路由器端口,如果在其老化时间内没有收到MLD普遍组查询报文或者IPv6 PIM Hello报文,二层设备将把该端口从动态路由器端口列表中删除。
对于动态成员端口,如果在其老化时间内没有收到该IPv6组播组的MLD成员关系报告报文,二层设备将把该端口从该IPv6组播组所对应转发表的出端口列表中删除。
如果IPv6组播组成员的变动比较频繁,可以把动态成员端口老化时间设置小一些,反之亦然。
用户既可在MLD-Snooping视图下对所有VLAN和VSI进行全局配置,也可在VLAN视图/VSI视图下只对当前VLAN/VSI进行配置,后者的配置优先级较高。
· 如果动态路由器端口收到的是IPv6 PIMv2 Hello报文,那么该端口的老化时间将由IPv6 PIMv2 Hello报文所携带的参数决定,而不受本节配置的影响。
· 如果二层设备向动态成员端口主动发送MLD特定组查询报文,则该端口的老化时间将根据该MLD特定组查询报文进行调整,调整的老化时间为2×MLD特定组查询报文的发送间隔。二层设备MLD特定组查询报文发送间隔的配置,请参见“1.6.5 配置MLD特定组查询报文的发送间隔”。
表1-14 全局配置动态端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
全局配置动态路由器端口老化时间 |
router-aging-time seconds |
缺省情况下,动态路由器端口的老化时间为260秒 |
全局配置动态成员端口老化时间 |
host-aging-time seconds |
缺省情况下,动态成员端口的老化时间为260秒 |
表1-15 在VLAN/VSI内配置动态端口老化定时器
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入VLAN视图 |
vlan vlan-id |
二者选其一 |
进入VSI视图 |
vsi vsi-name |
||
在VLAN/VSI内配置动态路由器端口老化时间 |
mld-snooping router-aging-time seconds |
缺省情况下,动态路由器端口的老化时间为260秒 |
|
在VLAN/VSI内配置动态成员端口老化时间 |
mld-snooping host-aging-time seconds |
缺省情况下,动态成员端口的老化时间为260秒 |
如果某端口所连接的主机需要固定接收发往某IPv6组播组的IPv6组播数据,可以配置该端口静态加入该IPv6组播组,成为静态成员端口。静态成员端口不会对MLD查询器发出的查询报文进行响应;当配置静态成员端口或取消静态成员端口的配置时,端口也不会主动发送MLD成员关系报告报文或MLD离开组报文。
可以通过将二层设备上的端口配置为静态路由器端口,从而使二层设备上收到的所有IPv6组播数据可以通过该端口被转发出去。
EVPNM-LAG组网中,在M-LAG成员设备上执行undo mld-snooping static-group或reset mld-snooping group命令仅对当前成员设备上的配置和表项生效,远端M-LAG成员设备上的配置和表项不会同步删除。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
配置静态成员端口 |
mld-snooping static-group ipv6-group-address [ source-ip ipv6-source-address ] vlan vlan-id |
缺省情况下,端口不是静态成员端口 |
配置静态路由器端口 |
mld-snooping static-router-port vlan vlan-id |
缺省情况下,端口不是静态路由器端口 |
在二层设备的端口上配置了模拟主机加入后,该模拟主机就可以模仿真实的IPv6组播组成员主机,对MLD查询器发出的查询报文进行响应,包括:
· 启动模拟主机时,该端口会主动发送一个MLD成员关系报告报文。
· 在模拟主机的运行过程中,当收到MLD查询报文时,该端口会响应一个MLD成员关系报告报文。
· 停止模拟主机时,该端口会发送一个MLD离开组报文。
· 与静态成员端口不同,配置了模拟主机加入的端口将作为动态成员端口参与动态成员端口的老化过程。
· 模拟主机所采用的MLD版本与MLD Snooping的版本一致。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
配置模拟主机加入IPv6组播组或IPv6组播源组 |
mld-snooping host-join ipv6-group-address [ source-ip ipv6-source-address ] vlan vlan-id |
缺省情况下,未配置模拟主机加入IPv6组播组或IPv6组播源组 |
端口快速离开是指当端口收到主机发来的离开指定IPv6组播组的MLD离开组报文时,直接将该端口从相应转发表项的出端口列表中删除。此后,当收到针对该IPv6组播组的MLD特定组查询报文时,二层设备将不再向该端口转发。
对于一个VLAN,只有当一个端口下只有一个接收者时,才建议配置本功能;否则,当一个端口下有多个接收者时,其中一个接收者的离开会触发该端口的快速离开,从而导致属于同一IPv6组播组的其它接收者无法收到IPv6组播数据。
用户既可在MLD-Snooping视图下对所有端口进行全局配置,也可在接口视图下只对当前端口进行配置,后者的配置优先级较高。
表1-18 全局配置端口快速离开
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
全局开启端口快速离开功能 |
fast-leave [ vlan vlan-list ] |
缺省情况下,端口快速离开功能处于关闭状态 |
表1-19 在端口上配置端口快速离开
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
在端口上开启端口快速离开功能 |
mld-snooping fast-leave [ vlan vlan-list ] |
缺省情况下,端口快速离开功能处于关闭状态 |
在IPv6组播用户接入网络中,用户主机在某些情况下(比如测试)也会发出MLD普遍组查询报文或IPv6 PIM Hello报文:
· 如果二层设备收到了某用户主机发来的MLD普遍组查询报文或IPv6 PIM Hello报文,那么接收报文的端口就将成为动态路由器端口,从而使VLAN内的所有IPv6组播报文都会向该端口转发,导致该主机收到大量无用的IPv6组播报文。
· 同时,用户主机发送MLD普遍组查询报文或IPv6 PIM Hello报文,也会影响该接入网络中三层设备上的IPv6组播路由协议状态(如影响MLD查询器或DR的选举),严重时可能导致网络中断。
当禁止一个端口成为动态路由器端口后,即使该端口收到了MLD普遍组查询报文或IPv6 PIM Hello报文,该端口也不会成为动态路由器端口,从而能够有效解决上述问题,提高网络的安全性和对组播用户的控制能力。
本配置与静态路由器端口的配置互不影响。
表1-20 禁止端口成为动态路由器端口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
禁止端口成为动态路由器端口 |
mld-snooping router-port-deny [ vlan vlan-list ] |
缺省情况下,端口可以成为动态路由器端口 |
缺省情况下,二层组播设备从上游收到组播数据后,会向VLAN内的所有路由器端口进行转发。在某些情况下,比如二层组播设备上所有的接口都被配置为静态路由器端口,组播数据会向设备上所有的路由器端口转发,造成带宽的浪费。此时,如果不需要组播数据向某些VLAN中的路由器端口转发,可以通过在这些VLAN下配置本功能来实现。
在配置本功能前,必须先在VLAN内开启MLD Snooping功能。
表1-21 配置组播数据不向VLAN内的路由器端口转发
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置组播数据不向VLAN内的路由器端口转发 |
mld-snooping router-port-discard |
缺省情况下,组播数据向VLAN内的路由器端口转发 |
通过配置二层IPv6组播数据转发模式,设备可以选择根据IPv6组播转发表项中的IPv6地址或者IPv6组播MAC地址来转发IPv6组播数据。
根据IPv6地址进行转发即根据IPv6组播数据的IPv6组播源地址和IPv6组播组地址进行二层IPv6组播数据的转发,可以通过display ipv6 l2-multicast ip forwarding命令来查看二层IPv6组播的IP转发表信息。
可以通过display ipv6 l2-multicast mac forwarding命令来查看二层IPv6组播的MAC转发表信息。
由于IPv6地址映射到组播MAC地址时,可能出现多个IPv6地址映射到同一个组播MAC地址上,容易造成未加入IPv6组播组的用户也收到IPv6组播数据。因此建议在具备三层IPv6组播功能的设备上选择IP模式来进行二层IPv6组播数据的转发。
当组播网络中有运行MLDv2的设备时,建议配置为按照IPv6地址来转发二层IPv6组播数据。
表1-22 配置二层IPv6组播数据转发模式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置二层IPv6组播数据转发模式 |
mld-snooping forwarding-mode { ip | mac } |
缺省情况下,设备根据二层IPv6组播数据报文所携带的IPv6地址来对其进行转发 |
在配置MLD Snooping查询器之前,需完成以下任务:
· 在VLAN/VSI内使能MLD Snooping
在配置MLD Snooping查询器之前,需准备以下数据:
· MLD普遍组查询报文的发送间隔
· MLD普遍组查询的最大响应时间
在运行了MLD的IPv6组播网络中,会有一台三层组播设备充当MLD查询器,负责发送MLD查询报文,使三层组播设备能够在网络层建立并维护IPv6组播转发表项,从而在网络层正常转发IPv6组播数据。
但是,在一个没有三层组播设备的网络中,由于二层设备并不支持MLD,因此无法实现MLD查询器的相关功能。为了解决这个问题,可以在二层设备上开启MLD Snooping查询器,使二层设备能够在数据链路层建立并维护IPv6组播转发表项,从而在数据链路层正常转发IPv6组播数据。
· 请避免在运行了MLD的网络中配置MLD Snooping查询器,因为尽管MLD Snooping查询器并不参与MLD查询器的选举,但在运行了MLD的网络中,配置MLD Snooping查询器不但没有实际的意义,反而可能会由于其发送的MLD普遍组查询报文的源IPv6地址较小而影响MLD查询器的选举。有关MLD查询器的详细介绍,请参见“IP组播配置指导”中的“MLD”。
· 在VSI/VXLAN组网中,由于VSI内MLD Snooping查询器发送查询报文不携带VLAN Tag,所以不建议在携带VLAN Tag的Ethernet接入模式下配置MLD Snooping查询器,有关Ethernet接入模式的详细介绍,请参见“VXLAN配置指导”中的“接入模式”。
表1-23 开启MLD Snooping查询器
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入VLAN视图 |
vlan vlan-id |
二者选其一 |
进入VSI视图 |
vsi vsi-name |
||
开启MLD Snooping查询器 |
mld-snooping querier |
缺省情况下,MLD Snooping查询器处于关闭状态 |
为了避免某VLAN/VSI因单一MLD Snooping查询器发生故障引起组播业务中断,建议在VLAN/VSI内配置多个MLD Snooping查询器,各设备上开启MLD Snooping查询器选举功能。当选举出的MLD Snooping查询器发生故障无法正常工作后,VLAN/VSI内各设备会重新选举出新的MLD Snooping查询器以保证组播业务正常转发。MLD snooping查询器选举机制和MLD查询器选举机制一样。有关MLD查询器的选举机制,请参见“IP组播配置指导”中的“MLD”。
在VLAN/VSI内开启MLD Snooping查询器选举功能之前,需要先开启MLD Snooping查询器。有关开启MLD Snooping查询器的详细介绍,请参见“1.9.2 开启MLD Snooping查询器”
由于MLD Snooping查询器收到源IPv6地址为::的查询报文和源IPv6地址与本机查询器IPv6地址相同的查询报文不进行选举,因此,用户需要通过mld-snooping general-query source-ip配置将MLD查询报文的源IPv6地址配置为一个未被其他设备和主机使用的有效IPv6地址以避免上述问题。
通过mld-snooping version命令保证参与MLD Snooping查询器选举的各设备MLD Snooping版本相同。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
开启MLD Snooping查询器选举功能 |
mld-snooping querier-election |
缺省情况下,VLAN内MLD Snooping查询器选举功能处于关闭状态 |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI视图 |
vlan vlan-id |
- |
开启MLD Snooping查询器选举功能 |
mld-snooping querier-election |
缺省情况下,VSI内MLD Snooping查询器选举功能处于关闭状态 |
可以根据网络的实际情况来修改MLD普遍组查询报文的发送间隔。
合理配置MLD普遍组查询的最大响应时间,既可以使主机对MLD查询报文做出快速响应,又可以减少由于定时器同时超时,造成大量主机同时发送报告报文而引起的网络拥塞。
对于MLD普遍组查询报文,其报文最大响应时间字段由所配置的MLD普遍组查询的最大响应时间来填充,在主机收到MLD普遍组查询报文后,主机会为其所加入的每个IPv6组播组都启动一个定时器,定时器的值在0到最大响应时间(该时间值由主机从所收到的MLD普遍组查询报文的最大响应时间字段获得)中随机选定,当定时器的值减为0时,主机就会向该定时器对应的IPv6组播组发送MLD成员关系报告报文。
用户既可在MLD-Snooping视图下对所有VLAN和VSI进行全局配置,也可在VLAN视图/VSI视图下只对当前VLAN/VSI进行配置,后者的配置优先级较高。
为避免误删IPv6组播组成员,请确保MLD普遍组查询报文的发送间隔大于MLD普遍组查询的最大响应时间,否则配置虽能生效但系统会给出提示。
表1-24 全局配置MLD普遍组查询和响应
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
全局配置MLD普遍组查询的最大响应时间 |
max-response-time seconds |
缺省情况下,MLD普遍组查询的最大响应时间为10秒 |
表1-25 在VLAN/VSI内配置MLD普遍组查询和响应
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入VLAN视图 |
vlan vlan-id |
二者选其一 |
进入VSI视图 |
vsi vsi-name |
||
在VLAN/VSI内配置MLD普遍组查询报文的发送间隔 |
mld-snooping query-interval interval |
缺省情况下,MLD普遍组查询报文的发送间隔为125秒 |
|
在VLAN/VSI内配置MLD普遍组查询的最大响应时间 |
mld-snooping max-response-time seconds |
缺省情况下,MLD普遍组查询的最大响应时间为10秒 |
当链路拓扑发生变化时,STP等协议会重新计算路径,将流量切换到新的路径。但是,在这种情况下,设备通常不会立即发送MLD普遍组查询报文,导致IPv6组播数据不能及时切换到变更后的路径上。通过配置本命令,可以配置设备在链路变化时主动发送MLD通用组查询报文,更新网络中成员端口信息,将IPv6组播数据流迅速切换到新的转发路径上。
配置该命令后的设备会向涉及链路拓扑变化的VLAN/VSI中的每一个端口立刻发送一次MLD普遍组查询报文。
请在处于易发生链路拓扑变化的查询器上配置此功能。
表1-26 配置设备在链路拓扑发生变化时立刻发送MLD普遍组查询报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置设备在链路拓扑发生变化时立刻发送MLD普遍组查询报文 |
send-query enable |
缺省情况下,设备不会因为链路拓扑发生变化而立刻发送MLD普遍组查询报文 |
通过在边缘设备配置MLD Snooping Proxy功能,以减少上游设备收到报告报文和离开报文的数量。配置了MLD Snooping Proxy功能的设备称为MLD Snooping代理设备,在其上游设备看来,它相当于一台主机,配合开启MLD Snooping查询器功能,对下游来说就相当于路由器。为了避免过多的报文数量对网络的影响,建议在网络边缘设备上开启MLD Snooping Proxy功能。
在VLAN/VSI内开启MLD Snooping Proxy功能,需要先全局开启MLD Snooping,再在VLAN/VSI内使能MLD Snooping。注意在组播VLAN的子VLAN下,MLD Snooping Proxy功能不会生效。
本功能需要和MLD Snooping查询器功能同时使用。有关开启MLD Snooping查询器的详细介绍,请参见“1.9.2 开启MLD Snooping查询器”。
表1-27 开启MLD Snooping Proxy
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入VLAN视图 |
vlan vlan-id |
二者选其一 |
进入VSI视图 |
vsi vsi-name |
||
在VLAN/VSI内开启MLD Snooping Proxy功能 |
mld-snooping proxy enable |
缺省情况下,VLAN/VSI内的MLD Snooping Proxy功能处于关闭状态 |
在调整MLD报文之前,需完成以下任务:
· 在VLAN/VSI内使能MLD Snooping
在调整MLD报文之前,需准备以下数据:
· MLD普遍组查询报文的源IPv6地址
· MLD特定组查询报文的源IPv6地址
· MLD成员关系报告报文的源IPv6地址
· MLD离开组报文的源IPv6地址
· MLD报文的802.1p优先级
用户可以通过本配置改变MLD Snooping查询器发送的MLD查询报文的源IPv6地址。
用户也可以通过本配置改变模拟主机或MLD Snooping代理发送的MLD成员关系报告报文或MLD离开组报文的源IPv6地址。
MLD查询报文源IPv6地址的改变可能会影响网段内MLD查询器的选举。
表1-28 在VLAN内配置MLD报文的源IPv6地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置MLD普遍组查询报文的源IPv6地址 |
mld-snooping general-query source-ip ipv6-address |
缺省情况下,MLD普遍组查询报文的源IPv6地址为当前VLAN接口的IPv6链路本地地址;若当前VLAN接口没有IPv6链路本地地址,则采用FE80::02FF:FFFF:FE00:0001 |
配置MLD特定组查询报文的源IPv6地址 |
mld-snooping special-query source-ip ipv6-address |
缺省情况下,如果收到过MLD普遍组查询报文,则以其源IPv6地址作为MLD特定组查询报文的源IPv6地址;否则,采用当前VLAN接口的IPv6链路本地地址;若当前VLAN接口没有IPv6链路本地地址,则采用FE80::02FF:FFFF:FE00:0001 |
配置MLD成员关系报告报文的源IPv6地址 |
mld-snooping report source-ip ipv6-address |
缺省情况下,MLD成员关系报告报文的源IPv6地址为当前VLAN接口的IPv6链路本地地址;若当前VLAN接口没有IPv6链路本地地址,则采用FE80::02FF:FFFF:FE00:0001 |
配置MLD离开组报文的源IPv6地址 |
mld-snooping done source-ip ipv6-address |
缺省情况下,MLD离开组报文的源IPv6地址为当前VLAN接口的IPv6链路本地地址;若当前VLAN接口没有IPv6链路本地地址,则采用FE80::02FF:FFFF:FE00:0001 |
表1-29 在VSI内配置MLD报文的源IPv6地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI视图 |
vsi vsi-name |
- |
配置MLD普遍组查询报文的源IPv6地址 |
mld-snooping general-query source-ip ipv6-address |
缺省情况下,MLD普遍组查询报文的源IPv6地址为VSI绑定的VSI接口的IPv6链路本地地址;若绑定的VSI接口没有IPv6链路本地地址,则采用FE80::02FF:FFFF:FE00:0001 |
配置MLD特定组查询报文的源IPv6地址 |
mld-snooping special-query source-ip ipv6-address |
缺省情况下,如果收到过MLD普遍组查询报文,则以其源IPv6地址作为MLD特定组查询报文的源IPv6地址;否则,采用VSI绑定的VSI接口的IPv6链路本地地址;若绑定的VSI接口没有IPv6链路本地地址,则采用FE80::02FF:FFFF:FE00:0001 |
配置MLD成员关系报告报文的源IPv6地址 |
mld-snooping report source-ip ipv6-address |
缺省情况下,MLD成员关系报告报文的源IPv6地址为VSI绑定的VSI接口的IPv6链路本地地址;若绑定的VSI接口没有IPv6链路本地地址,则采用FE80::02FF:FFFF:FE00:0001 |
配置MLD离开组报文的源IPv6地址 |
mld-snooping done source-ip ipv6-address |
缺省情况下,MLD离开组报文的源IPv6地址为VSI绑定的VSI接口的IPv6链路本地地址;若绑定的VSI接口没有IPv6链路本地地址,则采用FE80::02FF:FFFF:FE00:0001 |
当二层设备的出端口发生拥塞时,二层设备通过识别报文的802.1p优先级,优先发送优先级较高的报文。用户可以通过本配置改变MLD报文(包括本设备生成的以及途经本设备的)的802.1p优先级。
对于基于VLAN的配置,用户既可在MLD-Snooping视图下对所有VLAN进行全局配置,也可在VLAN视图下只对当前VLAN进行配置,后者的配置优先级较高。
表1-30 全局配置MLD报文的802.1p优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
全局配置MLD报文的802.1p优先级 |
dot1p-priority priority |
缺省情况下,MLD报文的802.1p优先级为6 |
表1-31 在VLAN内配置MLD报文的802.1p优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
在VLAN内配置MLD报文的802.1p优先级 |
mld-snooping dot1p-priority priority |
缺省情况下,VLAN内MLD报文的802.1p优先级为6 |
在配置MLD Snooping策略之前,需完成以下任务:
· 在VLAN/VSI内使能MLD Snooping
在配置MLD Snooping策略之前,需准备以下数据:
· IPv6组播组过滤的ACL规则
· 端口加入的IPv6组播组最大数量
本配置只对动态组播组有效,对静态组播组无效。
在使能了MLD Snooping的二层设备上,通过配置IPv6组播组过滤器,可以限制用户对组播节目的点播。
在实际应用中,当用户点播某个组播节目时,主机会发起一个MLD成员关系报告报文,该报文将在二层设备上接受IPv6组播组过滤器的检查,只有通过了检查,二层设备才会将该主机所属的端口加入到出端口列表中,从而达到控制用户点播组播节目的目的。
用户既可在MLD-Snooping视图下对所有端口进行全局配置,也可在接口视图下只对当前端口进行配置,后者的配置优先级较高。
表1-32 全局配置IPv6组播组过滤器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
全局配置IPv6组播组过滤器 |
group-policy ipv6-acl-number [ vlan vlan-list ] |
缺省情况下,未配置IPv6组播组过滤器,即主机可以加入任意合法的IPv6组播组 |
表1-33 在端口上配置IPv6组播组过滤器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
在端口上配置IPv6组播组过滤器 |
mld-snooping group-policy ipv6-acl-number [ vlan vlan-list ] |
缺省情况下,未配置IPv6组播组过滤器,即主机可以加入任意合法的IPv6组播组 |
通过配置IPv6组播数据报文源端口过滤功能,可以允许或禁止端口作为IPv6组播源端口:
· 开启该功能后,端口不能连接IPv6组播源,因为该端口将过滤掉所有的IPv6组播数据报文(但允许IPv6组播协议报文通过),因此只能连接IPv6组播数据接收者。
· 关闭该功能后,端口既能连接IPv6组播源,也能连接IPv6组播数据接收者。
全局和在端口上配置IPv6组播数据报文源端口过滤功能的优先级相同,最新配置生效。
表1-34 全局配置IPv6组播数据报文源端口过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
开启指定端口的IPv6组播数据报文源端口过滤功能 |
source-deny port interface-list |
缺省情况下,IPv6组播数据报文源端口过滤功能处于关闭状态 |
表1-35 在端口上配置IPv6组播数据报文源端口过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网接口视图 |
interface interface-type interface-number |
- |
开启当前端口的IPv6组播数据报文源端口过滤功能 |
mld-snooping source-deny |
缺省情况下,IPv6组播数据报文源端口过滤功能处于关闭状态 |
未知IPv6组播数据报文是指在MLD Snooping转发表中不存在对应转发表项的那些IPv6组播数据报文:
· 当开启了丢弃未知IPv6组播数据报文功能时,二层设备将丢弃所有收到的未知IPv6组播数据报文;
· 当关闭了丢弃未知IPv6组播数据报文功能时,二层设备将在未知IPv6组播数据报文所属的VLAN内广播该报文。
用户既可在MLD-Snooping视图下对所有VLAN进行全局配置,也可在VLAN视图/VSI视图下只对当前VLAN/VSI进行配置。
需要注意的是,MLD-Snooping视图下的全局配置仅对所有VLAN有效,对VSI无效。
MLD-Snooping视图和VLAN视图/VSI视图下的配置是互斥的。也就是说,当在MLD-Snooping视图下全局开启了丢弃未知IPv6组播数据报文的功能后,不允许在VLAN视图/VSI视图下开启或关闭该功能,反之亦然。
在VLAN视图/VSI视图下开启了丢弃未知IPv6组播数据报文的功能之后,仍会向该VLAN/VSI内的其它路由器端口转发未知IPv6组播数据报文。
在VLAN视图下配置本功能时,需要注意的是:
· 不要同时配置丢弃未知IPv6组播数据报文功能和VLAN映射功能,否则会导致丢弃未知IPv6组播数据报文功能不生效。有关VLAN映射的详细介绍,请参见“二层技术-以太网交换配置指导”中的“VLAN映射”。
· 仅当QinQ功能配置在SH系列接口板的接口上,丢弃未知IPv6组播数据报文功能和QinQ功能才能同时使用。有关QinQ的详细介绍,请参见“二层技术-以太网交换配置指导”中的“QinQ”。
表1-36 全局配置丢弃未知IPv6组播数据报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
全局开启丢弃未知IPv6组播数据报文功能 |
drop-unknown |
缺省情况下,丢弃未知IPv6组播数据报文功能处于关闭状态,即对未知IPv6组播数据报文进行广播 |
表1-37 在VLAN/VSI内配置丢弃未知IPv6组播数据报文
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入VLAN视图 |
vlan vlan-id |
二者选其一 |
进入VSI视图 |
vsi vsi-name |
||
在VLAN/VSI内开启丢弃未知IPv6组播数据报文功能 |
mld-snooping drop-unknown |
缺省情况下,丢弃未知IPv6组播数据报文功能处于关闭状态,即对未知IPv6组播数据报文进行广播 |
当二层设备收到来自某IPv6组播组成员的MLD成员关系报告报文时,会将该报文转发给与其直连的三层设备。这样,当二层设备上存在属于某IPv6组播组的多个成员时,与其直连的三层设备会收到这些成员发送的相同MLD成员关系报告报文。
当开启了MLD成员关系报告报文抑制功能后,在一个查询间隔内二层设备只会把收到的某IPv6组播组内的第一个MLD成员关系报告报文转发给三层设备,而不继续向三层设备转发来自同一IPv6组播组的其它MLD成员关系报告报文,这样可以减少网络中的报文数量。
表1-38 配置MLD成员关系报告报文抑制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
开启MLD成员关系报告报文抑制功能 |
report-aggregation |
缺省情况下,MLD成员关系报告报文抑制功能处于开启状态 |
本配置只对动态组播组有效,对静态组播组无效。
通过配置端口加入的IPv6组播组的最大数量,可以限制用户点播组播节目的数量,从而控制了端口上的数据流量。
表1-39 配置端口加入的IPv6组播组最大数量
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
配置端口加入的IPv6组播组最大数量 |
mld-snooping group-limit limit [ vlan vlan-list ] |
缺省情况下,未对端口加入的IPv6组播组最大数量进行限制 |
在配置端口加入的IPv6组播组最大数量时,如果当前端口上的IPv6组播组数量已超过配置值,系统将把该端口相关的所有转发表项从MLD Snooping转发表中删除,该端口下的主机都需要重新加入IPv6组播组,直至该端口上的IPv6组播组数量达到限制值,系统将自动丢弃新的MLD成员关系报告报文。
· 本配置只对动态组播组有效,对静态组播组无效。
· 当设备上维护的MLD Snooping转发表项达到配置的MLD Snooping转发表项的全局最大数量并且端口新加入的IPv6组播组不在设备维护的IPv6组播组列表中时,IPv6组播组替换功能不能生效。
当端口上的IPv6组播组数目达到配置端口加入的IPv6组播组最大数量时,会自动丢弃新的MLD成员关系报告报文。IPv6组播组替换功能开启后,当端口收到新的MLD成员关系报告报文时,会自动离开IPv6地址最小的IPv6组播组并加入新的IPv6组播组。该特性的典型应用就是频道切换。用户切换频道时,就是离开一个IPv6组播组并加入到新的IPv6组播组。
用户既可在MLD-Snooping视图下对所有端口进行全局配置,也可在接口视图下只对当前端口进行配置,后者的配置优先级较高。
表1-40 全局配置IPv6组播组替换功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
全局开启IPv6组播组替换功能 |
overflow-replace [ vlan vlan-list ] |
缺省情况下,IPv6组播组替换功能处于关闭状态 |
表1-41 在端口上配置IPv6组播组替换功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
在端口上开启IPv6组播组替换功能 |
mld-snooping overflow-replace [ vlan vlan-list ] |
缺省情况下,IPv6组播组替换功能处于关闭状态 |
通过开启MLD Snooping主机跟踪功能,可以使交换机能够记录正在接收IPv6组播数据的成员主机信息(包括主机的IPv6地址、加入IPv6组播组的运行时长和超时剩余时间等),以便于网络管理员对这些主机进行监控和管理。
表1-42 全局配置MLD Snooping主机跟踪功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
全局开启MLD Snooping主机跟踪功能 |
host-tracking |
缺省情况下,MLD Snooping主机跟踪功能处于关闭状态 |
表1-43 在VLAN内配置MLD Snooping主机跟踪功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
在VLAN内开启MLD Snooping主机跟踪功能 |
mld-snooping host-tracking |
缺省情况下,MLD Snooping主机跟踪功能处于关闭状态 |
DSCP优先级用来体现报文自身的优先等级,决定报文传输的优先程度。通过本配置可以指定设备发送的MLD协议报文的DSCP优先级。
图1-7 配置设备发送的MLD Snooping协议报文的DSCP优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD Snooping视图 |
mld-snooping |
- |
配置设备发送的MLD协议报文的DSCP优先级 |
dscp dscp-value |
缺省情况下,设备发送的MLD协议报文的DSCP优先级为48 |
MLD Snooping利用M-LAG功能将两台物理设备连接起来虚拟成一台设备,使用该虚拟设备连接组播源或组播接收者,可避免单点故障对组播网络造成影响,提高组播网络可靠性。
对于基于VSI的MLD Snooping,只支持EVPN VXLAN组网下的M-LAG,且需要同时使能MLD Snooping代理功能。
IPv6 PIM Snooping不支持M-LAG。有关IPv6 PIM Snooping的详细介绍,请参见“IP组播配置指导”中的“IPv6 PIM Snooping”。
图1-8 配置MLD Snooping支持M-LAG
操作 |
说明 |
配置M-LAG |
M-LAG的配置方法请参见“二层技术-以太网交换配置指导”中的“M-LAG” |
使能MLD Snooping |
使能MLD Snooping的方法请参见“1.5 使能MLD Snooping” |
在完成上述配置后,在任意视图下执行display命令可以显示配置后MLD Snooping的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除MLD Snooping的信息。
表1-44 MLD Snooping显示和维护
命令 |
|
显示IPv6二层组播快速转发表信息(独立运行模式) |
display ipv6 l2-multicast fast-forwarding cache [ vlan vlan-id ] [ ipv6-source-address | ipv6-group-address ] * [ slot slot-number ] |
显示IPv6二层组播快速转发表信息(IRF模式) |
display ipv6 l2-multicast fast-forwarding cache [ vlan vlan-id ] [ ipv6-source-address | ipv6-group-address ] * [ chassis chassis-number slot slot-number ] |
显示IPv6二层组播的IP组播组信息(独立运行模式) |
display ipv6 l2-multicast ip [ group ipv6-group-address | source ipv6-source-address ] * [ vlan vlan-id | vsi vsi-name ] [ slot slot-number ] |
显示IPv6二层组播的IP组播组信息(IRF模式) |
display ipv6 l2-multicast ip [ group ipv6-group-address | source ipv6-source-address ] * [ vlan vlan-id | vsi vsi-name ] [ chassis chassis-number slot slot-number ] |
显示IPv6二层组播的IP转发表信息(独立运行模式) |
display ipv6 l2-multicast ip forwarding [ group ipv6-group-address | source ipv6-source-address ] * [ vlan vlan-id | vsi vsi-name ] [ slot slot-number ] |
显示IPv6二层组播的IP转发表信息(IRF模式) |
display ipv6 l2-multicast ip forwarding [ group ipv6-group-address | source ipv6-source-address ] * [ vlan vlan-id | vsi vsi-name ] [ chassis chassis-number slot slot-number ] |
显示IPv6二层组播的MAC组播组信息(独立运行模式) |
display ipv6 l2-multicast mac [ mac-address ] [ vlan vlan-id | vsi vsi-name ] [ slot slot-number ] |
显示IPv6二层组播的MAC组播组信息(IRF模式) |
display ipv6 l2-multicast mac [ mac-address ] [ vlan vlan-id | vsi vsi-name ] [ chassis chassis-number slot slot-number ] |
显示IPv6二层组播的MAC转发表信息(独立运行模式) |
display ipv6 l2-multicast mac forwarding [ mac-address ] [ vlan vlan-id | vsi vsi-name ] [ slot slot-number ] |
显示IPv6二层组播的MAC转发表信息(IRF模式) |
display ipv6 l2-multicast mac forwarding [ mac-address ] [ vlan vlan-id | vsi vsi-name ] [ chassis chassis-number slot slot-number ] |
显示IPv6静态组播MAC地址表信息 |
display mac-address [ mac-address [ vlan vlan-id ] | [ multicast ] [ vlan vlan-id ] [ count ] ] |
显示MLD Snooping的状态信息 |
display mld-snooping [ global | vlan vlan-id | vsi vsi-name ] |
显示动态MLD Snooping转发表的信息(独立运行模式) |
display mld-snooping group [ ipv6-group-address | ipv6-source-address ] * [ vlan vlan-id | vsi vsi-name ] [ interface interface-type interface-number | [ verbose ] [ slot slot-number ] ] |
显示动态MLD Snooping转发表的信息(IRF模式) |
display mld-snooping group [ ipv6-group-address | ipv6-source-address ] * [ vlan vlan-id | vsi vsi-name ] [ interface interface-type interface-number | [ verbose ] [ chassis chassis-number slot slot-number ] ] |
显示MLD Snooping 主机跟踪信息(独立运行模式) |
display mld-snooping host-tracking vlan vlan-id group ipv6-group-address [ source ipv6-source-address ] [ slot slot-number ] |
显示MLD Snooping 主机跟踪信息(IRF模式) |
display mld-snooping host-tracking vlan vlan-id group ipv6-group-address [ source ipv6-source-address ] [ chassis chassis-number slot slot-number ] |
显示IPv6动态路由器端口的信息(独立运行模式) |
display mld-snooping router-port [ vlan vlan-id | vsi vsi-name ] [ verbose ] [ slot slot-number ] |
显示IPv6动态路由器端口的信息(IRF模式) |
display mld-snooping router-port [ vlan vlan-id | vsi vsi-name ] [ verbose ] [ chassis chassis-number slot slot-number ] |
显示静态MLD Snooping转发表的信息(独立运行模式) |
display mld-snooping static-group [ ipv6-group-address | ipv6-source-address ] * [ vlan vlan-id ] [ verbose ] [ slot slot-number ] |
显示静态MLD Snooping转发表的信息(IRF模式) |
display mld-snooping static-group [ ipv6-group-address | ipv6-source-address ] * [ vlan vlan-id ] [ verbose ] [ chassis chassis-number slot slot-number ] |
显示IPv6静态路由器端口的信息(独立运行模式) |
display mld-snooping static-router-port [ vlan vlan-id ] [ verbose ] [ slot slot-number ] |
显示IPv6静态路由器端口的信息(IRF模式) |
display mld-snooping static-router-port [ vlan vlan-id ] [ verbose ] [ chassis chassis-number slot slot-number ] |
显示MLD Snooping监听到的MLD报文和IPv6 PIM hello报文的统计信息 |
display mld-snooping statistics |
清除IPv6二层组播快速转发表中的转发项(独立运行模式) |
reset ipv6 l2-multicast fast-forwarding cache [ vlan vlan-id ] { { ipv6-source-address | ipv6-group-address } * | all } [ slot slot-number ] |
清除IPv6二层组播快速转发表中的转发项(IRF模式) |
reset ipv6 l2-multicast fast-forwarding cache [ vlan vlan-id ] { { ipv6-source-address | ipv6-group-address } * | all } [ chassis chassis-number slot slot-number ] |
清除动态MLD Snooping转发表的信息 |
reset mld-snooping group { ipv6-group-address [ ipv6-source-address ] | all } [ vlan vlan-id | vsi vsi-name ] |
清除IPv6动态路由器端口的信息 |
reset mld-snooping router-port { all | vlan vlan-id | vsi vsi-name } |
清除MLD Snooping监听到的MLD报文和IPv6 PIM hello报文的统计信息 |
reset mld-snooping statistics |
有关display mac-address multicast命令的详细介绍,请参见“IP组播命令参考”中的“IGMP Snooping”。
· 如图1-9所示,Router A通过GigabitEthernet1/0/2接口连接IPv6组播源(Source),通过GigabitEthernet1/0/1接口连接Switch A;Router A上运行MLDv1,Switch A上运行版本1的MLD Snooping,并由Router A充当MLD查询器。
· 通过配置,使Host A和Host B能且只能接收发往IPv6组播组FF1E::101的IPv6组播数据,并且当Host A和Host B发生意外而临时中断接收IPv6组播数据时,发往IPv6组播组FF1E::101的IPv6组播数据也能不间断地通过Switch A的接口GigabitEthernet1/0/3和GigabitEthernet1/0/4转发出去;同时,使Switch A将收到的未知IPv6组播数据直接丢弃,避免在其所属的VLAN 100内广播。
图1-9 基于VLAN的IPv6组策略及模拟主机加入配置组网图
(1) 配置Router A
# 使能IPv6组播路由,在接口GigabitEthernet1/0/2上使能IPv6 PIM-DM,并在接口GigabitEthernet1/0/1上使能MLD。
<RouterA> system-view
[RouterA] ipv6 multicast routing
[RouterA-mrib6] quit
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] mld enable
[RouterA-GigabitEthernet1/0/1] quit
[RouterA] interface gigabitethernet 1/0/2
[RouterA-GigabitEthernet1/0/2] ipv6 pim dm
[RouterA-GigabitEthernet1/0/2] quit
(2) 配置Switch A
# 全局使能MLD Snooping。
<SwitchA> system-view
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/4添加到该VLAN中;在该VLAN内使能MLD Snooping,并开启丢弃未知IPv6组播数据报文功能。
[SwitchA] vlan 100
[SwitchA-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/4
[SwitchA-vlan100] mld-snooping enable
[SwitchA-vlan100] mld-snooping drop-unknown
[SwitchA-vlan100] quit
# 配置IPv6组播组过滤器,以限定VLAN 100内的主机只能加入IPv6组播组FF1E::101。
[SwitchA] acl ipv6 basic 2001
[SwitchA-acl-ipv6-basic-2001] rule permit source ff1e::101 128
[SwitchA-acl-ipv6-basic-2001] quit
[SwitchA] mld-snooping
[SwitchA–mld-snooping] group-policy 2001 vlan 100
[SwitchA–mld-snooping] quit
# 在GigabitEthernet1/0/3和GigabitEthernet1/0/4上分别配置模拟主机加入IPv6组播组FF1E::101。
[SwitchA] interface gigabitethernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] mld-snooping host-join ff1e::101 vlan 100
[SwitchA-GigabitEthernet1/0/3] quit
[SwitchA] interface gigabitethernet 1/0/4
[SwitchA-GigabitEthernet1/0/4] mld-snooping host-join ff1e::101 vlan 100
[SwitchA-GigabitEthernet1/0/4] quit
假设IPv6组播源分别向IPv6组播组FF1E::101和FF1E::202发送的IPv6组播数据,Host A和Host B也都申请加入这两个IPv6组播组。
# 显示Switch A上VLAN 100内动态MLD Snooping转发表的信息。
[SwitchA] display mld-snooping group vlan 100
Total 1 entries.
VLAN 100: Total 1 entries.
(::, FF1E::101)
Host ports (2 in total):
GE1/0/3 (00:03:23)
GE1/0/4 (00:04:10)
由此可见,Host A和Host B所在的端口GigabitEthernet1/0/4和GigabitEthernet1/0/3均已加入IPv6组播组FF1E::101,但都未加入IPv6组播组FF1E::202,这表明IPv6组播组过滤器已生效。
· 如图1-10所示,Router A通过GigabitEthernet1/0/2接口连接IPv6组播源(Source),通过GigabitEthernet1/0/1接口连接Switch A;Router A上运行MLDv1,Switch A、Switch B和Switch C上运行版本1的MLD Snooping,并由Router A充当MLD查询器。
· Host A和Host C均为IPv6组播组FF1E::101的固定接收者(Receiver),通过将Switch C上的端口GigabitEthernet1/0/3和GigabitEthernet1/0/5配置为IPv6组播组FF1E::101的静态成员端口,可以增强IPv6组播数据在传输过程中的可靠性。
· 假设由于受STP等链路层协议的影响,为了避免出现环路,Switch A—Switch C的转发路径在正常情况下是阻断的,IPv6组播数据只能通过Switch A—Switch B—Switch C的路径传递给连接在Switch C上的接收者;要求通过将Switch A的端口GigabitEthernet1/0/3配置为静态路由器端口,以保证当Switch A—Switch B—Switch C的路径出现阻断时,IPv6组播数据可以几乎不间断地通过Switch A—Switch C的新路径传递给接收者。
如果没有配置静态路由器端口,那么当Switch A—Switch B—Switch C的路径出现阻断时,至少需要等待一个MLD查询和响应周期完成后,IPv6组播数据才能通过Switch A—Switch C的新路径传递给接收者,IPv6组播数据的传输在这个过程中将中断。
有关STP(Spanning Tree Protocol,生成树协议)的详细介绍,请参见“二层技术-以太网交换配置指导”中的“生成树”。
图1-10 基于VLAN的静态端口配置组网图
按照组网图配置各接口的IPv6地址和前缀长度。
(1) 配置Router A
# 使能IPv6组播路由,在接口GigabitEthernet1/0/2上使能IPv6 PIM-DM,并在接口GigabitEthernet1/0/1上使能MLD。
<RouterA> system-view
[RouterA] ipv6 multicast routing
[RouterA-mrib6] quit
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] mld enable
[RouterA-GigabitEthernet1/0/1] quit
[RouterA] interface gigabitethernet 1/0/2
[RouterA-GigabitEthernet1/0/2] ipv6 pim dm
[RouterA-GigabitEthernet1/0/2] quit
(2) 配置Switch A
# 全局使能MLD Snooping。
<SwitchA> system-view
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/3添加到该VLAN中,并在该VLAN内使能MLD Snooping。
[SwitchA] vlan 100
[SwitchA-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/3
[SwitchA-vlan100] mld-snooping enable
[SwitchA-vlan100] quit
# 把GigabitEthernet1/0/3配置为静态路由器端口。
[SwitchA] interface gigabitethernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] mld-snooping static-router-port vlan 100
[SwitchA-GigabitEthernet1/0/3] quit
(3) 配置Switch B
# 全局使能MLD Snooping。
<SwitchB> system-view
[SwitchB] mld-snooping
[SwitchB-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1和GigabitEthernet1/0/2添加到该VLAN中,并在该VLAN内使能MLD Snooping。
[SwitchB] vlan 100
[SwitchB-vlan100] port gigabitethernet 1/0/1 gigabitethernet 1/0/2
[SwitchB-vlan100] mld-snooping enable
[SwitchB-vlan100] quit
(4) 配置Switch C
# 全局使能MLD Snooping。
<SwitchC> system-view
[SwitchC] mld-snooping
[SwitchC-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/5添加到该VLAN中,并在该VLAN内使能MLD Snooping。
[SwitchC] vlan 100
[SwitchC-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/5
[SwitchC-vlan100] mld-snooping enable
[SwitchC-vlan100] quit
# 分别在端口GigabitEthernet1/0/3和GigabitEthernet1/0/5上配置静态加入IPv6组播组FF1E::101。
[SwitchC] interface gigabitethernet 1/0/3
[SwitchC-GigabitEthernet1/0/3] mld-snooping static-group ff1e::101 vlan 100
[SwitchC-GigabitEthernet1/0/3] quit
[SwitchC] interface gigabitethernet 1/0/5
[SwitchC-GigabitEthernet1/0/5] mld-snooping static-group ff1e::101 vlan 100
[SwitchC-GigabitEthernet1/0/5] quit
# 显示Switch A上VLAN 100内静态路由器端口的信息。
[SwitchA] display mld-snooping static-router-port vlan 100
VLAN 100:
Router ports (1 in total):
GE1/0/3
由此可见,Switch A上的端口GigabitEthernet1/0/3已经成为了静态路由器端口。
# 显示Switch C上VLAN 100内静态MLD Snooping转发表的信息。
[SwitchC] display mld-snooping static-group vlan 100
Total 1 entries.
VLAN 100: Total 1 entries.
(::, FF1E::101)
Host ports (2 in total):
GE1/0/3
GE1/0/5
由此可见,Switch C上的端口GigabitEthernet1/0/3和GigabitEthernet1/0/5已经成为了IPv6组播组FF1E::101的静态成员端口。
· 如图1-11所示,在一个没有三层设备的纯二层网络环境中,IPv6组播源Source 1和Source 2分别向IPv6组播组FF1E::101和FF1E::102发送IPv6组播数据,Host A和Host C是IPv6组播组FF1E::101的接收者(Receiver),Host B和Host D则是IPv6组播组FF1E::102的接收者;所有接收者均使用MLDv1,所有交换机上都运行版本1的MLD Snooping,并选择距IPv6组播源较近的Switch A来充当MLD Snooping查询器。
· 为防止交换机在没有二层IPv6组播转发表项时将IPv6组播数据在VLAN内广播,在所有交换机上都开启丢弃未知IPv6组播数据报文功能。
图1-11 基于VLAN的MLD Snooping查询器配置组网图
(1) 配置Switch A
# 全局使能MLD Snooping。
<SwitchA> system-view
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/3添加到该VLAN中;在该VLAN内使能MLD Snooping,并开启丢弃未知IPv6组播数据报文功能。
[SwitchA] vlan 100
[SwitchA-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/3
[SwitchA-vlan100] mld-snooping enable
[SwitchA-vlan100] mld-snooping drop-unknown
# 在VLAN 100内使能MLD Snooping查询器。
[SwitchA-vlan100] mld-snooping querier
[SwitchA-vlan100] quit
(2) 配置Switch B
# 全局使能MLD Snooping。
<SwitchB> system-view
[SwitchB] mld-snooping
[SwitchB-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/4添加到该VLAN中;在该VLAN内使能MLD Snooping,并开启丢弃未知IPv6组播数据报文功能。
[SwitchB] vlan 100
[SwitchB-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/4
[SwitchB-vlan100] mld-snooping enable
[SwitchB-vlan100] mld-snooping drop-unknown
[SwitchB-vlan100] quit
(3) 配置Switch C
# 全局使能MLD Snooping。
<SwitchC> system-view
[SwitchC] mld-snooping
[SwitchC-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/3添加到该VLAN中;在该VLAN内使能MLD Snooping,并开启丢弃未知IPv6组播数据报文功能。
[SwitchC] vlan 100
[SwitchC-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/3
[SwitchC-vlan100] mld-snooping enable
[SwitchC-vlan100] mld-snooping drop-unknown
[SwitchC-vlan100] quit
(4) 配置Switch D
# 全局使能MLD Snooping。
<SwitchD> system-view
[SwitchD] mld-snooping
[SwitchD-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/2添加到该VLAN中;在该VLAN内使能MLD Snooping,并开启丢弃未知IPv6组播数据报文功能。
[SwitchD] vlan 100
[SwitchD-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/2
[SwitchD-vlan100] mld-snooping enable
[SwitchD-vlan100] mld-snooping drop-unknown
[SwitchD-vlan100] quit
当MLD Snooping查询器开始工作之后,除查询器以外的所有交换机都能收到MLD普遍组查询报文。
# 显示Switch B上收到的MLD报文和IPv6 PIM hello报文的统计信息。
[SwitchB] display mld-snooping statistics
Received MLD messages:
MLD general queries: 19
M-LAG: 19
MLDv1 specific queries: 0
M-LAG: 0
MLDv2 specific queries: 0
M-LAG: 0
MLDv2 specific sg queries: 0
M-LAG: 0
MLDv1 reports: 19
M-LAG: 19
MLDv2 reports: 0
M-LAG: 0
MLDv2 reports with right and wrong records: 0
M-LAG: 0
MLD dones: 5
M-LAG: 5
Error MLD messages: 1
M-LAG: 1
Sent MLD messages:
MLDv1 specific queries: 0
MLDv2 specific queries: 0
MLDv2 specific sg queries: 0
Received IPv6 PIM hello: 0
· 如图1-12所示,Router A通过GigabitEthernet1/0/2接口连接IPv6组播源(Source),通过GigabitEthernet1/0/1接口连接Switch A;Router A上运行MLDv1,Switch A上运行版本1的MLD Snooping,并由Router A充当MLD查询器。
· 通过配置,使Switch A能够代理下游主机向Router A发送的MLD报告报文和离开报文,以及响应Router A发来的MLD查询报文并向下游主机转发。
图1-12 基于VLAN的MLD Snooping Proxy配置组网图
使能各设备的IPv6转发功能,并按照组网图配置各接口的IPv6地址和前缀长度。
(1) 配置Router A
# 使能IPv6组播路由,在接口GigabitEthernet1/0/2上使能IPv6 PIM-DM,并在接口GigabitEthernet1/0/1上使能MLD。
<RouterA> system-view
[RouterA] ipv6 multicast routing
[RouterA-mrib6] quit
[RouterA] interface gigabitethernet 1/0/1
[RouterA-GigabitEthernet1/0/1] mld enable
[RouterA-GigabitEthernet1/0/1] ipv6 pim dm
[RouterA-GigabitEthernet1/0/1] quit
[RouterA] interface gigabitethernet 1/0/2
[RouterA-GigabitEthernet1/0/2] ipv6 pim dm
[RouterA-GigabitEthernet1/0/2] quit
(2) 配置Switch A
# 全局使能MLD Snooping。
<SwitchA> system-view
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
# 创建VLAN 100,把端口GigabitEthernet1/0/1到GigabitEthernet1/0/4添加到该VLAN中;在该VLAN内使能MLD Snooping,并使能MLD Snooping Proxy。
[SwitchA] vlan 100
[SwitchA-vlan100] port gigabitethernet 1/0/1 to gigabitethernet 1/0/4
[SwitchA-vlan100] mld-snooping enable
[SwitchA-vlan100] mld-snooping proxy enable
[SwitchA-vlan100] quit
当配置完成后,Host A和Host B分别发送组地址为FF1E::101的MLD加入报文,Switch A收到该报文后通过其路由器端口GigabitEthernet1/0/1向Router A也发送该组的加入报文。通过使用display mld-snooping group和display mld group命令可以分别查看MLD Snooping组和MLD组的信息,例如:
# 查看Switch A上MLD Snooping组的信息。
[SwitchA] display mld-snooping group
Total 1 entries.
VLAN 100: Total 1 entries.
(::, FF1E::101)
Host ports (2 in total):
GE1/0/3 (00:04:09)
GE1/0/4 (00:03:06)
# 查看Router A上MLD组的信息。
[RouterA] display mld group
MLD groups in total: 1
GigabitEthernet1/0/1(2001::1):
MLD groups reported in total: 1
Group address: FF1E::101
Last reporter: FE80::2FF:FFFF:FE00:1
Uptime: 00:00:31
Expires: 00:03:48
当Host A离开IPv6组播组FF1E::101时,向Switch A发送该组的MLD离开报文,但由于Host B仍未离开该组,因此Switch A并不会删除该组,也不会向Router A发送该组的离开报文,只是在该组对应转发表项的成员端口列表中将端口GigabitEthernet1/0/4删除。通过使用display mld-snooping group命令可以查看MLD Snooping组的信息,例如:
# 查看Switch A上MLD Snooping组的信息。
[SwitchA] display mld-snooping group
Total 1 entries.
VLAN 100: Total 1 entries.
(::, FF1E::101)
Host ports (1 in total):
GE1/0/3 (00:01:23)
在VXLAN网络中,Switch A、Switch B、Switch C为与服务器连接的VTEP设备。虚拟机VM 1、VM 2和VM 3同属于VXLAN 10。通过VXLAN实现不同站点间的二层互联,且站点之间的泛洪流量采用单播路由方式(头端复制方式)转发。
要求基于现有VXLAN网络,通过配置MLD Snooping功能,实现网络中IPv6二层组播转发,以减轻VTEP设备对已知IPv6组播数据报文的复制负担。
图1-13 基于VXLAN的MLD Snooping配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int11 |
11.1.1.1/24 |
Switch C |
Vlan-int13 |
13.1.1.3/24 |
|
Loop0 |
1.1.1.1/32 |
|
Loop0 |
3.3.3.3/32 |
Switch B |
Vlan-int12 |
12.1.1.2/24 |
Switch 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 |
按照组网图配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议。
(1) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 全局使能MLD Snooping。
[SwitchA] mld-snooping
[SwitchA -mld-snooping] quit
# 在VSI vpna内使能MLD Snooping,并开启丢弃未知组播数据报文功能。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] mld-snooping enable
[SwitchA-vsi-vpna] mld-snooping drop-unknown
[SwitchA-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchA] interface loopback 0
[SwitchA-Loopback0] ip address 1.1.1.1 255.255.255.255
[SwitchA-Loopback0] quit
# 在Switch A和Switch B之间建立VXLAN隧道:
· 创建模式为VXLAN的隧道接口Tunnel1
· 指定隧道的源端地址为本地接口Loopback0的地址1.1.1.1
· 指定隧道的目的端地址为Switch B上接口Loopback0的地址2.2.2.2。
[SwitchA] interface tunnel 1 mode vxlan
[SwitchA-Tunnel1] source 1.1.1.1
[SwitchA-Tunnel1] destination 2.2.2.2
[SwitchA-Tunnel1] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchA] interface tunnel 2 mode vxlan
[SwitchA-Tunnel2] source 1.1.1.1
[SwitchA-Tunnel2] destination 3.3.3.3
[SwitchA-Tunnel2] quit
# 配置Tunnel1和Tunnel2与VXLAN 10关联。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] tunnel 1
[SwitchA-vsi-vpna-vxlan-10] tunnel 2
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 配置接入服务器的接口GigabitEthernet1/0/1为Trunk端口,允许VLAN 2通过,并创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchA-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-GigabitEthernet1/0/1-srv1000] quit
[SwitchA-GigabitEthernet1/0/1] quit
(2) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 全局使能MLD Snooping。
[SwitchB] mld-snooping
[SwitchB -mld-snooping] quit
# 在VSI vpna内使能MLD Snooping,并开启丢弃未知组播数据报文功能。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] mld-snooping enable
[SwitchB-vsi-vpna] mld-snooping drop-unknown
[SwitchB-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchB] interface loopback 0
[SwitchB-Loopback0] ip address 2.2.2.2 255.255.255.255
[SwitchB-Loopback0] quit
# 在Switch A和Switch B之间建立VXLAN隧道。
[SwitchB] interface tunnel 2 mode vxlan
[SwitchB-Tunnel2] source 2.2.2.2
[SwitchB-Tunnel2] destination 1.1.1.1
[SwitchB-Tunnel2] quit
# 在Switch B和Switch C之间建立VXLAN隧道。
[SwitchB] interface tunnel 3 mode vxlan
[SwitchB-Tunnel3] source 2.2.2.2
[SwitchB-Tunnel3] destination 3.3.3.3
[SwitchB-Tunnel3] quit
# 配置Tunnel2和Tunnel3与VXLAN10关联。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] tunnel 2
[SwitchB-vsi-vpna-vxlan-10] tunnel 3
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 配置接入服务器的接口GigabitEthernet1/0/1为Trunk端口,允许VLAN 2通过,并创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface gigabitethernet 1/0/1
[SwitchB-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchB-GigabitEthernet1/0/1] service-instance 1000
[SwitchB-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchB-GigabitEthernet1/0/1-srv1000] quit
[SwitchB-GigabitEthernet1/0/1] quit
(3) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 创建VSI实例vpna和VXLAN 10。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 全局使能MLD Snooping。
[SwitchB] mld-snooping
[SwitchB -mld-snooping] quit
# 在VSI vpna内使能MLD Snooping,并开启丢弃未知组播数据报文和二层组播查询器功能。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] mld-snooping enable
[SwitchC-vsi-vpna] mld-snooping drop-unknown
[SwitchC-vsi-vpna] mld-snooping general-query source-ip fe80::3
[SwitchC-vsi-vpna] mld-snooping querier
[SwitchC-vsi-vpna] quit
# 配置接口Loopback0的IP地址,作为隧道的源端地址。
[SwitchC] interface loopback 0
[SwitchC-Loopback0] ip address 3.3.3.3 255.255.255.255
[SwitchC-Loopback0] quit
# 在Switch A和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 1 mode vxlan
[SwitchC-Tunnel1] source 3.3.3.3
[SwitchC-Tunnel1] destination 1.1.1.1
[SwitchC-Tunnel1] quit
# 在Switch B和Switch C之间建立VXLAN隧道。
[SwitchC] interface tunnel 3 mode vxlan
[SwitchC-Tunnel3] source 3.3.3.3
[SwitchC-Tunnel3] destination 2.2.2.2
[SwitchC-Tunnel3] quit
# 配置Tunnel1和Tunnel3与VXLAN 10关联。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] tunnel 1
[SwitchC-vsi-vpna-vxlan-10] tunnel 3
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 配置接入服务器的接口GigabitEthernet1/0/1为Trunk端口,允许VLAN 2通过,并创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchC] interface gigabitethernet 1/0/1
[SwitchC-GigabitEthernet1/0/1] port link-type trunk
[SwitchC-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchC-GigabitEthernet1/0/1] service-instance 1000
[SwitchC-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchC-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchC-GigabitEthernet1/0/1-srv1000] quit
[SwitchC-GigabitEthernet1/0/1] quit
# 在Switch A上显示VSI vpna内动态路由器端口信息。
[SwitchA] display mld-snooping router-port vsi vpna
VSI vpna:
Router ports (1 in total):
Tun2 (VXLAN ID 10) (00:04:17)
# 在Switch B上显示VSI vpna内动态路由器端口信息。
[SwitchB] display mld-snooping router-port vsi vpna
VSI vpna:
Router ports (1 in total):
Tun3 (VXLAN ID 10) (00:04:07)
二层设备不能实现MLD snooping二层组播功能。
MLD Snooping没有使能。
(1) 使用display mld-snooping命令查看MLD Snooping的运行状态。
(2) 如果是没有使能MLD Snooping,则需先在系统视图下使用mld-snooping命令全局使能MLD Snooping,然后在VLAN视图/VSI视图下使用mld-snooping enable命令使能VLAN/VSI内的MLD Snooping。
(3) 如果只是没有在相应VLAN/VSI下使能MLD Snooping,则只需在VLAN视图/VSI视图下使用mld-snooping enable命令使能VLAN/VSI内的MLD Snooping。
配置了IPv6组播组策略,只允许主机加入某些特定的IPv6组播组,但主机仍然可以收到发往其它IPv6组播组的IPv6组播数据。
· IPv6 ACL规则配置不正确;
· IPv6组播组策略应用不正确;
· 没有开启丢弃未知IPv6组播数据报文的功能,使得属于过滤策略之外的IPv6组播数据报文(即未知IPv6组播数据报文)被广播。
(1) 使用display acl ipv6命令查看所配置的IPv6 ACL规则,检查其是否与所要实现的IPv6组播组过滤策略相符合。
(2) 在MLD-Snooping视图或相应的接口视图下使用display this命令查看是否应用了正确的IPv6组播组策略。如果没有,则使用group-policy或mld-snooping group-policy命令应用正确的IPv6组播组策略。
(3) 使用display mld-snooping命令查看是否已开启丢弃未知IPv6组播数据报文的功能。如果没有开启,则使用drop-unknown或mld-snooping drop-unknown命令开启丢弃未知IPv6组播数据报文功能。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!