路由环路及解决办法
路由环路:在维护路由表信息的时候,如果在拓扑发生改变后,网络收敛缓慢产生了不协调或者矛盾的路由选择条目,就会发生路由环路的问题,这种条件下,路由器对无法到达的网络路由不予理睬,导致用户的数据包不停在网络上循环发送,最终造成网络资源的严重浪费。链路状态算法(OSPF)不会产生路由环路,因此,消除路由环路的技术,都是针对距离向量协议进行的。路由环路的形成大致如下述:
当C路由器一侧的X网络()发生故障,则C路由器收到故障信息,并在路由表中把X网络设置为不可达,等待更新周期到时来通知相邻的B路由器。但这时,如果相邻的B路由器的更新周期先来了,则C路由器将从B路由器那学习并更新到达X网络的路由。这是错误路由,因为此时的X网络已经损坏,而C路由器却在自己的路由表内增加了一条经过B 路由器到达X网络的路由。然后C路由器还会继续把该错误路由通告给B路由器,B路由器更新路由表,认为到达X网络须经过C路由,然后继续通知相邻的路由器,至此路由环路形成,C路由器认为到达X网络
经过B路由器,而B则认为到达X网络进过C路由器。
解决路由环路问题的方法,概括来讲,主要分为六种:
:
距离矢量路由算法可以通过IP头中的生存时间(TTL)来纠错,但路由环路问题可能首先要求无穷计数。为了避免这个延时问题,距离矢量协议定义了一个最大值,这个数字是指最大的度量值,如
RIP协议最大值为16跳。也就是说,路由更新信息可以向不可到达的网络的路由中的路由器发送15次,一旦达到最大值16,就视为网络不可到达,存在故障,将不再接受来自访问该网络的任何路由更新信息。
:
一种消除路由环路并加快网络收敛的方法是通过叫做“水平分割”的技术实现的。其规则就是不向原始路由更新的方向再次发送路由更新信息(个人理解为单向更新,单向反馈)。比如有三台路由器ABC,,,A向B
,也不再向B声明,而一旦网络
,C会向A和B发送该网络不可达到的路由更新信息,
。
(也称为路由毒化):
定义最大值在一定程度上解决了路由环路问题,但并不彻底,可以看到,在达到最大值之前,路由环路还是存在的。为此,路由中毒就可以彻底解决这个问题。其原理是这样的:假设有三台路由器ABC,,路由器C立即向邻居路由发送相关路由更新信息,并将其度量值标为无穷大,,路由器B收到毒化消息后将该链路路由表项标记为无穷大,表示该路径已经失效,并向邻居
A路由器通告,依次毒化各个路由器,,不再接收更新信息,从而避免了路
由环路。
(也称为毒化逆转):
结合上面的例子,,就发送一个叫做毒化逆转的更新信息给C路由器,
路由环路及解决办法 来自淘豆网m.daumloan.com转载请标明出处.