文档库 最新最全的文档下载
当前位置:文档库 › 关于双点双向重分布的一些总结 -未必全对

关于双点双向重分布的一些总结 -未必全对

关于双点双向重分布的一些总结
最近搞定了路由重分布,趁着脑子还清醒,就写了一些总结,希望对正在学习的哥们有帮助,如果有不对或者疏漏的地方,欢迎指出!
(这是按照思路一步一步走下来的,所以文本格式有些混乱。。。。)

双点双向重分布的一些问题,假设环境为ospf和rip做双点双向重分布。
这种情况会产生环路和次优路径。
先看环路,
出现环路是造成网络收敛慢的主要原因,
但是在链路经过反复震荡之后
(也许几分钟,也许几十分钟,根据节点多少而定,在4个节点的环境下,使用ospf和rip时,收敛时间约在几分钟左右也,可能更短),
网络最终会完成收敛。

环路如何产生的?
在双点双向重分布的环境中,产生环路主要是因为双协议之间AD值不同,
并且假设ASBR 1在redistribute后,此时ospf域内已经产生了type-5的lsa,
说明rip的路由条目已经进入了ospf,重分布开始生效。
这时ospf会将数据库内的条目通告其他节点,包括A(假设A为ospf域最远端的节点,该节点不是ASBR)和ASBR 2,
并且保持ospf相同域内的lsa数据库相同。
有意思的地方出现了,既然ASBR 1和ASBR 2在相同的ospf域,
那为什么两个点的路由表不同?
观察路由表发现有一端的ASBR选择了rip协议,
另一端的ASBR选择了ospf协议,
其实经过分析之后,这种情况很容易可以解释。
在选择rip协议的ASBR端,说明rip域的路由条目是从这个点进来的,
进来之后,又重分布进了ospf域,
然后,将这些路由条目(分布之前是rip域内路由,分布之后是ospf的O E2路由)通告给了其他ospf节点,
对端在学到O E2路由之后就会和之前学到的rip路由比较,
比较之后rip条目被丢弃,O E2留下了,就产生了这种情况。
在rip的数据库中也可以得到验证,
在选择ospf协议的一端show ip rip database可以看到,
在ASBR 1中(路由表中含有O E2路由的节点)的rip数据库显示rip域内的路由为redistrbute,
说明了rip域内的路由是从另一个ASBR 2学到的,
因为redistrbute表示该条目是由rip域重分布进来的。
而在ASBR 2中(路由表中包含R路由的节点)的rip数据库则显示R路由是从rip域学到的。
现在的情况就是,在ASBR 1的两端同时收到了rip域内的路由,一端是由rip学到的,
另一端是由ospf重分布进来的
而ASBR 1会选择O E2路由,而不选择rip路由,
是和AD有关,ospf(110)的AD值优于rip(120),
所以在ASBR 1将这些不同协议的相同路由条目比较之后,
选择了ospf,而rip则没有进入路由表。

来看rip域这边,
如果简单认为rip域内的路由进入ospf域内,再由ospf域重分布进rip域而产生环路是不够的。
环路的产生是因为rip域内

的路由在经过ospf重分布之后,
再次进入rip域就会引起环路,
换句话说,环路是在rip这边产生的。
假设在ASBR 1中O E2路由又在重分布时进入了rip域,
这时的B是什么反应?
B会想,我又收到了一条相同的路由条目,比较数据库吧
比较之后发现,这条路由就是我的直连路由,
这样,那条由rip进入ospf,又从ospf重新分布进入rip的路由,
被B丢掉了,因为这条路由的metric比直连端口的metric要大(当然了,怎么会有比直连更小的metric?)。
在ASBR 2这端,因为有水平分割,所以ASBR 2是不会把B的直连路由再通告回去的。
这里可以看到,出现问题的链路在ASBR 1和B之间,
在收敛之前,ASBR 1也运行了rip,
从rip角度来讲,它不会将B的直连路由再发回给B,
但是B的直连路由通过rip进入了ospf,
而ASBR 1运行的ospf又会将B的直连路由再次通告给B,
ok,环路就在这里。
(- - 虽然是在rip链路中产生了环路,但是我还是不认为环路是由rip引起的)
再来看ospf域内的路由条目进入rip后会如何,
我认为这里是没有问题的,
当B收到(不论是从ASBR 1还是ASBR 2收到)ospf域内的路由条目时,
会加入rip数据库,
因为路径不同,所以从ASBR 1和ASBR 2收到的ospf路由都会加入路由表,
然后形成等价的负载均衡。

我想到了樊老师回答的一个问题,
在ASBR 1和ASBR 2中,究竟哪一边会出现这种状况?
"取决于时间",
如果先在ASBR 2做好了redistribute,
那ASBR 1和B之间就会产生环路,反之亦然。

环路是如何自己消失的?
卷一上说,环路消失是因为失效计时器到时,
并且环路的消失和水平分割有很大关系,
卷一同时简单例举了帧中继接口,
因为帧中继接口的ip水平分割功能在默认情况下是关闭的,所以会产生永久环路。
但是具体是怎样的情况,我也没有一步一步分析过。

环路现象很怪异,
很多次重启模拟器,很多次的情况都不相同,
有时启动后,马上可以收敛,
而有时会等几分钟。
我是以A点ping B点来判断是否收敛的。
我觉得应该和rip的计时器有关吧。
盼望高人指点!


再来看次优路径问题,
双点双向重分布中,环路貌似不是最致命的问题,
因为环路会随着达到失效时间而消失,
但是次优路径却不会,它会一直存在。
所以在解决双点双向重分布的问题时,首要是解决次优路径的问题,
在次优路径问题解决之后,环路也就不存在了。
次优路径的现象,
redistribute完成,网络收敛之后,
在到达rip域的路径会产生问题。
我觉得在理想状况下,ospf域和rip域的两端,
都会形成等价的负载均衡(在链路条件相等的情况下),
而此时是一种什么情况?

A ping B时,会仅仅选择一条路径,
就是最先完成重分布时的ASBR,同B连接的那条路径。
但是这还不算是次优路径,
次优路径总是在ASBR 1和ASBR 2之间产生,
假设ASBR 1通告了rip域内的路由,
那ASBR 2到达B点的路径一定是次优路径,反之情况相同。
就是说,ASBR 2不会通过直连的链路到达B点,
而是通过A点,再通过ASBR 1到达B,
这很要命!
我想到了在视频中,樊老师提到了一句,
"这样数据就不知道跑到哪里去了,有可能就跑到别的公司了",
这句我一直理解不了。。。。

在收敛之后,有时还会出现一个有趣的现象,这种现象是偶然发生的。
那就是次优路径并不一定会全部在一个ASBR产生,有可能是分散在两个ASBR,
这属于是几率较小的情况,也许在路由条目较多时,几率会高一些吧。
这就是次优路径,在B点ping ASBR 2时,也是走这样的路径。

在rip中重新分配ospf时,切记要定义metric,否则rip域学不到ospf域内的路由。

经过N次实验。。。。总结了一下解决次优路径的方法。
方法一:
修改AD值,我认为这是最简单,最有效的方法,
仅仅在两个ASBR节点上,将rip的AD值修改,高于ospf的AD值,
问题马上解决,并且在A点和B点都形成了等价负载均衡。
并且只需要两条命令就可以搞定。
至于在负载均衡中的选路就简单多了,可以在ospf修改cost,
在rip域可以通过偏移列表修改metric,都能实现。


方法二:
使用分布列表,在使用分布列表时应当仔细观察路由表,
因为我们只要打破这个循环,把重新分配进rip域的ospf路由条目中的rip路由deny掉(有点绕。。。),
再把rip域内分配进来的ospf域内的ospf条目deny掉,
就ok。

这里举一个例子:
在两个ASBR上进行分布列表的配置,
首先建立acl,内容是deny掉rip域内的路由,
然后在两个ASBR的ospf域内,对in方向设置分布列表,
接口为连接A点的接口。
这样配置的意思就是把重分配进ospf域内的rip条目都deny掉,
但是这样deny是在ospf域内进行,等于是ASBR不接收rip域内的路由了。
这样做完之后的结果和修改AD值是相同的。

这是方法之一,分布列表有很多控制参数,
我相信还有其他方式,也可以实现相同效果。

方法三:
使用route-map,如果在分布列表的基础上去思考使用route-map的话,会少走一些弯路。
因为在使用分布列表和route-map时的方式是相同的,
但是我觉得用route-map去消除次优路径的话,有些小题大做。。。
route-map功能太强,仅仅用它来deny路由条目有些浪费了,
因为用route-map可以满足对路由条目控制时更多的要求。
比如在消除次优路径的同时,还要求将ospf中的O E2路由修改为O E

1路由,
那使用route-map就可以一步搞定了。
我个人觉得route-map不太好掌握,因为在route-map中套用acl,
这相当于使用了双重的逻辑判断,搞不好就适得其反了

相关文档
相关文档 最新文档