它本身自带的解决方案就有好几种,计数到无穷大,毒性逆转,水平分割,带有毒性逆转的水平分割,等等。
水平分割,即不接收通告路由器从本地路由器学习到的路由,我从你处学习到的路由竟然是你从我这边学习到的,这样必然形成环路,所以思科路由器是默认开启水平分割的。关于毒性逆转,接收到一条路由条目,直接将其度量值记为16,并广播周边路由器,其它路由器收到该信息时即知道不可达,就不会再转发这条路由信息了。
计数到无穷大,就是,从你那边过来,跳数加1,我这边过去又加1,如此循环下去,等到跳数加到16时,就不会再传递这条路由了。带有毒性逆转的水平分割,就是度量值为16后,单方向广播后,就不会再传递这条路由信息了。
我个人理解,这几种方式,应该是平行的,路由形成环路后,路由器自己解决问题,它可能利用其中的一种或几种方法。反正它把问题解决了,具体当时用的是什么方法,是根据具体情况确定的。
RIP的防环机制
1、水平分割:A、水平分割:从接口收到的路由信息,不再从本接口发出。 B、毒性逆转的水平分割:从本接口收到的路由信息,转发 表示为16跳不可达。(防路由和IP包的环路) 2、最大跳数:最大跳数为15跳,16条不可达。(防路由环路) 3、抑制计时器:A、保持失效计时器缺省为:180秒 B、删除计时器:缺省为240秒。(在IP包上防止环路) 更新时间:缺省为30秒。异步更新为25~35秒,同步更新为25。5~30秒。 4、触发更新。 5、最大跳数(终极武器)。 以上防环路机制全部默认开启。
a. RIP协议有两种更新机制:
① 定期更新
② 触发更新。
b. RIP路由器总是会每隔30秒(默认值为30秒,可以修改,而且也可能与设置值有些偏差)通过UDP 520端口以RIP广播应答方式向邻居路由器发送的一个路由更新包,包中包括了本路由器上的完整的路由表(除了被“水平分割”机制抑制的路由表项),用来向邻居路由器提供路由更新,同时用来向邻居路由器证明自己的存在。RIP的路由表中主要包括“目的网络”、“下一跳地址”和“距离”这三个字段
防止路由环路的方法:
① 路由毒化。
② 水平分割。
③ 毒性逆转。
④ 定义最大跳数为16跳。
⑤ 抑制时间,和路由毒化结合使用。
⑥ 触发更新。
每30s以应答消息的形式发送一个完整路由表到邻居,路由器收到后设置一个180s的超时计时器(Timeout Timer),Cisco称为Invalid Timer。
如果在180s内没有任何更新消息,则将跳数置为16(不可达),并宣告。直240s后刷新计时器(Flush Timer)将其删除。
Cisco还使用了第三种计时器抑制计时器(Holddown Timer),Router接收到度量更高的路由后的180s内不会用使用接收到的路由更新路由表,为收敛提供额外时间。
(转载)
一共有六种措施:
1、最大跳计数
距离矢量路由算法可以通过IP头中的生存时间(TTL)来纠错,但路由环路问题可能首先要求无穷计数。为了避免这个延时问题,距离矢量协议定义了一个最大值,这个数字是指最大的度量值(如rip协议最大值为16),比如跳数。也就是说,路由更新信息可以向不可到达的网络的路由中的路由器发送15次,一旦达到最大值16,就视为网络不可到达,存在故障,将不再接受来自访问该网络的任何路由更新信息。
2、水平分割
一种消除路由环路并加快网络收敛的方法是通过叫做“水平分割”的技术实现的。其规则就是不向原始路由更新的方向再次发送路由更新信息(个人理解为单向更新,单向反馈)。比如有三台路由器ABC,B向C学习到访问网络10.4.0.0的路径以后,不再向C声明自己可以通过C访问10.4.0.0网络的路径信息,A向B学习到访问10.4.0.0网络路径信息后,也不再向B声明,而一旦网络10.4.0.0发生故障无法访问,C会向A和B发送该网络不可达到的路由更新信息,但不会再学习A和B发送的能够到达10.4.0.0的错误信息。
3、路由中毒
定义最大值在一定程度上解决了路由环路问题,但并不彻底,可以看到,在达到最大值之前,路由环路还是存在的。为此,路由中毒就可以彻底解决这个问题。其原理是这样的:假设有三台路由器ABC,当网络10.4.0.0出现故障无法访问的时候,路由器C便向邻居路由发送相关路由更新信息,并将其度量值标为无穷大,告诉它们网络10.4.0.0不可到达,路由器B收到毒化消息后将该链路路由表项标记为无穷大,表示该路径已经失效,并向邻居A路由器通告,依次毒化各个路由器,告诉邻居10.4.0.0这个网络已经失效,不再接收更新信息,从而避免了路由环路。
4、反向中毒(也称毒化逆转)
结合上面的例子,当路由器B看到到达网络10.4.0.0的度量值为无穷大的时候,就发送一个叫做毒化逆转的更新信息给C路由器,说明10.4.0.0这个网络不可达到,这是超越水平分割的一个特列,这样保证所有的路由器都接受到了毒化的路由信息。
5、控制更新时间(即抑制计时器)
抑制计时器用于阻止定期更新的消息在不恰当的时间内重置一个已经坏掉的路由。抑制计时器告诉路由器把可能影响路由的任何改变暂时保持一段时间,抑制时间通常比更新信息发送到整个网络的时间要长。当路由器从邻居接收到以前能够访问的网络现在不能访问的更新后,就将该路由标记为不可访问,并启动一个抑制计时器,如果再次收到从邻居发送来的更新信息,包含一个比原来路径具有更好度量值的路由,就标记为可以访问,并取消抑制计时器。如果在抑制计时器超时之前从不同邻居收到的更新信息包含的度量值比以前的更差,更新将被忽略,这样可以有更多的时间让更新信息传遍整个网络。
6、触发更新
正常情况下,路由器会定期将路由表发送给邻居路由器。而触发更新就是立刻发送路由更新信息,以响应某些变化。检测到网络故障的路由器会立即发送一个更新信息给邻居路由器,并依次产生触发更新通知它们的邻居路由器,使整个网络上的路由器在最短的时间内收到更新信息,从而快速了解整个网络的变化。但这样也是有问题存在,有可能包含更新信息的数据包被某些网络中的链路丢失或损坏,其他路由器没能及时收到触发更新,因此就产生了结合抑制的触发更新,抑制规则要求一旦路由无效,在抑制时间内,到达同一目的地有同样或更差度量值的路由将会被忽略,这样触发更新将有时间传遍整个网络,从而避免了已经损坏的路由重新插入到已经收到触发更新的邻居中,也就解决了路由环路的问题。
其中的路由中毒和反向中毒在提示一下:
路由中毒:是指在路由信息在路由表中失效时,先将度量值变为无穷大,而不是马上从路由表中删掉这条路由信息。(这句话要理解,如RIP协议中,其度量值变为16,意味着路由不可达)再将其信息发布出去,这样相邻的路由器就得知这条路由己无效了.
毒性反转与路由中毒概念是不一样的,它是指收到路由中毒消息的路由器,不遵守水平分割原则将中毒消息转发给所有的相邻路由器,也包括发送中毒信息的源路由器,也就是通告相邻路由器这条路由信息己失效了,主要目的是达到快速收敛的目的。
为了解决环路问题,IETF提出了分割范围方法,即路由器不可以通过它得知路由的接口去宣告路由。分割范围解决了两个路由器之间的路由环路问题,但不能防止3个或多个路由器形成路由环路。触发更新是解决环路问题的另一方法,它要求路由器在链路发生变化时立即传输它的路由表。这加速了网络的聚合,但容易产生广播泛滥。总之,环路问题的解决需要消耗一定的时间和带宽。若采用RIP协议,其网络内部所经过的链路数不能超过15,这使得RIP协议不适于大型网络。
RIP的防环机制:1、水平分割:A、水平分割:从接口收到的路由信息,不再从本接口发出。
B、毒性逆转的水平分割:从本接口收到的路由信息,转发 表示为16跳不可达。(防路由和IP包的环路)
2、最大跳数:最大跳数为15跳,16条不可达。(防路由环路)
3、抑制计时器:A、保持失效计时器缺省为:180秒
B、删除计时器:缺省为240秒。(在IP包上防止环路)
更新时间:缺省为30秒。异步更新为25~35秒,同步更新为25。5~30秒。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.639秒