CCNA图文-11-RIPv1协议详解

  • A+
所属分类:网络运维
摘要

本文介绍经典路由协议RIPv1,虽然如今RIP协议已经很少出现在实际工作中,但可以用它作为入门,来理解路由间协议的工作方式;本文结合实例,详细介绍RIPv1的特征、配置。

文章目录

1.RIP主要特征

RIP(Routing Information Protocol,路由信息协议),是早期应用比较普遍的内部网关协议,是典型的距离矢量路由协议,适用于小型网络,最大的缺点是无法在具有冗余链路的网络中有效的运用。

RIP协议的默认管理距离是120,RIP所接收的路由信息都被封装在UDP协议的数据报中,在UDP的520端口接收来自远程路由的信息。

RIP使用Hop Count(跳计数)作为路径选择的度量值。最大跳数是15,如果最大跳数大于15,则认为该网络失效。RIPv1采用广播式更新,RIPv2采用组播更新方式,RIP默认每隔30秒周期性的发送整个路由表给邻路由。

2.RIP路由互相学习过程解析

RIP协议运行前R1、R2、R3的路由表中只有直连路由的信息,如下图(图1):

CCNA图文-11-RIPv1协议详解

1)运行RIP路由协议后,R1、R2、R3宣告各自直连网络

2)假设R1先发送路由更新,R1将自己直连网络10.1.0.0和10.2.0.0以1跳的度量值告诉R2。

3)R2收到R1的路由表后,将自己的路由与R1传过来的路由进行比较,R2发现自己的路由表中没有10.1.0.0,R2记下这条路由以及路由对应的接口和跳数1;并且R2发现自己的路由表中已经有10.2.0.0这个条目,而且是直连条目,直连路由的管理距离是0,学到的RIP路由的管理距离是120,所以R2忽略R1传过来的10.2.0.0这个条目。

4)R2把自己路由表中的直连网络10.2.0.0和10.3.0.0以1跳的度量值告诉R3;并且将从R1那里学到的10.1.0.0网络以2跳的度量值告诉R3。

5)R3收到R2发过来的路由条目,将自己的路由表和R2发过来的条目进行比较,R3发现自己路由表中没有10.1.0.0,R3记录下这条路由以及对应端口和跳数2;R3发现自己路由表中没有10.2.0.0,R3记录下这条路由和对应端口以及跳数1;R3发现自己的路由表中已经存在10.3.0.0,并且是直连,比R2发过来的RIP更新有更好的度量值,R3忽略R2发来的10.3.0.0。这样R3学到了完整的路由条目。

6)同理,R3也会将路由发给R2,R2再发给R1,最后所有路由都可以学到所有条目。

运行RIP后各路由上的路由表如下图(图2):

CCNA图文-11-RIPv1协议详解

3.RIP定时器

在运行了RIP协议的路由上查看RIP定时器的情况:

在不考虑使用任何防止距离矢量协议路由选择环路的情况下,可以这样来理解上面的四种定时器。结合下图(图3),默认情况下,网络中的路由30秒发送一次RIP路由更新,如果此时R1上面的"网路1"失效,R1发往R2的路由更新中不再含有"网路1",R2上的路由失效定时器、路由抑制定时器、路由刷新定时器同时开启,连续6个更新周期(180秒)后,R2都没有收到R1发过来的"网路1"的路由更新,R2认为"网路1"失效,这里用到的就是路由失效定时器(倒计时180秒)。在R2认为"网路1"失效以前(180秒内),如果R2收到发往"网路1"的数据,R2任然转发数据给R1。在R2认为"网路1"失效的前的这180秒中,"网路1"在R2上处于抑制状态。在接下来的60秒中(240-180,也就是R2认为"网路1"失效后),R2认为"网路1"可能down掉了,并且不再转发去往"网路1"的数据给R1。

CCNA图文-11-RIPv1协议详解

4.RIP路由环路形成解析

在上图中,R1将网络1的路由信息发给R2,R2学到了网络1并将度量值标记为1跳,即经过一台路由可以到达,下一跳是R1;路由R2将网络1的路由信息发给R3和R5,R3和R5都学到了网络1,并将度量值标记为2跳,即经过两台路由可以到达,下一跳是路由R2;R3和R5都将网络1发给R4,R4也学到网络1,并将度量值标记为3跳,下一跳路由是R3或R5,即从两台路由都能到达,R4去往网络1的数据将负载均衡。此时所有的路由都拥有一致的认识和正确的路由表,这时网络被称作”已收敛”。

此时,当网络1断开,R1将网络1不可达的信息发送给R2,R2将网络1不可达的信息发送给R3和R5,R4还不知道网络1不可达的信息,就在这个时候R4发送了一个更新给R5,认为通过R3可以到达网络1;当然也可能是发送给R3,告诉它通过R5可以到达网络1。这里假设是第一种情况,R5收到通过R4可以到达网络1的更新后,更新自己的路由表,并将网络1可达的信息发送给了R2,R2更新自己的路由表并发送给R3和R1。R3更新自己的路由表并发送给R4,至此,路由环路形成。

5.距离矢量路由环路的解决方法

距离矢量路由环路的解决方法有如下五种:

1)最大跳计数(maximum metric),RIP允许跳计数最大可以达到15,任何需要经过16跳才能到达的网络都被认为是不可达的。

2)水平分隔(split horizon),(使用图3举例)限制路由器不能按照接收信息的方向去将接收到的信息再发回去。比如路由R3和R5有关网络1的信息是从R2学习到的,它们不会将网络1的信息再从与R2相连的接口发回去。这样R4最终会学习到网络1不可达的信息。

3)路由中毒(route poisconing),路由中毒通过将故障网络设置成最大跳计数加1来暗示网络不可达,毒性反转是避免环路的另一种方法,比如R2学习到R1发送过来的网络1不可达的信息,首先它将网络1的跳计数更改成16跳,并且根据毒性反转,它将向R1送回一条网络1不可达的更新。

4)触发更新(triggered update),周期性发送更新,RIP是默认每隔30秒。

5)抑制定时器(holddown time),(使用图3举例)比如R2收到了R1发来的网络1不可达的信息后,R2首先标记此网络不可达,同时R2的抑制定时器启动,在RIP中抑制定时器是180秒倒计时,如果在抑制定时器到期前,又从R1收到网络1可达的信息了,那么删除这个抑制定时器,并且标记网络1可达;如果在抑制定时器期满前,收到一个来自其他路由的(R3或者R4)关于网络1的更新,并且这个更新具有更好的度量值(假设以前学到的是3跳,这里有其他路由告诉它只需要1跳就能到达网络1),那么R2删除抑制定时器,并且标记网络1可达;如果在抑制定时器到期前,R2收到另外路由器发来的关于网络1的更新,并且具有更差的度量值,那么忽略此更新;在抑制定时器期满后,R2删除抑制定时器,接收来自任何源路由的关于网络1的更新。

6.RIPv1配置实例

使用RIPv1来配置下图(图4):

CCNA图文-11-RIPv1协议详解

三台路由器配置相同的部分:

R1配置:

R2配置:

R3配置:

配置完成后大约等待十几秒查看一下R1的路由表:

断开R1和R2之间的链路,等网络再次收敛后查看R1的路由表:

a.负载均衡

从R1的路由表输出可以看到,去往23.0.0.0/24的路径有两条:

R1去往23.0.0.0/8网络的数据将被负载到这两条线路上,在本例中R1和R3之间的以太网线路速率为100Mb/s,而R1和R2之间的串行线路速率仅仅只有1.544Mb/s,可以看出RIP协议并不会不考虑线路带宽,仅考虑度量值,RIP默认支持四条线路的负载均衡,可以使用下面的命令更改最大负载均衡线路数:

现在来测试一下负载均衡是否被使用:

上面的测试中,之所以没有将数据负载到两条线路中,是因为思科的IOS软件提供了两种负载均衡的方式:

第一:基于每个分组的负载均衡,称作进程交换;
第二:基于每个目的的负载均衡,称作快速交换;
而IOS默认使用快速交换,如果使用进程交换,IOS将会将交替使用每条线路,下面关闭快速交换,使用进程交换:

b.查看路由协议

在R1上使用"show ip protocols"查看R1上运行的路由协议:

c.debug ip rip

使用"debug ip rip"实时监控路由收发RIP更新的情况:

d.水平分隔

查看某接口是否开启了水平分隔:

关闭R1 s0/0接口的水平分隔,再使用debug ip rip查看发送更新情况:

e.被动接口配置

从前面的Debug信息中包含了RIP向回环接口发送的更新,这些更新都是没有意义的,可以将回环接口设置成被动接口,这样这个接口将不再向外发送路由更新:

f.单播更新实例

请在GNS3中搭建下面的拓扑,图中(图5),SW1是普通交换机(127.0.0.1:8000,非IOU中的交换机),路由全部是c3640,通过配置单播更新,实现路由R1可以和R2相互学习路由,但不与R3交换路由:

CCNA图文-11-RIPv1协议详解

R1配置:

R2配置:

R3配置:

使用show ip route分别查看R1、R2、R3上面的路由信息,发现R1和R2可以彼此学习到路由信息,R3学习不到任何路由信息,也不向外发送任何路由信息。使用debug ip rip在R1和R2上可以查看到"sending v1 update to 123.1.1.2"这样的单播更新包。

g.触发更新

距离矢量路由采用的是周期性更新,可以在串口上使用触发更新,以太网接口不支持触发更新:

h.缺省路由

如下图(图6)所示,R1是公司内部路由,R2是公司边界路由,R3相当于ISP的边界路由。在公司内部运行了RIPv1协议。如果公司内部有许多路由,为了访问Internet,需要在公司内部每台路由上面都做默认路由指向公司边界路由R2。其实这里可以使用RIP缺省路由自动向公司内部路由宣告一条默认路由。然后在R2上做一条默认路由指向ISP的边界路由R3即可:

CCNA图文-11-RIPv1协议详解

R1配置:

R2配置:

R3配置:

下面是R1的路由表:

此时R1上虽然没有去往R3回环接口的路由,但是R1 ping 3.3.3.3仍然能够ping通,就是因为这条从RIP学习到的默认路由,但如果使用高级ping命令,让R1使用IP1.1.1.1作为源去ping R3,就ping不通了,为什么呢?因为R3上只有一条去往12.1.1.0/24网段的静态路由,它并不知道发往1.1.1.1的数据应该怎么发送,所以丢弃。

i.浮动静态路由

如下图(图7)所示,R1和R2使用快速以太网和串行线路相连,假如R1是公司总部路由,R2是分部路由,它们之间的快速以太网线路模拟快速专线连接,而串行线路模拟普通慢速线路;R1和R2运行RIPv1协议,在没有出现故障前,总部和分部使用快速专线通信,当专线发生故障时,要求自动切换到慢速串行线路,并且保持总部和分部的数据通信正常:

CCNA图文-11-RIPv1协议详解

R1配置:

R2配置:

这个时候随便在哪个路由上查看路由表,都只能看到RIP学到的条目

如果此时,我们手动关闭R2的fa1/0,再次查看路由表:

注意:在这个例子中因为GNS3模拟器的关系,需要关闭两端的fa1/0接口才能让静态路由起作用,而真实环境中只要关闭一端的端口,另一端立即就会down掉。

j.更改定时器

RIP的四个定时器是可以更改的,但一般不建议更改,更改方法如下:

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: