RIP协议是一种典型的距离矢量协议,它使用的也是距离矢量算法,该算法可以用一句话来概括:进行路由更新时传递路由表。RIP协议的度量值是以跳数来计算的,即每经过一跳,度量值就会加一,这样的度量值计算并不符合当前的网络环境,因为当前带宽爆炸性的增长,可能会导致RIP选择了次优路径。RIP的最大网络直径为15,也就是说RIP协议所能传递路由信息的最大跳数就是15跳,超过15跳就表示不可达。RIP协议作为典型的距离矢量协议,它的防环机制有两种:水平分割和毒性逆转,简单来说,水平分割就是从一个接口接收的路由更新,不会再从该端口发送出去。毒性逆转则是从一个接口接收的路由更新,会再从该接口发出去,但是会将其置为不可达状态(16跳)。RIP协议默认会进行自动汇总(有类路由协议),即传输的路由条目会自动进行主类的汇总,这样会导致路由条目不精确,后续RIP协议为了解决该问题,将RIPV1升级为RIPV2,V2版本不仅支持手动汇总,使路由条目传递更加精准,而且将路由更新方式从V1的广播变成了V2的组(224.0.0.9),提升了路由更新效率。
RIP协议基于距离矢量算法(DistanceVectorAlgorithms),使用“跳数”(即metric)来衡量到达目标地址的路由距离。
RIP协议采用距离向量算法,在实际使用中已经较少适用。在默认情况下,RIP使用一种非常简单的度量制度:距离就是通往目的站点所需经过的链路数,取值为1~15,数值16表示无穷大。RIP进程使用UDP的520端口来发送和接收RIP分组。RIP分组每隔30s以广播的形式发送一次,为了防止出现“广播风暴”,其后续的的分组将做随机延时后发送。在RIP中,如果一个路由在180s内未被刷,则相应的距离就被设定成无穷大,并从路由表中删除该表项。RIP分组分为两种:请求分组和响应分组。
RIP协议是基于Bellham-Ford(距离向量)算法,此算法1969年被用于计算机路由选择,正式协议首先是由Xerox于1970年开发的,当时是作为Xerox的“Networking Services(NXS)”协议族的一部分。由于RIP实现简单,迅速成为使用范围最广泛的路由协议。
路由器的关键作用是用于网络的互连,每个路由器与两个以上的实际网络相连,负责在这些网络之间转发数据报。在讨论 IP 进行选路和对报文进行转发时,我们总是假设路由器包含了正确的路由,而且路由器可以利用 ICMP 重定向机制来要求与之相连的主机更改路由。但在实际情况下,IP 进行选路之前必须先通过某种方法获取正确的路由表。在小型的、变化缓慢的互连网络中,管理者可以用手工方式来建立和更改路由表。而在大型的、迅速变化的环境下,人工更新的办法慢得不能接受。这就需要自动更新路由表的方法,即所谓的动态路由协议,RIP协议是其中最简单的一种。
在路由实现时,RIP作为一个系统长驻进程(daemon)而存在于路由器中,负责从网络系统的其它路由器接收路由信息,从而对本地IP层路由表作动态的维护,保证IP层发送报文时选择正确的路由。同时负责广播本路由器的路由信息,通知相邻路由器作相应的修改。RIP协议处于UDP协议的上层,RIP所接收的路由信息都封装在UDP协议的数据报中,RIP在520号UDP端口上接收来自远程路由器的路由修改信息,并对本地的路由表做相应的修改,同时通知其它路由器。通过这种方式,达到全局路由的有效。
RIP路由协议用“更新(UNPDATES)”和“请求(REQUESTS)”这两种分组来传输信息的。每个具有RIP协议功能的路由器每隔30秒用UDP520端口给与之直接相连的机器广播更新信息。更新信息反映了该路由器所有的路由选择信息数据库。路由选择信息数据库的每个条目由“局域网上能达到的IP地址”和“与该网络的距离”两部分组成。请求信息用于寻找网络上能发出RIP报文的其他设备。
RIP用“路程段数”(即“跳数”)作为网络距离的尺度。每个路由器在给相邻路由器发出路由信息时,都会给每个路径加上内部距离。在如图9-31 中,路由器3直接和网络C相连。当它向路由器2通告网络142.10.0.0的路径时,它把跳数增加1。与之相似,路由器2把跳数增加到“2”,且通告路径给路由器1,则路由器2和路由器1与路由器3所在网络142.10.0.0的距离分别是1跳、2跳。
1路由器启用RIP以后,会将自己本地路由表的条目进行宣告,并进入RIP数据库中
2在启动RIP协议的端口上发送这些更新条目
3对方RIP路由器接收以后。经过路由比较,将最好的条目放入路由表
4所有的RIP路由器都会进行周期性,全部路由表更新(RIP V2中是触发式的增量更新,并且是以组播的方式)
RIP协议:一种内部网关协议