示例:配置组播侦听
了解组播侦听
路由器等网络设备主要在数据包级别或第 3 层运行。其他网络设备(如网桥或 LAN 交换机)主要在帧级别或第 2 层运行。组播功能主要在第 3 层数据包级别,但有一种方法可以将第 3 层 IP 组播组地址映射到帧级别的第 2 层 MAC 组播组地址。
路由器可以处理第 2 层和第 3 层寻址信息,因为必须处理帧及其地址才能访问内部封装的数据包。路由器可以运行 PIM 或 IGMP 等第 3 层组播协议,并确定将组播内容转发到何处,或者接口上的主机何时加入或离开组。但是,网桥和 LAN 交换机作为第 2 层设备,不应访问其帧承载的数据包内的组播信息。
那么,网桥和其他第 2 层设备如何确定接口上的设备何时加入或离开组播树,或者连接的 LAN 上的主机是否想要接收特定组播组的内容?
答案是让第 2 层设备实现组播侦听。组播侦听是一个通用术语,适用于第 2 层设备“侦听”第 3 层数据包内容以确定采取哪些操作来处理或转发帧的过程。还有更具体形式的侦听,例如 IGMP 侦听或 PIM 侦听。在所有情况下,窥探都涉及配置为在第 2 层运行的设备可以访问通常“禁止”的第 3 层(数据包)信息。侦听使这些设备中的组播更加高效。
参见
了解组播侦听和 VPLS 根保护
当生成树协议等第 2 层协议知道第 3 层协议(如互联网组管理协议 (IGMP) 或其他组播协议)的操作细节时,就会发生侦听。当第 2 层设备(如 VLAN 交换机)必须了解第 3 层信息(如组播组成员的媒体访问控制 (MAC) 地址)时,必须进行侦听。
VPLS 根保护 是一个生成树协议进程,其中多宿主环境中只有一个接口在主动转发生成树协议帧。这可以保护生成树的根免受桥接环路的影响,还可以防止多宿主拓扑中的两个设备受到窥探信息(如 IGMP 成员身份报告)的影响。
例如,考虑一组支持组播的主机,这些主机连接到两个客户边缘 (CE) 路由器(CE1 和 CE2),这两个路由器相互连接(配置 CE1–CE2 链路),并多宿主到两个提供商边缘 (PE) 路由器(分别为 PE1 和 PE2)。由于根保护操作,活动 PE 仅在活动 PE-CE 链路上接收转发的生成树协议信息。只要 CE1–CE2 链路正常运行,这就不是问题。但是,如果 CE1 和 CE2 之间的链路出现故障,并且另一个 PE 成为活动的生成树协议链路,则新的活动 PE 上没有可用的组播侦听信息。新的活动 PE 不会将组播流量转发到 客户边缘 以及此客户边缘路由器服务的主机。
主机向客户边缘路由器发送新的组成员身份 IGMP 报告后,服务中断将得到纠正。但是,尽管运行正常的生成树协议根保护操作,但如果两个 PE 都可以使用组播侦听信息,则可以避免服务中断。
您可以配置组播侦听,以忽略有关虚拟交换机上的桥接域和桥接域默认路由交换机上的生成树拓扑更改的消息。您可以使用命令 ignore-stp-topology-change
忽略有关生成树拓扑更改的消息
参见
配置组播侦听
要为 MX 系列路由器配置常规组播侦听参数,请包含以下 multicast-snooping-options
语句:
multicast-snooping-options { flood-groups [ ip-addresses ]; forwarding-cache { threshold suppress value <reuse value>; } graceful-restart <restart-duration seconds>; ignore-stp-topology-change; multichassis-lag-replicate-state; nexthop-hold-time milliseconds; traceoptions { file filename <files number> <size size> <world-readable | no-world-readable>; flag flag <flag-modifier> <disable>; } }
您可以在以下层次结构级别包含此语句:
[edit routing-instances routing-instance-name]
[edit logical-systems logical-system-name routing-instances routing-instance-name]
默认情况下,组播侦听处于禁用状态。您可以在 VPLS 中启用组播侦听,也可以在实例层次结构中的虚拟交换机实例类型中启用。
如果在 VPLS 或虚拟交换机实例下配置了多个桥接域,则在实例级别配置的组播侦听选项适用于所有桥接域。
该 ignore-stp-topology-change
语句仅对 虚拟交换机 路由实例类型受支持,在层次结构下 [edit logical-systems]
不受支持。
该 nexthop-hold-time
语句仅在层次结构中 [edit routing-instances routing-instance-name]
受支持,并且仅适用于 虚拟交换机 或 vpls 的实例类型。
参见
示例:配置组播侦听
此示例说明如何在网桥或 VPLS 路由实例场景中配置组播侦听。
要求
此示例使用以下硬件组件:
一台 MX 系列路由器
一台用作组播路由器的第 3 层设备
准备工作:
配置接口。
配置内部网关协议。请参阅 Junos OS 路由协议库了解路由设备。
配置组播协议。此功能适用于以下组播协议:
DVMRP
PIM-DM
PIM-SM
PIM-SSM
概述和拓扑
IGMP 侦听可防止第 2 层设备不分青红皂白地将组播流量泛滥出所有接口。为组播侦听配置的设置有助于管理 IGMP 侦听的行为。
您可以在默认主实例以及单个网桥或 VPLS 实例上配置组播侦听选项。默认主实例配置是全局的,适用于逻辑路由器中的所有单个网桥或 VPLS 实例。各个实例的配置将覆盖全局配置。
此示例包括以下语句:
泛洪组 - 允许您列出流量必须泛洪的组播组地址。此设置可用于确保 IGMP 侦听不会阻止必要的组播泛洪。从 224.0.0.1 到 224.0.0.255 的组播地址块保留供本地线路使用。此范围内的组被分配用于各种用途,包括路由协议和本地发现机制。例如,OSPF 对所有 OSPF 路由器使用 224.0.0.5。
转发缓存 - 指定转发条目的老化方式以及如何控制条目数。
您可以在转发缓存上配置阈值,以便在缓存条目达到某个最大值时抑制(挂起)侦听,并在数量下降到另一个阈值时重复使用缓存。默认情况下,路由器上未启用任何阈值。
抑制阈值抑制新的组播转发缓存条目。可选的重用阈值指定路由器开始创建新的组播转发缓存条目的时间点。这两个阈值的范围都是从 1 到 200,000。如果配置了重用值,则重用值必须小于抑制值。抑制值是必需的。如果未指定可选的重用值,则组播转发缓存条目的数量将限制为抑制值。一旦组播转发缓存条目数低于抑制值,就会创建一个新条目。
平稳重启 — 配置重新启动前获知的路由替换为重新学习的路由的时间。如果禁用组播侦听的平稳重新启动,则路由引擎重新启动后侦听信息将丢失。
默认情况下,正常重启持续时间为 180 秒(3 分钟)。可以将此值设置为 0 到 300 秒之间。如果将持续时间设置为 0,则会有效地禁用平稳重启。将此值设置为略大于 IGMP 查询响应间隔。
忽略-stp-topology-change— 将 MX 系列路由器配置为忽略有关生成树拓扑状态更改的消息。
默认情况下,MX 系列路由器上的 IGMP 侦听进程会检测任何生成树协议 (STP) 所做的接口状态更改。
在 VPLS 多宿主环境中,其中两个 PE 路由器连接到两个互连的客户边缘路由器,并且在 PE 路由器上启用了 STP 根保护,其中一个 PE 路由器接口处于转发状态,另一个处于阻止状态。
如果互连两台客户边缘路由器的链路出现故障,处于阻塞状态的 PE 路由器接口将转换为转发状态。
PE 路由器接口不会等待接收成员资格报告来响应下一个常规查询或特定于组的查询。相反,IGMP 侦听进程会向客户边缘路由器发送常规查询消息。连接到 CE 路由器的主机回复他们感兴趣的所有组的报告。
当两个客户边缘路由器互连的链路恢复时,两个 PE 路由器上的原始生成树状态都将恢复。转发 PE 接收生成树拓扑更改消息,并向客户边缘路由器发送常规查询消息,以立即重建组成员身份状态。
注意:仅虚拟交换机路由实例类型支持该
ignore-stp-topology-change
语句。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后从配置模式进入 commit
。
set bridge-domains domain1 multicast-snooping-options forwarding-cache threshold suppress 100 set bridge-domains domain1 multicast-snooping-options forwarding-cache threshold reuse 50 set bridge-domains domain1 multicast-snooping-options graceful-restart restart-duration 120 set routing-instances ce1 instance-type virtual-switch set routing-instances ce1 bridge-domains domain1 domain-type bridge set routing-instances ce1 bridge-domains domain1 vlan-id 100 set routing-instances ce1 bridge-domains domain1 interface ge-0/3/9.0 set routing-instances ce1 bridge-domains domain1 interface ge-0/0/6.0 set routing-instances ce1 bridge-domains domain1 multicast-snooping-options flood-groups 224.0.0.5 set routing-instances ce1 bridge-domains domain1 multicast-snooping-options ignore-stp-topology-change
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 Junos OS CLI 用户指南。
要配置 IGMP 侦听:
在主路由实例中配置组播侦听设置。
[edit bridge-domains domain1] user@host# set multicast-snooping-options forwarding-cache threshold suppress 100 reuse 50 user@host# set multicast-snooping-options graceful-restart 120
配置路由实例。
[edit routing-instances ce1] user@host# set instance-type virtual-switch
在路由实例中配置桥接域。
[edit routing-instances ce1 bridge-domains domain1] user@host# set domain-type bridge user@host# set interface ge-0/0/6.0 user@host# set interface ge-0/3/9.0 user@host# set vlan-id 100
配置泛洪组。
[edit routing-instances ce1 bridge-domains domain1] user@host# set multicast-snooping-options flood-groups 224.0.0.5
将路由器配置为忽略有关生成树拓扑状态更改的消息。
[edit routing-instances ce1 bridge-domains domain1] user@host# set multicast-snooping-options ignore-stp-topology-change
如果完成设备配置,请提交配置。
user@host# commit
结果
输入show bridge-domains
show routing-instances
和命令确认您的配置。
user@host# show bridge-domains domain1 { multicast-snooping-options { forwarding-cache { threshold { suppress 100; reuse 50; } } } }
user@host# show routing-instances ce1 { instance-type virtual-switch; bridge-domains { domain1 { domain-type bridge; vlan-id 100; interface ge-0/3/9.0; ## 'ge-0/3/9.0' is not defined interface ge-0/0/6.0; ## 'ge-0/0/6.0' is not defined multicast-snooping-options { flood-groups 224.0.0.5; ignore-stp-topology-change; } } } }
验证
要验证配置,请运行以下命令:
显示 IGMP 侦听接口
显示 IGMP 侦听成员资格
显示 IGMP 侦听统计信息
显示组播侦听路由
显示路由表
为组播侦听启用批量更新
每当单个接口加入或离开组播组时,路由表和转发表中都会安装新的下一跃点条目。您可以使用该 nexthop-hold-time
语句指定一个时间(从 1 到 1000 毫秒 (ms),在此期间,传出接口更改将累积,然后批量更新到路由表和转发表。批量更新减少了处理加入和离开消息所需的处理时间和内存开销。这对于互联网Potocol电视(IPTV)等应用程序非常有用,在这些应用程序中,更改频道的用户可以在短时间内创建数千个加入或离开组的接口。在 IPTV 方案中,通常存在相对较少且受控数量的流和大量传出接口。使用批量更新可以减少联接延迟。
在此示例中,您可以使用以下nexthop-hold-time
语句为实例类型的虚拟交换机配置 20 毫秒的保持时间:
您只能为以下层次结构级别的虚拟交换机或 vpls 的路由实例类型包含该nexthop-hold-time
语句。
[edit routing-instances routing-instance-name multicast-snooping-options]
如果从路由器配置中删除该 nexthop-hold-time
语句,则会禁用批量更新。
参见
为多机箱链路聚合组接口启用组播侦听
在层次结构级别包含语句multichassis-lag-replicate-state
[edit multicast-snooping-options]
,以便为多机箱链路聚合组 (MC-LAG) 接口启用 IGMP 侦听和状态复制。
[edit] multicast-snooping-options { multichassis-lag-replicate-state; }
通过在双链路 MC-LAG 接口的链路之间复制加入和留下消息,可以更快地恢复遇到服务中断的 MC-LAG 接口的成员信息。
如果没有状态复制,如果双链路 MC-LAG 接口遇到服务中断(例如,如果活动链路切换到备用),则会通过生成对网络的 IGMP 查询来恢复接口的成员资格信息。此方法可能需要 1 到 10 秒才能完成,这对于某些应用程序来说可能太长。
为 MC-LAG 接口提供状态复制时,MC-LAG 设备上收到的 IGMP 加入或离开消息将通过机箱间通信协议 (ICCP) 连接从活动 MC-LAG 链路复制到备用链路。备用链路处理消息,就像是从相应的活动 MC-LAG 链路接收消息一样,只是它不会将自身添加为下一跃点,也不会将消息泛洪到网络。故障转移后,可以通过检索复制的消息在几秒钟或更短的时间内恢复链路的组播成员身份状态。
此示例为 MC-LAG 接口启用状态复制: