电子说
路由重分发这一技术在现网环境中是一种很常见的技术,所以其地位也非常重要。很多教程在在讲路由重分发的时候,只讲了重分发的操作却没有说现网环境中的一些“讲究”。所以,很多学员,包括一些技术讲师也不知道的是,路由重分发是一种风险较高的操作,在现网环境的解决方案里,路由重分发也是讲究颇多。这一切又一切的“讲究”和“规矩”,都为了一个目的:把网络设计得更高效,且能进一步降低风险。
路由重分发有两种情况:
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内了。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !