RIP简述

RIP协议

RIP(Routing Information Protocol),路由信息协议,是一种距离矢量算法的协议,使用跳数作为度量来衡量到达目的网络的距离。

RIP的特点

  • RIP是距离矢量路由协议,属于IGP协议。直连网络跳数为0,路由器发送路由更新时,会把度量值加1,最大15跳;
  • RIP适用于规模较小的网络,有RIPv1和RIPv2两个版本;
  • RIP基于UDP协议,目标端口号为520,周期性发送更新(25.5-30s);
  • RIP支持水平分割、毒性逆转和触发更新等防环特性。

RIPv1和RIPv2的对比

RIPv1

  • 有类路由协议,不支持VLSM和CIDR;
  • 以广播形式发送报文;
  • 不支持认证。 

RIPv2

  • 无类路由协议,支持VLSM,支持路由聚合与CIDR;
  • 支持以广播或者组播(224.0.0.0)方式发送报文;
  • 支持明文认证和MD5密文认证。

验证

动态路由-RIP协议_ip协议

R1开启rip协议

动态路由-RIP协议_ip协议_02

抓包查看

RIPv1版本使用广播地址,且路由信息不含掩码

动态路由-RIP协议_ip协议_03


R2开启RIP协议

动态路由-RIP协议_路由协议_04


查看路由信息

动态路由-RIP协议_路由协议_05

将RIPv1换成RIPv2

动态路由-RIP协议_路由协议_06

动态路由-RIP协议_路由协议_07

抓包查看

RIPv2使用组播地址,且路由信息包含掩码

动态路由-RIP协议_路由协议_08


RIP的特性

RIP为了防止环路产生,有三个特性:水平分割、毒性逆转和触发更新

环路的产生

准备

为了产生环路,需要将水平分割、毒性逆转功能关闭

可通过如下命令查看这两个功能的状态

动态路由-RIP协议_ip协议_09

接下来我们给R1和R2关闭这两个功能

动态路由-RIP协议_路由协议_10

环路产生过程

动态路由-RIP协议_ip协议_11

R1与R2都开启RIP,正常流程

  • 第一步:R2将自己的路由2.0.0.0通过RIP告知给R1,由于是直连metric为0,发送时metric会加1
  • 第二步:R1收到2.0.0.0的路由会记录一条2.0.0.0的路由,且该路由的metric为1
  • 第三步:R1也会通过rip协议将自己的路由信息通知给R2,此时R1有2.0.0.0的信息,所以R1会将2.0.0.0发送给R2,由于该路由metric为1,发送时metric加1,发送的该路由metric为2
  • 第四步:R2收到的R1给它的2.0.0.0 metric 2的路由信息后,由于其已有直连的2.0.0.0,所以并不会更新2.0.0.0的路由

当前场景不会有任何环路问题

如果R2的回环口lo0有故障,比如down掉,那么问题就产生了

  • 第一步:R2将自己的路由2.0.0.0通过RIP告知给R1,由于是直连metric为0,发送时metric会加1
  • 第二步:R1收到2.0.0.0的路由会记录一条2.0.0.0的路由,且该路由的metric为1
  • 第三步:R2的lo0口down掉,R1也会通过rip协议将自己的路由信息通知给R2,此时R1有2.0.0.0的信息,所以R1会将2.0.0.0发送给R2,由于该路由metric为1,发送时metric加1,发送的该路由metric为2
  • 第四步:R2收到的R1给它的2.0.0.0 metric 2的路由信息后,由于R2此时没有2.0.0.0的路由了,此时2.0.0.0 metirc 2,那么就会将这条路由记录在路由表中
  • 第五步:R2发送给R1的路由信息2.0.0.0 并将metric加1变为3,R1收到后由于其自身的2.0.0.0为通过rip学习到的,所以会更新此时R1的2.0.0.0 metirc 3
  • 第六步:R1会再次发送2.0.0.0 metirc 4给R2,R2由于其自身的2.0.0.0为rip学习到的,所以会更新2.0.0.0 metirc 4
  • ...
  • ...
  • 如此反复最终metirc到16截止

实际验证

动态路由-RIP协议_ip协议_12

R1发给R2的2.0.0.0 metric 2 的rip信息

动态路由-RIP协议_路由协议_13

R2发送R1的 2.0.0.0 metric 3

动态路由-RIP协议_路由协议_14

如此反复

动态路由-RIP协议_ip协议_15

动态路由-RIP协议_路由协议_16

直到metirc 变为16

动态路由-RIP协议_ip协议_17


水平分割

水平分割作用是路由器从某个接口学到的路由,不会从该接口再发回给邻居路由器,该功能默认是打开的。

在上面演示中已经产生了环路,此时我们将R2的回环口添加回来

动态路由-RIP协议_ip协议_18

开启R1和R2的水平分割功能

动态路由-RIP协议_ip协议_19

动态路由-RIP协议_ip协议_20


我们查看路由表

动态路由-RIP协议_路由协议_21

查看R2发给R1的2.2.2.0路由信息不回再由R1发回给R2了

动态路由-RIP协议_ip协议_22

down掉R2的lo0口

动态路由-RIP协议_ip协议_23

抓包看到R2立即通知R1 2.2.2.0不可达

动态路由-RIP协议_ip协议_24

查看R1的RIP路由信息

动态路由-RIP协议_ip协议_25


毒性逆转

路由器从某个接口学到路由后,将该路由的跳数设置为16,并从该接口发送给邻居路由器。

该特性是默认关闭的,且如果毒性逆转与水平分割同时打开,那么生效的是毒性逆转。

开启方法

动态路由-RIP协议_路由协议_26

动态路由-RIP协议_路由协议_27

可以看到R1收到R2的2.2.2.0的路由后,将该路由设置为metirc 16发回给R2

动态路由-RIP协议_路由协议_28


同理

动态路由-RIP协议_路由协议_29

触发更新

当路由发生变化时,立即向邻居设备发送触发更新报文

通过前面抓包可以看到,当down掉一个口或者启用一个口时会立即发送rip报文

 

RIP的其它操作

改变RIP的metric值

发送rip时可以对metric值做改变

rip metricin 5 在接受路由时增加度量值

rip metricout 5 在发送路由时修改度量值

我们对R1做操作

动态路由-RIP协议_ip协议_30

动态路由-RIP协议_ip协议_31


动态路由-RIP协议_ip协议_32


动态路由-RIP协议_路由协议_33

动态路由-RIP协议_ip协议_34

动态路由-RIP协议_路由协议_35

控制rip的收发

undo rip input  禁止接收rip数据

undo rip output 禁止发送rip数据

silent-interface g0/0/0 配置被动接口,只收不发

动态路由-RIP协议_ip协议_36

动态路由-RIP协议_路由协议_37

动态路由-RIP协议_ip协议_38


动态路由-RIP协议_ip协议_39

动态路由-RIP协议_ip协议_40






.