12-MLD配置
本章节下载: 12-MLD配置 (491.31 KB)
l 仅S5500-EI系列交换机支持MLD。
l 本文所涉及的路由器和路由器图标,代表了一般意义下的路由器或运行了MLD协议的三层交换机。
l 本文中所指的“接口”,代表了一般意义下的三层接口以及配置为三层模式的以太网端口,有关以太网端口模式切换的操作,请参见“二层技术-以太网交换配置指导”中的“以太网端口配置”。
MLD是Multicast Listener Discovery Protocol(组播侦听者发现协议)的简称,它用于IPv6路由器在其直连网段上发现组播侦听者。组播侦听者(Multicast Listener)是那些希望接收组播数据的主机节点。
路由器通过MLD协议,可以了解自己的直连网段上是否有IPv6组播组的侦听者,并在数据库里做相应记录。同时,路由器还维护与这些IPv6组播地址相关的定时器信息。
MLD路由器使用IPv6单播链路本地地址作为源地址发送MLD报文。MLD使用ICMPv6(Internet Control Message Protocol for IPv6,针对IPv6的互联网控制报文协议)报文类型。所有的MLD报文被限制在本地链路上,跳数为1。
到目前为止,MLD有两个版本:
l MLDv1(由RFC 2710定义),源自IGMPv2
l MLDv2(由RFC 3810定义),源自IGMPv3
所有版本的MLD协议都支持ASM(Any-Source Multicast,任意信源组播)模型;MLDv2可以直接应用于SSM(Source-Specific Multicast,指定信源组播)模型,而MLDv1则需要在MLD SSM Mapping技术的支持下才能应用于SSM模型。
有关ASM和SSM模型的介绍,请参见“IP组播配置指导”中的“组播概述”。
MLDv1主要基于查询和响应机制完成对IPv6组播组成员的管理。
当一个网段内有多台IPv6组播路由器时,由于它们都能从主机那里收到MLD成员关系报告报文(Multicast Listener Report Message),因此只需要其中一台路由器发送MLD查询报文(Query Message)就足够了。这就需要有一个查询器(Querier)的选举机制来确定由哪台路由器作为MLD查询器,其选举过程如下:
(1) 所有MLD路由器在初始时都认为自己是查询器,并向本地网段内的所有主机和路由器发送MLD普遍组查询(General Query)报文(目的地址为FF02::1);
(2) 本地网段中的其它MLD路由器在收到该报文后,将报文的源IPv6地址与自己的接口地址作比较。通过比较,IPv6地址最小的路由器将成为查询器,其它路由器成为非查询器(Non-Querier);
(3) 所有非查询器上都会启动一个定时器(即其它查询器存在时间定时器Other Querier Present Timer)。在定时器超时前,如果收到了来自查询器的MLD查询报文,则重置该定时器;否则,就认为原查询器失效,并发起新的查询器选举过程。
图1-1 MLD查询响应示意图
如图1-1所示,假设Host B与Host C想要收到发往IPv6组播组G1的IPv6组播数据,而Host A想要收到发往IPv6组播组G2的IPv6组播数据,那么主机加入IPv6组播组以及MLD查询器(Router B)维护IPv6组播组成员关系的基本过程如下:
(1) 主机会主动向其要加入的IPv6组播组发送MLD成员关系报告报文以声明加入,而不必等待MLD查询器发来的MLD查询报文;
(2) MLD查询器(Router B)周期性地以组播方式向本地网段内的所有主机和路由器发送普遍组查询报文(目的地址为FF02::1);
(3) 在收到该查询报文后,关注G1的Host B与Host C其中之一(这取决于谁的延迟定时器先超时)——譬如Host B会首先以组播方式向G1发送MLD成员关系报告报文,以宣告其属于G1。由于本地网段中的所有主机都能收到Host B发往G1的报告报文,因此当Host C收到该报告报文后,将不再发送同样针对G1的报告报文,因为MLD路由器(Router A和Router B)已知道本地网段中有对G1感兴趣的主机了。这个机制称为主机上的MLD成员关系报告抑制机制,该机制有助于减少本地网段的信息流量;
(4) 与此同时,由于Host A关注的是G2,所以它仍将以组播方式向G2发送报告报文,以宣告其属于G2;
(5) 经过以上的查询和响应过程,MLD路由器了解到本地网段中有G1和G2的成员,于是由IPv6组播路由协议(如IPv6 PIM)生成(*,G1)和(*,G2)组播转发项作为IPv6组播数据的转发依据,其中的“*”代表任意IPv6组播源;
(6) 当由IPv6组播源发往G1或G2的IPv6组播数据经过组播路由到达MLD路由器时,由于MLD路由器上存在(*,G1)和(*,G2)组播转发项,于是将该IPv6组播数据转发到本地网段,接收者主机便能收到该IPv6组播数据了。
当一个主机离开某IPv6组播组时:
(1) 该主机向本地网段内的所有IPv6组播路由器(目的地址为FF02::2)发送离开组(Done)报文;
(2) 当查询器收到该报文后,向该主机所声明要离开的那个IPv6组播组发送特定组查询(Multicast-Address-Specific Query)报文(目的地址字段和组地址字段均填充为所要查询的IPv6组播组地址);
(3) 如果该网段内还有该IPv6组播组的其它成员,则这些成员在收到特定组查询报文后,会在该报文中所设定的最大响应时间(Maximum Response Delay)内发送成员关系报告报文;
(4) 如果在最大响应时间内收到了该IPv6组播组其它成员发送的成员关系报告报文,查询器就会继续维护该IPv6组播组的成员关系;否则,查询器将认为该网段内已无该IPv6组播组的成员,于是不再维护这个IPv6组播组的成员关系。
MLDv2的原理与MLDv1基本相同,并新增了以下特性:
MLDv2增加了针对IPv6组播源的过滤模式(INCLUDE/EXCLUDE),使主机在加入某IPv6组播组G的同时,能够明确要求接收或拒绝来自某特定IPv6组播源S的IPv6组播信息。当主机加入IPv6组播组时:
l 若要求只接收来自指定IPv6组播源如S1、S2、……发来的IPv6组播信息,则其报告报文中可以标记为INCLUDE Sources(S1,S2,……);
l 若拒绝接收来自指定IPv6组播源如S1、S2、……发来的IPv6组播信息,则其报告报文中可以标记为EXCLUDE Sources(S1,S2,……)。
如图1-2所示,网络中存在Source 1(S1)和Source 2(S2)两个IPv6组播源,均向IPv6组播组G发送IPv6组播报文。Host B仅对从Source 1发往G的信息感兴趣,而对来自Source 2的信息没有兴趣。
图1-2 指定源组的IPv6组播流路经
如果主机与路由器之间运行的是MLDv1,Host B加入IPv6组播组G时无法对IPv6组播源进行选择,因此无论Host B是否需要,来自Source 1和Source 2的IPv6组播信息都将传递给Host B。
当主机与路由器之间运行了MLDv2之后,Host B就可以要求只接收来自Source 1、发往G的IPv6组播信息(S1,G),或要求拒绝来自Source 2、发往G的IPv6组播信息(S2,G),这样就只有来自Source 1的IPv6组播信息才能传递给Host B了。
运行MLDv2的组播路由器按每条直连链路上的组播地址(per multicast address per attached link)来保持IPv6组播组的状态。IPv6组播组的状态包括:
l 过滤模式:保持对INCLUDE或EXCLUDE的状态跟踪。
l 源列表:保持对新增或删除IPv6组播源的跟踪。
l 定时器:表示IPv6组播地址超时后切换到INCLUDE模式的过滤定时器、关于源记录的源定时器等。
运行MLDv2的组播路由器通过侦听接收者主机的状态,记录和维护网段上加入到源组的主机的信息。
下面以MLDv2为例对MLD的报文类型进行介绍:
MLD查询器通过发送MLD查询报文来了解相邻接口的组播侦听状态。MLD查询报文的格式如图1-3所示,图中深蓝色部分为MLDv1的报文格式,各字段的含义如表1-1所示。
图1-3 MLDv2查询报文格式
表1-1 MLDv2查询报文各字段含义
字段 |
描述 |
Type = 130 |
报文类型,130代表查询报文 |
Code |
初始化为0 |
Checksum |
标准的IPv6校验和 |
Maximum Response Delay |
主机发送报告报文前允许的最大响应时间 |
Reserved |
保留字段,初始化为0 |
Multicast Address |
l 普遍组查询中,此字段设置为0 l 特定组或特定源组查询中,此字段设置为待查询的IPv6组播组地址 |
S |
标识位,表示路由器接收到查询报文后是否对定时器更新进行抑制 |
QRV |
查询器的健壮性变量(Querier’s Robustness Variable) |
QQIC |
查询器发送普遍组查询报文的查询间隔(Querier’s Query Interval Code) |
Number of Sources |
l 普遍组查询或特定组查询中,此字段设置为0 l 特定源组查询中,此字段表示查询报文中包含的源地址个数 |
Source Address( i ) |
特定源组查询中的IPv6组播源地址(i=1, 2, …, n,其中n表示源地址的个数) |
主机通过发送MLD报告报文来汇报当前的组播侦听状态。MLD报告报文的格式如图1-4所示,各字段的含义如表1-2所示。
图1-4 MLDv2报告报文格式
表1-2 MLDv2报告报文各字段含义
字段 |
描述 |
Type = 143 |
报文类型,143代表报告报文 |
Reserved |
保留字段,发送时设置为0,接收时忽略此值 |
Checksum |
标准的IPv6校验和 |
Number of Multicast Address Records |
IPv6组播地址记录的个数 |
Multicast Address Record( i ) |
组播地址记录,表示主机在接口上侦听到的每个IPv6组播地址信息,包括记录类型、IPv6组播地址、IPv6源地址等(i=1, 2, …, m,其中m表示IPv6组播地址记录的个数) |
MLD SSM Mapping通过在路由器上配置SSM静态映射规则,从而为运行MLDv1的接收者主机提供对SSM模型的支持。
SSM模型要求在接收者主机所在的网段,路由器能够了解主机加入IPv6组播组时所指定的IPv6组播源。如果接收者主机上运行的是MLDv2,则可以在MLDv2的报告报文中直接指定IPv6组播源的地址;如果某些接收者主机只能运行MLDv1,则在MLDv1的报告报文中无法指定IPv6组播源的地址。这种情况下需要通过在路由器上配置MLD SSM Mapping功能,将MLDv1报告报文中所包含的(*,G)信息映射为(G,INCLUDE,(S1,S2...))信息。
在如图1-5所示的IPv6 SSM网络中,Host A、Host B和Host C上分别运行MLDv1和MLDv2。在不允许将Host A和Host B升级为MLDv2的情况下,若要为Host A和Host B也提供SSM组播服务,则需在Router A上配置MLD SSM Mapping功能。
配置完成后,当Router A收到来自主机的MLDv1报告报文时,首先检查该报文中所携带的IPv6组播组地址G,然后根据检查结果的不同分别进行处理:
(1) 如果G不在IPv6 SSM组地址范围内,则提供ASM组播服务。
(2) 如果G在IPv6 SSM组地址范围内:
l 若Router A上没有G对应的MLD SSM Mapping规则,则无法提供SSM组播服务,丢弃该报文;
l 若Router A上有G对应的MLD SSM Mapping规则,则依据规则将报告报文中所包含的(*,G)信息映射为(G,INCLUDE,(S1,S2...))信息,可以提供SSM组播服务。
l MLD SSM Mapping不对MLDv2的报告报文进行处理。
l 有关IPv6 SSM组地址范围的介绍,请参见“IP组播配置指导”中的“IPv6 PIM配置”。
在一些简单的树型网络拓扑中,边缘设备上并不需要运行复杂的IPv6组播路由协议(如IPv6 PIM),可以通过在这些设备上配置MLD Proxying(MLD代理)功能,使其代理下游主机来发送MLD报文及维护组成员关系,并基于该关系进行IPv6组播转发。在上游设备看来,配置了MLD Proxying功能的设备(称为MLD代理设备)不再是一个IPv6 PIM邻居,而只是一台主机。
如图1-6所示,MLD Proxying模型中定义了以下两种接口类型:
l 上行接口:又称代理接口,指MLD代理设备上运行MLD Proxying功能的接口,即朝向组播分发树树根方向的接口。由于该接口执行MLD协议的主机行为,因此也称为主机接口(Host Interface)。
l 下行接口:指MLD代理设备上除上行接口外其它运行MLD协议的接口,即背向组播分发树树根方向的接口。由于该接口执行MLD协议的路由器行为,因此也称为路由器接口(Router Interface)。
MLD代理设备上维护着一个组成员关系数据库(Membership Database),将所有下行接口维护的组成员关系记录都存到这个数据库中。组成员关系记录的结构如下:(Multicast-address,Filter-mode,Source-list),每条记录都是各下行接口上具有相同组地址的成员关系记录的合集。
上行接口正是依据这个数据库来执行主机行为——当收到查询报文时根据当前数据库状态响应报告报文,或者当数据库变化时主动发送报告或离开报文;而下行接口则执行路由器行为——参与查询器的选举、发送查询报文并根据报告报文维护组成员关系等。
与MLD相关的协议规范有:
l RFC 2710:Multicast Listener Discovery (MLD) for IPv6
l RFC 3810:Multicast Listener Discovery Version 2 (MLDv2) for IPv6
l RFC 4605:Internet Group Management Protocol (IGMP) / Multicast Listener Discovery (MLD)-Based Multicast Forwarding ("IGMP/MLD Proxying")
表1-3 MLD配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置MLD基本功能 |
使能MLD |
必选 |
|
配置MLD版本 |
可选 |
||
配置静态加入 |
可选 |
||
配置IPv6组播组过滤器 |
可选 |
||
配置IPv6组播组数量限制 |
可选 |
||
调整MLD性能 |
配置MLD报文选项 |
可选 |
|
配置MLD查询和响应 |
可选 |
||
配置MLD快速离开 |
可选 |
||
配置MLD SSM Mapping |
使能MLD SSM Mapping |
可选 |
|
配置MLD SSM Mapping规则 |
可选 |
||
配置MLD Proxying |
使能MLD Proxying |
可选 |
|
配置下行接口的IPv6组播转发能力 |
可选 |
l MLD视图下的配置具有全局性,接口视图下的配置仅对所在接口有效。
l 若没有在接口视图下进行配置,则该接口继承MLD视图下的全局配置;若两个视图都进行了配置,则优先采用该接口视图下所作的配置。
在配置MLD基本功能之前,需完成以下任务:
l 配置任一IPv6单播路由协议,实现域内网络层互通
l 配置IPv6 PIM-DM(或IPv6 PIM-SM)
在配置MLD基本功能之前,需准备以下数据:
l MLD的版本
l 以静态方式加入的IPv6组播组和IPv6组播源的地址
l IPv6组播组过滤的ACL规则
l 允许接口加入的IPv6组播组最大数量
在需要建立和维护IPv6组播组成员关系的接口上使能MLD。
表1-4 使能MLD
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IPv6组播路由 |
multicast ipv6 routing-enable |
必选 缺省情况下,IPv6组播路由处于关闭状态 |
进入接口视图 |
interface interface-type interface-number |
- |
使能MLD |
mld enable |
必选 缺省情况下,没有使能MLD |
有关multicast ipv6 routing-enable命令的详细介绍,请参见“IP组播命令参考”中的“IPv6组播路由与转发配置命令”。
由于不同版本MLD协议的报文结构与种类不同,因此需要为同一网段上的所有路由器配置相同版本的MLD,否则MLD将不能正常运行。
表1-5 全局配置MLD版本
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD视图 |
mld |
- |
配置MLD的版本 |
version version-number |
可选 缺省情况下,MLD的版本为MLDv1 |
表1-6 在接口上配置MLD版本
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置MLD的版本 |
mld version version-number |
可选 缺省情况下,MLD的版本为MLDv1 |
在配置了静态加入IPv6组播组或组播源组后,接口将作为该IPv6组播组的虚拟组成员存在,从而可以接收发往该组的IPv6组播数据,以测试IPv6组播数据的转发。
表1-7 配置静态加入
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置静态加入IPv6组播组或组播源组 |
mld static-group ipv6-group-address [ source ipv6-source-address ] |
必选 缺省情况下,接口没有以静态方式加入任何IPv6组播组或组播源组 |
l 在运行IPv6 PIM-SM的设备上配置静态加入时,如果待配接口上使能了IPv6 PIM-SM,则该接口必须为IPv6 PIM-SM的DR,否则该接口将不能加入IPv6组播组或组播源组;如果待配接口上未使能IPv6 PIM-SM但使能了MLD,则该接口必须为MLD查询器,否则该接口也不能加入IPv6组播组或组播源组。有关IPv6 PIM-SM和DR的介绍,请参见“IP组播配置指导”中的“IPv6 PIM配置”。
l 在配置了静态加入后,接口并不会对MLD查询器发出的查询报文进行响应;当配置静态加入或取消静态加入的配置时,接口也不会主动发送MLD成员关系报告报文或MLD离开组报文。也就是说,该接口并没有真正成为该IPv6组播组的成员。
如果不希望接口所在网段上的主机加入某些IPv6组播组,可在该接口上配置IPv6 ACL规则作为过滤器,接口将按照该规则对收到的MLD成员关系报告报文进行过滤,只为该规则所允许的IPv6组播组维护组成员关系。
表1-8 配置IPv6组播组过滤器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置IPv6组播组过滤器 |
mld group-policy acl6-number [ version-number ] |
必选 缺省情况下,接口上没有配置IPv6组播组过滤器,即该接口下的主机可以加入任意合法的IPv6组播组 |
通过配置允许接口加入的IPv6组播组最大数量,可以方便用户灵活控制接口所能加入的IPv6组播组数量。
表1-9 配置IPv6组播组数量限制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置允许接口加入的IPv6组播组最大数量 |
mld group-limit limit |
必选 缺省情况下,允许接口加入的IPv6组播组最大数量为1000 |
本配置只限制动态加入的IPv6组播组数量,而不限制静态加入的IPv6组播组数量。
对于本节中的配置任务来说:
l 在MLD视图下所作的配置对所有接口生效,在接口视图下所作的配置仅对当前接口生效;
l 如果在这两个视图下进行了相同功能或参数的配置,则不论配置先后,接口视图下的配置将被优先采用。
在调整MLD性能之前,需完成以下任务:
l 配置任一IPv6单播路由协议,实现域内网络层互通
l 配置MLD基本功能
在调整MLD性能之前,需准备以下数据:
l MLD查询器的启动查询间隔
l MLD查询器的启动查询次数
l 发送MLD普遍组查询报文的时间间隔
l MLD查询器的健壮系数
l MLD普遍组查询的最大响应时间
l 最后组成员查询间隔
l MLD其它查询器的存在时间
由于MLD特定组查询报文和MLD特定源组查询报文的存在,而IPv6组播组是千变万化的,设备不可能加入所有的组,因此MLD需要借助Router-Alert(路由器报警)选项来将送达本地、但没有加入的IPv6组播报文送往上层协议进行处理。有关Router-Alert选项的详细介绍,请参考RFC 2113。
对于IPv6头中是否携带Router-Alert选项的MLD报文,设备会做出不同的处理:
l 出于兼容性考虑,缺省情况下设备不对Router-Alert选项进行检查,即处理所有收到的MLD报文。此时,MLD报文中无论是否携带有Router-Alert选项,设备都会将其送给上层协议进行处理。
l 为了提高设备性能、减少不必要的开支,同时出于协议安全性的考虑,可以配置设备丢弃未携带Router-Alert选项的MLD报文,此时,当设备收到MLD报文时,会检查该报文的Router-Alert选项,如果没有携带该选项,就丢弃该报文。
表1-10 全局配置MLD报文选项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD视图 |
mld |
- |
配置丢弃未携带Router-Alert选项的MLD报文 |
require-router-alert |
可选 缺省情况下,设备不对Router-Alert选项进行检查 |
配置在发送的MLD报文中携带Router-Alert选项 |
send-router-alert |
可选 缺省情况下,在发送的MLD报文中携带Router-Alert选项 |
表1-11 在接口上配置MLD报文选项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置丢弃未携带Router-Alert选项的MLD报文 |
mld require-router-alert |
可选 缺省情况下,设备不对Router-Alert选项进行检查 |
配置在发送的MLD报文中携带Router-Alert选项 |
mld send-router-alert |
可选 缺省情况下,在发送的MLD报文中携带Router-Alert选项 |
MLD查询器的健壮系数是为了弥补可能发生的网络丢包而设置的报文重传次数,健壮系数越大,MLD查询器就越“健壮”,但是IPv6组播组超时所需的时间也就越长。
当MLDv1/v2查询器启动时,会以“MLD查询器启动查询间隔”为时间间隔发送“MLD查询器启动查询次数”次MLD普遍组查询报文。
MLDv1/v2查询器会周期性地发送MLD普遍组查询报文,以判断网络上是否有IPv6组播组成员,发送间隔即为“发送MLD普遍组查询报文的时间间隔”。可以根据网络的实际情况来修改周期性发送MLD普遍组查询报文的时间间隔。
当MLDv1查询器收到MLD离开组报文或MLDv2查询器收到改变IPv6组播组与IPv6组播源列表关系的MLD报告报文后,会以“最后组成员查询间隔”为时间间隔发送“最后组成员查询次数”次MLD特定组查询报文或MLD特定源组查询报文。最后组成员查询次数在数值上等于MLD查询器的健壮系数。
在收到MLD查询报文(包括普遍组查询、特定组查询和特定源组查询)后,主机会为其所加入的每个IPv6组播组都启动一个延迟定时器,其值在0到最大响应时间(该时间值从MLD查询报文的最大响应时间字段获得)中随机选定,当定时器的值减为0时,主机就会向该定时器对应的IPv6组播组发送MLD成员关系报告报文。
合理配置MLD查询的最大响应时间,既可以使主机对MLD查询报文做出快速响应,又可以减少由于定时器同时超时,造成大量主机同时发送报告报文而引起的网络拥塞:
l 对于MLD普遍组查询报文来说,通过配置MLD普遍组查询的最大响应时间来填充其最大响应时间字段;
l 对于MLD特定组查询报文和MLD特定源组查询报文来说,所配置的最后组成员查询间隔将被填充到其最大响应时间字段。也就是说,MLD特定组查询的最大响应时间在数值上等于最后组成员查询间隔。
当同一网段上有多台组播路由器时,由MLD查询器负责发送MLD查询报文。如果非查询器在“其它查询器存在时间”超时前没有收到来自查询器的MLD查询报文,就会认为原有查询器失效,从而触发新的查询器选举过程;否则,非查询器将重置“其它查询器存在时间定时器”。
表1-12 全局配置MLD查询和响应
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD视图 |
mld |
- |
配置MLD查询器的健壮系数 |
robust-count robust-value |
可选 缺省情况下,MLD查询器的健壮系数为2 |
配置MLD查询器的启动查询间隔 |
startup-query-interval interval |
可选 缺省情况下,MLD查询器的启动查询间隔为发送MLD普遍组查询报文时间间隔的1/4 |
配置MLD查询器的启动查询次数 |
startup-query-count value |
可选 缺省情况下,MLD查询器的启动查询次数等于MLD查询器的健壮系数 |
配置发送MLD普遍组查询报文的时间间隔 |
timer query interval |
可选 缺省情况下,发送MLD普遍组查询报文的时间间隔为125秒 |
配置MLD普遍组查询的最大响应时间 |
max-response-time interval |
可选 缺省情况下,MLD普遍组查询的最大响应时间为10秒 |
配置最后组成员查询间隔 |
last-listener-query-interval interval |
可选 缺省情况下,最后组成员查询间隔为1秒 |
配置MLD其它查询器的存在时间 |
timer other-querier-present interval |
可选 缺省情况下,MLD其它查询器的存在时间=发送MLD普遍组查询报文的时间间隔×MLD查询器的健壮系数+MLD普遍组查询的最大响应时间÷2 |
表1-13 在接口上配置MLD查询和响应
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置MLD查询器的健壮系数 |
mld robust-count robust-value |
可选 缺省情况下,MLD查询器的健壮系数为2 |
配置MLD查询器的启动查询间隔 |
mld startup-query-interval interval |
可选 缺省情况下,MLD查询器的启动查询间隔为发送MLD普遍组查询报文时间间隔的1/4 |
配置MLD查询器的启动查询次数 |
mld startup-query-count value |
可选 缺省情况下,MLD查询器的启动查询次数等于MLD查询器的健壮系数 |
配置发送MLD普遍组查询报文的时间间隔 |
mld timer query interval |
可选 缺省情况下,发送MLD普遍组查询报文的时间间隔为125秒 |
配置MLD普遍组查询的最大响应时间 |
mld max-response-time interval |
可选 缺省情况下,MLD普遍组查询的最大响应时间为10秒 |
配置最后组成员查询间隔 |
mld last-listener-query-interval interval |
可选 缺省情况下,最后组成员查询间隔为1秒 |
配置MLD其它查询器的存在时间 |
mld timer other-querier-present interval |
可选 缺省情况下,MLD其它查询器的存在时间=发送MLD普遍组查询报文的时间间隔×MLD查询器的健壮系数+MLD普遍组查询的最大响应时间÷2 |
l 应确保MLD其它查询器的存在时间大于发送MLD普遍组查询报文的时间间隔,否则有可能导致网络内的MLD查询器反复变化。
l 应确保发送MLD普遍组查询报文的时间间隔大于MLD普遍组查询的最大响应时间,否则有可能造成对IPv6组播组成员的误删。
MLD的快速离开功能可以由MLD Snooping的快速离开功能实现,详细的配置过程请参考“IP组播配置指导/MLD Snooping配置”中“配置端口快速离开”部分的介绍。
在IPv6 SSM网络中,由于各种可能的限制,某些接收者主机只能运行MLDv1。为了向这些仅支持MLDv1的接收者主机提供SSM服务,可以在路由器上配置MLD SSM Mapping功能。
在配置MLD SSM Mapping之前,需完成以下任务:
l 配置任一IPv6单播路由协议,实现域内网络层互通
l 配置MLD基本功能
表1-14 使能MLD SSM Mapping
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能MLD SSM Mapping功能 |
mld ssm-mapping enable |
必选 缺省情况下,接口上的MLD SSM Mapping功能处于关闭状态 |
为保证本网段内运行任意版本MLD的接收者主机都能得到SSM服务,建议在处于该网段的接口上运行MLDv2。
通过多次配置可以实现同一IPv6组播组到多个IPv6组播源的映射。
表1-15 配置MLD SSM Mapping规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD视图 |
mld |
- |
配置MLD SSM Mapping规则 |
ssm-mapping ipv6-group-address prefix-length ipv6-source-address |
必选 缺省情况下,未配置MLD SSM Mapping规则 |
若VLAN接口上运行的是MLDv2,则在使用mld-snooping host-join命令配置模拟主机加入时即便不指定IPv6组播源,模拟主机也仍将发送MLDv2的报告报文,这种情况下不会依据MLD SSM Mapping规则创建相应的IPv6组播组。有关mld-snooping host-join命令的详细介绍,请参见“IP组播命令参考”中的“MLD Snooping配置命令”。
在配置MLD Proxying之前,需完成以下任务:
l 配置任一IPv6单播路由协议,实现域内网络层互通
l 使能IPv6组播路由
在设备朝向组播分发树树根方向的接口上使能了MLD代理功能之后,该设备就成为了MLD代理设备。
表1-16 使能MLD Proxying
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能MLD代理功能 |
mld proxying enable |
必选 缺省情况下,接口上的MLD代理功能处于关闭状态 |
l 一台设备上只允许有一个接口使能MLD代理功能。
l 在进行MLD的相关配置时,在已使能MLD代理功能的接口上不允许再使能MLD,且只有mld require-router-alert、mld send-router-alert和mld version命令可在该接口上生效。
l 在已使能MLD代理功能的设备上不允许再使能其它IPv6组播路由协议(如不能在接口上使能IPv6 PIM-DM或IPv6 PIM-SM,但在IPv6 PIM视图下配置的source-lifetime、source-policy和ssm-policy命令仍会生效),反之亦然。
l 若某VLAN内已使能了MLD Snooping,则该VLAN对应的VLAN接口上不能再使能MLD代理功能,反之亦然。
通常,IPv6组播数据只能被查询器转发,非查询器不具备IPv6组播转发能力,这样可以避免IPv6组播数据被重复转发。对于MLD代理设备也同样如此,只有当其下行接口是查询器时,IPv6组播数据才能通过该接口转发给下游主机。
但在某些情况下,MLD代理设备的下行接口不能在查询器竞选中获胜,此时应使能该下行接口在非查询器状态下的IPv6组播转发能力。
表1-17 配置下行接口的IPv6组播转发能力
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能下行接口在非查询器状态下的IPv6组播转发能力 |
mld proxying forwarding |
必选 缺省情况下,当MLD代理设备的下行接口处于非查询器状态时,不转发IPv6组播数据 |
在共享网段内存在多台MLD代理设备的情况下,当其中一台MLD代理设备的下行接口已竞选为查询器时,不应再在其它MLD代理设备的下行接口上进行此配置,否则该网段内将收到多份重复的IPv6组播数据流。
在完成上述配置后,在任意视图下执行display命令可以显示配置后MLD的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除MLD的统计信息。
表1-18 MLD显示和维护
操作 |
命令 |
查看MLD组播组的信息 |
display mld group [ ipv6-group-address | interface interface-type interface-number ] [ static | verbose ] [ | { begin | exclude | include } regular-expression ] |
查看MLD组播组的二层端口信息 |
display mld group port-info [ vlan vlan-id ] [ slot slot-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ] |
查看接口上MLD配置和运行信息 |
display mld interface [ interface-type interface-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ] |
查看MLD代理组的信息 |
display mld proxying group [ group-address ] [ verbose ] [ | { begin | exclude | include } regular-expression ] |
查看MLD路由表的信息 |
display mld routing-table [ ipv6-source-address [ prefix-length ] | ipv6-group-address [ prefix-length ] | flags { act | suc } ] * [ | { begin | exclude | include } regular-expression ] |
查看MLD SSM Mapping规则 |
display mld ssm-mapping ipv6-group-address [ | { begin | exclude | include } regular-expression ] |
查看依据MLD SSM Mapping规则创建的IPv6组播组信息 |
display mld ssm-mapping group [ ipv6-group-address | interface interface-type interface-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ] |
清除动态加入的MLD组记录 |
reset mld group { all | interface interface-type interface-number { all | ipv6-group-address [ prefix-length ] [ ipv6-source-address [ prefix-length ] ] } } |
清除动态加入的MLD组二层端口信息 |
reset mld group port-info { all | ipv6-group-address } [ vlan vlan-id ] |
清除依据MLD SSM Mapping规则创建的IPv6组播组信息 |
reset mld ssm-mapping group { all | interface interface-type interface-number { all | ipv6-group-address [ prefix-length ] [ ipv6-source-address [ prefix-length ] ] } } |
reset mld group和reset mld group port-info命令只对动态加入的MLD组有效,对静态加入的MLD组无效。
执行reset mld group命令可能导致接收者中断组播信息的接收。
l 接收者通过组播方式接收视频点播信息,不同组织的接收者组成末梢网络N1和N2,Host A与Host C分别为N1和N2中的组播信息接收者。
l IPv6 PIM网络中的Switch A连接N1,Switch B与Switch C共同连接N2。
l Switch A通过Vlan-interface100连接N1,通过Vlan-interface101连接IPv6 PIM网络中的其它设备。
l Switch B与Switch C分别通过各自的Vlan-interface200连接N2,并分别通过Vlan-interface201和Vlan-interface202连接IPv6 PIM网络中的其它设备。
l Switch A与N1之间运行MLDv1;Switch B、Switch C与N2之间也分别运行MLDv1,且由于Switch B的接口IPv6地址较小,因此在N2中通常由其来充当MLD查询器。
图1-7 MLD基本功能配置组网图
(1) 使能IPv6转发功能,并配置IPv6地址和IPv6单播路由协议
使能各交换机的IPv6转发功能,并按照图1-7配置各接口的IP地址和前缀长度,具体配置过程略。
配置IPv6 PIM网络内的各交换机之间采用OSPFv3协议进行互连,确保IPv6 PIM网络内部在网络层互通,并且各交换机之间能够借助单播路由协议实现动态路由更新,具体配置过程略。
(2) 使能IPv6组播路由,并使能IPv6 PIM-DM和MLD
# 在Switch A上使能IPv6组播路由,在各接口上使能IPv6 PIM-DM,并在主机侧接口Vlan-interface100上使能MLD。
<SwitchA> system-view
[SwitchA] multicast ipv6 routing-enable
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] mld enable
[SwitchA-Vlan-interface100] pim ipv6 dm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim ipv6 dm
[SwitchA-Vlan-interface101] quit
# 在Switch B上使能IPv6组播路由,在各接口上使能IPv6 PIM-DM,并在主机侧接口Vlan-interface200上使能MLD。
<SwitchB> system-view
[SwitchB] multicast ipv6 routing-enable
[SwitchB] interface vlan-interface 200
[SwitchB-Vlan-interface200] mld enable
[SwitchB-Vlan-interface200] pim ipv6 dm
[SwitchB-Vlan-interface200] quit
[SwitchB] interface vlan-interface 201
[SwitchB-Vlan-interface201] pim ipv6 dm
[SwitchB-Vlan-interface201] quit
# 在Switch C上使能IPv6组播路由,在各接口上使能IPv6 PIM-DM,并在主机侧接口Vlan-interface200上使能MLD。
<SwitchC> system-view
[SwitchC] multicast ipv6 routing-enable
[SwitchC] interface vlan-interface 200
[SwitchC-Vlan-interface200] mld enable
[SwitchC-Vlan-interface200] pim ipv6 dm
[SwitchC-Vlan-interface200] quit
[SwitchC] interface vlan-interface 202
[SwitchC-Vlan-interface202] pim ipv6 dm
[SwitchC-Vlan-interface202] quit
(3) 检查配置效果
通过使用display mld interface命令可以查看各交换机接口上MLD的配置和运行情况。例如:
# 查看Switch B在Vlan-interface200上的MLD信息。
[SwitchB] display mld interface vlan-interface 200
Vlan-interface200(FE80::200:5EFF:FE66:5100):
MLD is enabled
Current MLD version is 1
Value of query interval for MLD(in seconds): 125
Value of other querier present interval for MLD(in seconds): 255
Value of maximum query response time for MLD(in seconds): 10
Querier for MLD: FE80::200:5EFF:FE66:5100 (this router)
Total 1 MLD Group reported
l IPv6 PIM-SM网络中同时采用ASM和SSM方式提供IPv6组播服务,将Switch D的接口Vlan-interface104配置为C-BSR和C-RP,IPv6 SSM组播组的范围为FF3E::/64。
l Switch D的接口Vlan-interface400上运行MLDv2,接收者主机上运行MLDv1,且不能升级至MLDv2,因此该主机在加入IPv6组播组时无法指定IPv6组播源。
l Source 1、Source 2和Source 3都向IPv6 SSM组范围内的组播组发送IPv6组播数据,要求通过在Switch D上配置MLD SSM Mapping功能,使接收者主机只能接收来自Source 1和Source 3的IPv6组播数据。
图1-8 MLD SSM Mapping功能配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Source 1 |
- |
1001::1/64 |
Source 3 |
- |
3001::1/64 |
Source 2 |
- |
2001::1/64 |
Receiver |
- |
4001::1/64 |
Switch A |
Vlan-int100 |
1001::2/64 |
Switch C |
Vlan-int300 |
3001::2/64 |
|
Vlan-int101 |
1002::1/64 |
|
Vlan-int103 |
3002::1/64 |
|
Vlan-int104 |
1003::1/64 |
|
Vlan-int102 |
2002::2/64 |
Switch B |
Vlan-int200 |
2001::2/64 |
Switch D |
Vlan-int400 |
4001::2/64 |
|
Vlan-int101 |
1002::2/64 |
|
Vlan-int103 |
3002::2/64 |
|
Vlan-int102 |
2002::1/64 |
|
Vlan-int104 |
1003::2/64 |
(1) 使能IPv6转发功能,并配置IPv6地址和IPv6单播路由协议
使能各交换机的IPv6转发功能,并按照图1-8配置各接口的IPv6地址和前缀长度,具体配置过程略。
配置IPv6 PIM-SM域内的各交换机之间采用OSPFv3协议进行互连,确保IPv6 PIM-SM域内部在网络层互通,并且各交换机之间能够借助IPv6单播路由协议实现动态路由更新,具体配置过程略。
(2) 使能IPv6组播路由,并使能IPv6 PIM-SM、MLD和MLD SSM Mapping功能
# 在Switch D上使能IPv6组播路由,在各接口上使能IPv6 PIM-SM,并在主机侧接口Vlan-interface400上使能MLD和MLD SSM Mapping功能,配置MLD版本为2。
<SwitchD> system-view
[SwitchD] multicast ipv6 routing-enable
[SwitchD] interface vlan-interface 400
[SwitchD-Vlan-interface400] mld enable
[SwitchD-Vlan-interface400] mld version 2
[SwitchD-Vlan-interface400] mld ssm-mapping enable
[SwitchD-Vlan-interface400] pim ipv6 sm
[SwitchD-Vlan-interface400] quit
[SwitchD] interface vlan-interface 103
[SwitchD-Vlan-interface103] pim ipv6 sm
[SwitchD-Vlan-interface103] quit
[SwitchD] interface vlan-interface 104
[SwitchD-Vlan-interface104] pim ipv6 sm
[SwitchD-Vlan-interface104] quit
# 在Switch A上使能IPv6组播路由,并在各接口上使能IPv6 PIM-SM。
<SwitchA> system-view
[SwitchA] multicast ipv6 routing-enable
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] pim ipv6 sm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim ipv6 sm
[SwitchA-Vlan-interface101] quit
[SwitchA] interface vlan-interface 104
[SwitchA-Vlan-interface104] pim ipv6 sm
[SwitchA-Vlan-interface104] quit
Switch B和Switch C的配置与Switch A相似,配置过程略。
(3) 配置C-BSR和C-RP
# 在Switch D上配置C-BSR和C-RP的位置。
[SwitchD] pim ipv6
[SwitchD-pim6] c-bsr 1003::2
[SwitchD-pim6] c-rp 1003::2
[SwitchD-pim6] quit
(4) 配置IPv6 SSM组播组的地址范围
# 在Switch D上配置IPv6 SSM组播组的地址范围为FF3E::/64。
[SwitchD] acl ipv6 number 2000
[SwitchD-acl6-basic-2000] rule permit source ff3e:: 64
[SwitchD-acl6-basic-2000] quit
[SwitchD] pim ipv6
[SwitchD-pim6] ssm-policy 2000
[SwitchD-pim6] quit
Switch A、Switch B和Switch C的配置与Switch D相似,配置过程略。
(5) 配置MLD SSM Mapping规则
# 在Switch D上配置MLD SSM Mapping规则。
[SwitchD] mld
[SwitchD-mld] ssm-mapping ff3e:: 64 1001::1
[SwitchD-mld] ssm-mapping ff3e:: 64 3001::1
[SwitchD-mld] quit
(6) 检验配置效果
通过使用display mld ssm-mapping命令可以查看交换机上的MLD SSM Mapping规则。例如:
# 查看Switch D上IPv6组播组FF3E::101的MLD SSM Mapping规则。
[SwitchD] display mld ssm-mapping ff3e::101
Group: FF3E::101
Source list:
1001::1
3001::1
通过使用display mld ssm-mapping group命令可以查看交换机上依据MLD SSM Mapping规则创建的IPv6组播组信息。例如:
# 查看Switch D上依据MLD SSM Mapping规则创建的IPv6组播组信息。
[SwitchD] display mld ssm-mapping group
Total 1 MLD SSM-mapping Group(s).
Interface group report information
Vlan-interface400 (4001::2):
Total 1 MLD SSM-mapping Group reported
Group Address: FF3E::101
Last Reporter: 4001::1
Uptime: 00:02:04
Expires: off
通过使用display pim ipv6 routing-table命令可以查看交换机的IPv6 PIM路由表信息。例如:
# 查看Switch D上IPv6 PIM路由表信息。
[SwitchD] display pim ipv6 routing-table
Total 0 (*, G) entry; 2 (S, G) entry
(1001::1, FF3E::101)
Protocol: pim-ssm, Flag:
UpTime: 00:13:25
Upstream interface: Vlan-interface104
Upstream neighbor: 1003::1
RPF prime neighbor: 1003::1
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface400
Protocol: mld, UpTime: 00:13:25, Expires: -
(3001::1, FF3E::101)
Protocol: pim-ssm, Flag:
UpTime: 00:13:25
Upstream interface: Vlan-interface103
Upstream neighbor: 3002::1
RPF prime neighbor: 3002::1
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface400
Protocol: mld, UpTime: 00:13:25, Expires: -
l 核心网络中运行IPv6 PIM-DM,末梢网络中的接收者Host A和Host C通过IPv6组播组FF3E::101点播视频节目。
l 要求通过在Switch B上配置MLD Proxying功能,使其在不运行IPv6 PIM-DM的情况下实现组成员关系的维护和IPv6组播数据的正常转发。
图1-9 MLD Proxying功能配置组网图
(1) 使能IPv6转发功能,并配置IPv6地址
使能各交换机的IPv6转发功能,并按照图1-9配置各接口的IPv6地址和前缀长度,具体配置过程略。
(2) 使能IPv6组播路由,并使能IPv6 PIM-DM、MLD和MLD Proxying
# 在Switch A上使能IPv6组播路由,在接口Vlan-interface101上使能IPv6 PIM-DM,并在接口Vlan-interface100上使能MLD。
<SwitchA> system-view
[SwitchA] multicast ipv6 routing-enable
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim ipv6 dm
[SwitchA-Vlan-interface101] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] mld enable
[SwitchA-Vlan-interface100] pim ipv6 dm
[SwitchA-Vlan-interface100] quit
# 在Switch B上使能IPv6组播路由,在接口Vlan-interface100上使能MLD Proxying,并在接口Vlan-interface200上使能MLD。
<SwitchB> system-view
[SwitchB] multicast ipv6 routing-enable
[SwitchB] interface vlan-interface 100
[SwitchB-Vlan-interface100] mld proxying enable
[SwitchB-Vlan-interface100] quit
[SwitchB] interface vlan-interface 200
[SwitchB-Vlan-interface200] mld enable
[SwitchB-Vlan-interface200] quit
(3) 检验配置效果
通过使用display mld interface命令可以查看各交换机接口上MLD的配置和运行情况。例如:
# 查看Switch B在Vlan-interface100上MLD配置和运行的详细信息。
[SwitchB] display mld interface vlan-interface 100 verbose
Vlan-interface100(2001::2):
MLD proxy is enabled
Current MLD version is 1
Multicast routing on this interface: enabled
Require-router-alert: disabled
通过使用display mld group命令可以查看MLD组播组的信息。例如:
# 查看Switch A上的MLD组播组信息。
[SwitchA] display mld group
Total 1 MLD Group(s).
Interface group report information
Vlan-interface100(2001::1):
Total 1 MLD Groups reported
Group Address Last Reporter Uptime Expires
ff3e::101 2001::2 00:02:04 00:01:15
由此可见,主机的MLD报告通过Switch B的代理接口Vlan-interface100发给Switch A。
当某主机发送了加入IPv6组播组G的报文后,离该主机最近的路由器上却没有IPv6组播组G的组成员信息。
l 组网、接口连线的正确与否以及接口的协议层是否up将直接影响IPv6组播组成员信息的生成;
l 在路由器上必须使能IPv6组播路由,在连接主机的接口上必须使能MLD;
l 如果路由器接口上运行的MLD版本比主机的低,那么路由器将无法识别主机发来的较高版本的MLD报告报文;
l 如果在接口上使用命令mld group-policy对加入IPv6组播组G进行了限制后,该接口将不再接收未通过过滤的那些要求加入IPv6组播组G的报文。
(1) 检查组网是否正确,接口间的连线是否正确,以及接口状态是否正常,是否配置了正确的IPv6地址。通过命令display mld interface查看接口信息。若无接口信息输出,说明接口状态异常,原因通常是接口上配置了shutdown命令,或者接口连线不正确,或者接口上没有配置正确的IPv6地址。
(2) 检查是否使能了IPv6组播路由。通过命令display current-configuration查看是否配置了命令multicast ipv6 routing-enable。若缺少该配置,则需要在系统视图下执行命令multicast ipv6 routing-enable使能IPv6组播路由,同时也需要在相应接口上使能MLD。
(3) 检查接口上运行的MLD版本。通过命令display mld interface来检查接口上运行的MLD版本是否低于主机所使用的版本。
(4) 检查接口上是否配置了IPv6 ACL规则来限制主机加入IPv6组播组G。通过命令display current-configuration interface观察是否配置了mld group-policy命令。如果配置的IPv6 ACL规则对加入IPv6组播组G进行了限制,则需要修改该IPv6 ACL规则,允许接受IPv6组播组G的报告报文。
在同一网段的不同MLD路由器上,各自维护的组成员关系不一致。
l 运行MLD的路由器为每个接口维护多个参数,各参数之间相互影响,非常复杂。如果同一网段路由器的MLD接口参数配置不一致,必然导致组成员关系的混乱。
l 另外,MLD目前有2个版本,版本不同的MLD路由器与主机之间虽然可以兼容,但是连接在同一网段的所有路由器必须运行相同版本的MLD。如果同一网段路由器的MLD版本不一致,也将导致MLD组成员关系的混乱。
(1) 检查MLD配置。通过命令display current-configuration观察接口上MLD的配置信息。
(2) 在同一网段的所有路由器上执行命令display mld interface来检查MLD相关定时器的参数,确保配置一致。
(3) 通过命令display mld interface来检查各路由器上运行的MLD版本是否一致。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!