RIP协议基础内容漫谈


RIP协议是路由协议的一种,虽然现在已经有比它更为优秀的协议,但是这个协议的使用仍是我们今后的基础。那么接下来就来详细介绍一下这个协议吧。RIP协议的一个重要的特点是它能够告诉你它从其他路由器那里了解到的的有关目标网络的情况。你可能听说过这类被称为“传闻路由routing by rumor)”的路由协议。它的工作方式是,在一台路由器广播RIP数据包之前把尺度域(metric field)的值加一。例如路由器A告诉你你能够经过它通过两跳达路由器B,那么,你就知道路由器A和路由器B能够直接对话,因为它们之间的距离只有一个跳点。所以,路由器A同路由器B一样在同一个广播域中有一个链路。但是,你却没有。

当这个尺度,或者跳数,达到16的时候,说明你就遇问题。16这个数字在RIP协议中意味着无穷大。无穷数等于16是一种用来停止度量值无限增大的机制。之所以这样设计由于“传闻路由”的工作原理。这个问题讲起来有点复杂。但是,请你耐心看一下下面这个三个路由器的例子:

路由器A知道它通过路由器B能够在2跳之内可以达到路由器C。你头脑中的画面可以是一条直线,路由器B在中间,路由器A和C在两端。现在,由于路由器B与路由器C有直接的连接,因此,当路由器C出故障的时候它将会知道。

但是,当路由器B有机会告诉路由器A有关路由器C出故障的事情之前,路由器A发出了一个RIP更新信息。这个信息包括“我能够在2跳之内可以达到路由器C”。路由器B当然会相信路由器A,这就意味着路由器B相信路由器A能够达到路由器C。当然,路由器A是不能到达路由器C的,因为它的路径要经过路由器B。

但是,路由器B并不知道这种情况,因为RIP协议中的惟一信息是下一跳地址,也就是路由器A。最后,当路由器B发送它的下一次更新的时候,它将包括通向路由器C的路由,这个路由现在是3跳。路由器A相信路由器B,因为路由器B毕竟是通向路由器C的惟一通道。这种事情经常发生,我们的跳数达到了16。这个路由将被放弃,而不会永远继续下去。

这个问题如何解决呢?使用距离向量协议可没有办法。当我们告诉我们的邻居有关这个世界的情况时,我们没有提供有关每一个网络的详细信息,这样刚才那种计算无穷数的事情就可能发生。链路状态协议向全部路由器提供整个网络的状况因此可以避免了这种问题的发生。“水平分割”是帮助避开这个问题的另一种方法。但是,这种方法本身也存在瑕疵。

Split-horizon意味着我们要跟踪更新信息发进来的端口,关注可能与之发生冲突的其它路由器发来的更新信息。换句话说,路由器纪录一条路由信息发送出去时使用的接口,当从这个接口收到到到同一目标的路由更新信息时,它会了解这是自己刚发出去的信息被其它路由器回传了回来,从面一定程序上避免问题,但是,当涉及到更多的路由器的时候,上面介绍的情况仍会存在。这种例子会变得更加复杂。但是,如果你对RIP协议感兴趣,你可以试着设计出一种环境,在这种环境中即使具有Split-horizon功能的路由器仍会出现计算无穷数的现象。

RIP协议的最后一个“问题”就是聚合的速度慢。这是真的,主要是因为每次更新间隔的30秒等待时间。但是,在小机构中,这没什么大关系。RIPv2几乎能够在所有的硬件上运行,甚至在你买来支持宽带网连接的廉价的“家庭路由器”上也可以运行。即使你没有专门把RIP协议用作一个IGP协议,了解这个协议仍然是有用的,因为主机也可以使用这个协议作为手工设置一个默认的网关的替代方法。最后,即使你的机构很小,全部使用静态路由就够用,RIPv2也会给你带来更多的方便。

RIP协议是一种距离向量内部网关路由协议:它使用跳数和下一跳路由器来具体说明路由。

RIPv1用来进行广播,但是并不支持CIDR地址解析。RIPv2是无类域间路由并且使用多播技术。

虽然这个协议的汇聚速度很慢并且存在一些瑕疵,但是,RIP非常适合于中小企业环境。

相关内容