前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实战干货-现网环境中,路由重分发的标准解决方案

实战干货-现网环境中,路由重分发的标准解决方案

作者头像
释然
修改2021-11-16 13:33:56
7850
修改2021-11-16 13:33:56
举报
文章被收录于专栏:释然IT杂谈释然IT杂谈

以下文章来源于捷哥教你学网络 ,作者吴忠捷

捷哥教你学网络.:只发技术干货无广告,积极共享知识不收费

路由重分发这一技术在现网环境中是一种很常见的技术,所以其地位也非常重要。很多教程在在讲路由重分发的时候,只讲了重分发的操作却没有说现网环境中的一些“讲究”。所以,很多学员,包括一些技术讲师也不知道的是,路由重分发是一种风险较高的操作,在现网环境的解决方案里,路由重分发也是讲究颇多。这一切又一切的“讲究”和“规矩”,都为了一个目的:把网络设计得更高效,且能进一步降低风险。

路由重分发有两种情况:

1、静态路由重分发到动态路由内;

2、两个路由协议相互重分发。

1静态路由重分发进动态路由

静态路由往动态路由内重分发风险较小,但也有讲究,这个讲究有两点:

1、尽量不要往动态路由的区域内再写静态路由,如果实在要写,就不能重分发进动态了

2、重分发静态路由到动态路由内,必须用Prefix-List+Route-MAP/Route-Policy划定范围

第一个讲究怎么来理解呢?那就先看一下,什么叫做“往动态路由的区域内再写静态路由”

图片
图片

“往动态路由的区域内再写静态路由”会有什么问题呢?咋一看确实是没有什么问题吧。如果是Cisco的设备,静态路由的AD值为1,OSPF的AD值为110,写静态路由无非就是把R1到R2的流量给干预了一下。如果是华为/H3C的设备,静态路由Pref值为60,OSPF内部路由的Pref值为10,静态路由的优先级比OSPF内部路由低,这条路由用默认方式写了也不生效。

且不说华为/H3C你写这条静态路由,用默认的AD值写了不生效,写了也属于多此一举。但要是你用Cisco的设备来写呢?或者你把这条静态路由的优先级调高了呢?

当然,如果R1上没有静态路由重分发到OSPF内也罢了,但如果R1上有静态路由重分发到OSPF的配置呢?

图片
图片

此时,断开R1和R2的OSPF邻居,你就会立刻发现,让R2再访问R4时,就出现了如下的路由环路

图片
图片

你或许可以和我抬杠说:你这是极端环境,R1和R2要OSPF断开才会有这样的环路。但是在一个规模稍大的网络环境里面,你能保证说设备的互联链路100%不断吗?如果一条链路断开就出现环路这样的通信故障,那你设置那些冗余设备和冗余链路就一点意义都没有了。

这个和现网环境有一个原则冲突:即使是冗余链路断开一条,也不能让任何位置的互访出现问题。这里R1和R2的链路断开,就让R1和R4的互访出了问题,这就违背原则了。

图片
图片

第二个讲究:静态路由重分发到动态路由时,必须有Prefix-List+Route-map/Route-Policy做控制,划定范围。

这个怎么理解呢?在不违背第一个讲究的前提下,你要把静态路由重分发到OSPF内,就必须要把静态路由先用Prefix-List包含或标记TAG,在重分发静态路由到OSPF的时候,挂Route-MAP,我们来看一下,Cisco设备的操作命令:

图片
图片
图片
图片

有人就会说了:你明知道这个设备上的所有静态路由都要往动态路由里面重分发,干嘛要用前缀列表或TAG这么多此一举呢?

要让我对这个问题拿话来说的话,我只能这么回答你。

你或许知道开车,或坐副驾驶的时候要系安全带,但是你又嫌系安全带麻烦,想着反正这条路上没叔叔也没监控就懒得系了。然后再这条路上跑了几十遍来回都没事,于是你得到一个结论:不系安全带其实也没事,别被叔叔抓到就可以了。但是不怕一万就怕万一啊!后面的话我不说了,免得你说我咒你!

现网环境也是一样,就算这个设备的静态路由都要重分发进OSPF,但哪天这个网络里面有演练需求或者是测试需求,需要暂时写两条测试用的静态路由呢?这个静态路由只需要这台设备能通即可,你这时候有重分发,又没过滤,是不是就把这条测试用的路由散发进全网了呢?还有,如果这台设备上有往动态路由内部写的静态路由呢?

2动态路由双向重分发时

下面再看 一下动态路由相互重分发的时候,需要注意哪些问题呢?

在当前的网络环境中,尤其是,为了提升业务的实时性,都会考虑到设置冗余设备。一般作为边界的设备也会使用两个:

图片
图片

双点双向重分发其实是一种隐患很大的操作,如果直接在两个ASBR上做双向重分发的操作且不带任何控制的话,次优路由的出现是难免的。怎么说呢?

先来看一下次优路由是怎么产生的,下图是一个RIP和OSPF双向重分发的情景:

图片
图片
图片
图片

在这个场景内,你把OSPF外部路由的AD值调整到180,让OSPF外部路由的AD值大于RIP的120的AD值,这是不是就完全能解决问题了呢?

其实也不尽然,因为你“敞着”让OSPF和RIP之间的路由相互重分发,则完全有条件让一条路由重分发进OSPF后,再次重分发到RIP内。这种情况路由从在ASBR-1上由A重分发进B,再从ASBR-2上由B再重分发到A,在有BGP存在重分发的情景下100%会存在。所以,在双点双向重分发时,还需要防的就是上述情况。

防止的方式也不难,在OSPF和RIP相互重分发的时候,OSPF进RIP后,带TAG 10,再让RIP重分发进OSPF的时候拒绝带TAG 10的路由;反过来,RIP进OSPF后,带TAG 20,再让OSPF重分发进RIP的时候拒绝带TAG 20的路由。

落地到配置命令上,就是这样(上面是思科系列,下面是华为/H3C):

对任何双向重分发的路由都适用

图片
图片

在实际的网络环境中,对于路由双点双向重分发时,也可能兼顾着路由聚合与分流。为了减少次优路径的风险,在实际的双点双向重分发时,只有一个方向是直接重分发的,而另一个方向则是采用Null0的大段静态路由进行重分发。

图片
图片

3根据场景调整重分发方案

具体到现网的场景中,又该如何确定重分发的操作方案呢?

场景一:A、B路由都不是BGP,若A路由协议位于核心位置,B路由位于分支位置(B内有连续的子网),则A重分发进B可以直接重分发,记得把B路由的AD值调大。而A则重分发含有B的Null0静态路由

图片
图片

落地到配置命令上,就使用如下的配置命令(命令展示Cisco的配置命令。设路由协议A是OSPF 100,路由协议B是OSPF 50)

图片
图片

场景二,若路由A为BGP,路由B为IGP,则可以把BGP重分发进IGP。对IGP所在域的路由聚合后写成Null0的静态路由。再使用network命令发布到BGP内。

图片
图片
图片
图片

场景三,若A、B路由都不是BGP,且A、B路由协议域内的地位相当(都是骨干融合),则看A、B路由域谁的路由更容易聚合。若路由A内的路由是连续子网,而B内较为离散。则考虑将A的AD值或Pref数值调大,直接重分发B进A。而B则重分发Null0路由。

图片
图片
图片
图片

如果说A、B内的路由都非常离散,怎么办呢?那也只能用之前说的,A、B都直接重分发,但带上TAG进行过滤,防止由A重分发进B的路由,被再次重分发进A内了。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档