首先,要先知道,本身研究RIP没什么特别的意义,然而,探析了RIP,之后对于学习ospf,bgp有着极大的帮助。

概述

Routing information Protocol,路由信息协议,是第一代动态路由协议;所属距离矢量协议,基于跳数来进行路径选择(最多支持15跳)RIP协议有多个版本,分为v1/v2/ng版。也是真正意义上的第一个路由协议

The figure shows a network. The arrows highlight the path RIPselects. RIP selects the best path based on shortest hop count so it ignoresthe path with the faster T1 links.      

Be sure that you do not disparage RIP. It was developed in ahomogeneous network. If everything is connected via a single media type, thenbandwidth-based metrics reduce to hop count. In some cases RIP is moreappropriate than other protocols. It is extremely well tested. 


特征

OSI层次:应用层协议,基于UDP端口520

算法特征:距离矢量协议

有类无类:v1为有类、v2为无类

运行范围:IGP

最佳路径:管理距离120、度量值:跳数(路由器的个数)

部署

wKiom1gLZFzhXA7jAAER_WE0rH4992.png-wh_50

讲道理是需要掩码的,然而RIPv1的历史太久了,在RIPv1研发出来的年代,掩码的概念还没有

相关排错命令

wKioL1gLZHuQydf9AAAuh8trHg4269.png

wKiom1gLZHvD80rzAAA2Jrf6kX8747.png

wKioL1gLZHvQAxOCAAEEYQJga-w297.png

RIP路由分组

为什么一条network命令无论多么遥远,两台路由器都可以沟通?

Response

定义:RIP回复分组,用于更新/发送本地路由信息

特征:周期更新(25.5-30s)、广播更新(255.255.255.255)、不可靠更新(UDP

原理:

wKioL1gLZPeB9PF4AAA6HzoWJVA542.png-wh_50

抓包分析

wKiom1gLZPfh2QbKAABhnWzyTe4209.png-wh_50

回复包里面有着大量的路由信息,他们之间互相通告,使链路信息周期性更新

wKiom1gLZTCSbDChAAC2ST5_fj4240.png

观察发送的回复包,都是广播包,周期性发送(25s~30s),理论上是30s,然而实际上这么做就是为了避免在30s这个时间段出现峰值,导致网络瘫痪。这么做可以减少网络压力

Request

定义:RIP请求分组,用于初始化时向路由器邻居请求路由条目(即在初始化阶段才会出现)

wKioL1gLZqmgKxfyAAAj65gRxM0652.png

很特殊的一个单播包,当一个设备启动了这个协议,就把自己的信息发送出来,不用等待30s,就可以在局域网中发布自己的信息。可以更快的同步路由信息,使链路收敛

wKiom1gLZtLSNISjAABMRlkKcho772.png-wh_50

计时器

更新计时器

30s

用于实现对路由条目的周期交互

失效计时器

180s

若路由条目180s内没有收到更新,则失效

抑制计时器

180s

用于防环(这个是理论值比较难验证)

刷新计时器

240s

直接从路由表移除,“死透”

                   设备出故障的时候需要4min左右才能被知情,这个有些滞后,因此才说,坏消息传播的慢

wKiom1gLZx6gl6HcAABqs73cbv0475.png-wh_50

通过路由器的debug命令查看计时器的工作状态

wKioL1gLZx-hv4U8AAH1nAJSSYE460.png-wh_50

(这个时候我暂停R3的运行,再观察R1的反馈)

         首先,我们看到的信息都是RIP更新包,30s一个周期,这个是更新计时器在工作的结果,之后要观察紫色圈圈里面关于R3路由信息的更新时间(由于失效的时候没有信息返回,我们可以通过shou ip route rip来验证)

wKioL1gLZ0aDszglAAA66tS7Nbg171.png

240s的时候死透所以显示不可达

wKioL1gLaCOCgXpLAAIHaa_9BGY976.png-wh_50

比较一个现象,刚才的实验是用了4min才能知情R3出故障,那么这种情况呢?在将lookback接口关闭

wKiom1gLaCPTD4EPAAFXAejsO4c578.png-wh_50

这里是立即响应的,到底有什么区别呢?

答案:这里就是涉及触发更新/中毒路由的概念

当路由协议检测到网络拓扑发生变动时,不再需要基于计时器进行路由处理,直接发送故障/变动信息进行表项处理,此过程称为触发更新。

         中毒路由:

R3lookback口关闭

wKiom1gLaCTxI2UiAAD2d7K820s044.png-wh_50

会发现

wKioL1gLaCTRRRAOAADbvoxL2hM516.png-wh_50

很快的就能收到中毒信息,这个于RIP所说的等待8min不符,我这里我认为是由于这是IOS所具有的解决方案所致

RIP路由算法

路由分组是路由器的血液,路由算法则是路由器的灵魂,路由算法可以根据路径参数(度量值)生成路由条目。

内容:

Bellman算法(贝尔曼):

  如果收到邻居给的路由,若本地没有,则接收;

  如果收到邻居给的路由,若本地有,根据度量值对比,若优则录入,若劣质则丢弃;

  如果收到邻居给的路由,若劣质,但是还是从原有的邻居学到的,也录入。

RIP路由防环

协议在网络稳定的时候,啥事都没有。网络动荡的时候,问题就来了,由于RIPv1本身算法的问题,会出现环路。之后开发的路由协议是绝对无环的。

环路的最大特征就是路由互指(两台路由器互相踢皮球)

环路形成

wKioL1gLaCTjB6pOAACQJA_mpHI876.png-wh_50

一共5步形成环路:这个过程中R1R3正常运行RIP协议,每30s发送一次更新包

  1. R3C2的信息发送给R1(即发送R2路由表中的所有信息“A=1”)

  2. R1记录了A的位置(即AR3的下一跳,“R3 A=1”)

  3. 重点此时网络动荡(即R3的接口showdown

  4. R1仍然发送的更新包,然而R3没有回复,R1认为R3不在下一跳信息内,记录为R3A=2

  5. R1重复发送更新包,一直到度量值为16(这个过程为7.5min,即15*30s)

防环机制
水平分割

定义:从本接口收到的路由条目,不能再从本接口发送出去

wKiom1gLaCSyAizvAAAmdszQIas939.png-wh_50

The splithorizon technique attempts to eliminate routing loops and speed up convergence.The rule of split horizon is that it is never useful to send information abouta route back in the direction from which the original packet came. In theexample:

Router C originally announced a route to network 10.4.0.0 to routerB. It makes no sense for router B to announce to router C that router B hasaccess to network 10.4.0.0 through router C.

Given that router B passed the announcement of its route to network10.4.0.0 to router A, it makes no sense for router A to announce its distancefrom network 10.4.0.0 to router B.

Because router B has no alternative path to network 10.4.0.0, routerB concludes that network 10.4.0.0 is inaccessible.

In its basicform, the split horizon technique simply omits from the message any informationabout destinations routed on the link. This strategy relies either on routesnever being announced or on old announcements fading away through a timeoutmechanism.

Split horizonalso improves performance by eliminating unnecessary routing updates. Undernormal circumstances, sending routing information back to the source of theinformation is unnecessary.     

最大16

定义:若RIP的路由条目跳数达到16跳,则此路由失效并且被丢弃。

原理:(RIP只能支持直径为16跳的网络,最大有效为15跳)

路由中毒(毒化)

路由器将路由信息的跳数标记为无限大

定义:若RIP的路由条目发生故障时,会将此路由标记为16跳,并发送给邻居,告知邻居此路由有问题,尽快删除。

Route poisoningcloses the potential for longer routing loops. Fast convergence minimizes thechance for a routing loop to occur, but even the smallest interval leaves thepossibility open. With a poison route in place, router B can maintain asteadfast entry that network 10.4.0.0 is indeed down.

毒性逆转

定义:若RIP的路由条目发送故障时,会将此路由标记为16跳,并发送给邻居,邻居会返回16跳的中毒路由,实现确认。

Poison reverseoverrides the split horizon solution.

抑制计时器(180s

定义:当收到故障路由之后,默认会直接删除本故障路由;若此时从远方又收到此路由,则有可能造成再一次的环路;为了解决这个问题,设置抑制计时器,当收到故障路由之后,保持180s之后再删除路由条目。

RIPv2 VS RIPv1

v2是组播更新,支持无类子网,带掩码,是组播更新(224.0.0.9),v1是广播更新(255.255.255.255


wKiom1gLahKDYvmkAABVJ5qATFs448.png

关于自动汇总,这个是历史的遗留功能,虽然不再使用了,但是仍然没有去除,只能自己手工关闭

RIPv2实验——路由汇总

wKioL1gLahKgXBirAABtiZLEnuc622.png

wKiom1gLahLit_EPAADR6lkFXz8024.png

注意这种写法,跟创建lookback3lookback4lookback5之后给予地址172.16.1.1172.16.2.1172.16.3.1是一个意思,只是简洁了一些

wKioL1gLahKSZ3bFAABiJZBcZ3E050.png

wKiom1gLahLDf1u6AAB-a3UWvp4455.png

相当于只保留一个主类网络。之后检查在R2R3有没有收到路由更新

wKioL1gLahOBHRLZAAEpV_mj7kE463.png

wKiom1gLahOBU0q3AAEZSEwYsHw079.png

这里发现我们仅仅是在R1写了四条新路由,通告之后,在R2R3则相应的出现了8条路由信息(2接口*4网络地址)。可以想象当路由信息过多,接口数量增加的时候,路由表会相应的指数型增长。

为了给路由表减压,我们需要理解一个概念——路由汇总(这个是对路径调优)

wKioL1gLahOxciACAACOKQWuKj0284.png

效果

wKiom1gLahODqIcKAAHDleAN8Xc334.png

注意:

         这里要注意到两条命令no auto-summaryip summary-address一个是在部署ripv2时写的。因为auto-summary会自动汇总主网络号路由,很容易出现环路,所以需要关闭。而ip summary-address这个是手动汇总,是在项目开始之前,就已经规划好的,我们手写进去的(当然咯,之后编程能力强的话,直接用脚本也行,但本质上仍然是手写进去的)。