1.技术背景
在现实的网络环境中,我们可能会遇到, -一个网络环境中,同时存在两种或两种以上的路由协议的情况,例如:
- 多厂商的路由环境
- 网络合并(同- -协议或是不同协议)
- 从旧的路由协议过渡到新的路由协议
- 路由策略的需要(可靠性、冗余性、分流模型等)
在同-一个网络拓扑结构中,如果存在两种不同的路由协议,由于不同的路由协议的机理各有不同,对路由的理解也不相同,这就在网络中造成了路由信息的隔离,然而由于这很有可能是同- -个自治系统内的网络,全网需要互通,这时候咋办?这就需要使用路由重发布了。
我们看上图R1与R2之间运行RIP来交互路由信息R2通过RIP学习到了R1发布过来的192.168. 1.0/24及2.0/24的路由信息,装载进路由表,标记为R.同时R2与R3又运行OSPF,建立起OSPF邻接关系,R2也从R3.通过OSPF学习到了两条路由: 3.0及4.0/24 ,也装载进了路由表,标记为O.那么这样一来, 对于R2而言,它自己就有了去往全网的路由。但是,在R2内部,我们可以这么形象的理解:它不会将从RIP学习过来的路由.变成OSPF路由告诉给R3 ,也不会将从OSPF学习来的路由.变成RIP路由告诉给R1.对于R2而言,虽然它自己的路由表里有完整的路由信息,但是,就好像冥冥之中, R和O的条日之间有道鸿沟,无法逾越。而R2就也就成了RIP及OSPF域的分界点。那么如何能够让R1学习到来自OSPF的路由,让R3学习到来自RIP的路由呢?关键点在于R2.上,通过在R2.上部署路由重发布。可以实现路由信息在不同路由选择域间的传递。
** 上图中,我们开始在R2.上执行重发布的动作, 我们将OSPF的路由“注入”到了RIP进程之中,如此-来,R2就会将3.0/24及4.0/24这两条OSPF路由“翻译”成RIP,然后传递给R1. R1也就能够学习到3.0和4.0由了.注意重发布的执行地点,是在R2上,也就是在路由选择域的分界点上执行。另外,路由重发布是有方向的,例如刚才我们执行完相关动作后, R3还是没有R1的路由的,需进-步在R2上,将RIP路由重发布进OSPF .才能上R3学习到1 .0/24及2.0/24路由。**
2 实施要点
2.1 路由 feedback
** 路由的Feedback (回馈)是一个在部署路由重发布时需要非常注意的一一个现象。如上图所示,R5将192.168.1.0直告进了RIP , R3及R4都能够学习到这条路由,并且装载进自己的全局路由表。那么如果我们在R3.上部署RIP到OSPF的双向重发布。会发生什么事情呢?我们假设在R3.上先完成的配置,192. 168.1.0这条路由将被R3注入到OSPF中,井被更新给R1,再由R2更新给R4。此刻,R4同时从OSPF及RIP都学习到了这条路由。它会作何优选?当然是优选OSPF的,因为AD小,所以它的路由表里。关于192.168.1.0的路由是OSPF的。这样一来,对于R4而言,它去往192. 168.1.0就存在次优路径,也就是说,绕远路了走R2-R3-R3-R5这条路径。并且由于路由表里没了RIP路由,自然RIP向OSPF重发布就失败了。更糟糕的是,R4上关于192. 168.1.0的OSPF路由更会被重新注入RIP (因为我们部署的是双向重发布),这就是路由Feedback ,路由被灌回来了.**
因此在部署重发布时,这个问题是需要格外注意的,至于问题如何规避,在后面的内容中,我再做介绍。
2.2 管理距离问题
在上面这个例子中, 我们提到的现象, R4会同时从OSPF及RIP都获知到192.168.1.0/24 的路由,最終R4会选择OSPF的路由.这是我们在这个环境中,不愿看到的现象,因为这样-来就造成了次优路径。几种常见的路由协议其AD值列举如下:
管理距离值可以看我之前的文章
值得注意的是我们可以通过在R4.上,特定的协议进程中手工修改该路由协议的管理距离,从而达到影响路由器本身路由选择的目的,例如在R4上,我们将OSPF针对外部路由的默认管理距离110 ,修改为130 ,比RIP的管理距离120更大,这样一来, R4在这个环境中, 针对192.168.1.0就会优选RIP的路由,就可以规避次优路径以及路由feedback的问题了。
2.3 Metric问题
** 要知道,每一种路由选择协议,对于路由Metric度量值的理解是不同的, OSPF是用cost开销来衡量一条路由, RIP是用跳数, EIGRP是用混合的各种元素,那么当我将一些路由,从某- -中路由协议重发布到另一 种路由协议中,这些路由的metric会作何变化呢?方式之一是,你可以在执行重发布的动作的时候,手工进行修改,具体改成什么值,要看具体的环境需求,这个我后面会举例别担心,哥就这么实诚:)方式之二是 ,采用默,认的动作,也就是在路由协议之间重发布时所定义的种子度量。**
** 所谓种子度量,指的就是当,我将一条路由,从外部路由选择协议重发布到本路由选择协议中时,如果没有手工指定路由的metric ,而使用的默认的metric。 看下表(下表是一个公认的默认值,可在路由进程中使用default-metric修改):**
注意,以上是从其他动态路由协议重发布进本路由路由协议时的默认metric。
而如果是重发布本地直连或静态路由, 则情况就有变化了,如下:
EIGRP
RIP 重发布直连如果没有设置metric ,则默认1跳传给邻居(邻居直接使用这个1跳作为metric );重发布静态路由默认metric=1使用default-metric可以修改这个默认值这条命令对重发布直连接口的metric无影响。
OSPF 重发布直连接口默认cost20 ;重发布静态路由默认cost20 ;使用default-metric可以修改重发布静态路由以及其他路由协议的路由进OSPF后的默认cost ,只不过这条命令对重发布直连接口无效。
2.4有类、无类路由选择协议重分布
我觉得也没必要去研究这个,意义不大
3 配置实例
3.1 配置命令
路由重发布是有方向的, 将A路由选择域的路由信息注入到B路由选择域中,我们要在B路由协议的进程中进行配置,例如,要将其他路由协议重发布到RIP ,那么配置如下(重发布到其他路由协议大同小异):
这是在思科模拟器是的
Router(config)#router rip
Router(config-router)#redistribute ?
connected Connected
eigrp Enhanced Interior Gateway Routing Protocol (EIGRP)
metric Metric for redistributed routes
ospf Open Shortest Path First (OSPF)
rip Routing Information Protocol (RIP)
static Static routes
** 不建议大家在思科模拟器上敲,因为很多命令敲不了**
可以去下EVE,GNS3
3.2配置示例
1 . ospf 与 rip
R3 routing table
C 192.168.12.0
C 1.1.1.0
R2 routing table
C 192.168.12.0
C 192.168.23.0
R 1.1.1.0
O 3.0.0.0
R3 routing table
C 192.168.23.0
C 3.3.3.0
R1与R2运行RIP;R2与R3建立OSPF邻居关系。初始化情况下,R2的路由表中有四个条目,如上
图所示,而R1的路由表中,只有2个条目,也就是两个直连链路。那么现在,我们在R2上做重发布动作,
将OSPF路由重发布到RIP ,那么配置如下:
Router#configure t
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#router rip
Router(config-router)#redistribute ospf 1 metric 3
如此-来, R2.上,路由表中的OSPF路由1.1.1.0 ,以及宣告进OSPF进程的192.168.12.0直连网段,
都被宣告进了RIP ,而R1通过RIP就能够学习到这两条路由,如下图示红色粗体部分。
R3 routing table
C 192.168.12.0
C 1.1.1.0
R 192.168.23.0
R 3.3.3.3
R2 routing table
C 192.168.12.0
C 192.168.23.0
R 1.1.1.0
O 3.0.0.0
R3 routing table
C 192.168.23.0
C 3.3.3.0
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#router ospf 1
OSPF process 1 cannot start. There must be at least one "up" IP interface
Router(config-router)#redistribute rip subnets
Router(config-router)#
当然,这个时候1.1.1.0是无法访问3.3.3.0的,因为R3并没有RIP路由选择域中的路由(也就是说回程路由有问题,数据通信永远要考虑来回路径,记住了),所以如果要实现全网互通,那么需在R2上:
R3 routing table
C 192.168.12.0
C 1.1.1.0
R 192.168.23.0
R 3.3.3.3
R2 routing table
C 192.168.12.0
C 192.168.23.0
R 1.1.1.0
O 3.0.0.0
R3 routing table
C 192.168.23.0
C 3.3.3.0
OE 192.168.12.0
OE 1.1.1.0
如此一来,就实现了全网互通。注意,当重发布路由到OSPF时, redistribute rip subnets ,这个subnets
关键字要加上,否则只会重发布主类路由。
2.OSPF 与 EIGRP 重发布
R3 routing table
C 192.168.12.0
C 1.1.1.0
D EX 192.168.23.0
D EX 3.3.3.0
R2 routing table
C 192.168.12.0
C 192.168.23.0
D 1.1.1.0
O 3.3.3.0
R3 routing table
C 192.168.23.0
C 3.3.3.0
初始情况同上,我们先看看将OSPF路由重发布进EIGRP AS 100 ,配置当然还是在R2.上进行,进入R2的EIGRP路由进程:
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#router eigrp 100
Router(config-router)#redistribute ospf 1 metric 100000 100 255 1 1500
注意, EIGRP的metric是混合型的, **metric 100000 100 255 1 1500**这里指定的参数,从左至右依次是带宽、延迟、负载、可靠性、MTU。可根据实际需要灵活的进行设定。上述配置完成后 , R2就会将路由表中OSPF的路由: 包括3.3.3.0 ,以及宣告进OSPF的直连网段192.168.23.0/24注入到EIGR进程。这样R1就能够学习到这两条外部路由。
接下去是EIGRP到OSPF的重发布:
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#router ospf 1
Router(config-router)#redistribute eigrp 100 subnets
R3 routing table
C 192.168.12.0
C 1.1.1.0
D EX 192.168.23.0
D EX 3.3.3.0
R2 routing table
C 192.168.12.0
C 192.168.23.0
D 1.1.1.0
O 3.3.3.0
R3 routing table
C 192.168.23.0
C 3.3.3.0
OE 192.168.12.0
OE 1.1.1.0
3.3 重发布的常见问题
1. 关联出接口的静态路由 在被network时的问题
R1、R2、R3跑RIP , R1上1.1.1.0/24没有直接宣告,在R2上:
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#ip route 1.1.1.0 255.255.255.0 serial 0/0
同时network 1.0.0.0 ,这时1.0.0.0会被宣告出去
使用关联出接口的方式配置的静态路由,路由器会将目的网段视为本地直连,因此RIP在network的时候,会宣告出去。
如果以上换成EIGRP ,则现象与RIP- -样, R1会将1.1.1.0宣告进EIGRP
如果以上换成OSPF ,则无效,即关联出接口的静态路由,在OSPF中network该路由的网络号时,并不会被宣告进OSPF。
2.关联出接口的静态路由 在重发布时的问题
R1、R2、R3跑RIP ,R1上1.1.1.0/24没有直接宣告,在R2上:
Ip route 1.1.1.0 255.255.255.0 serial 0/0
此时在R2上重发布直连接口,则发现1.1.1.0并没有被重发布进RIP
3.重分布只会将路由表的路由执行重分布动作
在R2.上进行双向重发布,正常情况下R1能够学习到3.3.3.0、R3能学到1.1.1.0
如果在R2.上ip route 1.1.1.0 255.255.255.0 null0 ,这个时候路由表中没有了OSPF的1.1.1.0路由了因
此重发布不成功,所以R3无法学习到1.1.1.0/24的路由;
同样,如果ip route 3.3.3.0 255.255.255.0 null0也是一样的道理。
重发布是看路由表的,也就是说,例如我将OSPF重发布到EIGRP ,那么首先路由必须得在我路由表里有,而且必须是OSPF的路由,才能够被注入到EIGRP。另外,这里有个小问题, R1、R2之间的链路,虽然在R2的路由表中没有看到关于它的OSPF路由,但是却成功地被重发布进RIP且被R3学习到了,这是因为这个直连链路(接口)已经被R2的OSPF进程network了,也即通过OSPF学习到了, 且是直连链路,因此能被重发布。
版权归原作者 牧鸯人 所有, 如有侵权,请联系我们删除。