示例:配置 PIM RPT 和 SPT 切换
在 RP 和接收器之间构建 RPT
RPT 是组播组中 RP 与接收方(主机)之间的路径(请参阅 图 1)。RPT 通过来自接收方 DR 的 PIM 加入消息构建:
接收方在互联网组管理协议 (IGMP) 主机成员报告中发送加入组 (G) 的请求。接收方的 DR PIM 稀疏模式路由器接收有关直接连接的子网的报告,并创建用于组播兴趣组的 RPT 分支。
接收方的 DR 将 PIM 加入消息发送到其 RPF 邻接方、RPF 表中的下一跳跃地址或单播路由表中。
PIM 加入消息在树上传递,并组播至 ALL-PIM-ROUTERS 组 (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。
S SP 始终是最短路径,但它们并不一定是最短路径。也就是说,源和接收方通常位于路由器网络的外围,而不是中枢上,并且组播分布树可能蔓延至网络中几乎所有路由器。由于组播流量会压倒缓慢的接口,并且一个数据包很容易成为主干另一侧的一百或一千个数据包,因此提供一个共享树作为分布树是有意义的,以便组播源可以更集中地位于网络中枢上。这种在核心网络中根植分布树共享通过组播到点实现。有关 AP 的信息,请参阅 了解组播共同点、共享树和共同 点树 。
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 路由器PIM 删除消息由 RP 路由器接收,并停止将组播数据包向下发送到接收方的 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。对于所有其他源组地址对,最后一跳路由器会立即转换为 root 于源 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,请参阅 CLI 用户指南 中的 在配置模式下Junos OS 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
要验证配置,请运行以下命令:
show pim 加入
显示 pim 统计信息
示例:配置 PIM SPT 阈值策略
此示例展示如何应用抑制从根植于 RP 的会展点树 (RPT) 到根植于来源的最短路径树 (SPT) 的转换的策略。
要求
开始之前:
配置路由器接口。
配置内部网关协议或静态路由。请参阅 Junos OS设备的路由协议库。
在接口上配置 PIM 稀疏模式。请参阅 启用 PIM 稀疏模式 。
概述
运行 PIM 稀疏模式的组播路由设备可通过 root 在 RP 上的 RPT 或根植于来源的 SPT 将同一组播数据包流转发到同一 LAN。在某些情况下,最后一跳路由设备需要保持共享 RPT 到 RP,而不是过渡到直接 SPT 到源。在 SPT 上接收组播数据流量是最佳方式,但会在网络中引入更多状态,某些组播部署中可能不需要这种状态。理想情况下,低带宽组播流可在 RPT 上转发,而高带宽流可使用 SPT。此示例说明了如何配置此类策略。
此示例包括以下设置:
spt-threshold — 允许您在最后一跳路由设备上配置 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,直到使用 clear pim join 命令清除 PIM 加入状态。
如果首次应用无限策略配置时未清除 PIM 加入状态,则必须在 PE 路由器启动之前应用它。
首次为源组地址对删除策略时,路由设备不会过渡到源组地址对的直接 SPT,直到使用 clear pim join 命令清除 PIM 加入状态。
首次为源组地址对更改策略时,路由设备将使用新策略,直到使用 clear pim join 命令清除 PIM 加入状态。
拓扑
配置
程序
CLI快速配置
要[edit]
commit
快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以匹配网络配置,将命令复制并粘贴到 层次结构级别的 CLI 中,然后从配置模式进入 。
[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 命令。