示例:配置反向路径转发
了解组播反向路径转发
单播转发决策通常基于到达路由器的数据包的目标地址。单播路由表按目标子网进行组织,主要设置为将数据包转发到目标。
在组播中,路由器将数据包转发离源,以沿着分布树取得进展并防止路由环路。路由器的组播转发状态通过基于反向路径组织表(从接收方返回到分布树的根)来运行,从而更合乎逻辑地运行。此过程称为反向路径转发 (RPF)。
路由器根据来自组播组的流量请求是否通过反向路径转发检查(RPF 检查),将分支添加到分配树。收到的每个组播数据包都必须通过 RPF 检查,然后才有资格在任何接口上复制或转发。
RPF 检查对于每个路由器的组播实施都至关重要。当接口上收到组播数据包时,路由器会将组播 IP 数据包中的源地址解释为单播 IP 数据包的目标地址。源组播地址可在单播路由表中找到,并确定传出接口。如果在单播路由表中找到的传出接口与接收组播数据包的接口相同,则该数据包将通过 RPF 检查。未通过 RPF 检查的组播数据包将被丢弃,因为传入接口不在返回源的最短路径上。
图 1 显示了组播路由器如何使用单播路由表执行 RPF 检查,以及在每个路由器获得的结果如何确定加入消息的发送位置。
路由器可以出于 RPF 目的构建和维护单独的表。路由器必须有某种方法来确定组的 RPF 接口,该组是拓扑上最接近根的接口。为了获得最高效率,分布树遵循最短路径树拓扑。RPF 检查有助于构造此树。
RPF 表
RPF 表在组播路由器中起着关键作用。每次 RPF 检查都会参考 RPF 表,该检查每隔一段时间对进入组播路由器的组播数据包执行一次。所有类型的分布树都依赖于 RPF 表才能正确形成,组播转发状态也依赖于 RPF 表。
RPF 检查仅对单播地址执行,以查找组播源或 RP 的上游接口。
用于 RPF 检查的路由表可以是用于转发单播 IP 数据包的同一路由表,也可以是仅用于组播 RPF 检查的单独路由表。在任一情况下,RPF 表都仅包含单播路由,因为 RPF 检查是在组播数据包的源地址上执行的,而不是对组播组目标地址执行的,并且禁止组播地址出现在 IP 数据包标头的源地址字段中。单播地址可用于 RPF 检查,因为组播组地址的特定 IP 组播内容流只有一个源主机,尽管可以从多个源获得相同的内容。
如果用于转发单播数据包的同一路由表也用于 RPF 检查,则路由表将由传统的单播路由协议(如 BGP、IS-IS、OSPF 和路由信息协议 (RIP))填充和维护。如果使用专用组播 RPF 表,则必须使用其他方法填充此表。某些组播路由协议(如距离矢量组播路由协议 [DVMRP])实质上复制了单播路由协议的操作并填充了专用 RPF 表。其他 PIM(如 PIM)不复制路由协议功能,必须依赖其他路由协议来设置此表,这就是 PIM 与协议无关的原因。.
一些传统的路由协议(如 BGP 和 IS-IS)现在具有扩展功能,以区分在路由器之间发送的不同路由信息集,用于单播和组播。例如,IS-IS (M-IS-IS) 中存在多协议 BGP (MBGP) 和多拓扑路由。即使打开了流量工程和“快捷方式”等特殊功能,也可以将 IS-IS 路由添加到 RPF 表中。组播开放最短路径优先 (MOSPF) 还扩展了 OSPF 的组播用途,但比 MBGP 或 M-IS-IS 更进一步,使 MOSPF 独立成为一个完整的组播路由协议。使用这些路由协议时,路由可以标记为组播 RPF 路由器,并由接收路由器以不同于单播路由信息的方式使用路由。
使用主单播路由表进行 RPF 检查非常简单。用于 RPF 检查的专用路由表允许网络管理员为单播和组播流量设置单独的路径和路由策略,从而使组播网络能够更加独立于单播网络运行。
组播 RPF 配置准则
您可以使用组播 RPF 检查来防止组播路由环路。路由环路在组播应用程序中尤其令人衰弱,因为数据包在路由环路中每次传递时都会被复制。
通常,只有当组播数据包到达最接近数据包源(无论是源主机还是集合点 (RP))的接口(由单播路由协议定义)时,路由器才会转发组播数据包。换句话说,如果将单播数据包发送到组播数据包到达的接口上的“目标”(反向路径),则该数据包将通过 RPF 检查并得到处理。未通过 RPF 检查的组播(或单播)数据包不会被转发(这是默认行为)。有关瞻博网络路由器如何通过表实现 RPF 检查的概述,请参阅了解组播反向路径转发。
但是,在网络路由器配置中,需要转发未通过 RPF 检查的组播数据包。例如,当使用点对多点标签交换路径 (LSP) 将组播流量分发到出口路由器下游的 PIM“孤岛”时,组播流量到达的接口并不总是 RPF 接口。这是因为 LSP 不遵循独立数据包路由的正常下一跃点规则。
在这种情况下,您可以在 PE 路由器上配置策略,以确定哪些组播组和源免于默认 RPF 检查。
参见
示例:配置专用 PIM RPF 路由表
此示例说明如何配置专用协议无关组播 (PIM) 反向路径转发 (RPF) 路由表。
要求
概述
默认情况下,PIM 使用 inet.0 路由表作为其 RPF 路由表。PIM 使用 RPF 路由表解析特定组播源地址的 RPF 邻居,并解析集合点 (RP) 地址的 RPF 邻居。PIM 可以选择使用 inet.2 作为其 RPF 路由表。 inet.2 路由表专用于此目的。
PIM 使用单个路由表进行 RPF 检查,这可确保选择具有最长匹配前缀的路由作为 RPF 路由。
如果组播路由通过多协议边界网关协议 MP-BGP 或多拓扑 IS-IS 交换,则默认情况下将它们放置在 inet.2 中。
使用 inet.2 作为 RPF 路由表,您可以拥有独立于普通单播路由表的组播控制平面。出于以下任一原因,您可能希望使用 inet.2 作为 RPF 路由表:
如果您使用流量工程或为快捷方式配置了内部网关协议 (IGP),则路由器已将标签交换路径 (LSP) 安装为 inet.2 中的下一跃点。通过应用策略,您可以让路由器在 inet.2 路由表中安装具有非 MPLS 下一跃点的路由。
如果您的 MPLS 网络不支持通过 LSP 隧道的组播流量,则需要将路由器配置为使用 inet.0 以外的路由表。您可以在 inet.2 路由表中填充可用于 RPF 的本机 IGP、BGP 和接口路由。
要填充 PIM RPF 表,请使用筋组。rib 组是使用层次结构级别的语句[edit routing-options]
定义的rib-groups
。通过在层次结构级别包含rib-group
[edit pim]
语句,RIB 组将应用于 PIM 协议。RIB 组最常用于在多个路由表中放置路由。
为 PIM 配置 RIB 组时,请记住以下几点:
该语句将
import-rib
路由从协议复制到路由表。该
export-rib
语句对 PIM 没有影响。但是,相同的 rib 组可以应用于 BGP,BGP 使用导出 rib 表来源路由,以便在域间网络的情况下向对等方播发。PIM 仅使用语句中
import-rib
指定的第一个 RIB 路由表进行 RPF 检查。
您还可以将 IS-IS 或 OSPF 配置为使用具有常规 IP 下一跃点的路由填充 inet.2 。这样,即使为流量工程配置 MPLS,或者将 IS-IS 或 OSPF 配置为对本地流量使用“快捷方式”时,RPF 也能正常工作。
您还可以将 PIM 协议配置为在虚拟专用网络 (VPN) 路由实例下使用 rib 组进行 RPF 检查。在这种情况下,rib 组仍在层次结构级别定义 [edit routing-options]
。
配置
使用接口路由配置 PIM RPF 路由表组
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后从配置模式进入 commit
。
set routing-options rib-groups mcast-rpf-rib import-rib inet.2 set protocols pim rib-group mcast-rpf-rib set routing-options interface-routes rib-group inet if-rib set routing-options rib-groups if-rib import-rib [ inet.0 inet.2 ]
分步过程
在此示例中,网络管理员已决定使用 inet.2 路由表进行 RPF 检查。在此过程中,使用接口 rib 组将本地路由复制到此表中。
要定义接口路由表组并使用它来填充 inet.2 以进行 RPF 检查,请执行以下操作:
使用命令验证
show multicast rpf
组播 RPF 表是否未填充路由。user@host> show multicast rpf instance is not running
创建名为 mcast-rpf-rib 的组播路由表组。
每个路由表组必须包含 Junos OS 在导入路由时使用的一个或多个路由表(在语句中
import-rib
指定)。import-rib
包括语句并在层次结构级别指定[edit routing-options rib-groups]
inet.2 路由表。[edit routing-options rib-groups] user@host# set mcast-rpf-rib import-rib inet.2
将 PIM 配置为使用 mcast-rpf-rib rib 组。
PIM 的 RIB 组可以全局应用,也可以在路由实例中应用。在此示例中,显示了全局配置。
包括语句并在
rib-group
层次结构级别指定[edit protocols pim]
mcast-rpf-rib rib 组。[edit protocols pim] user@host# set rib-group mcast-rpf-rib
创建名为 if-RIB 的接口 RIB 组。
rib-group
包括语句并在层次结构级别指定[edit routing-options interface-routes]
inet 地址族。[edit routing-options interface-routes] user@host# set rib-group inet if-rib
配置 if-rib rib 组以从 inet.0 和 inet.2 路由表导入路由。
包括语句并在
import-rib
层次结构级别指定[edit routing-options rib-groups]
inet.0 和 inet.2 路由表。[edit routing-options rib-groups] user@host# set if-rib import-rib [ inet.0 inet.2 ]
提交配置。
user@host# commit
验证组播 RPF 表
目的
验证组播 RPF 表现在是否填充了路由。
行动
使用 show multicast rpf
命令。
user@host> show multicast rpf Multicast RPF table: inet.2 , 10 entries 10.0.24.12/30 Protocol: Direct Interface: fe-0/1/2.0 10.0.24.13/32 Protocol: Local 10.0.27.12/30 Protocol: Direct Interface: fe-0/1/3.0 10.0.27.13/32 Protocol: Local 10.0.224.8/30 Protocol: Direct Interface: ge-1/3/3.0 10.0.224.9/32 Protocol: Local 127.0.0.1/32 Inactive 192.168.2.1/32 Protocol: Direct Interface: lo0.0 192.168.187.0/25 Protocol: Direct Interface: fxp0.0 192.168.187.12/32 Protocol: Local
意义
示例输出的第一行显示正在使用 inet.2 表,并且表中有 10 个路由。示例输出的其余部分列出了填充 inet.2 路由表的路由。
示例:配置 PIM RPF 路由表
此示例说明如何配置和应用 PIM RPF 路由表。
要求
准备工作:
确定路由器是否直接连接到任何组播源。接收器必须能够找到这些源。
确定路由器是否直接连接到任何组播组接收器。如果存在接收器,则需要 IGMP。
确定是将组播配置为使用稀疏、密集还是稀疏-密集模式。每种模式都有不同的配置注意事项。
如果使用稀疏或稀疏密集模式,确定 RP 的地址。
确定是使用静态配置、BSR 还是自动 RP 方法定位 RP。
确定在稀疏、密集或稀疏密集模式下配置 PIM 时,是否将组播配置为使用其 RPF 路由表。
配置 SAP 和 SDP 协议以侦听组播会话公告。请参阅 配置会话公告协议。
配置 IGMP。请参阅 配置 IGMP。
配置 PIM 静态 RP。请参阅配置静态 RP。
筛选来自未经授权的组和源的 PIM 注册邮件。请参阅 示例:拒绝 RP 路由器上的传入 PIM 注册消息 和 示例:停止指定路由器上的传出 PIM 注册消息。
概述
在此示例中,您将新的 RPF 路由表组命名为 multicast-rfp-rib ,并使用 inet.2 进行其导出和导入路由表。然后,为接口路由创建路由表组,并将 RPF 命名为 if-rib。最后,将 inet.2 和 inet.0 用于其导入路由表,并将新的接口路由表组添加到接口路由。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI [edit]
中。
set routing-options rib-groups multicast-rpf-rib export-rib inet.2 set routing-options rib-groups multicast-rpf-rib import-rib inet.2 set protocols pim rib-group multicast-rpf-rib set routing-options rib-groups if-rib import-rib inet.2 set routing-options rib-groups if-rib import-rib inet.0 set routing-options interface-routes rib-group inet if-rib
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅 Junos OS CLI 用户指南中的在配置模式下使用 CLI 编辑器。
要配置 PIM RPF 路由表,请执行以下操作:
配置路由选项和组。
[edit] user@host# edit routing-options rib-groups
配置名称。
[edit routing-options rib-groups] user@host# set multicast-rpf-rib export-rib inet.2
为 RPF 路由表创建新组。
[edit routing-options rib-groups] user@host# set multicast-rpf-rib import-rib inet.2
应用新的 RPF 路由表。
[edit protocols pim] user@host# set rib-group multicast-rpf-rib
为接口路由创建路由表组。
[edit] user@host# edit routing-options rib-groups
配置导入路由表的名称。
[edit routing-options rib-groups] user@host# set if-rib import-rib inet.2 user@host# set if-rib import-rib inet.0
将组设置为接口路由。
[edit routing-options interface-routes] user@host# set rib-group inet if-rib
结果
在配置模式下,输入 show protocols
和 show routing-options
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以进行更正。
[edit] user@host#show protocols
pim { rib-group inet multicast-rpf-rib; } [edit] user@host#show routing-options
interface-routes { rib-group inet if-rib; } static { route 0.0.0.0/0 next-hop 10.100.37.1; } rib-groups { multicast-rpf-rib { export-rib inet.2; import-rib inet.2; } if-rib { import-rib [ inet.2 inet.0 ]; } }
如果完成设备配置,请从配置模式输入 提交 。
验证
要确认配置工作正常,请执行以下任务:
验证 IGMP 版本
目的
验证是否在所有适用的接口上配置了 IGMP 版本 2。
行动
在操作模式下,输入 show igmp interface
命令。
user@host> show igmp interface Interface: ge–0/0/0.0 Querier: 192.168.4.36 State: Up Timeout: 197 Version: 2 Groups: 0 Configured Parameters: IGMP Query Interval: 125.0 IGMP Query Response Interval: 10.0 IGMP Last Member Query Interval: 1.0 IGMP Robustness Count: 2 Derived Parameters: IGMP Membership Timeout: 260.0 IGMP Other Querier Present Timeout: 255.0
示例:配置 RPF 策略
组播 RPF 策略禁用对特定组播 (S,G) 对的 RPF 检查。您通常会在点对多点标签交换路径 (LSP) 的出口路由设备上禁用 RPF 检查,因为在点对多点 LSP 出口路由器上接收组播流量的接口可能并不总是 RPF 接口。
此示例说明如何配置名为 disable-rpf-on-PE 的 RPF 检查策略。 禁用 RPF-on-PE 策略禁用对到达组 228.0.0.0/8 或从源地址 196.168.25.6 到达的数据包的 RPF 检查。
要求
准备工作:
配置路由器接口。
配置内部网关协议或静态路由。请参阅 Junos OS 路由协议库了解路由设备。
概述
RPF 策略的行为类似于导入策略。如果没有与输入数据包匹配的策略术语,则默认操作是接受(即执行 RPF 检查)。 路由过滤器 语句过滤组地址, 源地址过滤器 语句过滤源地址。
此示例说明如何将每个条件配置为单独的策略,并在 rpf-check-policy 语句中引用这两个策略。这允许您将一个策略中的组与另一个策略中的源相关联。
对组播流量禁用 RPF 检查时要小心。如果在某些配置中禁用 RPF 检查,可能会导致组播环路。
对 RPF 检查策略的更改将立即生效:
如果之前未配置任何策略,则该策略将立即生效。
如果更改策略名称,新策略将立即生效,并且不再过滤的任何数据包都将接受 RPF 检查。
如果删除该策略,则之前过滤的所有数据包都将接受 RPF 检查。
如果底层策略已更改,但保留相同的名称,则新条件将立即生效,并且不再过滤的任何数据包都将接受 RPF 检查。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后从配置模式进入 commit
。
set policy-options policy-statement disable-RPF-from-group term first from route-filter 228.0.0.0/8 orlonger set policy-options policy-statement disable-RPF-from-group term first then reject set policy-options policy-statement disable-RPF-from-source term first from source-address-filter 192.168.25.6/32 exact set policy-options policy-statement disable-RPF-from-source term first then reject set routing-options multicast rpf-check-policy [ disable-RPF-from-group disable-RPF-from-source ]
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置 RPF 策略,请执行以下操作:
为组地址配置策略。
[edit policy-options] user@host# set policy-statement disable-RPF-for-group term first from route-filter 228.0.0.0/8 orlonger user@host# set policy-statement disable-RPF-for-group term first then reject
为源地址配置策略。
[edit policy-options] user@host# set policy-statement disable-RPF-for-source term first from source-address-filter 192.168.25.6/32 exact user@host# set policy-statement disable-RPF-for-source term first then reject
应用策略。
[edit routing-options] user@host# set multicast rpf-check-policy [ disable-RPF-for-group disable-RPF-for-source ]
如果完成设备配置,请提交配置。
user@host# commit
结果
通过输入 显示策略选项 和 显示路由选项 命令来确认您的配置。
user@host# show policy-options policy-statement disable-RPF-from-group { term first { from { route-filter 228.0.0.0/8 orlonger; } then reject; } } policy-statement disable-RPF-from-source { term first { from { source-address-filter 192.168.25.6/32 exact; } then reject; } }
user@host# show routing-options multicast { rpf-check-policy [ disable-RPF-from-group disable-RPF-from-source ]; }
验证
要验证配置,请运行 显示组播 rpf 命令。
示例:配置 PIM RPF 选择
此示例说明如何配置和验证组或 (S,G) 对的组播 PIM RPF 下一跃点邻居选择。
要求
准备工作:
配置路由器接口。
配置内部网关协议或静态路由。请参阅 Junos OS 路由协议库了解路由设备。
确保要指定的 RPF 下一跃点邻接方正在运行。
概述
组播 PIM RPF 邻居选择允许您使用前缀列表为单个组或多个组指定 RPF 邻居(下一跃点)和源地址。只能为 VPN 路由和转发 (VRF) 实例配置 RPF 邻居选择。
如果您有多个服务 VRF,接收方 VRF 可以通过这些 VRF 获知相同的源或交汇点 (RP) 地址,则 PIM RPF 检查通常会为所有组播流选择由单播协议确定的最佳路径。但是,如果配置了 RPF 邻居选择,则 RPF 检查将基于您的配置,而不是单播路由协议。
您可以将此静态 RPF 选择用作特定应用程序的构建基块。例如,酒店后台。假设您要在并行 PIM 链路之间拆分多播流,或将一个多播流分配给特定 PIM 链路。配置静态 RPF 选择后,路由器会根据配置发送加入和修剪消息。
可以使用通配符指定源地址。是否使用通配符会影响 PIM 联接的工作方式:
如果仅为组配置源前缀,则所有 (*,G) 联接都将发送到单播协议选择的下一跃点邻接方,而 (S,G) 联接将发送到为源指定的下一跃点邻接方。
如果仅为组配置通配符源,则所有 (*,G) 和 (S,G) 联接都将发送到指向通配符源下一跃点邻居的上游接口。
如果为组同时配置源前缀和通配符源,则所有 (S,G) 连接都将发送到为源前缀定义的下一跃点邻居,而 (*,G) 连接将发送到为通配符源指定的下一跃点邻居。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后从配置模式进入 commit
。
set routing-instance vpn-a protocols pim rpf-selection group 225.5.0.0/16 wildcard-source next-hop 10.12.5.2 set routing-instance vpn-a protocols pim rpf-selection prefix-list group12 wildcard-source next-hop 10.12.31.2 set routing-instance vpn-a protocols pim rpf-selection prefix-list group34 source 22.1.12.0/24 next-hop 10.12.32.2 set policy-options prefix-list group12 225.1.1.0/24 set policy-options prefix-list group12 225.2.0.0/16 set policy-options prefix-list group34 225.3.3.3/32 set policy-options prefix-list group34 225.4.4.0/24
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置 PIM RPF 选择,请执行以下操作:
在 PE2 上,在路由实例中配置 RFP 选择。
[edit routing-instance vpn-a protocols pim] user@host# set rpf-selection group 225.5.0.0/16 wildcard-source next-hop 10.12.5.2 user@host# set rpf-selection prefix-list group12 wildcard-source next-hop 10.12.31.2 user@host# set rpf-selection prefix-list group34 source 22.1.12.0/24 next-hop 10.12.32.2 user@host# exit
在 PE2 上,配置策略。
[edit policy-options] set prefix-list group12 225.1.1.0/24 set prefix-list group12 225.2.0.0/16 set prefix-list group34 225.3.3.3/32 set prefix-list group34 225.4.4.0/24
如果完成设备配置,请提交配置。
user@host# commit
结果
在配置模式下,输入 显示策略选项 和 显示路由实例 命令来确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。
user@host# show policy-options prefix-list group12 { 225.1.1.0/24; 225.2.0.0/16; } prefix-list group34 { 225.3.3.3/32; 225.4.4.0/24; }
user@host# show routing-instances vpn-a{ protocols { pim { rpf-selection { group 225.5.0.0/16 { wildcard-source { next-hop 10.12.5.2; } } prefix-list group12 { wildcard-source { next-hop 10.12.31.2; } } prefix-list group34 { source 22.1.12.0/24 { next-hop 10.12.32.2; } } } } } }
验证
要验证配置,请运行以下命令,检查上游接口和上游邻居:
显示 PIM 加入广泛
显示组播路由