示例:配置 PIM RPT 和 SPT 直接转换
在 RP 和接收器之间构建 RPT
RPT 是组播组中 RP 和接收器(主机)之间的路径(参见 图 1)。RPT 是通过来自接收方 DR 的 PIM 加入消息构建的:
接收方在互联网组管理协议 (IGMP) 主机成员报告中发送加入组 (G) 的请求。PIM 稀疏模式路由器(接收方的 DR)接收有关直连子网的报告,并为关注的组播组创建 RPT 分支。
接收方的 DR 将 PIM 加入消息发送到其 RPF 邻接方、RPF 表中的下一跃点地址或单播路由表。
PIM 加入消息沿树向上传输,并组播到 ALL-PIM-ROUTERS 组 (224.0.0.13)。树中的每个路由器都通过使用 RPF 表或单播路由表查找其 RPF 邻接方。直到消息到达 RP 并形成 RPT 为止。 沿路径的路由器可设置组播转发状态,以将请求的组播流量沿 RPT 转发回接收方。
之间构建 RPT
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 切换
不是继续对 RP 使用 SPT,对接收器使用 RPT,而是按以下方式在源和接收器之间创建直接 SPT:
一旦接收方的 DR 收到来自源的第一个组播数据包,DR 就会向其 RPF 邻接方发送 PIM 加入消息(参见 图 5)。
源的 DR 接收 PIM 加入消息,并创建附加 (S,G) 状态以形成 SPT。
来自该特定源的组播数据包开始来自源的灾难恢复,并沿着新的 SPT 流向接收方的灾难恢复。接收方的 DR 现在正在接收源发送的每个组播数据包的两份副本,一份来自 RPT,一份来自新 SPT。
图 5:接收方 DR 向源
发送 PIM 加入消息
为了停止重复组播数据包,接收方的 DR 向 RP 路由器发送 PIM 删除消息,使其知道不再需要来自此特定源、来自 RPT 的组播数据包(参见 图 6)。
图 6:PIM 删除消息从接收方的 DR 向 RP 路由器
发送
RP 路由器接收到 PIM 删除消息,并停止向接收方的 DR 发送组播数据包。接收方的 DR 仅通过新 SPT 获取此特定源的组播数据包。但是,来自源的组播数据包仍会从源的灾难恢复传入 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-threshold — 允许您在最后一跳路由设备上配置 SPT 阈值策略,以控制向直接 SPT 的转换。在主 PIM 实例中包含此语句时,PE 路由器将保留在 RPT 上以控制流量。
-
infinity — 将 SPT 切换阈值 infinity 应用于源-组地址对,以便最后一跳路由设备永远不会转换为直接 SPT。对于所有其他源组地址对,最后一跳路由设备会立即转换为根植于源 DR 的直接 SPT。此语句必须引用正确配置的策略,以将特定源组对的 SPT 直接切换阈值设置为无穷大。不支持对 SPT 阈值使用无穷大以外的值。您可以配置多个策略。
-
policy-statement — 配置策略。最简单的 SPT 阈值策略类型使用路由过滤器和源地址过滤器来指定组播组和源地址,并将该对地址的 SPT 阈值设置为无穷大。该策略将应用于主 PIM 实例。
此示例将源组对 10.10.10.1 和 224.1.1.1 的 SPT 转换值设置为无穷大。将策略应用于最后一跃点路由器时,来自此源组对的组播流量永远不会转换为到源的直接 SPT。流量将继续通过 RP 到达。但是,此路由器上任何其他源组地址组合的流量将转换为到源的直接 SPT。
配置 SPT 阈值策略时,请注意以下几点:
-
对 SPT 阈值策略的配置更改会影响路由设备处理 SPT 转换的方式。
-
首次配置策略时,路由设备将继续转换为源组地址对的直接 SPT,直到使用 clear pim join 命令清除 PIM 联接状态。
-
如果在首次应用无限策略配置时未清除 PIM 联接状态,则必须在启动 PE 路由器之前应用该状态。
-
首次删除源组地址对的策略时,路由设备不会转换为该源组地址对的直接 SPT,直到使用 clear pim join 命令清除 PIM 联接状态。
-
首次为源组地址对更改策略时,路由设备不会使用新策略,直到使用 clear pim join 命令清除 PIM 联接状态。
拓扑学
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层 [edit] 级的 CLI 中,然后从配置模式进入 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 命令。
