RIP协议
虽然淘汰了,依旧学的原因是会考
他是最早的动态路由协议
RIP协议概述
- RIP是Routing Information Protocol(路由信息协议)的简称
- RIP是一种基于距离矢量(Distance-Vector)算法的的路由协议
- RIP协议适用于中小型网络,分为RIPv1和RIPv2
- RIP支持水平分割、毒性逆转和触发更新等工作机制防止路由环路
- RIP协议基于UDP传输,端口号520
RIP的工作流程

假设如上图,每个路由器左右两侧各个网段相互不同,每个路由器下方是对应的路由表,也是就标明每个路由器哪个接口是哪个网段;
假设RIP已经配好了,每台路由器会以广播的形式给每个参与RIP的接口上发送一个路由更新请求

比如说R1从2口发送一个广播,请你把你的路由表发给我;R2收到后,他会用一种广播的形式把他所有的路由表全部发送给R1;当R1给R2发完请求,当然R2也要给R1发送请求,那么R1就会给R2发送两条路由;
R2收到路由后会发现有一个自己也有的路由2.0网段,虽然R2有2网段,但是不代表不学,而是要做对比,也就是路由选择;
但是R2自己的2.0来源是直连,所以优先级是0,但是从R1来的2.0是rip优先级是100,所以他会选择自身的2.0

然后R2就从R1中学习到1.0网段,而对应是哪个接口是通过路由传来的接口来确定的
第一轮学习后,R1学到3.0;R2学到1.0和4.0;R3学到2.0网段

直到第二轮学习才会让R1和R3的路由交换,然后完成路由学习
虽然完成路由学习,但是RIP都会每隔30s发送一次自己的路由
如果每个好几个30sR1都没收到R2传来的4网段,就说明4网段挂了,就会删除网段
RIP路由环路问题
RIP路由环路是一个三层环路问题,在前面的拓扑图中,在物理层面上是没有环路的,路由器的环路可能不是物理环的问题,他是个逻辑环
之所以要等R2要等R3多发两次才能确定4网段挂掉是因为防止4网段是诈死;
RIP要等待的次数是6次,每个30s一次那么就需要180秒才能确认一条路由挂了
如果4网段挂了,但是在R2在180s之前都无法确定4网段死亡,那么就会先保留,但是同时R2又在以30s为间隔发送路由信息,但是此时R3收到后就会发现多了一条4网段,这个时候就会认为是一条新路由,那么就会学习那条新路由,然后导致路由环路问题
RIP计时器
- 更新计时器
- 30s
- 用来更新路由信息
- 失效计时器
- 180s
- 路由打上posibly down标签,路由设置为16跳
- 如果挂了有6个周期,就认为他真正挂了
- 刷新计时器
- 120s
- 彻底删除路由,在前面的180s过完后,再等120s来确认他挂掉
- 抑制计时器
- 180s
- 路由信息失效,被打上PD标签
- 从其他接口收到比原路径更差的路由更新
- 这里就是下面的防环机制中之一
防环机制
为了解决上述问题,RIP提出了6个防环机制:
- 水平分割
- 从某个接口收到的信息不回从该接口回传
- 但是该机制影响了路由回传,路由回传并不是完全没有意义,对于之前的图来讲,R3要收到R2回传的4网段可以用来确认R2学会了R3的4网段
- 毒性逆转
- 从某个接口收到的路由信息会设置为16跳后回传
- 这就涉及到最后的最大跳数,将收到的路由信息设为16跳回传后,检查的目的达到了,同时路由器也不会重复学习
- 路由毒化
- 补充:在路由器发觉自己的某个网段消失了,不会立刻在路由表中删除,而是标记为失效状态
- 当路由失效,标记为16跳,并通告邻居,使邻居及时使该路由失效
- 这样就可以让路由删除失效路由的时间大大缩减
- 抑制计时器
- 通过抑制计时器来防止路由学到更差的路由,也就是物理环路上另一条到达被删除网段路由器的路由信息
- 触发更新
- 当路由失效,不用等待更新周期,立即发出路由更新,来通告错误
- 最大跳数
- 不接收大于15跳的路由更新
上述的一系列机制都是RIPv1的机制,但是实际运用中,用的是RIPv2
RIPv2
在基于RIPv1上新增四个功能:
- 报文以组播发送,组播地址224.0.0.9
- 在原来是广播发送
- 路由更新携带子网掩码
- 所以RIPv1是没有子网掩码的,因为RIPv1发明的时代还没有子网掩码
- 在没有子网掩码的时候,会出现偏差,因为是靠A,B,C类地址的特定开头来判断的
- 比如172.16.1.0/24和172.16.2.0在RIPv1的情况会被认为是同一条路由
- 可以关闭自动聚合,支持手动聚合
- 聚合的作用就是将多条路由聚集到一块,减小路由表的规模,有利于遍历机制
- RIPv1不具备手动聚合的功能,都是自动聚合,但是到了RIPv2默认依旧是自动聚合,需要自己手动改
- 比如说还是刚刚的172.16.1.0/24和172.16.2.0虽然带了子网掩码了,但是不看,直接先自动聚合为172.16.0.0/16
- 支持身份验证
- 就是支持在在两台路由相连上支持配置密码,如果两边密码配置连接不一致的话,就无法相互学习路由
常用命令
-
h3c\]rip 'process id' * 创建RIP进程,进入RIP协议视图
- 更改协议版本为v2
-
h3c-rip-1\]undo summary * 关闭自动聚合
-
h3c-rip-1\]slient-interface 'interface number' * 配置静默接口 * 静默接口上不会发送RIP协议报文
- 配置RIP接口身份验证
实验
补充
宣告接口的原则:
rip在宣告网段的同时也要宣告接口,有两种接口是需要宣告的:
1.需要通过该接口与对方邻居传递路由
2.该接口所在的网段路由需要传递出去给邻居学习
RIPv1不带子网掩码的后果
实验拓扑

为了防止设备过多不好启动,所以给两侧路由器配置环回口来模拟PC
在图中,如果在不看子网掩码的情况,可能会认为四个环回口在一个网段
先配置IP地址
R1配置:
[R1]int g0/0
[R1-GigabitEthernet0/0]ip add 200.1.1.1 24
[R1-GigabitEthernet0/0]int L0
[R1-LoopBack0]ip add 172.16.0.1 24
[R1-LoopBack0]int L1
[R1-LoopBack1]ip add 172.16.1.1 24
R2配置:
[R2]int g0/0
[R2-GigabitEthernet0/0]
[R2-GigabitEthernet0/0]ip add 200.1.1.2 24
[R2-GigabitEthernet0/0]int g0/1
[R2-GigabitEthernet0/1]ip add 200.2.2.2 24
R3配置:
[R3]int g0/0
[R3-GigabitEthernet0/0]ip add 200.2.2.3 24
[R3-GigabitEthernet0/0]int L0
[R3-LoopBack0]ip add 172.16.2.1 24
[R3-LoopBack0]int L1
[R3-LoopBack1]ip add 172.16.3.1 24
配置IP地址后就在R1上线配置RIP
输入rip后面需要接一个进程号, 因为同一个路由器可能不止跑一个RIP进程,就比如下图,左侧路由器跑rip进程1右侧跑rip进程2,但是左侧的路由学到的内容不会给右侧路由学习,同样右侧学习的路由也不会给左侧的路由器,所以如果要在路由器上配置多个RIP就要用RIP进程号区分
但是一般情况只会运行一套RIP,如果只输入"rip"不写进程号,那么默认就是1
接下来宣告,根据前面的补充点,情况一的接口就是拓扑图中的R1的g0/0口,因为他通过这个口与邻居传递路由,其次情况二的接口就是两个环回接口L0和L1
但是在实际宣告中,是宣告网段,宣告之后,路由器会把每个接口的ip和宣告网段去匹配,如果匹配成功,那就用这个接口进行rip协议报文的传输,也就是用来接收路由更新
比如说这里宣告200.1.1.0网段,那么路由器发现他和g0/0口的ip匹配
[R1-rip-1]network 200.1.1.0
如果宣告了172.16.0.0网段就会导致左侧两个环回口都能匹配,就会路由都传出去,同样的,这两个接口也会接收路由更新;
[R1-rip-1]net 172.16.0.0
但是这两个接口在实际情况下是接PC的,PC也用不了rip,所以毫无意义,所以要避免rip给业务接口发送广播的rip报文,于是要给业务接口配置静默接口,虽然取消宣告,也可以解决问题,但是取消宣告172.16.0.0网段,那就无法通信了
所以在配置RIP的时候一定要把业务接口配置为静默接口
因为RIPv1不带掩码,所以宣告172.16.1.0和172.16.2.0都只会宣告172.16.0.0网段

现在去R2和R3宣告路由
R2:
[R2]rip
[R2-rip-1]network 200.1.1.0
[R2-rip-1]network 200.2.2.0
R3:
[R3]rip
[R3-rip-1]network 200.2.2.0
[R3-rip-1]network 172.16.0.0
此时查看R2的路由表发现,本来应该配置的是24位的路由,在这里变成了16位,因为R1不带子网掩码的问题

然后再路由表中,两侧路由是等价的,那么根据前面学的等价路由是用来负载均衡的,此时R1的环回口发出一个包给R3的环回口,通不通过要看运气
所以这就是不能带子网掩码的问题
此时要解决问题也很简单,在每个路由器的rip中敲
[R1-rip-1]version 2 #开启版本二
[R1-rip-1]undo summary #关闭自动聚合
如果不关闭自动聚合就会又回到之前的问题上
其他路由器操作一致
配置完三台路由器后查看R2路由表

现在就有了几条24位的ip地址了
但是上面依旧有个16位的,因为要等待180s更新,但是不想等可以退到用户视图敲命令:
<R2>reset rip 1 process
Reset RIP process? [Y/N]:y
然后再次查看路由表,原来的16位就没有了

但是整理rip还没有配置完,还要让业务接口收不到协议报文,那么就要配置静默接口,在协议视图下配置:
[R1-rip-1]silent-interface LoopBack 0
[R1-rip-1]silent-interface LoopBack 1
这里只演示R1上的配置,这个实验中是用环回口做模拟PC,所以在实际使用中,如果是g0/1口接PC,那么就选择g0/1做静默
完成配置后,R1可以ping通172.16.3.1

给rip配置密码
比如这里给R3的G0/0口的RIP配置密码,密码为123456
[R3-GigabitEthernet0/0]rip authentication-mode simple plain 123456
然后刷新一下rip进程,再查看路由表发现,没有学到任何的路由

如果此时给R2的g0/1口,也就是和R3相连的口配置相同的密码
[R2-GigabitEthernet0/1]rip authentication-mode simple plain 123456
再次查看R3的路由表(需要等待30s左右)

这样R3又在R2身上学了三条路由