几种重分发方式可能带来的问题和处理

This is an article that was created 1026 days ago, and the information may have evolved or changed.

最近翻看 《CCNP ROUTE(642-902)学习指南 》,没错就是 2015 年之前 CCNP 改版前的那本,现在最新的认证考试已不是这个编号和课程了。诶,不聊这些,这不重要。

现在把时间线拉回当年那个技术发展的时候,你要是说技术过时了,不好意思今年我还在某现网中看到设备运行 RIPv2 和 OSPF 两种协议的重分发。这也不重要。

本文权当自己学习和回忆。

Part 1

单点单向重分发

下图所示 ,在 R1 上进行单向重分发(RIP 重分发进入 OSPF),R2 不进行重分发操作。

观察 R2 上的路由表发现去往 RIP 外部网络 10.0.0.0 的路由下一跳地址是 R1 的 12.1.1.1 ,产生了次优路由。正确路径的下一跳应是 R3 的 23.1.1.3 。

产生这条次优路由的原因是 R1 进行的重分发,产生 5 类 LSA 传递到 R2 上,最终 Cisco 路由器根据对比管理距离大小选择加载了 OSPF (110) 的路由。

既然知道了加载这条路由的原因,解决方法有:1、阻断重分发而来的 LSA ,使 R2 自始至终只有 RIP 的路由,这么做虽然能临时使 R2 选择最优路径,但是当 R2 和 R3 之间的链路出现问题,通过 R2 去往 10.0.0.0 外部网络将不可达,不是一个好方法;2、修改 OSPF 外部路由的管理距离,使之大于 RIP (120),这样处理就可以使 R2 选择加载 RIP 学习到的路由,这是可行的。

1
2
3
4
5
6
7
8
9
10
11
12
! -- 方式 1 ,定义 ACL 匹配外部网络,在 OSPF 进程下针对该 ACL 修改管理距离
!
access-list 10 permit 10.0.0.0 0.255.255.255
!
router ospf 100
distance 121 0.0.0.0 255.255.255.255 10
!
! -- 方式 2 ,直接在 OSPF 进程下针对外部网络修改管理距离
!
router ospf 100
distance ospf external 121
!

无论使用哪种方式,都会得到下图所示路由表。

Part 2

多点单向重分发

下图所示 ,在 R1 和 R2 上进行单向重分发(RIP 重分发进入 OSPF)。

观察 R2 上的路由表发现去往 RIP 外部网络 10.0.0.0 的路由下一跳地址是 R1 的 12.1.1.1 ,产生了次优路由。正确路径的下一跳应是 R3 的 23.1.1.3 。R1 上执行 clear ip ospf redistribution 命令,再观察 R1 路由表发现去往 RIP 外部网络 10.0.0.0 的路由下一跳地址是 R1 的 12.1.1.2 ,产生了次优路由。正确路径的下一跳应是 R3 的 13.1.1.3 。

产生次优路由的原因和 Part 1 中是类似的,解决方法类似。

Part 3

多点多向重分发

下图所示 ,在 R1 和 R2 上进行双向重分发。

观察 R1 和 R2 去往 EIGRP 外部网络 192.168.1.0 和 192.168.2.0 的路由表项,发现 R1 上去往外部网络路径下一跳是 R2 ,R2 上去往外部网络路径下一跳是 R1 ,出现了次优路由路由环路

产生上述问题的原因是,在 R1 上把 EIGRP 重分发进 OSPF ,R2 上又把重分发进 OSPF 的路由重分发回 EIGRP ,R1 上收到 R2 和 R3 发过来关于 192.168.1.0/192.168.2.0 的外部路由更新,对比度量值后,选取度量值小的加载到路由表。R1 上查看输出:

解决方法:阻断重分发进对方路由域的路由更新再次重分发回原路由域 。定义名称为 in2ospf 的 route-map ,序号 10 的语句对匹配 TAG 为 100 的路由条目拒绝重分发;序号 20 的语句对 TAG 不是 100 的路由条目设置 TAG 为 200 。定义名称为 in2eigrp 的 route-map ,序号 10 的语句对匹配 TAG 为 200 的路由条目拒绝重分发;序号 20 的语句对 TAG 不是 200 的路由条目设置 TAG 为 100 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
! -- R2 上定义 route-map ,R1 上也做这样的操作
!
route-map in2ospf deny 10
match tag 100
!
route-map in2ospf permit 20
set tag 200
!
route-map in2eigrp deny 10
match tag 200
!
route-map in2eigrp permit 20
set tag 100
!
! -- 重分发时调用 route-map ,R1 上也做这样的操作
!
router eigrp 100
redistribute ospf 100 metric 10000 100 255 1 1500 route-map in2eigrp
!
router ospf 100
redistribute eigrp 100 metric 100 subnets route-map in2ospf
!

还可以使用更精简的方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
! -- R2 上定义 route-map ,R1 上也做这样
!
route-map R-TAGS deny 10
match tag 100
!
route-map R-TAGS permit 20
set tag 100
!
! -- 重分发时调用 route-map ,R1 上也做这样的操作
!
router eigrp 100
redistribute ospf 100 metric 10000 100 255 1 1500 route-map R-TAGS
!
router ospf 100
redistribute eigrp 100 metric 100 subnets route-map R-TAGS
!

做完以上步骤后,查看 R1 和 R2 的路由表,发现环路路由问题解决了,但是还存在次优路由。

修改 OSPF 外部路由的管理距离,使之大于 EIGRP 外部路由 (170),这样处理就可以使路由器选择加载 EIGRP 学习到的外部路由。

1
2
3
4
5
6
7
8
9
10
11
12
13
! -- 方式 1 ,定义 ACL 匹配外部网络,在 OSPF 进程下针对该 ACL 修改管理距离
!
access-list 10 permit 192.168.1.0 0.0.0.255
access-list 10 permit 192.168.2.0 0.0.0.255
!
router ospf 100
distance 171 0.0.0.0 255.255.255.255 10
!
! -- 方式 2 ,直接在 OSPF 进程下针对外部网络修改管理距离
!
router ospf 100
distance ospf external 171
!

最终解决问题

Ending

  • 做路由重分发的时候要考虑到操作后是否产生环路路由、次优路由和网络不可达的情况。
  • 对于产生环路路由、次优路由和网络不可达的情况,要是合理使用 route-map、修改管理距离等手段修正。
  • 当然合理的规划网络也很重要。必要的进行路由汇总,设置 passive-interface ……,使设备路由表尽可能的精简而又能高效的完成转发工作,这是很好的思路。
  • 文中可能有些配置未提及或内容术语表述的不规范,请见谅。
  • 欢迎“来电”来函探讨。
来自非网管交换机的教训 把组装机主板塞到品牌机机箱
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×