关于路由映射
在将路由重新分发到 OSPF、RIP、EIGRP 或 BGP 路由进程时会使用路由映射。在为 OSPF 路由进程生成默认路由时也会使用路由映射。路由映射定义了允许将来自指定路由协议的哪些路由重新分发到目标路由进程。
路由映射与广为人知的 ACL 具有许多相同功能。以下是两者共有的一些特征:
-
它们都是单独语句的有序序列,各自具有允许或拒绝结果。ACL 或路由映射的评估包括采用预先确定顺序的列表扫描,以及每条语句匹配条件的评估。一旦找到第一个语句匹配即中止列表扫描,并且会执行与语句匹配相关联的操作。
-
它们是通用机制。条件匹配和匹配解释由它们的应用方式和使用它们的功能决定。应用于不同功能的相同路由映射可能以不同方式进行解释。
以下是路由映射与 ACL 之间的一些差异:
-
路由映射比 ACL 更加灵活,可以根据 ACL 无法验证的条件对路由进行验证。例如,路由映射可以验证路由的类型是否为内部路由。
-
每个 ACL 按照设计约定以隐式拒绝语句结尾。如果在匹配尝试期间到达路由映射的结尾,则结果取决于路由映射的特定应用。应用于重新分发的路由映射与 ACL 的行为方式相同:如果路由与路由映射中的任何子句不匹配,则会拒绝路由重新分发,就如同路由映射的结尾包含拒绝语句一样。
Permit 和 Deny 子句
路由映射可以具有 permit 和 deny 子句。deny 子句可拒绝来自重新分发的路由匹配。您可以使用 ACL 作为路由映射中的匹配标准。由于 ACL 还有 permit 和 deny 子句,因此数据包与 ACL 匹配时会应用以下规则:
-
ACL permit + route map permit:重新分发路由。
-
ACL permit + route map deny:重新分发路由。
-
ACL deny + route map permit or deny:不匹配 route map 子句,并且对下一个 route-map 子句进行评估。
Match 和 Set 子句值
每个路由映射子句均具有两种类型的值:
-
match 值用于选择应将此子句应用于的路由。
-
set 值用于修改将重新分发到目标协议的信息。
对于要重新分发的每个路由,路由器首先评估路由映射中子句的匹配条件。如果匹配条件成功,则按照 permit 或 deny 子句的指示重新分发或拒绝路由,其某些属性可能会通过 set 命令设置的值修改。如果匹配条件失败,则此子句不适用于路由,软件会根据路由映射中下一个子句继续评估路由。路由映射扫描将继续,直到发现匹配路由的子句或达到路由映射的结尾。
如果存在下列条件中的一个,则每个子句中的 match 值或 set 值可能会缺失或多次重复:
-
如果一个子句中存在多个匹配条目,则对于给定路由而言,所有这些条目必须都符合,该路由才与该子句匹配(也即,为多个 match 命令应用逻辑 AND 算法)。
-
如果一个 match 条目引用了一个条目中的多个对象,那么其中任何一个对象都应匹配(应用逻辑 OR 算法)。
-
如果匹配条目不存在,则所有路由都匹配子句。
-
如果一个 set 条目在 route map permit 子句中不存在,则该路由将被重新分发,而不修改其当前属性。
注 |
请勿在 route map deny 子句中配置 set 条目,因为 deny 子句会禁止路由重新分发 - 没有要修改的信息。 |
没有 match 或 set 条目的 route map 子句需要执行操作。空 permit 子句允许重新分发剩余路由而不进行修改。空 deny 子句不允许重新分发其他路由(如果路由映射在经过完整扫描后,未发现明确的匹配项,此为默认操作)。