原理概述:
路由策略 route-policy 的应用非常广泛。例如,它可以规定路由器在发布路由时只发布某些满足特定条件的路由,在接收路由时只接收某些满足特定条件的路由,在引入路由时只引入某些满足特定条件的路由。
Route-Policy 由一个或多个节点(node)构成,Node之间是 “或” 的关系。每个Node都有一个编号,路由项按照Node编号由小到大的顺序通过各个Node。每个Node下可以由若干个if-match和apply字句(特殊情况下可以完全没有if-match和apply子句),if-match 之间之间是 “与” 的关系。if-match 自居用来定义匹配规则,即路由项通过当前Node所需要满足的条件,匹配对象是路由项的某些属性,比如路由前缀、Next Hop、Cost、路由优先级等;apply自居用来规定处理动作。
Route-Policy 的每个Node都有相应的permit或 deny模式。如果是permit 模式,则当路由项满足该Node 的所有 If-match子句时,就被允许通过该Node的过滤的过滤并执行该Node的apply子句,不再进入下一个Node;如果路由项没有满足该Node的所有If-match 子句,则会进入下一个Node进行过滤。如果时 deny 模式,则当路由项满足该Node的所有If-match 子句时,就被拒绝通过该Node的过滤,这是apply子句不会被执行,并且不进入下一个Node;否则就进入下一个Node继续进行过滤。
基本配置
- 根据实验编制表和拓扑图为每个路由器配置相应得IP地址,并互相测试直连路由是否能够ping通。
搭建OSPF和RIP和RIP网络
-R1与R2和R4之间运行RIPv2,R3与R2和R4之间运行OSPF。在R2和R4上将
RIP路由引入到OSPF协议中。
在R2、R4 ospf上引入rip路由
[R2]ospf 1
[R2-ospf-1]import rip
[R2-ospf-1]import-route rip 1
[R4]ospf 1
[R4-ospf-1]import rip
[R4-ospf-1]import-route rip 1
配置完成后,查看R3得IP路由表。
dis ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 7 Routes : 14
OSPF routing table status :
Destinations : 7 Routes : 14
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.1.1/32 O_ASE 150 1 D 10.0.34.4 Serial4/0/1
O_ASE 150 1 D 10.0.23.2 Serial4/0/0
10.0.12.0/24 O_ASE 150 1 D 10.0.34.4 Serial4/0/1
O_ASE 150 1 D 10.0.23.2 Serial4/0/0
10.0.14.0/24 O_ASE 150 1 D 10.0.34.4 Serial4/0/1
O_ASE 150 1 D 10.0.23.2 Serial4/0/0
192.168.1.0/24 O_ASE 150 1 D 10.0.34.4 Serial4/0/1
O_ASE 150 1 D 10.0.23.2 Serial4/0/0
192.168.2.0/24 O_ASE 150 1 D 10.0.34.4 Serial4/0/1
O_ASE 150 1 D 10.0.23.2 Serial4/0/0
192.168.3.0/24 O_ASE 150 1 D 10.0.34.4 Serial4/0/1
O_ASE 150 1 D 10.0.23.2 Serial4/0/0
192.168.4.0/24 O_ASE 150 1 D 10.0.34.4 Serial4/0/1
O_ASE 150 1 D 10.0.23.2 Serial4/0/0
OSPF routing table status :
Destinations : 0 Routes : 0
可以看到,RIP进程中得路由已经成功被引进ospf进程中。默认情况下被引入ospf中路由cost值为1,Cost Type 为Type-2,协议协议优先级得值为150.还可以看到,由于在R2和R4上都进行了路由的引入,所以出现路由冗余的现象。
为了实现上述需求,首先需要使用ACL将192.168.1.0/24和192.168.3.0/24这两个网段匹配出来。由于192.168.1.0/24和192.168.3.0/24的第3个字节都是奇数,所以可以通过如下的ACL通配符掩码来直接进行匹配。(可以从产品手册上看到 ‘ACL的常用匹配项’)
[R2]acl 2000
[R2-acl-basic-2000]rule permit source 192.168.1.0 0.0.254.255
[R4]acl 2000
[R4-acl-basic-2000]rule permit source 192.168.1.0 0.0.254.255
创建Route-Policy,在R2上将192.168.1.0/24和192.168.3.0/24引入到OSPF时Cost设置为20,Cost Type设置为Type-1;在R4上将192.168.1.0/24和192.168.3.0/24引入到OSPF时Cost 设置为30,Cost Type设置为Type-1。
[R2]route-policy import_ospf permit node 5
[R2-route-policy]if-match acl 2000
[R2-route-policy]apply cost 20
[R2-route-policy]apply cost-type type-1
---------------------------------------------
[R4]route-policy import_ospf permit node 5
[R4-route-policy]if-match acl 2000
[R4-route-policy]apply cost 30
[R4-route-policy]apply cost-type type-1
在R2、R4上将RIP引入到OSPF时,引用Route-Policy。
[R2]ospf 1
[R2-ospf-1]import rip route-policy import_ospf
---------------------------------------------
[R4]ospf 1
[R4-ospf-1]import rip route-policy import_ospf
配置完成后再次查看R3路由表。
dis ip routing-table pro ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 2 Routes : 2
OSPF routing table status :
Destinations : 2 Routes : 2
Destination/Mask Proto Pre Cost Flags NextHop Interface
192.168.1.0/24 O_ASE 150 68 D 10.0.23.2 Serial4/0/0
192.168.3.0/24 O_ASE 150 68 D 10.0.23.2 Serial4/0/0
OSPF routing table status :
Destinations : 0 Routes : 0
可以看到,R3去往192.168.1.0/24和192.168.3.0/24的下一跳为10.0.23.1,即R2。现在将R3上的Serial 1/0/1接口关闭,观察路径是否能切换到R3-R4-R1上。
[R3]dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 10 Routes : 10
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.34.0/24 Direct 0 0 D 10.0.34.3 Serial4/0/1
..........
192.168.1.0/24 O_ASE 150 78 D 10.0.34.4 Serial4/0/1
192.168.3.0/24 O_ASE 150 78 D 10.0.34.4 Serial4/0/1
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
可以看到,路径已切换到R3-R4-R1。重新开启关闭的接口,恢复路由选择。
[R2]route-policy import-ospf permit node 10
[R2-route-policy]if-match acl 2001
[R2-route-policy]apply cost 30
[R2-route-policy]apply cost-tvpe type-2
------------------------------------------------------------------
[R4]route-policy import-ospf permit node 10
[R4-route-policy]if-match acl 2001
[R4-route-policy]apply cost 20
[R4-route-policy]apply cost-type type-2
配置完成后再次查看R3的路由表。
dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 10 Routes : 10
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.34.0/24 Direct 0 0 D 10.0.34.3 Serial4/0/1
10.0.34.3/32 Direct 0 0 D 127.0.0.1 Serial4/0/1
10.0.34.4/32 Direct 0 0 D 10.0.34.4 Serial4/0/1
10.0.34.255/32 Direct 0 0 D 127.0.0.1 Serial4/0/1
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
192.168.1.0/24 O_ASE 150 78 D 10.0.34.4 Serial4/0/1
192.168.3.0/24 O_ASE 150 78 D 10.0.34.4 Serial4/0/1
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
发现到192.168.1.0/24的流量路径是R3-R4-R1。
发现可以发现10.0.1.1/32 这条路由没有被引进ospf协议中。这是因为Route-Policy 存在一条默认规则:如果某条路由没有通过Route-Policy 的任何Node, 则该路由不会被引入。如果希望将 10.0.1.1/32 引进ospf中。则需要在Route-Policy中添加一个Node号最大的、模式为permit的Node,该Node 下不需要定义任何if-match子句和apply 子句,其含义是任何路由项都可以通过该Node。
[R2]route-policy import_ospf permit node 100
[R4]route-policy import_ospf permit node 100
再次查看R3路由表,可发现10.0.1.1/32存在路由表中。
dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 19 Routes : 24
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.1.1/32 O_ASE 150 1 D 10.0.34.4 Serial4/0/1
O_ASE 150 1 D 10.0.23.2 Serial4/0/0
10.0.12.0/24 O_ASE 150 1 D 10.0.34.4 Serial4/0/1
O_ASE 150 1 D 10.0.23.2 Serial4/0/0
10.0.14.0/24 O_ASE 150 1 D 10.0.34.4 Serial4/0/1
O_ASE 150 1 D 10.0.23.2 Serial4/0/0
10.0.23.0/24 Direct 0 0 D 10.0.23.3 Serial4/0/0
......
可以看到,此时R3已经能够接收到关于 10.0.1.1/32的路由信息.发现R1和R2互联的网段10.0.12.0/24以及R1和R4互联的网段10.0.14.0/24也被引进了OSPF中,现在需要在引入的时候过滤掉这两个网段。
使用IP前缀列表进行过滤
[R2]ip ip-prefix filter_net index 10 permit 10.0.12.0 24
[R2]ip ip-prefix filter_net index 20 permit 10.0.14.0 24
[R2]route-policy import_ospf deny node 15
[R2-route-policy]if-match ip-prefix filter_net
-------------------------------------------------------------------
[R4]ip ip-prefix filter_net index 20 permit 10.0.14.0 24
[R4]ip ip-prefix filter_net index 10 permit 10.0.12.0 24
[R4]route-policy import_ospf deny node 15
[R4-route-policy]if-match ip-prefix filter_net
在R2上查看策略路由策略的配置情况。
[R2-route-policy]dis route-policy
Route-policy : import_ospf
permit : 5 (matched counts: 32)
Match clauses :
if-match acl 2000
Apply clauses :
apply cost 20
apply cost-type type-1
permit : 10 (matched counts: 6)
Match clauses :
if-match acl 2000
Apply clauses :
apply cost 30
apply cost-type type-2
deny : 15 (matched counts: 20)
Match clauses :
if-match ip-prefix filter_net
permit : 100 (matched counts: 24)
最后查看R3路由表。
dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 17 Routes : 20
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.1.1/32 O_ASE 150 1 D 10.0.23.2 Serial4/0/0
O_ASE 150 1 D 10.0.34.4 Serial4/0/1
10.0.23.0/24 Direct 0 0 D 10.0.23.3 Serial4/0/0
10.0.23.2/32 Direct 0 0 D 10.0.23.2 Serial4/0/0
10.0.23.3/32 Direct 0 0 D 127.0.0.1 Serial4/0/0
10.0.23.255/32 Direct 0 0 D 127.0.0.1 Serial4/0/0
10.0.34.0/24 Direct 0 0 D 10.0.34.3 Serial4/0/1
10.0.34.3/32 Direct 0 0 D 127.0.0.1 Serial4/0/1
10.0.34.4/32 Direct 0 0 D 10.0.34.4 Serial4/0/1
10.0.34.255/32 Direct 0 0 D 127.0.0.1 Serial4/0/1
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
192.168.1.0/24 O_ASE 150 68 D 10.0.23.2 Serial4/0/0
192.168.2.0/24 O_ASE 150 1 D 10.0.23.2 Serial4/0/0
O_ASE 150 1 D 10.0.34.4 Serial4/0/1
192.168.3.0/24 O_ASE 150 68 D 10.0.23.2 Serial4/0/0
192.168.4.0/24 O_ASE 150 1 D 10.0.23.2 Serial4/0/0
O_ASE 150 1 D 10.0.34.4 Serial4/0/1
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
可以看到10.0.12.0/24和10.0.14.0/24的路由信息已经小时,而10.0.1.1/32依然存在,表明需求已实现。