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 侦听的组播流量 Multicast Traffic Flow with MLD Snooping Enabled

MLD 消息类型

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

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

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

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

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

  • 成员身份报告 - 指示主机想要加入特定组播组。

  • 离开报告 - 指示主机想要退出特定多播组。

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

主持人如何加入和离开多播群组

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

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

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

组播路由器会继续将组播流量转发到接口,前提是该接口上至少有一台主机响应指示其成员身份的定期常规查询。因此,要使主机保持为多播组的成员,它必须继续响应定期常规查询。

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

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

  • 通过发送休假报告。

注意:

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

支持 MLDv2 组播源

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

支持 MLD 侦听的设备支持处于“包含”和“排除”模式的 MLDv2 成员身份报告。但是,运行 MLD 侦听的 SRX 系列防火墙、QFX 系列交换机和 EX 系列交换机(EX9200 交换机除外)不支持按源进行转发。相反,设备将其在 VLAN 上收到的指定组的所有 INCLUDE 和 EXCLUSION 模式报告整合到一个路由中,该路由包含该组的所有组播源,下一跃点是具有该组相关接收方的所有接口。因此,VLAN 上感兴趣的接收方可以从他们未包含在 INCLUDE 报告中的源或来自他们在 EXCLUDE 报告中排除的源接收流量。例如,如果主机 1 需要来自源 A 的组 G 流量,而主机 2 需要来自源 B 的组 G 流量,则无论 A 还是 B 发送流量,它们都会接收组 G 的流量。

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:设备将组播流量转发到组播路由器和主机 Scenario 1: Device Forwarding Multicast Traffic to a Multicast Router and Hosts

场景 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:设备将组播流量转发到另一台设备 Scenario 2: Device Forwarding Multicast Traffic to Another Device

在某些实施中,您可能需要将设备 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 查询器) Scenario 3: Device Connected to Hosts Only (No MLD Querier)

场景 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 Scenario 4: Layer 2/Layer 3 device Forwarding Multicast Traffic Between VLANs 之间转发组播流量