IP : 边界网关协议(BGP)

IP路由协议再分配配置的Route-map

2015 年 8 月 28 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 4 月 22 日) | 反馈


目录


简介

本文档介绍的命令可用于对通过动态路由协议的 redistribute 命令应用的路由映射进行配置。本文档还包括有关路由映射功能的提示以及有关路由映射配置何时最有益处的建议。

route-map功能是思科IOS�软件配置一通用的机制。可将其应用于许多不同任务,例如,基于策略的路由 (PBR) 和边界网关协议 (BGP) 邻居更新修改。路由映射的最常见用途之一是应用于在动态路由协议之间重分配的路由器。本文档说明在配置此类重分配时使用路由映射的可能性。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档中的信息基于主线 Cisco IOS 软件版本 12.3。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

背景信息

本部分概述 Cisco IOS 软件中的路由映射。

什么是路由映射?

路由映射的许多功能与广为人知的访问控制列表 (ACL) 相同。下面是这两种机制的一个共同特点:

  • 它们是各条语句的有序序列,其中每条语句都具有允许或拒绝结果。ACL 或路由映射的评估包括按预先确定的顺序进行列表扫描以及对匹配的每条语句的条件进行评估。找到第一个语句匹配后会立即中止列表扫描,并执行与该语句匹配关联的操作。

  • 它们是通用机制 - 条件匹配和匹配解释由其应用方式决定。应用于不同任务的相同路由映射可能以不同方式进行解释。

以下是路由映射与 ACL 之间的一些区别:

  • 路由映射经常使用 ACL 作为匹配条件。

  • 访问列表评估的主要结果为“是”或“否”答案 - ACL 允许或拒绝输入数据。应用于重分配时,ACL 可确定能(路由与 ACL 允许语句匹配)否(与拒绝语句匹配)对特定路由进行重分配。典型的路由映射不仅允许(一些)重分配的路由,而且在将其重分配到其他协议中时还可以修改与路由关联的信息。有关路由映射修改示例,请参阅本文档的路由映射基础部分。

  • 路由映射比 ACL 更加灵活,可以基于 ACL 无法验证的条件来验证路由。例如,路由映射可以验证路由类型是否为内部类型或者其是否具有特定标记。

  • 根据设计约定,每个 ACL 都以隐式拒绝语句结束;路由映射则没有类似约定。如果在匹配尝试期间到达路由映射的结尾,则结果将取决于路由映射的特定应用。幸运的是,应用于重分配的路由映射的行为方式与 ACL 相同:如果路由不匹配路由映射中的任何子句,则拒绝路由重分配,如同路由映射结尾包含拒绝语句一样。

使用动态协议 redistribute 配置命令可以应用 ACL 或路由映射。通过本部分介绍的区别,可确定应在重分配过程中的何时使用路由映射。如果要在重分配过程中修改路由信息或是如果需要 ACL 无法提供的更强大匹配功能,则首选路由映射。相反,如果只需根据路由的前缀或掩码选择性地允许一些路由,则 Cisco 建议直接在 redistribute 命令中使用 ACL(或等效前缀列表)。如果使用路由映射根据路由的前缀或掩码选择性地允许一些路由,则通常需要使用更多配置命令来实现相同目标。路由映射始终应用于入站流量,对出站流量没有任何效果。

路由映射基础

这是一个典型的开放最短路径优先到增强型内部网关路由协议(OSPF 到 EIGRP)的路由映射(在 redistribute 命令中应用):

!
router eigrp 1
 redistribute ospf 1 route-map ospf-to-eigrp
 default-metric 20000 2000 255 1 1500

!--- Output suppressed.

!
route-map ospf-to-eigrp deny 10
 match tag 6
 match route-type external type-2
!
route-map ospf-to-eigrp permit 20
 match ip address prefix-list pfx
 set metric 40000 1000 255 1 1500
!
route-map ospf-to-eigrp permit 30
 set tag 8
!

在此示例中需要注意几点:

  • 路由映射子句进行了编号。在此示例中,子句的序号为 10、20 和 30。通过序号可以执行以下操作:

    • 轻松删除一个特定语句,而不影响路由映射的其他部分。

    • 在两个现有子句之间插入新子句。

    Cisco 建议以 10 为间隔对子句编号,以保留编号空间,以防在将来需要插入子句。

  • 路由映射可以具有 permitdeny 子句。在 route-map ospf-to-eigrp 中,有一个 deny 子句(序号为 10)和两个 permit 子句。deny 子句会拒绝对路由匹配进行重分配。因此,以下规则适用:

    • 如果在路由映射 permit 子句中使用 ACL,则会对 ACL 允许的路由进行重分配。

    • 如果在路由映射 deny 子句中使用 ACL,则不对 ACL 允许的路由进行重分配。

    • 如果在路由映射 permit 或 deny 子句中使用 ACL,并且 ACL 拒绝路由,则找不到路由映射子句匹配,并且会评估下一个路由映射子句。

  • 每个路由映射子句都具有两种类型的命令:

    • match — 选择应将此子句应用于的路由。

    • set — 修改将重分配到目标协议中的信息。

    对于要重分配的每个路由,路由器先对路由映射中子句的 match 命令进行评估。如果匹配条件成功,则按照 permit 或 deny 子句的指示重分配或拒绝路由,并可以通过 set 命令修改其某些属性。如果匹配条件失败,则此子句不适用于路由,Cisco IOS 软件将继续按照路由映射中的下一个子句来评估路由。route-map的扫描继续,直到的条款match命令匹配路由或直到route-map结尾被到达找到。

  • 如果存在以下条件之一,则每个子句中的 matchset 命令可以缺少或重复多次:

    • 如果一个子句中存在多个 match 命令,则所有命令必须对于给定路由都成功,才能使该路由与子句匹配(换句话说,对多个 match 命令应用逻辑“与”算法)。

    • 如果 match 命令在一个命令中引用多个对象,则其中一个对象应匹配(应用逻辑“或”算法)。例如,在 match ip address 101 121 命令中,如果访问列表 101 或访问列表 121 允许某个路由,则允许该路由。

    • 如果 match 命令不存在,则所有路由都与子句匹配。在前一个示例中,到达子句 30 的所有路由都匹配;因此,永远不会到达路由映射的结尾。

    • 如果路由映射 permit 子句中不存在 set 命令,则会重分配路由而不修改其当前属性。

请勿在 deny 路由映射子句中配置 set 命令,因为 deny 子句禁止路由重分配 — 没有要修改的信息。

没有 matchset 命令的路由映射子句会执行操作。空 permit 子句允许对剩余路由进行重分配而不进行修改。空 deny 子句不允许对其他路由进行重分配(这是在完全扫描了路由映射但找不到显式匹配时的默认操作)。

根据本部分中的信息,上一个 OSPF 到 EIGRP 路由映射示例会执行以下操作:

  • 禁止重分配所有设置了标记 6 的类型 2 外部 OSPF 路由。

  • 将与 pfx 前缀列表(有五个度量值 — 40000、1000、255、1 和 1500)匹配的所有路由都重分配到 EIGRP 中。

  • 对所有其他路由进行重分配并将其标记设置为 8(默认值)。

在应用于重分配的路由映射中使用的命令

此部分包括以下主题:

在路由映射中配置不支持的 matchset 命令

路由映射是可在许多配置(包括前面介绍的 redistribute 命令)中使用的通用机制。例如,可以在 PBR 的路由映射中配置 match length 命令,以指定在转发特定长度的数据包时执行特殊操作。但是,不会在应用于重分配的路由映射中使用 match length 命令

可以在路由映射中配置在应用(或打算以后应用)路由映射的上下文中不支持(或无效)的 matchset 命令。此情况的一个示例是在应用于重分配的路由映射中使用的 match length 命令。在重分配中,会通过 redistribute 命令中指定的协议将路由映射应用于安装到路由表中的每个路由。因此,当路由器执行路由映射时,路由器只解释在路由映射应用程序的上下文中有意义的命令。在此示例中,在重分配路由映射中涉及的 match length 命令对重分配没有影响。它保留在路由映射的配置中,可在正在运行的路由器配置中查看。但是,无论此命令是否存在于路由映射中,路由重分配都不受影响。

总之,路由器允许配置各种类型的 matchset 命令,但这些命令应在逻辑上适用于具体情况。否则,配置可能非常混乱或执行不正确的任务。

由于存在以下问题,请勿使用在路由映射上下文中没有效果的命令(即使这些命令看似无害):

  • 没有效果的命令会掩盖要实现的目标。这会使配置非常混乱。

  • 当前不受支持的命令可能会在以后的 Cisco IOS 软件版本中受支持。因此,将来进行软件升级后,您可能会发现路由映射行为出现意外更改。

  • 并非所有命令都是完全无害的;例如,set metric +/- 命令,该命令指定度量的相对更改并用于 BGP 路由广播。它可以采用路由的当前度量并在传播该度量之前按指定值将其增大或减小。

    此命令的 +/- 形式当前在重分配路由映射中不受支持,实际上会解释为忽略符号的 set metric 命令。例如,请考虑下面的路由映射:

    
    !--- This redistribution route-map is very dangerous!
    
    route-map ospf-to-ospf permit 10
     set metric +2
    !

    此配置似乎将所有路由从一个 OSPF 进程重分配到另一个 OSPF 进程,同时将所有路由的度量增加 2。但实际上会将所有路由的度量都设置为相同值 2 — 这可能并不是您在检查路由器配置时所考虑到的。

    以下路由映射甚至可提供更加与直觉相悖的效果:

    
    !--- This redistribution route-map is even more dangerous!
    
    route-map ospf-to-ospf permit 10
     set metric -367
    !

    此配置不是减小重分配路由的度量,而是实际上将度量设置为 367(正值,因为在不带符号的情况下解释 set metric 时不可能出现负度量)。

路由映射重分配的双重协议性质

应用于重分配的路由映射使用两个路由协议:

  • 提供原始路由信息的协议

  • 路由信息重分配到的协议

每个路由协议可以支持自己的一组路由属性。

在重分配路由映射配置中:

  • 路由映射 match 命令验证为重分配提供原始路由的协议所支持的路由属性。

  • 路由映射 set 命令修改路由重分配到的协议所支持的路由属性。

本文档的命令支持表部分列出了这些命令。它们按 matchset 命令分类,以强调重分配路由映射的双重协议性质。

命令支持表

本部分介绍 redistribute 命令中附加的路由映射所支持的命令。有七个可从中重分配路由的路由协议;但是,只有五个可向其进行重分配的路由协议。已连接路由和静态路由不是动态路由协议,只能提供要重分配到其他协议中的信息。

本部分不包括在 IOS 软件版本 12.3 中受支持但在重分配上下文中不适用的 matchset 命令。

Intermediate System-to-Intermediate System (IS-IS) 和 BGP 可将有关无连接网络服务 (CLNS) 的信息与 IP 路由一起传播。为提供全面信息,本部分中的表还涉及与 CLNS 相关的命令,可在这些协议的重分配路由映射中使用这些命令。

可以使用 Routing Information Protocol (RIP)、OSPF、IS-IS 和 BGP 传播 IPv6 路由;这些协议的重分配路由映射可以包含特定于 IPv6 的命令。match ipset ip 命名特定于 IPv4 前缀的重分配。match ipv6set ipv6 命令特定于 IPv6 前缀的重分配。仅当使用路由映射向路由协议或从路由协议重分配 CLNS 路由时,才能使用 match clnsset clns 命令。

表 1 和表 2 使用以下约定:

  • 支持的命令用标记。

  • 不支持的命令用破折号 ( — ) 标记。

  • 已知用于执行操作(可能是不需要的操作)的不支持命令用标记。

表 1 - 用于匹配由协议安装到路由表中的路由的路由映射命令

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
命令 重分配支持
已连接 静态 RIP EIGRP OSPF IS-IS BGP
match clns address
match clns next-hop
match interface
match ip address
match ip address prefix-list
match ip next-hop
match ip next-hop prefix-list
match ip route-source
match ip route-source prefix-list
match ipv6 address [prefix-list]
match ipv6 next-hop [prefix-list]
match ipv6 route-source [prefix-list]
match metric
match policy-list
match route-type external
match route-type internal
match route-type local
match route-type nssa-external
match route-type {level-1|level-2}
match tag

表 2 - 用于在重分配到目标协议的过程中修改路由属性的命令

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
命令 重分配支持
RIP EIGRP OSPF IS-IS BGP
set as-path tag
set community
set ip next-hop
set ip next-hop peer-address
set ipv6 next-hop
set level {backbone|stub-area}
set level {level-1|level-2|level-1-2}
set local-preference
set metric
set metric +/-
set metric eigrp-metric
set metric +/- eigrp-metric
set metric-type internal
set metric-type external
set metric-type {type-1|type-2}
set nlri
set origin
set tag
set weight

摘要

路由映射是用于路由重分配的非常强大但复杂的工具。在协议之间进行重分配时,使用路由映射可以对路由信息进行极其精细的处理。但是,路由映射也可能十分危险,并可能在网络中形成“黑洞”或不理想的数据流。如果要在多个路由协议之间使用复杂的重分配功能,则必须非常谨慎地设计网络。

相关的思科支持社区讨论

思科支持社区是您提问、解答问题、分享建议以及与工作伙伴协作的论坛。


相关信息


Document ID: 49111