注:本文为 “路由重发布、路由协议迁移”相关文章合辑。
第一篇:原文所有图防盗链不能直接被 csdn 转存,全部重传。
第二篇:原始出处已无处可寻,多篇转载有文无图,只从 51cto 找到有一张图片的一段,补上一张图,其他缺失的图无从补全。
路由重发布 Route Redistribution
红茶三杯 2014-09-06 10:19:34)
一、技术背景
在实际的组网中,可能会遇到这样一个场景:在一个网络中同时存在两种或者两种以上的路由协议。例如客户的网络原先是纯 Cisco 的设备,使用 EIGRP 协议将网络的路由打通。但是后来网络扩容,增加了一批华为的设备,而华为的设备是不支持 EIGRP 的,因此可能就在扩容的网络中跑一个 OSPF,但是这两部分网络依然是需要路由互通的,这就面临一个问题。因为这毕竟是两个不同的路由协议域,在两个域的边界,路由信息是相互独立和隔离的。那么如何将全网的路由打通呢?这就需要用到路由重发布(Route Redistribution,又被称为路由重分发)。
看上图,R1 与 R2 之间运行 RIP 来交互路由信息,R2 通过 RIP 学习到了 R1 发布过来的 192.168.1.0/24 及 2.0/24 的 RIP 路由,装载进路由表并标记为 R(RIP)。同时 R2 与 R3 又运行 OSPF,建立起 OSPF 邻接关系,R2 也从 R3、通过 OSPF 学习到了两条路由:192.168.3.0 及 192.168.4.0/24,也装载进了路由表,标记为 O(OSPF 区域内部路由)。
那么这样一来,对于 R2 而言,它自己就有了去往全网的路由,但是在 R2 内部,可以这么形象的理解:它不会将从 RIP 学习过来的路由,“变成” OSPF 路由告诉给 R3,也不会将从 OSPF 学习来的路由,变成 RIP 路由告诉给 R1。对于 R2 而言,虽然它自己的路由表里有完整的路由信息,但是,就 R 和 O 的条目之间有道鸿沟,无法逾越。而 R2 就也就成了 RIP 及 OSPF 域的分界点,称之为 ASBR(AS Boundary Routers,AS 边界路由器)。
那么如何能够让 R1 学习到 OSPF 域中的路由,让 R3 学习到 RIP 域中的路由呢?关键点在于 R2 上,通过在 R2 上部署路由重发布,可以实现路由信息在不同路由选择域间的传递。
上图是初始状态。R2 同时运行两个路由协议进程:RIP 及 OSPF。它通过 RIP 进程学习到 RIP 路由,又通过 OSPF 进程学习到 OSPF 域内的路由,但是这两个路由协议进程是完全独立的,其路由信息是相互隔离的。
现在开始在 R2 上执行重发布的动作,将 OSPF 的路由 “注入” 到了 RIP 路由协议进程之中,如此一来 R2 就会将 192.168.3.0/24 及 192.168.4.0/24 这两条 OSPF 路由 “翻译” 成 RIP 路由,然后通过 RIP 通告给 R1。R1 也就能够学习到 192.168.3.0/24 及 192.168.4.0/24 路由了。
注意重发布的执行点
,是在 R2 上,也就是在路由域的分界点(ASBR)
上执行的,另外,路由重发布是有方向的
,例如刚才执行完相关动作后,OSPF 路由被注入到了 RIP,但是 R3 还是没有 RIP 域的路由,需要进一步在 R2 上将 RIP 路由重发布进 OSPF,才能让 R3 学习到 192.168.1.0/24 及 192.168.2.0/24 路由。
路由重发布是一种非常重要的技术,在实际的项目中时常能够见到。由于网络规模比较大,为了使得整体路由的设计层次化,并且适应不同业务逻辑的路由需求,会在整个网络中设计多个路由协议域,而为了实现路由的全网互通,就需要在特定设备上部署路由重发布。另外在执行路由重发布的过程中,又可以搭配工具来部署路由策略,或者执行路由汇总,如此一来路由重发布带来一个对路由极富弹性和想象力的操作手柄。
二、实施要点
2.1 管理距离问题
如上图所示,R5 将 192.168.1.0 宣告进了 RIP,R3 及 R4 都能够学习到这条路由,并且装载进自己的路由表。为了让 OSPF 域能够学习到 RIP 域内的路由,在 R3 及 R4 上都部署 RIP 到 OSPF 的重发布。理想中的情况是,OSPF 域内的路由器能同时从 R3 及 R4 学习到注入进来的路由。但是情况却没有那么如人意。
假设在 R3 上先完成的重发布配置,192.168.1.0 这条路由将被 R3 注入到 OSPF 中,并被更新给 R1,再由 R2 更新给 R4,此刻,R4 同时从 OSPF 及 RIP 都学习到了这条路由,它会作何优选?当然是优选 OSPF 的,因为 AD 小,所以它的路由表里,关于 192.168.1.0 的路由是 OSPF 的下一跳 R2。这样一来,对于 R4 而言,它去往 192.168.1.0 网络,就存在次优路径,也就是说,绕远路了,走的是 R2-R1-R3-R5 这条路径。
并且由于 R4 路由表里没了关于 192.168.1.0 的 RIP 路由,自然 RIP 向 OSPF 的重发布就失败了。因为,只有当路由存在于路由表中时,才能够将该路由注入到其他路由协议中
。
以上就是双点路由重发布的模型中,最容易出现的一个问题:次优路径问题,根本原因还是出在管理距离上。
几种常见的路由协议其 AD 值列举如下:
解决次优路径的方法有不少,例如可以在 R4 上,将 OSPF 外部路由的管理距离从缺省的 110 修改为 130,比 RIP 的管理距离 120 更大,这样一来,关于 192.168.1.0 的路由,R4 一方面是从 R2 学习到,类型为 OSPF 外部路由,另一方面又从 RIP 学习到,而此时在 R4 上 OSPF 外部路由的管理距离被修改为 130 比 RIP 要大,因此 R4 优选来自 RIP 的 192.168.1.0 路由,并将 RIP 路由装载到路由表,次优路径问题即可解决,而且一旦 192.168.1.0 的 RIP 路由出现在路由表后,R4 的 RIP 到 OSPF 重发布就能够成功。
2.2 路由 feedback
路由的 feedback(倒灌)是一个在部署路由重发布时需要非常注意的一个现象。如上图所示,R5 将 192.168.1.0 宣告进了 RIP,R3 及 R4 都能够学习到这条路由,并且装载进自己的路由表。如果在 R3 就 R4 上部署 RIP 到 OSPF 的双向重发布,会发生什么事情呢?
假设在 R3 上先完成的配置,192.168.1.0 这条路由将被 R3 注入到 OSPF 中,并被更新给 R1,再由 R2 更新给 R4,到此 R4 就出现次优路径了,这个上面已经介绍过了,并且由于 R4 路由表里没了关于 192.168.1.0 的 RIP 路由,自然 RIP 向 OSPF 的重发布就失败了,更糟糕的是,由于在 R3 及 R4 上部署的是双向重发布,也就是 RIP 向 OSPF 及 OSPF 向 RIP 都做了重发布,这就导致 R4 上关于 192.168.1.0 的 OSPF 路由被倒灌回 RIP,这就是路由 Feedback,路由被灌回来了:
这是有极大隐患的,非常容易引发路由环路问题。
在上面这个场景中,在 R3 及 R4 两个点上,部署了 RIP 到 OSPF、OSPF 到 RIP 的双向路由重发布,这种组网被称之为:“双点双向路由重发布
”。双点双向重发布的模型在不少组网中被应用,这里头蕴含了许多细节和许多技巧,而且稍微操作不当,就容易引发次优路径或路由环路的问题。
2.3 Metric 问题
要知道,每一种路由协议,对路由 Metric(度量值)的定义是不同的,OSPF 是用 cost(开销)来衡量一条路由的优劣,RIP 是用跳数,EIGRP 是用混合的各种元素,那么当将一些路由,从某一中路由协议重发布到另一种路由协议中,这些路由的 metric 会作何变化呢?
方式一是,你可以在执行重发布的动作的时候,手工指定重发布后的 Metric 值,具体改成什么值,要看实际的环境需求。
方式二是,采用缺省的动作,也就是在路由协议之间重发布时使用的种子度量值。所谓种子度量值,指的是当将一条路由从外部路由选择协议重发布到本路由选择协议中时,所使用的缺省 Metric 值。
看下表(下表是 Cisco IOS 平台上的种子度量值,可在路由协议进程中使用 default-metric 修改,有可能的一个情况是,不同网络设备厂商,种子度量值有所不同
):
注意,以上是从其他动态路由协议重发布进该路由协议时的默认 metric。而如果是重发布本地直连路由或静态路由到该路由协议,情况就不是这样,例如重发布直连或静态到如下路由协议时:
- EIGRP 请见红茶三杯 EIGRP 笔记(访问 ccietea.com)【访问异常】20240717
- RIP 重发布直连如果没有设置 metric,则默认 1 跳传给邻居(邻居直接使用这个 1 跳作为 metric);重发布静态路由默认 metric=1,使用 default-metric 可以修改这个默认值,这条命令对重发布直连接口的 metric 无影响。
- OSPF 重发布直连接口默认 cost=20;重发布静态路由默认 cost=20;使用 default-metric 可以修改重发布静态路由以及其他路由协议的路由进 OSPF 后的默认 cost,这条命令对重发布直连接口无效。
三、 配置实现
3.1 配置命令
路由重发布是有方向的,将路由从 A 路由协议注入到 B 路由协议中,要在 B 路由协议的进程中进行配置
,例如,要将其他路由协议重发布到 RIP,那么配置如下(重发布到其他路由协议大同小异):
Router (config)#router rip
Router (config-router)#redistribute ?
bgp Border Gateway Protocol (BGP)
connected Connected
eigrp Enhanced Interior Gateway Routing Protocol (EIGRP)
isis ISO IS-IS
iso-igrp IGRP for OSI networks
metric Metric for redistributed routes
mobile Mobile routes
odr On Demand stub Routes
ospf Open Shortest Path First (OSPF)
rip Routing Information Protocol (RIP)
route-map Route map reference
static Static routes
3.2 配置示例
3.2.1 OSPF 与 RIP 的重发布
R1 与 R2 运行 RIPv2;R2 与 R3 建立 OSPF 邻接关系。初始化情况下 R2 的路由表中有四个条目,如上图所示,而 R1 的路由表中,只有 2 个条目,也就是两个直连链路。现在在 R2 上做重发布动作,将 OSPF 路由重发布到 RIP,配置如下:
R2 (config)# router rip
R2 (config-router)# redistribute ospf 1 metric 3
上面的命令中 ospf 1 也就是指的进程 1。是 R2 用于和 R3 形成邻接关系的 OSPF 进程号。而 metric 3 则是将 OSPF 路由注入到 RIP 所形成的 RIP 路由的 metric 值。
如此一来,R2 的路由表中 OSPF 路由 3.3.3.0/24,以及激活 OSPF 的直连接口所在网段 192.168.23.0/24,都被注入到 RIP,而 R1 通过 RIP 就能够学习到这两条路由,如下图示红色粗体部分。
当然,这个时候 1.1.1.0 是无法访问 3.3.3.0 的,因为 R3 并没有 RIP 路由选择域中的路由(也就是说回程路由有问题,数据通信永远要考虑来回路径),所以如果要实现全网互通,那么需在 R2 上,将 RIP 路由注入到 OSPF:
R2 (config)#router ospf 1
R2 (config-router)#redistribute rip subnets
如此一来,就实现了全网互通。注意,当重发布路由到 OSPF 时,redistribute rip subnets,subnets 关键字要加上,否则只有主类路由会被注入到 OSPF 中,如果不加关键字 subnets,则本例中的子网路由 1.1.1.0/24 就无法被顺利的注入到 OSPF
。因此在配置其他路由协议到 OSPF 的重发布时,这个关键字一般都是要加上的
。
3.2.2 OSPF 与 EIGRP 的重发布
初始情况同上一个实验,接下去先看看将 OSPF 路由重发布进 EIGRP AS 100,配置当然还是在 R2 上进行,进入 R2 的 EIGRP 路由进程:
R2 (config)# router eigrp 100
R2 (config-router