1.概念:
RIP协议是一种内部网关协议(IGP),是一种动态路由选择协议,用于自治系统(AS)内的路由信息的传递。
RIP协议基于距离矢量算法(DistanceVectorAlgorithms),使用"跳数"(即metric)来衡量到达目标地址的路由距离。
这种协议的路由器只关心自己周围的世界,只与自己相邻的路由器交换信息,范围限制在15跳(15度)之内,再远,它就不关心了。
收敛:使所有路由表都达到一致状态的过程。
2.工作原理:
RIP通过广播UDP报文来交换路由信息,每30秒发送一次路由信息更新(UDP520端口)。
RIP提供跳跃计数(hopcount)作为尺度来衡量路由距离,跳跃计数是一个包到达目标所必须经过的路由器的数目。
如果到相同目标有二个不等速或不同带宽的路由器,但跳跃计数相同,则RIP认为两个路由是等距离的。
RIP最多支持的跳数为15,即在源和目的网间所要经过的最多路由器的数目为15,跳数16表示不可达。
3.算法(距离向量算法)
对每一个相邻路由器发送过来的RIP报文,进行以下步骤:
- 对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把"下一跳"字段中的地址都改为X,并把所有的"距离"字段的值加1
每个项目都有三个关键数据,即:目的网络N,距离是d,下一跳路由器是X。
- 对修改后的RIP报文中的每一个项目,进行如下步骤:
若原来的路由表中没有目的网络N,则把该项目添加到路由表中;
若原目的网络为N且距离大于d,则把收到的项目替换原路由表中的项目。 - 若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可到达的路由器,即把距离设置为16;
- 返回;
NET | Next hop | Metric | |
---|---|---|---|
C | 10.0.0.0 | 20.0.0.1 | 1 |
C | 30.0.0.0 | 40.0.0.2 | 2 |
R3到右边的的路径被剪断了,R3可以感受到,于是在自己的路由表中更新为16,表示"无穷大",不可达。
R3准备在下一个30秒内告诉R2这个坏消息,但是在这之间R2先把自己的所有信息都告诉了R3,R3一看咦?R2到C的跳数是1,我到R2就一跳,现在虽然我不能直接到,那么绕道R2不就可以了吗?说干就干,于是把自己到C的跳数改为2.好了,真相被谎言掩盖了。
R3向R2这个好基友坦白所有的信息,R2看到R3到C的距离变为3了,R2知道自己是经过R3才到达的C,于是毫不犹豫的改为4.下一次再把全部信息告诉R3,R3收到一看,咋回事啊,怎么又加一跳了呢!R2那边发生了什么?但是还是得根据规则,毫不犹豫的修改距离跳数。就这样不断增加,直到都为16,才恍然大悟,原来大家都到不了了啊。
解决这个问题可以用水平分割:
- 从一个接口学习到的路由信息,不再从这个接口发送出去;
- 同时也能减少路由更新信息占用的链路带宽资源。
实验:
# rip v1
router rip #启用rip协议
version 1 #设置版本
network 10.0.0.0 #激活网段
network 20.0.0.0 #激活网段
# rip v2
router rip
version 2
no auto-summry
network 10.0.0.0
network 20.0.0.0
作业: