路由策略术语中的操作
路由策略中的每个术语都可以包含一个 then
语句,该语句定义当路由与术语中 和 from
to
语句中的所有条件匹配时要执行的操作:
then { actions; }
您可以在以下层次结构级别包含此语句:
[edit policy-options policy-statement policy-name term term-name]
[edit logical-systems logical-system-name policy-options policy-statement policy-name term term-name]
如果术语没有 from
and to
语句,则认为所有路由都匹配,并且操作适用于所有路由。有关 from
和 to
语句的信息,请参阅 路由策略匹配条件。
您可以在语句中 then
指定一个或多个操作。有三种类型的操作:
流控制操作,影响是接受还是拒绝路由,以及是否评估下一个术语或路由策略。
操纵路由特征的操作。
跟踪操作,用于记录路由匹配项。
注:指定操作路由特征的操作时,更改将发生在源路由的副本中。源路由本身不会更改。只有在将路由导入到路由表中或从路由表中导出路由后,操作的效果才可见。要在应用路由策略之前查看源路由,请使用
show route receive-protocol
命令。要在应用导出策略后查看路由,请使用show route advertised-protocol
命令。在策略评估期间,源路由副本中的特征始终在评估操作后立即更改。但是,在策略评估完成之前,路由不会复制到路由表或路由协议。
该 then
语句是可选的。如果省略它,则会发生下列情况之一:
路由策略中的下一个术语(如果存在)将被评估。
如果路由策略中没有更多术语,则评估下一个路由策略(如果存在)。
如果没有更多术语或路由策略,则执行默认策略指定的接受或拒绝操作。有关更多信息,请参阅 默认路由策略。
以下各节讨论这些操作:
配置流控制操作
表 1 列出了流控制操作。您可以指定其中一个操作以及跟踪操作,也可以指定一个或多个操作路由特征的操作(请参见 配置操纵路由特征的操作)。
流控制操作 |
Description |
---|---|
|
接受路由并传播它。接受路由后,不会评估路由策略中的其他术语,也不会评估其他路由策略。 |
|
接受并覆盖协议固有的任何操作。这是一个非终止策略操作。 |
|
拒绝路由,不要传播它。路由被拒绝后,不会评估路由策略中的其他术语,也不会评估其他路由策略。 |
|
拒绝并覆盖协议固有的任何操作。这是一个非终止策略操作。 |
|
跳到并评估同一路由策略中的下一个术语。将跳过语句中
注:
在 Junos OS 演化版上, |
|
跳到并评估下一个路由策略。将跳过语句中
|
|
分段路由流量工程 (SR-TE) 模板,适用于 PCE 发起的 LSP。 |
配置操纵路由特征的操作
您可以指定中 表 2 列出的一个或多个操作来操作路由特征。
操作 |
Description |
---|---|
|
(仅限 BGP)允许向播发前缀子 |
|
(仅限 BGP)在 AS 路径的开头附加一个或多个 AS 编号。如果指定多个 AS 编号,请用引号 (“ ”) 将这些数字括起来。AS 编号将在本地 AS 编号添加到路径之后添加。此操作仅将 AS 编号添加到 AS 序列,而不添加到 AS 集。如果现有 AS 路径以联合序列或联合序列集开头,则附加的 AS 编号将放置在联合序列中。否则,附加的 AS 编号将放置在非联合序列中。有关更多信息,请参阅 了解将 AS 编号前置到 BGP AS 路径。 在 Junos OS 9.1 及更高版本中,您可以指定 RFC 4893 中定义的 4 字节 AS 编号、 BGP 对四字节 AS 编号空间的支持以及早期版本的 Junos OS 支持的 2 字节 AS 编号。 |
|
(仅限 BGP)提取现有 AS 路径中的最后一个 AS 编号,并将该 AS 编号附加到 AS 路径 AS 编号是在将本地 AS 编号添加到路径之前添加的。此操作仅将 AS 编号添加到 AS 序列,而不添加到 AS 集。如果现有 AS 路径以联合序列或联合序列集开头,则附加的 AS 编号将放置在联合序列中。否则,附加的 AS 编号将放置在非联合序列中。此选项通常用于非 IBGP 导出策略。 注:
从 Junos OS 17.3 版开始,可以为计数值提交空配置,如果是这样,Junos 会将空值转换为 1 计数而不是 0 计数,或禁止提交。使计数 |
|
(仅限具有优化的子网间组播 [OISM] 的辅助复制 [AR])在运行 OISM 的 EVPN 网络中启用 AR 叶设备,以确定性地将组播流引导至特定的 AR 复制器设备。(可选)包括 |
|
(仅限 BGP)设置用于此路由的输出优先级队列。有 17 个优先输出队列:一个优先级最高的加速队列,以及 16 个编号队列,其中 1 是最低优先级,16 是最高优先级。 |
|
(仅限服务等级 [CoS])将指定的服务等级参数应用于安装在路由表中的路由。有关详细信息,请参阅 Junos OS 路由设备服务等级用户指南。 |
|
将首选项值设置为指定的值。 如果使用操作设置 |
|
按指定量更改颜色首选项值。如果加法运算产生的值大于 4,294,967,295 (232 – 1),则该值设置为 232 – 1。如果减法运算导致值小于 0,则该值设置为 0。如果在加法或减法操作时尚未设置属性值,则无论指定的数量如何,属性值都将默认为 0。如果对值为 0 的属性执行加法,则添加的数字将成为生成的属性值。 |
|
(仅限 BGP)将指定的社区添加到路由中的社区集。有关更多信息,请参阅 了解 BGP 社区、扩展社区和大型社区作为路由策略匹配条件。 |
|
(仅限 BGP)从路由中的社区集中删除指定的社区。有关更多信息,请参阅 了解 BGP 社区、扩展社区和大型社区作为路由策略匹配条件。 |
|
(仅限 BGP)将路径中的任何社区替换为指定的社区。有关更多信息,请参阅 了解 BGP 社区、扩展社区和大型社区作为路由策略匹配条件。 |
|
在转发表中设置基于 CoS 的下一跳映射。 |
|
(仅限 BGP)将指定的路由阻尼参数应用于路由。这些参数将覆盖默认阻尼参数。此操作仅在导入策略中有用,因为阻尼参数会影响路由表中路由的状态。 要应用阻尼参数,必须按照路由 设备的 Junos OS 路由协议库中所述启用 BGP 抖动阻尼,并且必须按照 使用路由策略抑制 BGP 路由抖动中所述创建参数的命名列表。 |
|
根据数据包中的目标地址维护通过网络的路由的数据包计数。您可以执行以下操作:
|
|
设置 OSPF 导出的路由的外部指标类型。必须指定关键字 |
|
根据数据包中的目标地址和源地址创建包含数据包的转发类。您可以执行以下操作:
|
|
在转发表中安装一组相等的 LSP 下一跃点中的下一跃点。使用转发表的导出策略指定要用于所需路由的 LSP 下一跃点。 |
|
仅适用于 PTX 系列路由器,请覆盖默认 BGP 路由策略。更多信息,请参见 示例:覆盖 PTX 系列数据包传输路由器上的默认 BGP 路由策略。 |
|
(仅限 BGP)对于带有模块化端口集中器 (MPC) 的 MX 系列路由器以及仅适用于QFX10000交换机,请为一个或多个 IP 地址指定一致的负载平衡。当一个或多个下一跃点路径发生故障时,此功能可保留流与等价多路径 (ECMP) 组中路径的关联性。仅重定向非活动路径的流。映射到保持活动状态的服务器的流将得到维护。 |
|
(MX 系列路由器 - 基于 AFT)启用对称一致性散列以支持静态路由的一致散列,并在正向和反向上通过相关的源 IP 和目标 IP 负载平衡哈希键实现对称负载均衡。 此操作用于对任播 IP 应用一致哈希的情况,这些 IP 用于对通过静态路由获知的流量进行负载平衡,流向上游和下游方向的 ECMP 服务器组。由于预期来自客户的所有流量都应到达同一 ECMP 服务器,因此只有源 IP 用于在一个方向上创建负载平衡哈希,而目标 IP 用于在相反方向上创建负载平衡哈希。 |
|
仅根据目标 IP 地址计算负载平衡哈希。这允许服务提供商将流量定向到每个订阅者感知环境中的特定内容服务器。 |
|
(仅用于导出到转发表)在转发表中安装所有下一跃点地址,并让转发表执行按数据包的负载平衡。此策略操作允许您优化跨多个路径的 VPLS 流量。有关更多信息,请参阅 配置按数据包负载均衡。 |
|
仅适用于 PTX 系列路由器,请覆盖 BGP 的默认每数据包负载平衡路由策略。更多信息,请参见 示例:覆盖 PTX 系列数据包传输路由器上的默认 BGP 路由策略。 |
|
仅根据源 IP 地址计算负载平衡哈希。这允许服务提供商将流量定向到每个订阅者感知环境中的特定内容服务器。 |
|
(仅限 BGP)设置 BGP 本地首选项 (LOCAL_PREF) 属性。首选项值可以是介于 0 到 4,294,967,295 (232 – 1) 之间的数字。 |
|
按指定量更改本地首选项值。如果加法运算产生的值大于 4,294,967,295 (232 – 1),则该值设置为 232 – 1。如果减法运算导致值小于 0,则该值设置为 0。如果在加法或减法操作时尚未设置属性值,则无论指定的数量如何,属性值都将默认为 0。如果对值为 0 的属性执行加法,则添加的数字将成为生成的属性值。 对于 BGP,如果属性值未知,则会在应用路由策略之前将其初始化为 100。 |
|
设置
如果没有匹配的术语,则不会发送组播数据包。 |
|
设置指标。您最多可以指定四个衡量指标值,从 (对于第一个衡量指标值)开始 (仅限 BGP) |
|
按指定量更改指标值。如果加法运算产生的值大于 4,294,967,295 (232 – 1),则该值设置为 232 – 1。如果减法运算导致值小于 0,则该值设置为 0。如果在加法或减法操作时尚未设置属性值,则无论指定的数量如何,属性值都将默认为 0。如果对值为 0 的属性执行加法,则添加的数字将成为生成的属性值。 |
|
根据 和 此策略操作使用表达式的结果覆盖指标属性的当前值 ((x * 公制) + a) + ((y * 公制2) + b) 其中 |
|
(仅限 BGP)按指定的负偏移量或正偏移量更改指标 (MED) 值。此操作仅在外部 BGP (EBGP) 导出策略中有用。 |
|
设置下一跃点地址。当播发协议为 BGP 时,只有当任何第三方下一跳都可以播发时,才能设置下一跳;也就是说,当您使用 IBGP 或 EBGP 联合时。 如果指定 如果指定 如果指定 如果指定
term 1 { from { protocol bgp; rib vrf-customer2.inet.0; community customer; } then { next-hop next-table vrf-customer1.inet.0; } } term 2 { from { protocol bgp; rib vrf-customer1.inet.0; community customer; } then { next-hop next-table vrf-customer2.inet.0; } } 如果指定 |
|
(仅限 BGP)将 BGP 源属性设置为以下值之一:
|
|
为基于多点 LDP (M-LDP) 的点对多点标签交换路径 (LSP) 设置入口根节点。更多信息,请参见 示例:为点对多点 LSP 配置多点 LDP 带内信令。 |
|
设置首选项值。您可以指定主首选项值 ( 要指定更细粒度的首选项值,请参阅 如果为操作设置 |
|
按指定量更改首选项值。如果加法运算产生的值大于 4,294,967,295 (232 – 1),则该值设置为 232 – 1。如果减法运算导致值小于 0,则该值设置为 0。如果在加法或减法操作时尚未设置属性值,则无论指定的数量如何,属性值都将默认为 0。如果对值为 0 的属性执行加法,则添加的数字将成为生成的属性值。 |
|
(仅限 OSPF 导入)为 OSPF 导入策略中包含的前缀指定优先级。通过 OSPF 获知的前缀将根据分配给前缀的优先级安装在路由表中。优先级分配的 注:
OSPF 导入策略只能用于设置优先级或过滤 OSPF 外部路由。如果应用的 OSPF 导入策略导致 |
|
根据源地址维护通过网络的路由的数据包计数。您可以执行以下操作:
注:
配置策略操作语句时,只能为每个匹配路由配置一个源类。换句话说,不能将多个源类应用于同一路由。 |
|
为特定于源的组播 (SSM) 策略指定一个或多个 IPv4 或 IPv6 源地址 |
|
为特定于源的组播 (SSM) 策略指定一个或多个 IPv4 或 IPv6 源地址。 |
|
设置标签值。您可以指定两个标签字符串:
|
|
按指定量更改标签值。如果加法运算产生的值大于 4,294,967,295 (232 – 1),则该值设置为 232 – 1。如果减法运算导致值小于 0,则该值设置为 0。如果在加法或减法操作时尚未设置属性值,则无论指定的数量如何,属性值都将默认为 0。如果对值为 0 的属性执行加法,则添加的数字将成为生成的属性值。 |
|
配置 BGP 源验证后,将路由前缀的验证状态设置为有效、无效或未知。 路由验证数据库包含路由源授权 (ROA) 记录,用于将路由前缀映射到预期的始发自治系统 (AS)。这可以防止意外播发无效路由。 请参阅 了解 BGP 的源验证。 |
在路由策略中配置默认操作
该 default-action
语句将覆盖协议固有的任何操作。此操作也是非终止的,因此可以在终止策略之前评估各种策略术语。您可以指定默认操作 accept
或 reject
,如下所示:
[edit] policy-options { policy-statement policy-name { term term-name { from { family family-name; match-conditions; policy subroutine-policy-name; prefix-list name; route-filter destination-prefix match-type <actions>; source-address-filter source-prefix match-type <actions>; } to { match-conditions; policy subroutine-policy-name; } then { actions; default-action (accept | reject); } } } }
生成的操作由协议或匹配的最后一个策略术语设置。
示例:在路由策略中配置默认操作
配置基于三个策略术语匹配路由的路由策略。如果路由与第一个术语匹配,则会附加某个社区标签。如果路由与两个单独的术语匹配,则会附加两个社区标签。如果路由与任何条款都不匹配,则会被拒绝(协议的默认操作)。请注意,这两个术语 hub
是 spoke
互斥的。
[edit] policy-options { policy-statement test { term set-default { then default-action reject; } term hub { from interface ge-2/1/0.5; then { community add test-01-hub; default-action accept; } } term spoke { from interface [ ge-2/1/0.1 ge-2/1/0.2 ]; then { community add test-01-spoke; default-action accept; } } term management { from protocol direct; then { community add management; default-action accept; } } } }
在路由策略中配置最终操作
除了使用命名术语中的语句指定 then
操作外,还可以使用未命名术语中的语句指定 then
操作,如下所示:
[edit] policy-options { policy-statement policy-name { term term-name { from { family family-name; match-conditions; policy subroutine-policy-name; prefix-list name; route-filter destination-prefix match-type <actions>; source-address-filter source-prefix match-type <actions>; } to { match-conditions; policy subroutine-policy-name; } then { actions; } } then action; } }
日志记录与路由策略术语匹配
如果指定跟踪操作,则匹配项将记录到跟踪文件中。要设置跟踪文件,必须在全局 traceoptions
语句中指定以下元素:
跟踪文件名
policy
语句中的flag
选项
下面的示例使用跟踪 policy-log
文件名 :
[edit] routing-options { traceoptions { file “policy-log"; flag policy; } }
此操作不会影响路由策略评估期间的流控制。
如果指定跟踪操作的术语也指定了流控制操作,则该术语的名称将记录在跟踪文件中。如果术语仅指定跟踪操作,则会记录单词 <default
>。
为路由列表中的路由配置单独的操作
如果在语句中 from
指定路由列表,则对于列表中的每个路由,您可以指定要直接对该单个路由执行的操作,而无需包含 then
语句。有关更多信息,请参阅 了解路由策略匹配条件中使用的路由过滤器。