Route-policy工具理论与实践
用途
Route-policy包含一个或者多个“节点Node”的列表。
在部署重发布期间可以关联Route-policy,执行一些路由策略,路由信息或修改某一条特定路由的属性。
Route-policy的应用非常广泛,是一个相当重要的基础工具。
初相识
定义了route-policy的名称为RP,route-policy有点像列表的形态,既然是列表就肯定有很多行,在这就是有很多个节点(Node),route-policy可以有一个或多个Node,每一个Node都有一个序号来标识,这个序号是有大小的,大小就决定所有的Node排列顺序,排列从小到大的顺序排列。
顺序非常重要,因为在route-policy计算过程中按这个顺序计算,名字叫RP的route -policy包含了有n个节点,每个节点可以部署二元,条件和动作,条件就是在这个节点定义一条,多条,条件,只有满足节点中所有条件,才会执行该节点下的动作。
如果定义了多个条件,你是不满足的或不全满足,这时就会进入下一个节点进行计算,如果下一个条件还是不满足再往下,直到所有节点都比完。
如果满足一个节点,就直接被动作掉了,不会再往下计算,这就是route-policy,相当于编程中的条件语句。
名字叫RP的route-policy当中,有n个序号,这个序号用十进制呈现,从小到大排序,在每一个node中,可以配置条件或者执行语句,条件语句用if0match,执行语句是apply,这就是二元,在note1节点中配置了两条if-match语句,这意味对于条件x1和x2都必须满足,这时候才会执行y1的动作,就不会再往下匹配,如果x1满足,x2不满足意味着这个节点不匹配,则会再往下计算note。
配置
创建route-policy
[huawei] route-policy name { permit | deny } node node
Permit指定节点的匹配模式为允许。执行计算时如果都满足节点下的所有条件,将执行该节点的apply子句,并且apply语句执行完后,不再进入下一个节点的过滤,也就是匹配动作到此结束;如果条件没有都满足,将进入下一个节点继续过滤匹配中。
Deny指定节点的匹配模式为拒绝,如果节点下的条件都满足,不会执行apply子句,并且匹配动作到此结束。如果条件不满足,将进入下一个节点继续匹配。
默认所有未匹配的路由将被拒绝通过route-policy,如果route-policy中定义了一个以上的节点,则各节点中至少应该有一个节点的匹配模式是permit。
配置if-match子句
[Huawei-route-policy] if-match ?
Acl 匹配ACL
Cost 匹配路由信息的cost
Interface 匹配路由信息的出接口
Ip {
next-hop | route-source | group-address } 匹配IPv4的路由信息(下一跳、源地址或组播地址)
Ip-prefix 匹配前缀列表
Route-type 匹配各类型路由信息
Tag 匹配路由信息的标记域
if-match关键字用于定义条件,可以调用acl来匹配路由做策略,比如有192.168.1.0/24和192.168.2.0/24两条路由。现在要对192.168.1.0/24做策略,先定义ACL匹配1.0路由,再到if-macth调用这个ACL做策略。但是在华为的产品中,ACL只能够用于匹配路由中的网络号,比如一条路由指定了网络号和掩码,这才是一条完整的路由前缀,但是acl使能匹配192.168.1.0,没法识别掩码,因此就有了ip-prefix。
在一个node中可以定义0个,1个,多个if-match条件,当你定义0个时,这个节点就是为permit any,所有的匹配对象都满足,如果是一个那就是一个条件啦,如果定义多个意味着使用了if-match条件语句定义了多行,这些不同条件之间,通常是一个且的关系,你要同时满足才可以执行apply语句。
If-match和ip-prefix不能同时配置,后配置的命令会覆盖先配置的命令。
当有多个if-match子句,之间是一个“与”的关系,即路由信息必须同时满足所有匹配条件,才可以执行apply子句的动作。
但命令if-match route-type和if-match interface除外,这两个命令的各自if-match子句间是“或”的关系。
如果不指定if_match子句,则所有的路由信息都会通过该节点的过滤。
配置apply子句
[Huawei-route-policy] apply ?
Cost 设置路由的cost
Cost—type {
type-1 | type-2 } 设置OSPF的开销类型
Ip-address next-hop 设置IPv4路由信息的下一跳地址
Preference 设置路由协议的优先级
Tag 设置路由信息的标记域
执行语句,当你满足条件后,我就来执行apply所定义的动作。