Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

了解 MLD 侦听

组播侦听发现 (MLD) 窥探可限制 VLAN 上 IPv6 组播流量的泛洪。在 VLAN 上启用 MLD 侦听后,瞻博网络设备将检查主机与组播路由器之间的 MLD 消息,并了解哪些主机有兴趣接收组播组的流量。然后,设备会根据学习到的内容,仅将组播流量转发到 VLAN 中连接到相关接收器的接口,而不是将流量泛洪到所有接口。

MLD 侦听支持 MLD 版本 1 (MLDv1) 和 MLDv2。有关 MLDv1 和 MLDv2 的详细信息,请参阅以下标准:

  • MLDv1 —请参阅 RFC 2710,IPv6 的组播侦听发现 (MLD)。

  • MLDv2 —请参阅 RFC 3810,IPv6 的组播侦听发现版本 2 (MLDv2)。

MLD 侦听的好处

  • Optimized bandwidth utilization— MLD 侦听的主要好处是减少数据包泛洪。IPv6 组播数据会有选择地转发到要接收数据的端口列表,而不是泛洪到 VLAN 中的所有端口。

  • Improved security— 防止来自未知来源的拒绝服务攻击。

MLD 侦听的工作原理

默认情况下,设备会在设备上属于该 VLAN 的所有接口上对第 2 层组播流量进行泛洪,作为组播流量源的接口除外。此行为会消耗大量带宽。

您可以启用 MLD 侦听以避免这种泛洪。启用 MLD 侦听后,设备将监控接收方(主机)和组播路由器之间的 MLD 消息,并使用消息内容构建 IPv6 组播转发表,即 IPv6 组播组和连接到每个组的相关成员的接口的数据库。当设备收到组播组的组播流量时,它只会使用转发表将流量转发到连接到属于该组播组的接收器的接口组播。

图 1 显示了启用了 MLD 侦听的组播流量示例。

图 1:启用了 MLD 侦听的组播流量信息流 Network setup with a multicast router forwarding traffic for Group 1 and Group 2. EX Series Switch connects to Host A and B directly, Host 1 and 3 in Group 1, Host 2 and 4 in Group 2 via multicast traffic distribution.

MLD 消息类型

组播路由器使用 MLD 来了解其连接的每个物理网络,哪些组对侦听方感兴趣。在任何给定子网中,系统会选择一个组播路由器充当 MLD 查询器。MLD 查询器向主机发送以下类型的查询:

  • 常规查询 - 询问是否有任何主机正在侦听任何组。

  • 组特定查询 — 询问是否有任何主机正在侦听特定的组播组。发送此查询是为了响应离开组播组的主机,并允许路由器快速确定是否有任何剩余主机对组感兴趣。

  • 组和源特定查询 —(仅限 MLD 版本 2)询问是否有任何主机正在侦听来自特定组播源的组组播流量。发送此查询是为了响应主机,该主机指示其不再有兴趣接收来自组播源的组组播流量,并允许路由器快速确定是否有剩余主机有兴趣接收来自该源的组组播流量。

作为组播侦听器的主机发送以下类型的消息:

  • 成员报告 — 指示主机想要加入特定的组播组。

  • 离开报告 — 指示主机想要离开特定的组播组。

只有 MLDv1 主机使用两种不同类型的报告来指示它们是要加入还是离开组。MLDv2 主机仅发送一种报告,其内容指示是加入还是退出组。但是,为简单起见,MLD 侦听文档将术语成员 报告 用于指示主持人想要加入组的报告,并将 术语休假报告 用于指示主持人想要离开组的报告。

主机如何加入和离开组播组

主机可以通过以下两种方式之一加入组播组:

  • 通过发送未经请求的成员身份报告,该报告指定主机尝试加入的组播组。

  • 通过发送成员身份报告来响应来自组播路由器的查询。

如果组播路由器上至少有一台主机响应指示其成员资格的定期常规查询,则该接口会继续将组播流量转发到某个接口。因此,要使主机仍然是组播组的成员,它必须继续响应定期常规查询。

主机可以通过以下两种方式之一离开组播组:

  • 在设定的时间间隔内不响应定期查询。这导致了所谓的“沉默休假”。

  • 通过发送休假报告。

注意:

如果主机通过中枢连接到设备,则当主机与中枢断开连接时,不会自动离开组播组。主持人仍是组的成员,直到组成员资格超时并发生静默休假。如果另一台主机在静默离开发生之前连接到中心端口,则新主机可能会在静默离开之前接收组组播流量,即使它从未发送过成员身份报告。

支持 MLDv2 组播源

在 MLDv2 中,主机可以发送包含源地址列表的成员身份报告。当主机在 INCLUDE 模式下发送成员身份报告时,主机仅对来自源地址列表中那些源的组组播流量感兴趣。如果主机在排除模式下发送成员身份报告,则主机关注来自除源地址列表中的源 之外 的任何源的组组播流量。主机还可以发送 source-list 参数为空的 EXCLUDE 报告,该报告称为 EXCLUDE NULL 报告。EXCLUDE NULL 报告指示主机希望加入组播组并从所有源接收数据包。

支持 MLD 侦听的设备支持处于 INCLUDE 和 EXCLUDE 模式的 MLDv2 成员资格报告。

MLD 侦听和转发接口

为了确定如何转发组播流量,启用了 MLD 侦听的设备在其组播转发表中维护有关以下接口的信息:

  • 组播路由器接口 — 这些接口通向组播路由器或 MLD 查询器。

  • 组成员接口 — 这些接口通向属于组播组成员的主机。

设备通过监控 MLD 流量来了解这些接口。如果接口收到 MLD 查询,设备会将该接口作为组播路由器接口添加到其组播转发表中。如果接口收到组播组的成员资格报告,设备会将该接口作为组成员接口添加到其组播转发表中。

设备学习的接口的表条目会受到老化的影响。例如,如果学习的组播路由器接口在特定时间间隔内未收到 MLD 查询,则设备会从其组播转发表中移除该接口的条目。

注意:

若要使设备学习组播路由器接口和组成员接口,网络中必须存在 MLD 查询器。若要使设备本身充当 MLD 查询器,必须在设备上启用 MLD。

您可以将接口静态配置为组播路由器接口或组成员接口。设备无需了解接口,即可将静态接口添加到其组播转发表中,并且表中的条目不会老化。设备上可以混合静态配置和动态学习的接口。

常规转发规则

在启用了 MLD 侦听的 VLAN 中的设备接口上收到的组播流量将根据以下规则进行转发。

MLD 协议流量的转发方式如下:

  • 在组播路由器接口上收到的 MLD 常规查询将转发至 VLAN 中的所有其他接口。

  • 在组播路由器接口上收到的 MLD 组特定查询仅会转发到 VLAN 中属于组成员的接口。

  • 在主机接口上收到的 MLD 报告将转发到同一 VLAN 中的组播路由器接口,但不会转发到 VLAN 中的其他主机接口。

非 MLD 协议流量的组播流量将按如下方式转发:

  • 未注册的组播数据包(即当前没有成员的组的数据包)将被转发到 VLAN 中的所有组播路由器接口。

  • 已注册的组播数据包只会转发到 VLAN 中属于组播组成员的组播主机接口,以及 VLAN 中的所有组播路由器接口。

注意:

当在同一 VLAN 上同时启用 IGMP 和 MLD 侦听时,系统会在 IGMP 和 MLD 侦听配置中创建组播路由器接口。未注册的组播流量不会被阻止,可以通过路由器接口传递,因此由于硬件限制,未注册的 IPv4 组播流量可能会通过作为 MLD 侦听配置的一部分创建的组播路由器接口,而未注册的 IPv6 组播流量可能会通过作为 IGMP 侦听配置的一部分创建的组播路由器接口。

MLD 侦听组播转发示例

以下示例说明了 MLD 侦听如何在不同拓扑结构中转发组播流量:

场景 1:设备将组播流量转发到组播路由器和主机

图 2 所示的拓扑中,作为第 2 层设备的设备从连接到 组播 路由器的源 A接收属于组播组 ff1e::2010 的组播流量。它还从直接连接到设备的源 B 接收属于组 ff15::2 组组播组播流量。设备上的所有接口都属于同一个 VLAN。

由于设备从接口 P1 上的组播路由器接收 MLD 查询,因此 MLD 侦听会获知接口 P1 是组播路由器接口,并将该接口添加到其组播转发表中。它会在此接口上收到的任何 MLD 常规查询转发到设备上的所有主机接口,进而将从主机收到的成员报告转发到组播路由器接口。

在本例中,主机 A 和 C 已使用组 ff1e::2010 的成员报告响应常规查询。MLD 侦听会将接口 P2 和 P4 添加到其组播转发表中,作为组 ff1e::2010 的成员接口。它将从源 A 接收到的组组播流量转发到主机 A 和 C,但不转发到主机 B 和 D。

主机 B 已通过组 ff15::2 的成员报告回应了一般查询。设备将接口 P3 添加到其组播转发表中,作为组 ff15::2 的成员接口,并将从源 B 接收到的组播流量转发到主机 B。设备还会将从源 B 接收到的组播流量转发到组播路由器接口 P1。

图 2: 场景 1:设备将组播流量转发到组播路由器和主机 Multicast routing diagram: Multicast Router connects Sources A ff1e::2010 and B ff15::2 to Hosts A, B, C, and D. Arrows show traffic flow.

场景 2:设备将组播流量转发到另一台设备

图 3 的拓扑显示中,组播源连接到设备 A,设备 A 又连接到另一台设备设备 B,设备 A 和 B 上的主机都是组播组的潜在成员。两台设备均充当第 2 层设备,并且设备上的所有接口都是同一 VLAN 的成员。

设备 A 从接口 P1 上的组播路由器接收 MLD 查询,从而使接口 P1 成为设备 A 的组播路由器接口。设备 A 会将在此接口上接收到的所有常规查询转发到设备上的其他接口,包括连接设备 B 的接口。由于设备 B 在接口 P6 上接收转发的 MLD 查询,因此 P6 是设备 B 的组播路由器接口。设备 B 通过其 组播-路由器 接口将从主机 C 接收到的成员报告转发到设备 A。设备 A 将成员资格报告转发到其组播路由器接口,将接口 P5 作为组成员接口包含在其组播转发表中,并将组播流量从源转发到设备 B。

图 3:场景 2:设备将组播流量转发到另一台设备 Network topology diagram showing multicast communication: Source server sends multicast traffic through a router to Switch A and Switch B. Hosts A and B connect to Switch A; Hosts C and D connect to Switch B.

在某些实施中,您可能必须将设备 B 上的 P6 配置为静态组播路由器接口,以避免主机接收组播流量时出现延迟。例如,如果设备 B 在了解哪个接口是其组播路由器接口之前从其主机接收未经请求的成员资格报告,则不会将这些报告转发给设备 A。如果设备 A 随后收到组播流量,则不会将流量转发至设备 B,因为它尚未在接口 P5 上收到任何成员资格报告。当组播路由器发送其下一个常规查询时,此问题将得到解决;但是,这可能会导致主机接收组播流量时出现延迟。您可以将接口 P6 静态配置为组播-路由器接口来解决此问题。

场景 3:设备仅连接到主机(无 MLD 查询器)

图 4 所示的拓扑中,设备连接到组播源和主机。此拓扑中没有组播路由器,因此没有 MLD 查询器。如果没有 MLD 查询器要响应,主机就不会定期发送成员报告。因此,即使主机发送未经请求的成员报告以加入组播组,其在组播组中的成员身份也会超时。

要使 MLD 侦听在此网络中正常工作,以便设备仅将组播流量转发到主机 A 和 C,您可以:

  • 将接口 P2 和 P4 配置为静态组成员接口。

  • 在 VLAN 上配置 路由 VLAN 接口RVI)(也称为集成路由和桥接 (IRB) 接口),并在其上启用 MLD。在这种情况下,设备本身充当 MLD 查询器,主机可以动态加入组播组,并通过响应查询来刷新其组成员身份。

图 4:场景 3:设备仅连接到主机(无 MLD 查询器) Network topology diagram showing data flow from a source device to multiple hosts through a switch in a LAN setup.

场景 4:第 2 层/第 3 层设备在 VLAN 之间转发组播流量

图 5 所示的拓扑中,组播源、组播路由器 A 以及主机 A 和 B 连接到设备,并且位于 VLAN 10 中。组播路由器 B 以及主机 C 和 D 也连接到设备,并且位于 VLAN 20 中。

在纯第 2 层环境中,流量不会在 VLAN 之间转发。若要让主机 C 接收来自 VLAN 10 上的源的组播流量,必须在 VLAN 10 和 VLAN 20 上创建 RVI(或 IRB 接口),以允许在 VLAN 之间路由组播流量。

图 5: 场景 4:第 2 层/第 3 层设备在 VLAN Network topology with multicast routing and VLANs: Source 11.1.1.10 sends multicast traffic via Multicast Routers A and B to Hosts A and B on VLAN 10 and Hosts C and D on VLAN 20. 之间转发组播流量

特定于平台的 MLD 侦听行为

使用 功能资源管理器 确认平台和版本对特定功能的支持。

使用下表查看平台的特定于平台的行为。

表 1:特定于平台的 MLD 侦听行为

平台

差异

运行 MLD 侦听的 SRX 系列防火墙、QFX 系列交换机和 EX 系列交换机(EX9200 交换机除外)

  • 不支持基于每个源的转发。相反,设备会将其在 VLAN 上针对指定组接收到的所有 INCLUDE 和 EXCLUDE 模式报告合并到一个路由中,该路由包括该组的所有组播源,下一跃点是该组具有相关接收方的所有接口。因此,VLAN 上感兴趣的接收方可以接收来自其未包含在其 INCLUDE 报告中的源或来自其在 EXCLUDE 报告中排除的源的流量。例如,如果主机 1 希望源 A 为组 G 传输流量,而主机 2 希望从源 B 为组 G 传输流量,则无论 A 还是 B 发送流量,它们都会接收组 G 的流量。