●
多个路由器间相互重分发路由
如果需要在多个路由器间重分发两种路由协议,会出现一些潜在的问题。比如说,在重分发路由器上,它们同时会学习到某个子网的两种路由协议,如果该路由器使用
AD
来确定哪条是最佳路由,往往会造成某些次优路径。具体可以看看下面的实例:
路由器配置:
1
)
R1
的配置
router ospf 1
router-id 1.1.1.1
redistribute rip subnets
network 10.1.15.1 0.0.0.0 area 0
!
router rip
redistribute ospf 1
network 10.0.0.0
default-metric 1
2
)
R3
的配置:
router ospf 1
router-id 3.3.3.3
redistribute rip subnets
network 10.1.34.3 0.0.0.0 area 0
!
router rip
redistribute ospf 1
network 10.0.0.0
default-metric 1
在上图中,
R3
通过来自
R2
的
RIP
更新会学习到子网
10.1.2.0/24
,与此同时,
R1
会将学习到的
RIP
路由重分发到
OSPF
域中,这样
R3
会通过
OSPF
再学习到一条到
10.1.2.0/24
的路由。如果
R3
选择管理距离最小的路由,那么由于
OSPF
的
AD
(
110
)比
RIP
的
AD
(
120
)小,所以它会选择
OSPF
的重分发路由,显然这不是我们所希望的结果。实际上,这种情况会在
R1
和
R3
的每一
RIP
子网上都可能出现。要解决类似的问题,路由器必须知晓每条路由具体来自什么路由协议域。
一种简单并有效地解决方案是用高
AD
来标记重分发的路由,从而可以让路由器作出正确的选择。就上面的问题而言,在
router ospf
进程下增加一条
distance ospf external 180
命令就可以了。注意,
EIGRP
本身就支持这样的方案,它对外部路由使用的
AD
为
170
,而内部路由使用的值是
90
。虽然这种方案看上去不错,但也可能有问题,比如说,如果
R4
注入了一些有效的
OSPF
外部路由(不是重分发路由),此时按这种方案的配置,因为
OSPF
外部路由的
AD
值大,所以路由器会选择经由
RIP
域的次优路由。这个问题提醒我们,不能对所有外部路由的
AD
值都增大。幸运的是,
distance
路由子命令可以针对来自特定路由器的路由进行
AD
值调整,其格式如下:
distance {
distance-value ip-address
{
wildcard-mask
} [
ip-standard-list
] [
ip-extended-list
]}
该命令可以设置
AD
值,广播该路由的路由器
IP
地址,以及匹配路由的
ACL
。还是看上面的例子,通过使用完整格式的
distance
命令,可以对路由器增加如下配置:
1
)
R1
的配置:
router ospf 1
distance 179 3.3.3.3 0.0.0.0 only-rip-routes
!
ip access-list standard only-rip-routes
permit 10.1.12.0
permit 10.1.3.0
permit 10.1.2.0
permit 10.1.23.0
2
)
R3
的配置:
router ospf 1
distance 179 1.1.1.1 0.0.0.0 only-rip-routes
!
ip access-list standard only-rip-routes
permit 10.1.12.0
permit 10.1.3.0
permit 10.1.2.0
permit 10.1.23.0
另一种解决方案是过滤掉问题路由。例如上面的
R3
可以使用进入的
distribute-list
命令来过滤掉到
10.1.2.0/24
的
OSPF
路由。虽然这也可以工作,但是重分发路由器每当高
AD
路由域的子网变化时就要重新配置,显然这很麻烦。为了提高管理效率,可以添加路由标记。通过对来自高
AD
域并广播到低
AD
域的所有路由进行标记,
distribute-list
可以简单地对标记进行检查即可。
路由器配置:
1
)
R1
的配置:
router ospf 1
redistribute rip subnets route-map tag-rip-9999
network 10.1.15.1 0.0.0.0 area 0
distribute-list route-map check-tag-9999 in
!
route-map check-tag-9999 deny 10
match tag 9999
!
route-map check-tag-9999 permit 20
!
route-map tag-rip-9999 permit 10
set tag 9999
2
)
R3
的配置:
router ospf 1
redistribute rip subnets route-map tag-rip-9999
network 10.1.34.3 0.0.0.0 area 0
distribute-list route-map check-tag-9999 in
!
route-map check-tag-9999 deny 10
match tag 9999
!
route-map check-tag-9999 permit 20
!
route-map tag-rip-9999 permit 10
set tag 9999
●
使用
metric
和
metric
类型来影响重分发路由
在前面的实例中,除了重分发路由器上可能存在次优路由的问题之外,在单个路由域的内部路由器也可能出现另外的问题。这些路由器会学习到来自多个重分发路由器的到同一子网的多条路由,它们必须作出最佳路由的选择。为此,通过设置
metric
,可以影响内部路由器使用特定的重分发路由。
需要引起注意的是,内部路由器在选择最佳路由时可能首先不是考虑的
metric
,例如在
OSPF
中,首先会考虑选择区域内路由。关于
IGP
协议选择路由的优先级如下:
1
)
RIP
:没有这样的考虑;
2
)
EIGRP
:内部路由,然后外部路由;
3
)
OSPF
:区域内路由,区域间路由,外部路由
1
,外部路由
2
;
4
)
IS-IS
:
L1
路由,
L2
路由,外部路由。