路由信息协议RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议,RIP是一个分布式的基于距离向量的路由选择协议,其最大优点就是简单。下面不再罗嗦 地细致介绍,而是简要列出RIP协议的一些要点和关键概念。
1. 距离向量:RIP协议中每个路由器都要维护自己到每一个目的网络的距离记录,由于是一组距离,因此称之为距离向量,这将作为路由选择的度量;一般直连网段 定义为1,每通过一个路由器距离+1,当然也可以定义直连网段为0,由于是统一的确定起始的基数,因此不会影响RIP协议的路由比较和选择。
2. RIP协议的三个要点:
-a. Who:与谁交换信息?
       RIP协议中的信息交换仅发生在相邻的两个路由器之间,不相邻的路由器不交换信息;
-b. What:交换什么信息?
       路由器交换的信息是当前本路由器知道的全部信息,即自己的路由表【我到本AS中所有网络的最短距离+到每个网路的NextHop】;
-c. When:什么时候交换信息?
     路由器按规定的时间间隔交换路由信息,比如每隔30秒,然后路由器根据收到的信息更新路由表;当网络拓扑发生变化时,路由器也会及时的告知相邻路由器;
3. RIP协议的路由向量算法
     RIP协议基于以下路由算法得出路由表,以路由器A为例:
-1. A自动获取直连网段的路由;
-2. 收到RIP更新包后,假设来自于相邻路由器B,则对其中的记录进行修改-
   *将所有路由记录项的距离+1;
   *将所有路由记录的下一跳改为B;
-3. 接下来针对修改过的B的路由表进行以下判断和处理:
   *若原来路由表中没有的目的网络记录,则添加该项路由;
   *若原来路由表中有下一跳为B的记录,直接更新;
   *若收到的项目中的距离小于原先路由表中的距离,则进行更新;
   *否则什么也不做;
-4. 若三分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达,即把距离记为16(最大15);
-5. 返回;
     上面给出的距离向量算法的基础就是Bellman-Ford算i法,其要点是设B是A到C的最短路径上的一个节点,若把路径A-C拆为两段路径A-B和B-C,则每一段路径也分别是响应端点之间的最短路径。
     比如路由器6具有路由表1,相邻路由器4发来路由表2,则RIP的运行结果可以分析:


     首先我们对R4发来的路由表做一些处理,距离部分+1,然后下一跳均改为R4:

     然后我们分析比较原先的R6的路由表,发现第一条记录Net1的记录没有,因此直接添加:
     【Net1      4     R4】
     第二条记录Net2存在,且下一跳相同,因此用新的更新旧的:
     【Net2      5     R4】
     第三条记录的下一跳不同,比较距离,新的更短,因此替换掉原先的路由:
     【Net3      2     R4】
     此时我们得到的新的路由表就是:

4. RIP协议的缺点
     RIP实施简单,但是却有自身的不足,比如最大跳数为16,只能适用于小规模网路;路由度量仅仅是路由器跳数,比较单一,无法涵盖跳数多、延迟小的高速 链路情况;最为重要的一点是当网络出现故障时,要经过较长的时间才能将此信息传送到所有的路由器。即:好消息传得快,而坏消息传得慢。
     比如当路由器R1到网1的链路出现了故障,R1无法到达网1了,那么R1就将到网1的距离改为了16;在R1向临接的路由器R2发送自己的新路由项前, 先收到了R2的路由项【Net1   2   R1】,于是按照规则R1修改后成为了【Net1  3  R2】,并且与16比较后更新了自己的路由表;然后R1再次发送该项给R2,R2接受到以后发现是【Net1   4   R1】,于是直接替换掉了自己的【Net1   2   R1】;然后R2再向R1发送路由表....循环交替,直到Net1的距离成为了16,R2才明白原来无法到达Net1了:

     解决这样问题的方法可以是对于某些特定端口发来的路由信息,不再回送回去。总之,RIP协议最大的优点是实现简单、开销较小,但是对于较大的网络,还是应当使用OSPF协议。