示例:配置 PIM RPT 和 SPT 直接转换
在 RP 和接收器之间构建 RPT
RPT 是组播组中 RP 与接收方(主机)之间的路径(请参阅 图 1)。RPT 是通过来自接收方 DR 的 PIM 联接消息构建的:
接收方在互联网组管理协议 (IGMP) 主机成员身份报告中发送加入组 (G) 的请求。PIM 稀疏模式路由器(接收方的 DR)接收直接连接的子网上的报告,并为感兴趣的组播组创建 RPT 分支。
接收方的 DR 向其 RPF 邻居、RPF 表中的下一跃点地址或单播路由表发送 PIM 加入消息。
PIM 加入消息沿树向上传输,并组播到所有 PIM 路由器组 (224.0.0.13)。树中的每个路由器都使用 RPF 表或单播路由表查找其 RPF 邻居。在消息到达 RP 并形成 RPT 之前,将执行此操作。 沿路径的路由器设置组播转发状态,以将请求的组播流量沿 RPT 转发回接收方。
![Building an RPT Between the RP and the Receiver](/documentation/us/en/software/junos/multicast/images/g017113.gif)
PIM 稀疏模式源注册
RPT 是一个单向树,允许流量从一个方向从 RP 向向接收方。为了使组播流量从源到达接收方,需要从源的 DR 到 RP 构建分布树的另一个分支(称为最短路径树)。
最短路径树的创建方式如下:
源将变为活动状态,在其连接的 LAN 上发出组播数据包。源的 DR 接收数据包并将其封装在 PIM 寄存器消息中,然后发送到 RP 路由器(请参阅 图 2)。
当 RP 路由器从源收到 PIM 寄存器消息时,它会将 PIM 加入消息发送回源。
图 2:交换的 PIM 寄存器消息和 PIM 加入消息源的 DR 接收 PIM 加入消息,并开始沿 SPT 向 RP 路由器发送流量(请参阅 图 3)。
RP 路由器收到流量后,会向源的 DR 发送寄存器停止消息,以停止寄存器进程。
图 3:从源发送到 RP 路由器的流量
RP 路由器将组播流量沿 RPT 发送到接收器(请参阅 图 4)。
图 4:从 RP 路由器发送到接收器的流量
组播最短路径树
用于组播的分布树植根于源,也是最短路径树 (SPT)。考虑一组组播路由器,对于某个组没有任何活动组播流量(即,它们没有该组的组播转发状态)。当路由器得知该组的感兴趣接收方位于其直接连接的子网之一上时,路由器会尝试加入该组的树。
要加入分发树,路由器将确定该组的源的单播 IP 地址。此地址可以是路由器上的简单静态配置,也可以像一组协议一样复杂。
要为该组构建 SPT,路由器对其路由表中的源地址执行反向路径转发 (RPF) 检查。RPF 检查会生成最靠近源的接口,这是此组的来自此源的组播数据包流入路由器的位置。
接下来,路由器使用正确的组播协议在此接口上发送加入消息,以通知上游路由器它要加入该组的分发树。此消息是 (S,G) 联接消息,因为 S 和 G 都是已知的。接收 (S,G) 加入消息的路由器将接收消息的接口添加到组的输出接口列表 (OIL) 中,并对源地址执行 RPF 检查。然后,上游路由器在 RPF 接口上向源发送 (S,G) 加入消息,通知上游路由器它也要加入组。
每个上游路由器重复此过程,在 RPF 接口上传播联接,并随时构建 SPT。当加入消息执行以下两项操作之一时,该过程将停止:
到达直接连接到作为源的主机的路由器。
到达此源-组对已具有组播转发状态的路由器。
在任一情况下,都会创建分支,每个路由器都具有源-组对的组播转发状态,数据包可以从源流向接收方的分布树。每个路由器上的 RPF 检查确保树是 SPT。
SPT 始终是最短的路径,但不一定很短。也就是说,源和接收器往往位于路由器网络的外围,而不是在主干网上,组播分布树倾向于蔓延到网络中的几乎每个路由器。由于组播流量可能会使速度较慢的接口不堪重负,并且一个数据包很容易在主干网的另一侧变成一百或一千个数据包,因此提供共享树作为分布树是有意义的,这样组播源就可以更集中地位于网络中的主干上。这种以核心网络为根的分布树的共享是通过组播集合点实现的。有关 RP 的详细信息,请参阅 了解组播集合点、共享树和集合点树。
SPT 切换
不是继续将 SPT 用于 RP 和 RPT 朝向接收器,而是通过以下方式在源和接收器之间创建直接 SPT:
接收方的 DR 从源接收到第一个组播数据包后,DR 会向其 RPF 邻居发送 PIM 加入消息(请参阅 图 5)。
源的 DR 接收 PIM 联接消息,并创建一个附加 (S,G) 状态以形成 SPT。
来自该特定源的组播数据包开始来自源的 DR,并沿着新的 SPT 流向接收方的 DR。接收方的 DR 现在正在接收源发送的每个组播数据包的两个副本,一个来自 RPT,一个来自新 SPT。
图 5:接收方 DR 向源发送 PIM 加入消息
为了阻止重复的组播数据包,接收方的 DR 会向 RP 路由器发送 PIM 修剪消息,告知不再需要来自此特定源的来自 RPT 的组播数据包(请参阅 图 6)。
图 6:PIM 修剪消息从接收方的 DR 发送到 RP 路由器RP 路由器接收 PIM 修剪消息,并停止向接收方的 DR 发送组播数据包。接收方的 DR 仅通过新 SPT 获取此特定源的组播数据包。但是,来自源的组播数据包仍会从源的 DR 到达 RP 路由器(请参阅 图 7)。
图 7:RP 路由器接收 PIM 修剪消息为了阻止来自此特定源的不需要的组播数据包,RP 路由器会向源的 DR 发送 PIM 修剪消息(请参阅 图 8)。
图 8:RP 路由器向源 DR发送 PIM 修剪消息
接收方的 DR 现在仅接收来自 SPT 的特定源的组播数据包(参见 图 9)。
图 9:源的 DR 停止向 RP 路由器发送重复的组播数据包
SPT 切换控制
在某些情况下,最后一跃点路由器需要保留在到 RP 的共享树上,而不是转换为到源的直接 SPT。例如,当低带宽组播流从 RP 转发到最后一跃点路由器时,您可能不希望最后一跃点路由器转换。最后一跃点和源之间的所有路由器都必须保持并刷新 SPT 状态。这可能会成为资源密集型活动,不会对特定源和组播组地址对的网络效率增加太多。
在这些情况下,您可以在最后一跃点路由器上配置 SPT 阈值策略,以控制向直接 SPT 的转换。应用于源-组地址对的 SPT 无穷大直接转换阈值意味着最后一跃点路由器永远不会转换为直接 SPT。对于所有其他源组地址对,最后一跃点路由器会立即转换为根植于源 DR 的直接 SPT。
示例:配置 PIM 断言超时
此示例演示如何配置 PIM 断言转发器的超时期限。
要求
准备工作:
配置路由器接口。
配置内部网关协议或静态路由。请参阅 Junos OS 路由协议库了解路由设备。
在接口上配置 PIM 稀疏模式。请参阅 启用 PIM 稀疏模式。
概述
PIM 断言消息的作用是确定具有多个路由器的网络上的转发器。转发器是将组播数据包转发到具有组播组成员的网络的路由器。转发器通常与 PIM DR 相同。
当路由器在匹配路由条目的传出接口列表中列出的接口上收到组播数据包时,它会发送断言消息。在传出接口上收到消息表示有多个路由器将相同的组播数据包转发到网络。
在图 10 中,路由设备 R1 和 R2 都针对网络上的相同 (S,G) 条目转发组播数据包。两台设备都检测到这种情况,并且两台设备都在以太网网络上发送断言消息。除了源地址和组地址之外,断言消息还包含用于向源发送数据包的单播成本指标,以及单播成本的首选项指标。优先级指标表示单播路由协议之间的首选项。具有最小优先级指标的路由设备将成为转发器(也称为断言获胜者)。如果首选项指标相等,则发送最低单播成本指标的设备将成为转发器。如果单播指标也相等,则具有最高 IP 地址的路由设备将成为转发器。传输断言消息后,只有转发器继续转发网络上的消息。
当收到断言消息并且 RPF 邻居更改为断言获胜者时,断言计时器将设置为断言超时期限。每次传入接口上收到路由条目的后续断言消息时,都会重新启动断言超时期限。当断言计时器过期时,路由设备会根据其单播路由表重置其 RPF 邻居。然后,如果多个转发器仍然存在,转发器将重新进入断言消息周期。实际上,断言超时期限决定了组播路由设备进入 PIM 断言消息周期的频率。
范围为 5 到 210 秒。默认值为 180 秒。
断言消息对于连接多个路由设备而不连接主机的 LAN 非常有用。
配置
程序
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置断言超时,请执行以下操作:
配置超时期限(以秒为单位)。
[edit protocols pim] user@host# set assert-timeout 60
(可选)跟踪断言消息。
[edit protocols pim] user@host# set traceoptions file PIM.log user@host# set traceoptions flag assert detail
如果完成设备配置,请提交配置。
user@host# commit
要验证配置,请运行以下命令:
显示 PIM 加入
显示 PIM 统计信息
示例:配置 PIM SPT 阈值策略
此示例说明如何应用一个策略来抑制从根植于 RP 的集合点树 (RPT) 到根植于源的最短路径树 (SPT) 的转换。
要求
准备工作:
配置路由器接口。
配置内部网关协议或静态路由。请参阅 Junos OS 路由协议库了解路由设备。
在接口上配置 PIM 稀疏模式。请参阅 启用 PIM 稀疏模式。
概述
运行 PIM 稀疏模式的组播路由设备可以通过根植于 RP 的 RPT 或根植于源的 SPT 将同一组播数据包流转发到同一 LAN。在某些情况下,最后一跃点路由设备需要保留在到 RP 的共享 RPT 上,而不是转换为到源的直接 SPT。在 SPT 上接收组播数据流量是最佳选择,但会在网络中引入更多状态,这在某些组播部署中可能不是可取的。理想情况下,低带宽组播流可以在 RPT 上转发,而高带宽流可以使用 SPT。此示例说明如何配置此类策略。
此示例包括以下设置:
spt 阈值 — 允许您在最后一跃点路由设备上配置 SPT 阈值策略,以控制向直接 SPT 的转换。在主 PIM 实例中包含此语句时,PE 路由器将保留在 RPT 上以控制流量。
无穷大 — 将无穷大的 SPT 直接转换阈值应用于源-组地址对,以便最后一跃点路由设备永远不会转换为直接 SPT。对于所有其他源组地址对,最后一跃点路由设备将立即转换为根植于源 DR 的直接 SPT。此语句必须引用正确配置的策略,以将特定源组对的 SPT 直接转换阈值设置为无穷大。不支持对 SPT 阈值使用无穷大以外的值。您可以配置多个策略。
策略语句 — 配置策略。最简单的 SPT 阈值策略类型使用路由过滤器和源地址过滤器来指定组播组和源地址,并将该地址对的 SPT 阈值设置为无穷大。该策略将应用于主 PIM 实例。
本示例将源组对 10.10.10.1 和 224.1.1.1 的 SPT 转换值设置为无穷大。将策略应用于最后一跃点路由器时,来自此源组对的组播流量永远不会转换为直接到源的 SPT。流量将继续通过 RP 到达。但是,此路由器上任何其他源-组地址组合的流量将转换为到源的直接 SPT。
配置 SPT 阈值策略时,请注意以下几点:
对 SPT 阈值策略的配置更改会影响路由设备处理 SPT 转换的方式。
配置 SPT 阈值策略时,请注意以下几点:
对 SPT 阈值策略的配置更改会影响路由设备处理 SPT 转换的方式。
配置 SPT 阈值策略时,请注意以下几点:
对 SPT 阈值策略的配置更改会影响路由设备处理 SPT 转换的方式。
首次配置策略时,路由设备将继续转换为源组地址对的直接 SPT,直到使用 清除 pim join 命令清除 PIM 加入 状态。
如果在首次应用无限策略配置时未清除 PIM 联接状态,则必须在启动 PE 路由器之前应用该状态。
首次删除源组地址对的策略时,路由设备不会转换为该源组地址对的直接 SPT,直到使用 清除 pim join 命令清除 PIM 联接状态。
首次更改源-组地址对的策略时,路由设备不会使用新策略,直到使用 清除 pim join 命令清除 PIM 联接状态。
拓扑学
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后从配置模式进入 commit
。
[edit] set policy-options policy-statement spt-infinity-policy term one from route-filter 224.1.1.1/32 exact set policy-options policy-statement spt-infinity-policy term one from source-address-filter 10.10.10.1/32 exact set policy-options policy-statement spt-infinity-policy term one then accept set policy-options policy-statement spt-infinity-policy term two then reject set protocols pim spt-threshold infinity spt-infinity-policy
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 Junos OS CLI 用户指南。
要配置 SPT 阈值策略,请执行以下操作:
应用策略。
[edit] user@host# edit protocols pim [edit protocols pim] user@host# set spt-threshold infinity spt-infinity-policy [edit protocols pim] user@host# exit
配置策略。
[edit] user@host# edit policy-options policy-statement spt-infinity-policy [edit policy-options policy-statement spt-infinity-policy] user@host# set term one from route-filter 224.1.1.1/32 exact [edit policy-options policy-statement spt-infinity-policy] user@host# set term one from source-address-filter 10.10.10.1/32 exact [edit policy-options policy-statement spt-infinity-policy] user@host# set term one then accept [edit policy-options policy-statement spt-infinity-policy] user@host# set term two then reject [edit policy-options policy-statement spt-infinity-policy] user@host# exit policy-statement {
如果完成设备配置,请提交配置。
[edit] user@host# commit
清除 PIM 联接缓存以强制配置生效。
[edit] user@host# run clear pim join
结果
通过从配置模式输入 show policy-options 命令和 show protocols 命令来确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。
user@host# show policy-options policy-statement spt-infinity-policy { term one { from { route-filter 224.1.1.1/32 exact; source-address-filter 10.10.10.1/32 exact; } then accept; } term two { then reject; } }
user@host# show protocols pim { spt-threshold { infinity spt-infinity-policy; } }
验证
要验证配置,请运行 show pim join 命令。