路由环路如何发生?
在维护路由表信息的时候,如果在拓扑发生改变后,网络收敛缓慢产生了不协调或者矛盾的路由选择条目,就会发生路由环路的问题,那么该如何解决此问题呢?本文就为大家介绍D-V解决路由环路的方法。
Distance-VectorRoutingProtocols通过向所有接口周期性的广播路由更新来跟踪整个网络的变化,这些广播包括了完整的路由表,但却给cpu和带宽增加了负担。若会聚更新过慢会产生路由环路。
假如网络5出问题了,不工作了,E就发送更新给C汇报情况,于是,C开始停止通过E来路由信息到网络5,但是这个时候A,B和D还不知道网络5出问题了.所以它们仍然继续发送更新信息.C发送更新给B说停止路由到网络5.但是此时A和D还没有更新,所以它们觉得网络5仍然可用,而且跳数为3.接下来,A发送更新说:嘿!网络5还可用.B和D接受到A发来的更新后,没办法,也相同的觉得可用经过A到达网络5,并且认为网络5可用.所以就这样,1个目标网络是网络5的数据包将进过A到B,然后又回到A……
路由环路解决办法
水平分割(splithorizon),它规定由1个接口发送出去的路由信息不能再朝这个接口往回发送.这个办法减少了路由信息的不正确性和负载,但在某些环境中,例如Frame-Relay的Hub节点,水平分割将带来一些麻烦。
毒性逆转(poisonreverse)。当一条路径信息变为无效之后,路由器并不立即将它从路由表中删除,而是用16,即不可达的度量值将它广播出去。这样虽然增加了路由表的大小,但对消除路由环路很有帮助,它可以立即清除相邻路由器之间的任何环路。
触发更新(triggerupdate)。当路由表发生变化时,更新报文立即广播给相邻的所有路由器,而不是等待30秒的更新周期。同样,当一个路由器刚启动RIP时,它广播请求报文。收到此广播的相邻路由器立即应答一个更新报文,而不必等到下一个更新周期。这样,网络拓扑的变化会最快地在网络上传播开,减少了路由环路产生的可能性。
抑制计时(holddowntimer)。一条路由信息无效之后,一段时间内这条路由都处于抑制状态,即在一定时间内不再接收关于同一目的地址的路由更新。如果,路由器从一个网段上得知一条路径失效,然后,立即在另一个网段上得知这个路由有效。这个有效的信息往往是不正确的,抑制计时避免了这个问题,而且,当一条链路频繁起停时,抑制计时减少了路由的浮动,增加了网络的稳定性。
路由环路的问题即便采用了上面的4种方法也不能完全解决,只是得到了***程度的减少。一旦路由环路真的出现,路由项的度量值就会出现计数到无穷大(CounttoInfinity)的情况。这是因为路由信息被循环传递,每传过一个路由器,度量值就加1,一直加到16,路径就成为不可达的了。RIP选择16作为不可达的度量值是很巧妙的,它既足够的大,保证了多数网络能够正常运行,又足够小,使得计数到无穷大所花费的时间最短。