深入理解RIP原理 附实例
一、RIP相关介绍
1、RIP
RIP (Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议,他的中文名称叫做路由信息协议,但很少被使用。RIP是一种分布式的基于距离向量的路由选择协议
,是互联网的标准协议,最大优点是简单。
2、距离(距离向量)解释
从一个路由器到直接连接的网络的距离定义为1。从一路由器到非直接连接的网络的距离是定义的路由器的数量再加1
。加1是因为到达目的网络之后进行直接交付,而到直接连接的网络的距离已经定义为1。
如下图,路由器R1到网1和网2的距离为1,到网3的距离为2,到网4的距离为3
RIP协议的距离也称为跳数
,每经过一个路由器,可以理解为跳一下,跳数就加1。RIP认为,好的路由就是它通过的路由器的数目少,即距离短
,注意这个在后面理解原理的时候会用到。RIP只允许一条路径包含15个路由器,当跳数(距离)超过15时,则认为不可达。
3、RIP协议的特点
仅和相邻路由器交换信息。
如果两个路由器之间的通信不需要第三个路由器,则称其相邻。RIP规定,不相邻的路由器不交换信息。- 路由器交换的信息是
当前本路由器所知道的全部信息,即自己现在的路由表
按固定的时间间隔
交换路由信息。例如,每隔30秒,然后路由器根据收到的路由信息更新路由表。当网络拓扑发生变化时,路由器也及时向相邻路由器通告变化后的路由信息。
二、距离向量算法
上面的描述可以看出来,路由器之间路由表的更新,就是一个不断找最短距离的过程。这个过程中,一个路由器传给另外一个,另外一个再传给第三个。慢慢的,所有的路由器中的路由表都对应网络跳转的最小距离。这种更新的算法称为距离向量算法
。
算法描述
首先要知道,RIP报文每一个项目都有三个关键字段,即:目的网络、距离、下一跳路由器
对每一个路由器的相邻路由器
发过来的RIP报文,都进行一下步骤
1、对地址为X的相邻路由器发过来的RIP报文,先修改报文中所有项目:把“下一跳”字段中的地址都改为X,并把所有的“距离”字段都增加1.每一个项目对应的到目的网络N、距离d、下一跳路由器X
2、对修改后的RIP报文的每一个项目,都进行一下操作:若原来的路由表中没有目的网络N,则把这个项目添加到路由表中。
否则(即原来的路由表中有目的网络N,这时候就查看下一跳路由器)若下一跳路由器地址为X,则把刚收到的项目替换原来路由表中的项目
否则(即这个项目,到目的网络N,但下一跳路由器不是X)若收到的项目的距离小于路由表中的距离,则进行更新
否则什么也不做3、若3分钟还没收到相邻路由器的更新路由表,则把子相邻路由器记为不可达的路由器,即把距离记为16。(大于15即不可达,上文提到过)
4、返回
三、实例
路由器R6的路由表
目的网络 | 距离 | 下一跳路由器 |
---|---|---|
Net2 | 3 | R4 |
Net3 | 4 | R5 |
R4发给R6路由更新信息
目的网络 | 距离 | 下一跳路由器 |
---|---|---|
Net1 | 3 | R1 |
Net2 | 4 | R2 |
Net3 | 1 | 直接交付 |
直接按照上述步骤先修改R4发来的RIP报文
目的网络 | 距离 | 下一跳路由器 |
---|---|---|
Net1 | 3+1=4 | R4 |
Net2 | 4+1=5 | R4 |
Net3 | 1+1=2 | R4 |
然后看修改后的RIP报文信息
- 原路由表中没有Net1,直接把这个项目添加进去
- 原路由表中有Net2,且其下一跳路由器跟R4中的相同,所以替换掉
- 原路由表中youNet3,但是下一跳路由器不同,收到的项目距离小于原来的距离,所以替换掉
所以最终R6的路由表信息为
目的网络 | 距离 | 下一跳路由器 |
---|---|---|
Net1 | 4 | R4 |
Net2 | 5 | R4 |
Net3 | 2 | R4 |
四、注解
待更新ing