如下拓扑中,存在两个路由域,左边为isis区域,所有设备均为level-1-2角色。右边为ospf区域,所有使能ospf的接口均在area0区域中:
组网中需要在R1和R3上,分别将各自的isis路由引入到ospf进程中,同时将ospf路由引入到isis进程中。在该种路由引入,不做任何路由策略控制的情况下,会存在一些多路径的问题。下面我们来详细分析。
配置步骤
接口配置等略。这里只罗列R1和R3设备上简单的路由发布,和路由引入的部分配置。R2和R4分别做简单的ISIS路由发布,以及OSPF路由发布即可,这里不做赘述。
路由器R1配置如下:
#
isis 1
network-entity 10.0000.0000.0001.00
#
address-family ipv4 unicast
import-route ospf all-processes level-1-2 //在isis中引入ospf路由的时候,需要指定将路由引入的isis级别。
#
ospf 1
import-route isis 1
area 0.0.0.0
network 20.1.1.0 0.0.0.255
#
路由器R3配置如下:
#
isis 1
network-entity 10.0000.0000.0003.00
#
address-family ipv4 unicast
import-route ospf all-processes level-1-2 //在isis中引入ospf路由的时候,需要指定将路由引入的isis级别。
#
ospf 1
import-route isis 1
area 0.0.0.0
network 20.1.2.0 0.0.0.255
#
如果不做路由策略控制会发生什么情况呢?
举例,设备R1上配置了一条测试用的静态路由:
在R1上不做路由策略的时候,直接引入到ospf中去:
该路由条目在经由R4进行ospf扩散到R3后,由R3引入发布到isis中去。最后经由R2进行ISIS扩散,将路由进行扩散更新到了R1的路由表中,由于ISIS的默认优先级为15,高于静态路由,所以在R1上查看路由表时,会发现下一跳会变成错误的连接isis区域的接口设备。
针对这种情况,可根据现场需求做相应的调整:
1、如果只想对R1做限制,要求R1能正确的走静态路由去往150.150.150.0/24。对isis区域的其他设备不做要求,则可以在R1上,对isis进程做路由策略过滤实现:#
ip prefix-list test index 10 permit 150.150.150.0 24
#
route-policy test deny node 1
if-match ip address prefix-list test
#
route-policy test permit node 2 //路由策略中使用node2,进行permit2,用来匹配其他的路由条目,进行接收。
#
isis 1
network-entity 10.0000.0000.0001.00
#
address-family ipv4 unicast
import-route ospf all-processes level-1-2
filter-policy route-policy test import //在isis进程中,使用过滤策略调用路由策略,进行入方向路由过滤。
#
此时其他isis区域的设备访问150.150.150.0/24,仍需从ospf区域转发。
2、如果需要ISIS区域的设备访问150.150.150.0/24访问时,不经过OSPF区域。则需要将静态路由引入到isis进程中去即可,不需要再配置路由策略过滤(由于路由协议水平分割,R1引入isis的路由条目不会由R2发布回来)。
#
isis 1
network-entity 10.0000.0000.0001.00
#
address-family ipv4 unicast
import-route static level-1-2
import-route ospf all-processes level-1-2
#
但是同时会出现一个问题,即R4从R1和R3分别收到了OSPF的外部路由,由于2类外部路由不计算内部开销,故在R4上形成了等价路由条目:
针对这种情况,则可以有两种方式实现纠正。
(1)配置路由策略
路由器R1配置如下:
#
isis 1
network-entity 10.0000.0000.0001.00
#
address-family ipv4 unicast
import-route static level-1-2 route-policy tag2 //R1上对引入ISIS的静态路由条目,匹配前缀,打tag200
import-route ospf all-processes level-1-2
filter-policy route-policy test import
#
ospf 1
import-route static route-policy tag1 //R1上对引入OSPF的静态路由条目, 匹配前缀,打tag100
import-route isis 1
area 0.0.0.0
network 20.1.1.0 0.0.0.255
#
route-policy tag1 permit node 1
if-match ip address prefix-list tag1
apply tag 100
#
route-policy tag1 permit node 2
#
route-policy tag2 permit node 1
if-match ip address prefix-list tag2
apply tag 200
#
route-policy tag2 permit node 2
#
route-policy test deny node 1
if-match ip address prefix-list test
#
route-policy test permit node 2
#
ip prefix-list tag1 index 10 permit 150.150.150.0 24
ip prefix-list tag2 index 10 permit 150.150.150.0 24
ip prefix-list test index 10 permit 150.150.150.0 24
#
路由器R3配置如下:#
isis 1
network-entity 10.0000.0000.0003.00
#
address-family ipv4 unicast
import-route ospf all-processes level-1-2 route-policy tag1 //对于由ospf引入isis的路由,匹配tag100,进行过滤,禁止发布。
#
ospf 1
import-route isis 1 route-policy tag2 //对于由isis引入ospf的路由,匹配对应前缀进行过滤,禁止发布。
area 0.0.0.0
network 20.1.2.0 0.0.0.255
#
route-policy tag1 deny node 1
if-match tag 100
#
route-policy tag1 permit node 2
#
route-policy tag2 deny node 0 //经测试isis不传递tag参数,故使用前缀做路由过滤。
if-match ip address prefix-list tag2
#
route-policy tag2 deny node 1 //经测试isis不传递tag参数,故该条目不生效
if-match tag 200
#
route-policy tag2 permit node 2
#
ip prefix-list tag2 index 10 permit 150.150.150.0 24
#
经调整后,R4上只有一条来自R1的路由条目了。
(2)方法2:
不使用路由策略做deny,使用调整优先级的方式,在R1上和R3上将指定前缀的路由条目优先级值调高。从而做到路由主备。
#
isis 1
network-entity 10.0000.0000.0001.00
#
address-family ipv4 unicast
preference 【值】 route-policy 【名字】
#
ospf 1
preference ase 【值】 route-policy 【名字】 //需要指定ase,否则针对as内部路由生效
#
可以通过routr-policy中加if-match进行条件匹配来实现调整接收路由条目的优先级的目的:(可以配置多个if-match规则来匹配。条目间为与的关系)
¡ 配置路由信息的出接口匹配条件。
if-match interface { interface-type interface-number }&<1-16>
¡ 配置IGP路由信息标记的匹配条件。
if-match tag tag-value //匹配tag针对传递的isis路由不生效,针对isis传递的路由条目,在路由策略中可以通过匹配前缀值+接口的方式实现匹配