路由策略和策略路由
一、路由策略(Routing Policy):
A、概述:
很多人会把路由策略等同于route-policy,也有人会可能会说filter-policy也属于路由策略的范畴,其实这些理解都有点不太准确。实际上,路由策略不是一个特定的技术,也不是一个特定的特性。
路由策略是通过一系列工具或方法对路由进行各种控制的“策略”。这种策略能够影响到路由产生、发布、选择等,进而影响报文的转发路径。这些工具包括ACL、route-policy、ip-prefix、filter-policy等,这些方法包括对路由进行过滤,设置路由的属性等。
路由策略各工具之间的调用关系:
当讨论到路由策略的时候,我们经常会碰到很多种工具,比如ACL、route-policy、ip-prefix、filter-policy等等,不一一列举了。很多人都会被他们之间的调用关系搞昏了头,总感觉他们之间有说清道不明的关系。这里我们通过一张图来给大家介绍他们之间的关系。

B、作用:

示例如下:

C、路由策略和策略路由的区别:
1、路由策略:
路由策略的操作对象是路由信息。路由策略主要实现了路由过滤和路由属性设置等功能,它通过改变路由属性(包括可达性)来改变网络流量所经过的路径。
2、策略路由:
策略路由的操作对象是数据包,在路由表已经产生的情况下,不按照路由表进行转发,而是根据需要,依照某种策略改变数据包转发路径。
所以这样可以看出,策略路由是在路由表之前起作用,如果报文匹配了策略路由,那么这个报文就不会再去查路由表了,而是直接按照策略路由的“指引”进行转发。所以策略路由是一个不太按照套路出牌的“家伙”,也正因为这样,策略路由的应用会更加灵活一点。
策略路由具有如下优点:
①可以根据用户实际需求制定策略进行路由选择,增强路由选择的灵活性和可控性
②可以使不同的数据流通过不同的链路进行发送,提高链路的利用效率。
③在满足业务服务质量的前提下,选择费用较低的链路传输业务数据,从而降低企业数据服务成本。
3、对比分析:
D、路由策略组成:
1、构成主体:
Route-Policy由若干个节点组成(Node);一个节点又由若干个语句组成(if-match、apply)。虽然Node由If-match和apply组成,但是Node中也可以没有If-match语句和apply语句,即:
if-match语句和apply语句可以单独存在,也可以都不存在,也可以都存在
当没有If-match语句,此时代表匹配所有路由
当没有apply语句,此时代表即不执行任何动作
多个节点之间的关系:
Node与Node之间是“或”的关系。即 Node与Node之间没有关联,互不影响
Node下多个字句之间的关系:
当存在多个Apply语句时:多个Apply语句之间是“与”的关
当存在多个If-match语句时:
相同的If-match语句之间是“或”的关系;即:当If-match 引用了多个ACL,则只要匹配其中1个ACL就可以
不同的If-match语句之间是“与”的关系;即:当If-match引用了ACL,也引用了Tag,则这两个条件都要满足
Route-Policy可以应用在接口和路由协议中
2、构成主体介绍:
以下介绍为华为设备:


3、匹配和判定:
Route-Policy的匹配规则:
匹配时按照Node号,从小到大依次匹配。
如果匹配上Node中的if-match语句,直接对此路由执行Node下的apply语句,不再继续向下匹配
如果匹配不上Node下的if-match语句,则向下匹配另一个Node
如果所有的Node都不匹配,则匹配默认的语句,拒绝所有路由。
Route-Policy的判定规则:

3、Route-Policy与Filter-policy对比:
两者都可以实现路由过滤
但是Filter-policy主要是通过基本ACL、IP-Prefix-List抓取网络号来进行路由过滤,对路由其它属性无法进行匹配,在某些情况下工作量比较大。并且此手段无法更改路由属性
Router-Policy可以匹配路由的各种特征,并可以对路由的属性做更改,更加灵活,高效
二、策略路由(Policy-Based Routing):
A、分类:
策略路由主要分为本地策略路由、接口策略路由、智能PBR,通过对报文进行控制(不更改路由表条目),实实现不同的流量转发路径灵活,可以根据管理员定义的策略执行报文转发(优于路由表)。
策略路由一般分为前策略路由和后策略路由,其中前策略路由又根据策略路由配置的下一跳不生效时对报文的不同处理方式分为强策略路由和弱策略路由。
PBR可以分为:接口PBR、本地PBR、;
接口 PBR应用于特定接口的策略路由,仅对经过该接口的转发流量(transit traffic) 生效。这些流量并非设备自身生成,而是从其他设备发送、通过本设备接口转发的数据包(如主机 A 通过路由器接口 G0/0 发送到主机 B 的流量)。接口 PBR 通过在接口上绑定策略,在数据包进入接口后、查询路由表之前,根据预设条件(如 ACL 匹配、数据包长度、DSCP 值等)强制指定转发路径(如下一跳、出接口)。
本地 PBR针对设备自身生成的本地流量(local traffic) 的策略路由。这些流量由设备本地进程发起(如设备自身的 ping、Telnet、SNMP、路由协议报文等),并非从外部接口接收的转发流量。本地 PBR 通过全局配置策略,在设备生成本地流量后、准备发送时,强制指定其转发路径,不受传统路由表约束。
1、路由分类介绍:
前策略路由报文首先按照策略路由的下一跳进行转发。
**弱策略路由:**当策略路由下一跳不可达时,报文不会直接被丢弃,而是重新查询路由表,根据路由表转发报文,没有路由表匹配,按缺省下一跳转发(apply ip-address default next-hop)。

**强策略路由:**当策略路由下一跳不可达时,报文直接被丢弃。

**后策略路由:**路由表中明细路由>后策略路由>路由表中的默认路由,所以后策略路由优先级是介于明细路由和默认路由之间。
B、接口策略路由Traffic-Policy:
接口策略路由仅对转发的报文起作用,对本地发送的报文不起作用,且只对接口入方向的报文生效。
接口策略路由是通过在流行为中配置重定向实现的。缺省情况下,设备按照路由表的下一跳进行报文转发,如果配置了接口策略路由,则设备按照接口策略路由指定的下一跳进行转发。
在按照接口策略路由指定的下一跳进行报文转发时,如果设备上没有该下一跳IP地址对应的ARP表项,设备会触发ARP学习。如果设备上有,或者学习到了此ARP表项,则按照接口策略路由指定的下一跳IP地址进行报文转发;如果一直学习不到下一跳IP地址对应的ARP表项,则报文按照路由表指定的下一跳进行转发。
以下为华为示例:

C、本地策略Policy-Based-Route:
“本地策略路由”是仅对本机发送的报文(比如本地的Ping报文)有效的策略路由,对转发的报文不起作用。
一条本地策略路由可以配置多个策略点,并且这些策略点具有不同的优先级,本机发送的报文优先匹配优先级高的策略点。本地策略路由支持基于ACL或报文长度的匹配规则。
在本地策略路由中,当本机下发报文时,会根据本地策略路由节点的优先级,依次匹配各节点绑定的匹配规则。如果找到了匹配的本地策略路由节点,则按照以下步骤发送报文;如果没有找到匹配的本地策略路由节点,按照发送IP报文的一般流程,根据目的地址查找路由。

两者结构关系对比:
三、路由引入:
A、基本概念:
1、引入基本概要:
由于不同路由协议之间的路由算法、机制、开销等不同,不同的路由协议之间无法直接分享彼此的路由;此时就需要通过路由引入技术将某个路由协议的路由引入到另一个路由协议中也可以相同路由协议之间引入

**路由引入的原则:**在执行引入的路由器上将某一个协议的活动路由(即引入的路由必须存在于路由表中)引入到另外一个路由协议中
注意事项:
执行引入的路由器必须同时运行此两种/多种路由协议,才可以执行引入
负责引入的路由器不会改变自身的路由表,引入是外向的,只改变别人,不改变自己
在进行路由引入时,可能会带来次优路径、路由环路等问题(常见的解决方法有修改路由优先级、路由Cost,路由Tag等技术)
**引入举例:**假设在设备1上将路由协议A引入到路由协议B,哪些路由会被引入B
设备1从A协议学习到的路由会被引入B协议
设备1上启用了A协议的接口所在的网络路由会被引入B协议
路由引入的初始度量值:
华为/H3C(VRP)单栈视角:
Metric 口诀:“引到 RIP/IS-IS 变 0,引到 OSPF 变 1,引到 BGP 清 0(MED=0)。”
优先级口诀:“重分发不改优先级,本地表项直接继承目标协议缺省值。”
类型口诀:“OSPF 缺省 Type-2,IS-IS 缺省 L2-ext,BGP 缺省 origin incomplete。”
现场配表时,只需记 0/1/0 三个数字即可覆盖所有缺省 metric。
2、案例解析:
案例1:

案例2:

B、路由引入的方式:




C、存在的问题:
1、单点双向路由引入:
单点单向:在一台设备上,将某个协议路由引入到另一个协议路由中
单点单向可能造成的问题——次优路径。在单点单向引入场景中,如果将低路由优先级引入到高路由优先级中,可能会存在次优路径;将高路由优先级引入到低路由优先级中,则不会存在次优路径

解决方式可以通过调整路由的优先级或过滤路由来实现:
1、在AR6上将AR5引入的路由的优先级调低(低于RIP的路由优先级,即将优先级数值调到高于100)
2、在AR6上将从RIP学来的路由优先级调高(高于ISIS的路由优先级,即将优先级数值调到小于15)
3、由于AR6已经有RIP和ISIS的地址了,所以可以对从AR5引来的路由做过滤
2、双点单向引入:
双点单向:在两台设备上,将某个协议路由引入到另一个协议路由中
双点单向可能造成的问题——会造成次优、路由回馈、环路场景
在双点单向引入场景中,如果将低路由优先级引入到高路由优先级中,可能会存在次优路径;将高路由优先级引入到低路由优先级中,则不会存在次优路径
在双点单向引入场景中,会有路由回馈的场景(R1和AR2设备同时运行了A协议和B协议,此时在AR1上将A引入B,在AR2上将B引入A,将从A协议学到的路由又引入到A协议中,就称为路由回馈),如果发生了路由回馈现象可能会引起环路。如以下案例所示:



如何解决次优与环路问题——通过优先级、过滤或Tag解决
1、在AR6上将AR5引入的路由优先级调低,此时AR6去往8.8.8.8就走OSPF,然后在AR6上引入ISIS时就不会引入8.8.8.8的路由了,避免了路由环路与次优
2、在AR6上对AR5引入的路由进行过滤,此时AR6去往8.8.8.8就走OSPF,然后在AR6上引入ISIS时就不会引入8.8.8.8的路由了,避免了路由环路与次优
3、只使用优先级、过滤可以解决次优与环路问题,不过无法解决路由回馈问题,可以使用tag技术来避免路由回馈,在AR5上将OSPF引入ISIS时打上Tag 10,然后在AR6上将ISIS引入OSPF时拒绝引入Tag 10;在AR6上将ISIS引入OSPF时打上Tag 20,然后在AR5上将OSPF引入ISIS时拒绝Tag 20;此时就不存在路由回馈
注意:此场景下Tag只可以解决路由回馈问题,无法解决次优路径问题
3、单点双向引入:
单点双向:在一台设备上,将A协议路由引入到B协议路由中,然后再将B协议路由引入到A协议路由中
单点双向可能引起路由次优,不会引起路由回馈。单点多向引入场景中,如果将低路由优先级引入到高路由优先级中,可能会存在次优路径。因为在单点引入,此设备上的路由表不会发生变化,所以在进行引入是不会进行回馈。

可以通过通过优先级、过滤解决次优路径
1、在AR6上将AR5引入的路由优先级调低
2、在AR6上对AR5引入的路由进行过滤
4、双点双向引入:
双点双向:在一台设备上,将A协议路由引入到B协议路由中,然后再将B协议路由引入到A协议路由中;在另一台设备上,将A协议路由引入到B协议路由中,然后再将B协议路由引入到A协议路由中
双点双向可能引起路由次优、路由环路,一定会存在路由回馈。根据做引入的顺序,解决方式的应用地点可能发生改变



如何解决次优与环路、无备用路径的问题——通过优先级、过滤或Tag解决
1、在AR6上将AR5引入的路由优先级调低,此时AR6去往8.8.8.8就走OSPF;在AR5上将AR6引入的路由优先级调低,此时AR6将OSPF引入ISIS时AR6也不会产生次优
2、在AR6上对AR5引入的路由进行过滤,此时AR6去往8.8.8.8就走OSPF;在AR5上对AR6引入的路由进行过滤
3、只使用优先级、过滤可以解决次优与环路问题,不过无法解决路由回馈问题,可以使用tag技术来避免路由回馈,在AR5上将OSPF引入ISIS时打上Tag 10,然后在AR6上将ISIS引入OSPF时拒绝引入Tag 10;在AR6上将ISIS引入OSPF时打上Tag 20,然后在AR5上将OSPF引入ISIS时拒绝Tag 20;在AR6上将OSPF引入ISIS时打上Tag 30,然后在AR5上将ISIS引入OSPF时拒绝引入Tag 30;在AR5上将ISIS引入OSPF时打上Tag 40,然后在AR5上将OSPF引入ISIS时拒绝Tag 40;