Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

了解在路由策略中使用的路由过滤器匹配条件

路由过滤器是匹配前缀的集合。指定匹配前缀时,您可以指定与特定路由的完全匹配或不太精确匹配。您可以配置适用于整个列表的通用操作,也可设置与每个前缀相关联的操作。

注:

由于路由过滤器的配置包括设置前缀和前缀长度,因此在继续配置之前,您应该全面了解 IP 寻址,包括超网,以及如何评估路由过滤器(此处讲解):如何在路由策略匹配条件中评估路由过滤器) 中减去衰减或链路损耗 (LL) 之后可用的功率。

本节讨论以下主题:

基数树

要了解路由过滤器的操作,您需要熟悉用于二进制数(称为基数树)的设备(有时称为 patricia trie 或基数 trie)。基数树使用二进制查找来识别 IP 地址(路由)。请记住,IP 地址是以点分隔的十进制格式表示的32位数字,便于人们理解。每个8位分组都有一个介于0和255之间的值。基数树可以是这些二进制数的图形表示。

图 1中,基数树从无配置值(从0开始)开始,位于二进制 IP 地址的最左端位置。这显示为0/0,通常称为默认路由。

图 1: 基数树的开始基数树的开始

由于这是二进制值,因此每个位只能有两个可能的值之一:0 或 1。向下移动左侧分支将表示一个值 0,而向右侧移动表示 1 的值。第一个步骤如 图 2 所示。位于第一位置时,IP 地址的第一个八位位组的值分别为 00000000 或 10000000 — 一个 0 或 128。这由值 0/1 图 2和128/1 表示。

图 2: 基数树的第一步基数树的第一步

第二步如中图 3所示。此树的第二层对于第一个八位字节有四个可能的二进制值:00000000、01000000、10000000和11000000。这些十进制值0、64、128和192用基数树上的0/2、64/2、128/2 和192/2 的 IP 地址表示。

图 3: 基数树的第二步基数树的第二步

这一分步过程将继续33总级别,以表示每个可能的 IP 地址。

在查找所有具有相同最高有效位的路由组时,基数树状结构将很有帮助。图 4显示了表示 192.168.0.0/16 网络的基数树中的点。所有比 192.168.0.0/16 更具体的路由都显示在突出显示的部分中。

图 4: 查找一组路由查找一组路由

配置路由过滤器

注:

配置路由过滤器的主题描述了默认 Junos OS 行为。本主题中未涉及的 walkup 功能通过允许路由器考虑在同一术语内配置更短的匹配条件,改变了本主题中讨论的评估结果。请参阅 Walkup 用于路由过滤器概述 ,了解详细信息。

要配置路由过滤器,请包含一个或多route-filtersource-address-filter or 语句:

route-filter选项通常用于将传入路由地址与单播源地址以外的任何类型的目标匹配前缀匹配。

destination-prefix地址是指定为prefix/prefix-length的 Ip 版本4(IPv4)或 Ip 版本6(IPv6)地址前缀。如果您省略prefix-length IPv4 前缀,则缺省值为/32。如果您省略prefix-length IPv6 前缀,则缺省值为/128。from语句中指定的前缀必须是所有 IPv4 地址或所有 IPv6 地址。

source-address-filter选项通常用于将传入路由地址与多协议 BGP (MBGP)和多播源发现协议(MSDP)环境中的单播源地址匹配。

source-prefixaddress 是指定 as prefix/prefix-length的 IPv4 或 IPv6 地址前缀。如果您省略prefix-length IPv4 前缀,则缺省值为/32prefix-length。如果您省略prefix-length IPv6 前缀,则缺省值为/128。from语句中指定的前缀必须是所有 IPv4 地址或所有 IPv6 地址。

match-type是要应用于源或目标前缀的匹配类型。它可以是中表 1列出的匹配类型之一。有关匹配类型的示例以及各种路由的结果,请参阅表 2

actions如果路由地址与为目标匹配前缀指定的标准(指定为route-filter选项的一部分)或源匹配前缀(指定为destination-address-filter选项的一部分)匹配,则是要采取的措施。这些操作可以包含 中介绍的一个或多个操作 路由策略条款中的操作

在路由过滤器中,您可以采用两种方式指定操作:

  • 在 或 选项中 — 在匹配发生后,会立即执行这些操作 route-filtersource-address-filterthen 并且不评估语句。

  • 语句中 — 在匹配后将执行这些操作, then 但不为 route-filter 或 选项指定 source-address-filter 操作。

uptoprefix-length-range匹配类型均指定最高有效位并提供可匹配的一系列前缀长度,这一点类似。区别在于upto允许您仅指定前缀长度范围的上限,而prefix-length-range允许您指定下限和上限值。

有关这些路由过滤器匹配类型的更多示例, 路由过滤器示例请参阅。

表 1: 前缀列表的路由过滤器匹配类型

匹配类型

匹配标准

address-mask netmask-value

满足以下所有条件:

  • netmask-value模式和传入的 IPv4 或 IPv6 路由地址以及该netmask-value模式和destination-prefix地址的按位逻辑与的逐位逻辑 and 是相同的。模式中设置的 netmask-value 位无需连续。

  • 传入prefix-length的 IPv4 或 IPv6 路由地址和prefix-lengthdestination-prefix地址的组件的组件相同。

注:

address-mask路由策略匹配类型仅在将一个传入的 IPv4 (family inet)或 IPv6 (family inet6)路由地址与route-filter语句中指定的目标匹配前缀列表匹配时有效。

address-mask路由策略匹配类型允许您匹配配置的网络掩码地址上的传入 IPv4 或 IPv6 路由地址,以及配置的目标匹配前缀的长度。路由地址的长度必须与配置的目的地匹配前缀的长度完全匹配,因为匹配类型不支持一系列前缀长度的前缀 address-mask 长度变体。

当在路由过滤器上执行最长匹配查找时,查找将不同于其他address-mask路由策略匹配类型的评估匹配类型。查找不会考虑目标匹配前缀的长度。而是通过查找来考虑在网络掩码值中设置的连续高顺序比特数。

有关此路由过滤器匹配类型的详细信息,请如何计算地址掩码匹配类型参阅。

有关显示包含address-mask匹配类型的路由过滤器的配置示例,请参阅以下主题:

exact

满足以下所有条件:

  • 路由地址与匹配前缀(destination-prefixsource-prefix)共享最重要的位。有效位的数量由匹配前缀的prefix-length组件描述。

  • 匹配 prefix-length 前缀的组件等于路由的前缀长度。

longer

满足以下所有条件:

  • 路由地址与匹配前缀(destination-prefixsource-prefix)共享最重要的位。有效位的数量由匹配前缀的prefix-length组件描述。

  • 路由的前缀长度大于 prefix-length 匹配前缀的组件。

orlonger

满足以下所有条件:

  • 路由地址与匹配前缀(destination-prefixsource-prefix)共享最重要的位。有效位的数量由匹配前缀的prefix-length组件描述。

  • 路由的前缀长度等于或大于配置的匹配前缀 prefix-length 的组件。

prefix-length-range prefix-length2-prefix-length3

满足以下所有条件:

  • 路由地址与匹配前缀(destination-prefixsource-prefix)共享最重要的位。有效位的数量由匹配前缀的prefix-length组件描述。

  • 路由的前缀长度介于 和 prefix-length2prefix-length3 (包容性)之间。

through {destination-prefix2 | source-prefix2}

满足以下所有条件:

  • 路由地址与第一个匹配前缀(destination-prefixsource-prefix)共享最重要的位。有效位的数量由第一个匹配前缀prefix-length的组件描述。

  • 路由地址与第二个匹配前缀(destination-prefix2source-prefix2)共享最重要的位。由第二个匹配前缀组成的prefix-length组件描述了有效位的数量。

  • 路由的前缀长度小于或等于第二个匹配前缀 prefix-length 的组件。

在大多数路由策略配置through中不使用匹配类型。有关示例,请参阅拒绝来自特定主机的路由

upto prefix-length2

满足以下所有条件:

  • 路由地址与匹配前缀(destination-prefixsource-prefix)共享最重要的位。有效位的数量由匹配前缀的prefix-length组件描述。

  • 路由的前缀长度介于第一个匹配前缀 prefix-length 和 的组件之间 prefix-length2

图 5显示路由 192.168.0.0/16 的详细基数树。

图 5: 部分(基数树)部分(基数树)

图 6表 2展示了各种路由过滤器匹配类型的操作。

图 6: 路由过滤器匹配类型路由过滤器匹配类型
表 2: 匹配类型示例

192.168/16 精确

192.168/16 长

192.168/16 orlonger

192.168/16 向/24

192.168/16 prefix-length-range/18 – /20

192.168/16 through192.168.16/20

192.168/19 address-mask255.255.0.0

10.0.0.0/8

192.168.0.0/16

相符

相符

相符

相符

192.168.0.0/17

相符

相符

相符

相符

192.168.0.0/18

相符

相符

相符

相符

相符

192.168.0.0/19

相符

相符

相符

相符

相符

相符

192.168.4.0/24

相符

相符

相符

192.168.5.4/30

相符

相符

192.168.12.4/30

相符

相符

192.168.12.128/32

相符

相符

192.168.16.0/20

相符

相符

相符

相符

相符

192.168.192.0/18

相符

相符

相符

相符

192.168.224.0/19

相符

相符

相符

相符

相符

10.169.1.0/24

10.170.0.0/16

如何在路由策略匹配条件中评估路由过滤器

在路由过滤器评估期间,策略框架软件将每个路由的源地址与路由过滤器中的目标前缀进行比较。评估过程分为两步:

  1. 策略框架软件执行最长匹配查找,这意味着软件将在列表中搜索最长长度的前缀。

    最长匹配查找仅考虑配置prefixprefix-length匹配前缀的和组件,而不是match-type组件。以下示例路由过滤器说明了这一点:

    候选路由 192.168.1.0/24 的最长匹配是第二路由过滤器,192.168.0.0/15,仅基于前缀和前缀长度。

  2. 当传入路由匹配前缀(最长第一条)时,将发生以下操作:

    1. 即使匹配类型发生故障,路由过滤器也会停止计算其他前缀。

    2. 软件将检查与该前缀相关联的匹配类型和操作。

注:

当根据使用address-mask匹配类型的匹配标准评估路由源地址时,评估的两个步骤都包含配置的网络掩码值。有关更多详细信息,请参阅如何计算地址掩码匹配类型

在步骤 1 中,如果评估了路由 192.168.1.0/24,则可能无法匹配。它匹配 192.168.0.0/15 的最长前缀,但不匹配exact。路由过滤器已完成,因为它与一个前缀匹配,但结果是失败了匹配,因为匹配类型失败。

如果发生匹配,则采用前缀指定的操作。如果未使用前缀指定操作,则会执行then语句中的操作。如果未指定任何操作,软件将评估下一术语或路由策略(如果存在),或者采用accept默认reject策略指定的或操作。有关默认路由策略的信息,请参阅 默认路由策略

注:

如果在路由过滤器中指定多个前缀,则只有一个前缀需要匹配才能发生匹配。路由过滤器匹配实际上是一个逻辑或操作。

如果未发生匹配,软件将评估下一术语或路由策略(如果存在),或者采用默认策略accept指定reject的或操作。

例如,将前缀 192.168.254.0/24 与以下路由过滤器进行比较:

前缀 192.168.254.0/23 被确定为最长前缀。当软件根据最长前缀评估 192.168.254.0/24 时,将发生匹配(192.168.254.0/24 是 192.168.254.0/23 的子集)。由于 192.168.254.0/24 与最长前缀之间的匹配,评估继续进行。但是,当软件评估匹配类型时,192.168.254.0/24 和 192.168.254.0/23 之间的匹配不会完全一致。该软件会得出以下结论:术语不匹配,并到达下一术语或路由策略(如果存在),或者采用accept默认reject策略指定的或操作。

注:

借助该步测功能,多个路由过滤器的术语可以"上行"评估流程,以包含不太具体的路由和最长的匹配。换句话说,启用 Walkup 将默认行为从"如果一个失败,则搜索失败"更改为"如果匹配,则搜索词匹配"。有关该功能的信息 walkup ,请参阅 Walkup 用于路由过滤器概述

前缀顺序如何影响路由过滤器评估

指定前缀的顺序(从上至下)通常无关紧要,因为策略框架软件会在评估期间扫描查找最长前缀的路由过滤器。此规则的例外情况是在列表中多次使用相同的目标前缀时。在这种情况下,前缀的顺序很重要,因为相同的前缀列表是从上至下进行扫描的,而第一个与路由匹配的匹配类型将适用。

注:

借助该步测功能,多个路由过滤器的术语可以"上行"评估流程,以包含不太具体的路由和最长的匹配。换句话说,启用 Walkup 将默认行为从"如果一个失败,则搜索失败"更改为"如果匹配,则搜索词匹配"。有关该功能的信息 walkup ,请参阅 Walkup 用于路由过滤器概述

在下面的示例中,为相同的前缀指定不同的匹配类型。路由 0.0.0.0/0 将被拒绝,路由 0.0.0.0/8 将标记为next-hop self,路由 0.0.0.0/25 将被拒绝。

如何计算地址掩码匹配类型

address-mask路由策略匹配类型使您可以匹配配置的网络掩码值上的传入 IPv4 或 IPv6 路由地址,以及配置的目标匹配前缀的长度。在路由过滤器评估期间, address-mask匹配类型的处理方式与其他路由策略匹配类型不同,考虑配置的网络掩码值:

  • 当最长匹配查找评估路由策略匹配类型时,将视为配置的 address-maskprefix-length 匹配前缀的组件。而是通过查找来考虑在配置的网络掩码值中设置的连续高序位。

  • 根据使用address-mask路由策略匹配类型的路由过滤器匹配标准评估传入 IPv4 或 IPv6 路由地址时,如果以下值相同,则匹配成功:

    • 配置的网络掩码值和传入的 IPv4 或 IPv6 路由地址的逐位逻辑与

    • 配置的网络掩码值和配置的目标地址匹配前缀的逐位逻辑与

有关包含两种address-mask匹配类型的路由过滤器的示例配置,请参阅使用最长匹配查找对地址掩码匹配类型进行评估

最长匹配查找的常见配置问题

定义路由过滤器时,通常会出现一个问题,包括在同一个列表中要与更长、类似的前缀匹配的较短前缀。例如,假设前缀 192.168.254.0/24 与以下路由过滤器进行比较:

由于策略框架软件执行最长匹配查找,因此前缀 192.168.254.0/23 被确定为最长前缀。完全匹配不会在 192.168.254.0/24 和 192.168.254.0/23 之间精确进行。该软件确定此术语不匹配,并进入下一术语或路由策略(如果存在),或者采用默认策略指定acceptreject或操作。(有关默认路由策略的信息,请参阅 默认路由策略 。)要匹配的更短的前缀 192.168.0.0/16 或长度将在无意中忽略。

此问题的一个解决方案是从此术语中的路由过滤器中删除前缀 192.168.0.0/16 orlonger,并将其移动到另一个搜索条件,其中它是唯一的前缀或列表中的最长前缀。

另一个解决方案是启用 walkup 此功能。请参阅 Walkup 用于路由过滤器概述 ,了解详细信息。

路由过滤器示例

本节中的示例仅显示路由策略的片段。通常,这些片段与其他术语或路由策略相结合。

在所有示例中,请记住以下操作适用于不匹配的路由:

  • 评估下一术语(如果存在)。

  • 评估下一个策略(如果存在)。

  • 采取默认accept策略reject指定的或操作。有关默认路由策略的信息,请参阅 默认路由策略

以下示例显示如何配置路由过滤器以实现各种用途:

拒绝具有特定目标前缀和掩码长度的路由

拒绝目标前缀为 0.0.0.0 和掩码长度为 0 到 8 的路由,并接受所有其他路由:

拒绝掩码长度大于八的路由

拒绝掩码为 /8 及更高的(即 /8、/9、/10 等)且将前 8 位设置为 0 且接受长度小于 8 位的路由的路由:

拒绝掩码长度介于26和29之间的路由

使用 192.168.10/24 的目标前缀或介于/26 和/29 之间的掩码拒绝路由,并接受所有其他路由:

拒绝来自特定主机的路由

拒绝特定主机的一系列路由,并接受所有其他路由:

在大多数路由策略配置through中不使用匹配类型。您应将through作为一组连续匹配的工具视为一套。例如,不要指定四个完全匹配的项:

您可以使用以下单一匹配来表示它们:

接受已定义的一组前缀的路由

明确接受有限的一组前缀(第一段)并拒绝其他所有部分(在第二个术语中):

使用定义的一组前缀拒绝路由

拒绝几组前缀,并接受其余的前缀:

拒绝长度超过24位的前缀的路由

拒绝超过 24 位的所有前缀。您应按export语句中的一系列路由策略安装此路由策略。此过滤器中的第一个术语可传递前缀长度最高为 24 位的所有路由。第二个未命名术语拒绝其他所有内容。

在此示例中,如果您指定route-filter 0.0.0.0/0 upto /24 accept了匹配的前缀,将立即接受,而export语句中的下一个路由策略永远不会得到评估。

如果在术语中包括语句,大于 then rejectacl20 24 位的前缀永远不会被拒绝,因为策略框架软件在评估术语时,会继续评估下一个语句,然后再到达语句。 then reject

拒绝 PIM 多播信息流连接

配置路由策略,以拒绝来自相邻节点的源目标前缀的协议无关多播(PIM)多播信息流联接:

拒绝 PIM 流量

配置路由策略,以便拒绝来自接口的源目标前缀的 PIM 流量:

以下路由策略限定符适用于 PIM:

  • interface—接收加入的接口

  • neighbor—加入的来源

  • route-filter—组地址

  • source-address-filter—拒绝加入的源地址

有关在 PIM 协议定义中导入 PIM 加入过滤器的信息,请参阅 Junos OS 组播协议用户指南

接受传入的 IPv4 路由,方法是将地址掩码应用于路由地址和目标匹配前缀

接受目标前缀为 10.1.0/24、第三个字节(从 0 到 14)的传入 IPv4 路由,包括:

路由策略术语term_1中的路由过滤器与以下传入 IPv4 路由地址匹配:

  • 10.1.0.0/24

  • 10.1.2.0/24

  • 10.1.4.0/24

  • 10.1.6.0/24

  • 10.1.8.0/24

  • 10.1.10.0/24

  • 10.1.12.0/24

  • 10.1.14.0/24

网掩码值和候选路由地址的逐位逻辑 AND 必须与网掩码值和匹配前缀地址的逐位逻辑与相匹配。也就是说,如果网络掩码位模式255.255.241.0 包含一个设置位,则正在评估的传入 IPv4 路由地址必须与目标前缀地址 10.1.0.0/24 中相应位的值匹配。

  • netmask 值前两个字节是二进制 1111 1111 111 1111,这意味着,如果前两个字节不是 10.1,则候选路由地址将失败。

  • netmask 值的第三个字节是二进制 1111 0001,这意味着,如果第三个字节大于 15(十进制),则候选路由地址将失败,或者两者同时为奇数。

  • 匹配前缀地址的前缀长度为 24(十进制),这意味着,如果前缀长度不是正好为 24,则候选路由地址将失败。

例如,假设在策略中测试的候选路由地址为 10.1.8.0/24(二进制 0000 1010 0000 0001 0000 1000)。

  • 将 netmask 值应用于此候选路由地址时,结果是二进制 0000 1010 0000 0001 0000 0000。

  • 将 netmask 值应用于配置的目的地前缀地址时,结果也是二进制 0000 1010 0000 0001 0000 0000。

  • 由于两个和操作的结果相同,因此匹配继续满足第二个匹配标准。

  • 由于候选地址的前缀长度和配置的目的地前缀地址相同(24 位),因此匹配将成功。

又比如,假设在策略中测试的候选路由地址为 10.1.3.0/24(二进制 0000 1010 0000 0001 0000 0011)。

  • 将 netmask 值应用于此候选路由地址时,结果为二进制 0000 1010 0000 0001 0000 0001。

  • 但是,当将 netmask 值应用于配置的目的地前缀地址时,结果是二进制 0000 1010 0000 0001 0000 0000。

  • 由于两个 AND 操作的结果不同(在第三个字节),因此匹配失败。

接受具有类似模式但具有不同前缀长度的传入 IPv4 路由

接受 10. *. 1/24 或 10. * 1. */32 的传入 IPv4 路由地址:

路由过滤器匹配标准10.0.1.0/24 address-mask 255.0.255.0匹配 10. *. 1/24 形式的传入 IPv4 路由地址。路由的前缀长度必须正好为 24 位,第二字节中可接受任何值。

路由过滤器匹配标准10.0.1.0/32 address-mask 255.0.255.0匹配 10. *. 1. */32 格式的传入 IPv4 路由地址。路由的前缀长度必须正好为 32 位,第二字节和第四字节中可接受任何值。

使用最长匹配查找对地址掩码匹配类型进行评估

此示例说明了最大匹配查找如何评估包含两个address-mask匹配类型的路由过滤器。考虑以下路由策略术语term_3中配置的路由过滤器:

假设在策略术语term_3中配置的路由过滤器上测试了传入的 IPv4 路由源地址 10.1.1.0/24:

  1. 路由策略术语term_3的最长匹配查找树包含两个匹配前缀:一个前缀10.0.1.0/24 address-mask 255.0.255.0 and 对应的一个前缀10.0.2.0/24 address-mask 255.240.255.0。在目录树中搜索候选项的最长前缀匹配时,最长匹配查找会考虑配置netmask-value中的连续高序位数量,而不是配置destination-prefix的长度:

    • 对于第一个路由过滤器匹配标准,最长匹配查找条目为 10.0.0.0/8,因为网掩码值包含8个连续高序位。

    • 对于第二路由过滤器匹配标准,最长匹配查找条目为 10.0.0.0/12,因为网络掩码值包含12个连续的高序位。

    对于候选路由地址 10.1.1.0/24,最长匹配查找将返回树条目 10.0.0.0/12,这与路由过滤器匹配标准10.0.2.0/24 address-mask 255.240.255.0相对应。

  2. 既然已为候选路由地址识别了term_3最大匹配前缀,将根据路由过滤器匹配标准10.0.2.0/24 address-mask 255.240.255.0评估候选路由地址:

    1. 要测试传入的 IPv4 路由地址 10.1.1.0/24,请将网络掩码值255.240.255.0 应用于 10.1.1.0/24。结果为10.0.1.0。

    2. 要测试配置的目标前缀地址 10.0.2.0/24,请将网掩码值255.240.255.0 应用于 10.0.2.0/24。结果为10.0.2.0。

    3. 由于结果不同,路由过滤器匹配失败。不执行任何操作,无论是使用匹配标准还是使用then语句指定。传入的 IPv4 路由地址不根据任何其他匹配标准进行评估。