你好,
ospf协议不存在路由环路,是因为在一个ospf自治系统中的路由器之间并不是直接传递路由信息来维护路由表,它们之间交换的是链路状态信息(lsa),然后各个路由器都维护着统一的一个链路状态数据库!
各路由器根据链路状态数据库的信息,同时以自己为根节点,通过计算链路开销(cost),从而得出自己的路由表。
因为链路状态数据库(lsdb)是一致的,所以不存在路由环路的发生。
附注:
rip协议中有可能导致路由环路的发生,是因为运行rip协议的路由器之间通过直接交换路由表来更新自身的路由表,当网络发生改变时,有可能因为链路问题导致各路由器的路由信息收敛不及时,从而导致路由环路的发生。
针对此问题,rip协议中定义了最大跳数(hop)为15,即路由信息最多能传递到第16个路由器,从而避免路由环路的发生。
以上,供参考。
二、RIP的路由环路有那几种解决方法它本身自带的解决方案就有好几种,计数到无穷大,毒性逆转,水平分割,带有毒性逆转的水平分割,等等。
水平分割,即不接收通告路由器从本地路由器学习到的路由,我从你处学习到的路由竟然是你从我这边学习到的,这样必然形成环路,所以思科路由器是默认开启水平分割的。
关于毒性逆转,接收到一条路由条目,直接将其度量值记为16,并广播周边路由器,其它路由器收到该信息时即知道不可达,就不会再转发这条路由信息了。
计数到无穷大,就是,从你那边过来,跳数加1,我这边过去又加1,如此循环下去,等到跳数加到16时,就不会再传递这条路由了。
带有毒性逆转的水平分割,就是度量值为16后,单方向广播后,就不会再传递这条路由信息了。
我个人理解,这几种方式,应该是平行的,路由形成环路后,路由器自己解决问题,它可能利用其中的一种或几种方法。
反正它把问题解决了,具体当时用的是什么方法,是根据具体情况确定的。
三、思科路由环路解决办法IP解决环路机制
在最初开发RIP的时候就发现环路的问题,所以已经在RIPv1和 RIPv2中集成了几种防止环路的方式:
l 最大跳数:当一个路由条目作为副本发送出去的时候就会自加1跳,那么最大加到16跳,到16跳就已经被视为最大条数不可达了。
l 水平分割:路由器不会把从某个接口学习到的路由在从该接口广播回去或者以组播的方式发送回去。
l 带毒性逆转的水平分割:路由器从某些接口学习到的路由有可能从该接口反发送出去,只是这些被路由已经具有毒性,即跳数都被加到了16跳。
l 抑制定时器:当路由表中的某个条目所指网络消失时,路由器并不会立刻的删除该条目并学习新条目,而是严格按照我们前面所介绍的计时器时间现将条目设置为无效接着是挂起,在240秒时才删除该条目,这么做其实是为了尽可能的给于一个时间等待发生改变的网络恢复。
l 触发更新:因网络拓扑发生变化导致路由表发生改变时,路由器立刻产生更新通告直连邻居,不在需要等待30秒的更新周期,这样做是为了尽可能的将网络拓扑的改变通告给其他人。
艾迪飞朱老师提供答案