1.RIP:Routing Information Protocol

2.属于IGP(内部网关路由协议)属于DV(距离矢量路由协议)

3.RIPv1 有类路由协议 目前已经基本无人使用

RIPv2无类路由协议 支持VLSM,但是不支持CIDR

RIPng IPv6环境下的RIP

4.RIP工作在OSI的七层,是一个应用层协议,基于UDP进行封装,使用端口号UDP 520

5.RIP两个版本,都是即支持触发更新,也支持周期性更新(30s更新一次)

6.报文类型:

Request报文:当一台路由器被配置运行RIP协议,启用RIP进程之后,会通过被宣告进RIP进程的接口来发送Request报文,向域内其他已经运行RIP协议的路由器,请求路由表

当一台运行RIP协议的路由器收到了其他路由器发送过来的Request报文时,会立即给这台路由器发送一份自己的路由表

Update报文:更新报文,传递路由条目,每三十秒进行周期性更新

7.RIP只基于跳数(HOP)来做路由选择,而不会考虑带宽、延时等真正会影响网络的因素

8.早期IOS版本只支持最大支持六条链路进行负载均衡,但是新版的IOS最高可以支持十六条链路进行负载均衡,默认情况下只支持四条路径的等价负载均衡

防环机制:水平分割,当路由器通过一个接口收到了邻居传递过来的一条路由时,不会再将该路由条目通过这个接口发送出去。

9.RIP中的一些计时器

Update(更新计时器):30秒;

Timeout timer(路由条目在路由表中的失效时间):180秒,六倍的update时间,如果一台路由器在180秒内,没有收到邻居传递过来的关于某条路由条目的更新报文,则这条路由条目失效,在路由表中被置为possiblly down

Holddown timer(抑制计时器):180秒,该计时器的作用是,当路由器收到了一条路由条目,与路由表中的该路由条目的跳数不一致的路由时,路由器会忽略邻居传递过来的这条条数不一致的路由更新,将这条路由条目置为possiblly down,并对这条路由条目开启一个Holddown计时器,在180秒之内,如果邻居没有在给这台路由器发送跳数不一致的路由条目,则会将该路由条目直接从路由表中删除,如果该路由器继续收到了邻居传递过来的跳数不一致的路由条目,则会在抑制计时器到期之后,再继续接受邻居传递过来的关于该路由条目的路由信息,主要用于防环机制

Flush timer(刷新计时器):240秒,一台路由器如果在240秒内没有收到关于某条路由条目的更新信息,则会直接将该路由条目从路由表中进行删除

10.RIPv1和RIPv2两个版本的区别

RIPv1是有类路由协议,RIPv2是无类路由协议

RIPv1只支持自动汇总,RIPv2即支持自动汇总,也支持手工汇总;

RIPv1广播更新,RIPv2组播更新(但是可以在接口上使用ip rip v2-broadcast 启用ripv2的广播更新),224.0.0.9;

RIPv1不支持认证,RIPv2支持认证,思科设备即支持明文认证,也支持密文认证,其他厂商设备只支持明文认证;

11.RIP基本配置

router rip  如果只使用这条命令,默认开启RIPv1,只能发送v1的报文,只能接收v1版本的报文

version 2 如果使用这条命令,则只能发送v2报文,只能接受v2报文

no auto-summary 关闭自动汇总,主要用于不连续子网的网络情况,v1情况下可以使用该命令,但是不起作用,在show run中是看不到该命令的

network  network-number  公告直连网段

12.实验一,修改RIP计时器

实验拓扑如上图所示,完成设备基本配置,接口IP地址配置,三台路由器都启用RIPv2,关闭自动汇总,然后分别查看三台路由器上的路由表信息

R1路由表

R2路由表

R3路由表

R1上的路由配置摘要,可通过show ip protocol来查看,其他路由器一样可以通过这个命令来进行修改,此处不再一一列出

修改R1的计时器

在rip进程中修改R1的四个计时器,分别为更新周期25秒,失效计时器150秒,抑制计时器150秒,刷新计时器200秒

建议修改时,将失效计时器、抑制计时器修改为更新周期的六倍,将刷新计时器修改为更新周期的八倍,同时如果修改计时器,则建议域内所有运行RIP协议的路由器都进行修改,不建议只在一台路由器上进行修改;

修改完成之后,通过show ip protocol查看是否修改成功

通过上图可见,R1的计时器修改成功,同样的R2、R3路由器也通过上面的命令进行修改,此处不再截图详解

13.RIP的高级特性

(1)自动汇总:当一台路由器开启自动汇总之后,在将一条路由条目发送给邻居时,首先会比较这条路由条目的前缀与发送接口的IP地址是否处于同一个主类网络,如果不属于主类网络,则直接将这条路由条目的主类网络发送给邻居,如果这条路由条目的前缀与发送接口的IP地址处于同一个主类网络,则将这条路由条目以明细的方式发送给邻居,这就是自动汇总;

自动汇总,既可以汇总本地路由,也可以汇总邻居传递过来的非本地路由(如果邻居关闭了自动汇总,传递过来的是明细路由)

当启用RIPv1时,自动汇总默认是开启的,并且无法关闭,RIPv2默认开启自动汇总,但是可以通过no auto-summary来手工关闭

在上面的拓扑中,我们可以开启R2的自动汇总,根据上面自动汇总的定义,在R1上应该可以看到R2传递过来的关于2.0.0.0/8主类网段的路由条目,验证如下

为了验证可以汇总邻居传递过来的明细路由,我们可以将R1开启自动汇总,然后在R2上观察R1传递给R2的路由中,关于R3环回口3.0.0.0/8网段是否实现了自动汇总,验证如下

(2)手工汇总

RIPv2支持手工汇总,而RIPv1不支持手工汇总,只支持自动汇总;手工汇总又分为进程级汇总,即在一个路由协议进程内进行手工汇总;链路级汇总,即在宣告进路由协议进程的接口上进行手工汇总,RIPv2只支持在接口上汇总

依然是上面的拓扑结构,关闭三台路由器上的自动汇总,然后在R2上启用回环口10,20,30,40,其IP地址分别为172.16.8.1,172.16.9.1,172.16.10.1,172.16.11.1,如果需要进行手工汇总,则需要在R2的f0/0接口上进行配置如下

同时在RIP进程中宣告172.16.0.0/16主类网段

R1上验证路由条目

汇总路由失效的情况,只有当所有的明细路由都消失之后,才会导致汇总路由失效

汇总路由是存在路由黑洞的,例如上面的四个子网段,如果其中的一个或者两个网段被shutdown,在路由器上是不能将汇总路由shutdown的,依然会发送给邻居,导致出现路由黑洞

假如上面的拓扑中,对于R2而言,172.16.8.0-172.16.11.0这四个网段,不都是R2本地网断,其中8.0距离本地1跳,9.0距离本地2跳,10.0距离本地3跳,11.0距离本地4跳,在R2上进行手工汇总之后,172.16.8.0/22的汇总路由的跳数取最小值1;

手工汇总和自动汇总的优先级,自动汇总要比手工汇总高,即当一条路由条目即通过手工汇总进行公共,同时路由器也开启了自动汇总,则这台路由器在给邻居发送路由表时,会把这条路由条目以自动汇总的形式发送给邻居,而不会发送手工汇总的条目

一台启用自动汇总的路由器,当收到邻居(未启用自动汇总)传递过来的明细路由时,不会先将其进行汇总,然后存在路由表中,而是先将邻居发送过来的明细路由存储到路由表中,然后在需要给邻居发送路由更新时,在去检查这条路由条目是否需要需要进行汇总,如果需要进行汇总,则汇总之后发送,如果不需要进行汇总,则直接发送明细路由

(3)通过边界路由器向RIP域内注入缺省路由

边界路由器配置默认路由(同时指定送出接口和下一跳)指向ISP,然后通过在RIP进程中重分发静态路由,实现RIP域内所有路由器都可以学习到该默认路由,一般情况适用于边界路由器只有一条链路与ISP互联的情况,以上面拓扑为例,R2通过fa0/1口连接运营商

边界路由器配置默认路由(只配置送出接口)指向ISP,同时在RIP进程中使用network 0.0.0.0进行公告

Network 0.0.0.0命令的作用:将路由器本地所有状态为up up的接口宣告进RIP进程;当路由器配置有一条只指定送出接口的默认路由时,可以通过该命令将这条默认路由通过RIP进程传递给邻居

ip default-network 主类网络号

注意:主类网络号要求必须是边界路由器与ISP互联所使用的网段所在的主类网络号,实验中就是R2与ISP互联使用的24.1.1.0网段,其所在的主类网络就是24.0.0.0,所以命令后面要跟的就是24.0.0.0了,该命令不会影响边界路由器的路由表,但是域内其他的路由器会收到一条通过RIP学习到的默认路由

default-information originate

在RIP进程中使用default-information originate命令给下游的路由器发送一条默认路由,注意模拟器上使用该命令可能会有bug,需要将RIP进程删除,然后重新配置RIP即可

(4)被动接口(passive interface)

在不想要发送RIP更新的接口上,使用该命令,可以使RIP不再给该接口发送RIP更新,但是不会影响该接口所在网段的路由条目的发送

当一个接口被置为被动接口之后,既可以接收单播更新,也可以接收组播更新,还可以接收广播更新;发送方向,不能发送组播更新,也不能发送广播更新,但是可以在rip进程中使用neighbor 邻居地址,来单播发送路由表

例如,将R2的loopback 0接口置为被动接口,不再通过loopback 0发送路由更新,但是loopback 0所在网段2.2.2.0依然可以被RIP进程发送给其他路由器

(5)单播更新

一般用于帧中继环境下,为了节约带宽,减少路由器资源的浪费,可以将所有的物理端口都置为被动接口,然后在rip进程中互指邻居,直接单播发送路由表,

(6)使用广播发送RIPv2发送更新

主要为了解决早期一些老的设备,虽然启用了RIPv2,但是仍然不支持通过224.0.0.9这个组播地址,来发送和接收路由更新,所以就需要通过广播来给这样的老设备发送路由更新

(7)RIP的兼容性开关

默认情况下,启用RIPv1的路由器,只能发送v1版本的更新,只能接收v2版本的更新;启用RIPv2的路由器,只能发送v2版本的更新,只能接收v2版本的更新,但是可以通过下面的方式来修改不同版本之间的互操作性

下图是在fa0/0接口上,开启兼容性开关,使得路由器既可以发送v1,v2版本更新,也可以接收v1、v2版本更新

(8)RIP的认证

RIPv1不支持认证,RIPv2思科设备即支持明文认证,也支持密文认证,其他厂商设备只支持明文认证;

R1与R2之间明文认证

R1上的配置

定义钥匙链cisco,定义第一把钥匙,cisco,然后在接口上启用rip明文认证,并定义使用哪把钥匙链,注意此处用的cisco是钥匙链,而不是钥匙

R2的配置与R1相同,此处不再给出具体配置

R1与R3之间密文认证

R3上的配置

定义钥匙链R3,定义第一把钥匙,cisco,然后在接口上启用rip密文认证,并定义使用哪把钥匙链,注意此处用的cisco是钥匙链,而不是钥匙

R1的配置与R3相同,此处不再给出具体配置

(9)offset-list

通过调用ACL,来修改到达某条路由的跳数,既可以在出战方向,将跳数增大之后发送给邻居,也可以在入站方向将收到的路由更新,增大之后再加表

R3上将本地回环口增加三跳之后发送给R1,R3上的配置如下

 wKioL1ggVhiRV6gOAAAJnEWl5gs928.png                   

配置完成之后,在R1上验证R3环回口的跳数变为3跳,表明修改成功

wKioL1ggVkvB8pB7AAAhYvpJP5A018.png

(10)关闭水平分割

一般在帧中继的Hub节点关闭多点子接口的水平分割子接口模式下,no ip split-horizon关闭水平分割

(11)关闭RIP的更新源检测

当一台路由器收到了邻居传递过来的一条路由条目,首先会检查该路由条目的更新源地址(即该路由条目的发送者接口IP地址)与自己的接口是否处于同一个网段,如果不处于同一个网段,直接将该路由条目丢弃,如果处于同一个网段,则将该路由条目加表,如果我们不想对更新源地址进行检测,只要是邻居传递过来的路由条目,我们都直接加表,则可以在rip进程中使用命令no validate-update-source来关闭更新源检测

(12)修改RIP报文间延迟

当一台高端路由器在给低端路由器发送报文时,由于低端路由器性能较差,可能来不及处理低端路由器传递过来的报文,所以为了防止这种情况的发生,我们可以在高端路由器上使用这条命令,将路由器发送数据包的中间延迟稍微增大一些,这样可以避免低端路由器性能过差,无法处理报文,配置命令是在rip进程中,使用命令output-delay 25来进行修改,其中数字是可变值,一般建议修改为25即可;

(13)纯触发更新

只能在串行接口上,两端同时配置,按需链路,一方面由于RIP的周期性更新30秒,每30秒就要发送一次路由更新,建立一次虚链路,给企业增加额外的成本,另一方面由于串行链路带宽低,所以结合上述两个方面,应该关闭RIP的周期性更新,只有当网络出现拓扑改变时,才会发送更新,配置命令为串行接口模式下,使用ip rip triggered来启用纯触发更新