zl程序教程

您现在的位置是:首页 >  工具

当前栏目

路由重发布(redistribution routing protocols)

路由 发布 routing
2023-09-27 14:21:00 时间

目录

1.技术背景

2 实施要点

2.1 路由 feedback

2.2 管理距离问题

2.3 Metric问题

 2.4有类、无类路由选择协议重分布

3 配置实例

3.1 配置命令

3.2配置示例

1 . ospf 与 rip

2.OSPF 与 EIGRP 重发布

3.3 重发布的常见问题

1. 关联出接口的静态路由 在被network时的问题

2.关联出接口的静态路由 在重发布时的问题​

3.重分布只会将路由表的路由执行重分布动作 ​


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学习到了, 且是直连链路,因此能被重发布。