路由策略(Routing Policy)是一套用于对路由信息进行过滤、属性设置等操作的方法,通过对路由的控制,可以影响数据流量转发操作。
路由-策略(Route-Policy)是路由策略技术专题中一个重要工具,它既可以被用来执行路由过滤,又可以用于修改路由的属性。
路由-策略(Route-Policy)是一个非常重要的路由工具,可以把它想象成拥有一个或多个节点的列表,每一个节点都可以是一系列语句及执行语句的集合,这些节点按照编号从小到大的顺序排列。在每个节点中,用户可以定义条件语句及执行语句。在Route-Policy被执行的时候,设备从编号最小的节点开始进行路由匹配,如果被匹配的对象满足所有的条件,则执行该节点的执行语句,并且不会再继续向下一个节点进行匹配。如果当前节点不满足匹配条件,则前往下一个节点进行匹配,以此类推。
例子: route-policy {策略名称} permit node {节点序号}
if-match x1(条件语句)
if-match x2
apply(执行语句)
route-policy {策略名称} deny node {节点序号}
if-match x1(条件语句)
apply(执行语句)
permit:指定节点的匹配模式为允许。如果路由匹配的结果是满足该节点的所有if-match语句,则该路由被视为允许通过,该节点的apply语句将被执行,且不再进入下一个节点进行匹配;如果该节点中有if-match语句不满足,则进入下一个节点继续匹配。
deny:指定节点的匹配模式为拒绝。如果节点的匹配模式为拒绝,则该节点的apply语句将不被执行。如果路由匹配的结果满足该节点所有if-match语句,那么Route-Policy的匹配过程立即结束,不会再进入下一个节点,而且满足该节点条件的路由被视为拒绝通过。如果该节点有if-match语句不满足,则进入下一个节点继续匹配。
如果某条路由没有被Route-Policy的任何节点匹配,则该路由被视为拒绝通过该Route-Policy,也就是说,Route-Policy的末尾隐含一个类似拒绝所有的节点。
if-match:可定义匹配条件,所匹配的对象可以是“网络地址或掩码长度”“度量值”“标记”“下一跳IP”“ACL”等。
一个节点中可以包含多条if-match语句,这些if-match语句之间是“与”的关系,但是有一些特殊的例如“if-match route-type”和“if-match interface”等除外,它们之间是“或”的关系。
一个节点中可以不包含任何if-match语句,这种情况则被视为匹配所有,也就是任何的被匹配对象都满足该节点的条件。
apply:可指定执行动作,这些动作主要是对所匹配的路由的某些属性进行修改,如“度量值”“优先级值”“标记”等。
一个节点中可以不包含任何apply语句,此时该节点只被用于执行路由过滤,而不用于设置路由属性。
Filter-Poliicy(过滤-策略):是一款用于路由过滤的工具,可以将其视为一种路由过滤器。
Filter-Policy只能够对路由信息进行过滤,而无法对LSA进行过滤。
例如:filer-policy {ACL} export {接口} filer-policy {ACL} import
export:对该路由器发出的流量进行过滤
import:对该路由器接收的流量进行过滤
一个接口只能配置一个Filter-Policy,如果不指定接口,则被视为全局策略,也就是说,该过滤器对所有接口生效。
IP前缀列表:
IP前缀列表是一个列表形态的工具。它所匹配的对象是IP前缀地址,也就是路由条目。一个路由条目由目的网络地址及掩码长度共同标识。
IP前缀列表可以包含一条或多条语句,每条语句都是用一个十进制的序号进行标识。
例如:ip ip-prifix {列表名称} index {序号} permit {IP地址}{掩码长度} greater-equal 24 less-equal 32
IP前缀列表可以作为路由过滤器被应用与各种场景,比如Route-Policy调用,Filter-Policy调用,BGP路由协议中被直接用于路由过滤。
1.ip ip-prefix aa index 10 permit 172.16.0.0 24
上述语句要求路由的目的网络地址的前24个比特位需与172.16.0.0的前24个比特位相同,并且路由的网络掩码长度必须为24。
2.ip ip-prefix bb index 10 permit 172.16.0.0 less-equal 24
上述语句要求路由的目的网络地址的前16比特位需与172.16.0.0的前16比特位相同,并且路由的网络掩码长度必须大于或等于16,且小于或等于24.
3.ip ip-prefix cc index 10 permit 172.16.0.0 16 greater-equal 24
上述语句要求路由的目的网络地址的前16比特位需与172.16.0.0的前16比特位相同,并且路由的目的网络掩码长度必须大于或等于24(且小于或等于32,系统会自动在该命令后添加less-equal 32)
4.ip ip-prefix dd index 10 permit 172.16.0.0 16 greater-equal 24 less-equal 30
上述语句要求路由的目的网络地址前16比特位需与172.16.0.0的前16比特位相同,并且路由的目的网络掩码长度必须大于或等于24,且小于或等于30.
5.ip ip-prefix ee index 10 deny 172.16.0.0 30
ip ip-prefix ee index 20 permit 172.16.0.0 24
上述IP前缀列表的名称为ee,它拥有两条语句。序号为10的语句要求路由的目的网络地址的前30比特位需与172.16.0.0的前30个比特位相同,并且路由的目的网络掩码长度必须为30,而且该语句的匹配模式为deny。另外,序号为20的语句要求路由的目的网络地址的前24个比特位需与172.16.0.0的前24个比特位相同,并且路由的目的网络掩码长度必须为24。
6.ip ip-prefix ff index 10 permit 0.0.0.0 0 less-equal 32
上述语句中,IP地址为0.0.0.0,这种形式的IP地址被称为通配地址,也即该地址能匹配任意的目的网络地址。因此该语句不关心被匹配路由的目的网络地址,但是要求路由目的网络掩码长度必须大于或等于0,且小于或等于32。实际上所有路由都满足该条件。
7.ip ip-prefix gg index 10 deny 172.16.0.0 30
ip ip-prefix gg index 20 permit 0.0.0.0 0 less-equal 32
上述语句中,序号为10的语句拒绝了路由的目的网络地址前30个比特位与172.16.0.0的前30个比特位相同且路由的掩码长度为30的地址。而序号20语句则为允许所有路由。
8.ip ip-prefix hh index 10 permit 0.0.0.0 0 greater-equal 32 less-equal 32
上述IP前缀列表将匹配网络掩码长度为32的任意路由,也就是匹配所有的主机路由。
9.ip ip-prefix ii index 10 permit 0.0.0.0 0
这是一个特殊的语句,该语句允许的是默认路由0.0.0.0/0。
PBR(Policy-Based Routing,策略路由)
路由策略:操作的对象是路由信息,是一套用于对路由信息进行过滤、属性设置等操作的方法,通过对路由的操作或控制,来影响数据报文的转发路径。
策略路由:操作的对象是数据报文,直接对数据报文进行操作,通过多种手段匹配感兴趣的报文,然后执行丢弃或强制转发路径等操作。
PBR是通过MQC(Modular QoS Command-Line Interface,模块化QoS命令行)来实现的。
MQC包含三个要素:流分类(Traffic Classifier)、流行为(Traffic Behavior)、流策略(Traffic Policy),基本的思路是,使用流分类来匹配具有共同特征的流量,使用流行为定义所要执行的动作,然后通过流策略将前面定义好的流分类和流行为进行绑定,最后将流策略应用到设备上,从而实现“针对特定的流量执行特定的动作”这一目标。