路由的循环问题

来源:互联网 发布:常州软件培训机构 编辑:程序博客网 时间:2024/06/05 03:04

路由的循环问题:路由循环的产生;路由循环的解决方法;

路由循环的产生:

 

路由循环的解决方法

水平分割(split horizon)——保证路由器记住每一条路由信息的来源,即它来自哪个端口,并且不在收到这条信息的端口上再次发送它。这是保证不产生路由循环的最基本措施(可以防止A-B  B-A 但是不能解决A-B-C C-A);

路由毒化(route poisoning)——当一条路径信息变为无效之后,路由器并不立即将它从路由表中删除,而是用无穷大的度量值将它广播出去(在RIP中,用度量值16)。相邻路由器通过接收这样的更新消息,显示地被告知某项路由已经无效了;

毒性逆转(poison reverse)接受路由毒化消息的路由器并不遵从水平分割的原则,而是将这条消息转发给所有相邻的路由器,包括发送消息的源路由器,以实现最快的收敛;

触发更新(trigger update)当路由表发生变化时,更新报文立即广播给相邻的所有路由器,而不是等待刷新计时器到期。同样,当一个路由器刚启动RIP时,它广播请求报文。收到此广播的相邻路由器立即应答一个更新报文,而不必等到下一个更新周期。这样,网络拓扑的变化会最快地在网络上传播开,减少了路偶循环产生的可能性;

抑制计时(hold down timer)路由表中的一个路由项无效之后,一段时间内这条路由都处于抑制状态,即在一定时间内不再接收关于同一目的网络的更远路由更新。如果,路由器从一个网段上得知一条路径失效,然后,立即在另一个网段上得知这个路由有效,这条有效的信息往往是不正确的,是路由没有及时更新的结果。抑制计时器避免了这个问题,而且,当一条链路频繁起停时,抑制计时器减少了路由的浮动,增加了网络的稳定性;

 

计数到无穷

即便采用了上面5种方法,路由循环的问题有时也不能完全解决,只是得到了最大程度的减少。一旦路由循环出现,路由项的度量值就会出现计数到无穷大(count to infinity)的情况。这是因为路由信息被循环传递,每传过一个路由器,度量值就加1,一直加到16,路径就成为不可达的了。RIP选择16作为不可达的度量值是很巧妙的,它既足够大,保证了多数网络能够正常运行,又足够小,使得计数到无穷大所花费的时间最短。

 

循环中的数据包传送

路由表中的确存在循环(路由错误或路由没有收敛)

*IP数据包头的TTL字段

原创粉丝点击