TCPIP卷一(7):Routing Information Protocol—-RIP | 网络之路博客(公众号同名)(其他平台网络之路Blog)
登录
  • 欢迎网络之路博客网站,分享有用的知识点,公众号:网络之路博客,B站:网络之路Blog
  • 如果您觉得本站对您有帮助,那么赶紧使用Ctrl+D 收藏吧,支持我们下
  • 远程技术支持的淘宝店铺已经开张了哦,传送门:需要的朋友可以点击查看

TCPIP卷一(7):Routing Information Protocol—-RIP

【汇总】TCPIP路由卷一

文档帖子汇总学习视频Book与实验手册学习必备软件
    博主也只是业余时间写写技术文档,请大家见谅,大家觉得不错的话,可以推荐给朋友哦,博主会努力推出更好的系列文档的。如果大家有任何疑问或者文中有错误跟疏忽的地方,欢迎大家留言指出,博主看到后会第一时间修改,谢谢大家的支持,更多技术文章尽在网络之路博客,http://ccieh3c.com

Routing Information Protocol

RIP作为TCP/IP协议族中最早出现的内部距离矢量协议,采用了Bellman-Ford算法,IETF针对RIP开发了两个版本,一个为v1,v2针对v1增强了许多特性。

RIP的基本原理和实现

tcpip

RIP协议使用UDP的520端,将路由器条目从开启了RIP进程的接口发送出去,RIP有两种消息类型:1、请求消息:用于向邻居请求一个邻居更新 2、响应消息:用于传递路由更新。 针对v1来说,使用广播地址255.255.255.255发送,而v2则使用组播地址 224.0.0.9。

当一个路由器开始运行RIP协议后,每个启用RIP协议的接口开始组播或者广播带有请求消息的数据包,并且监听来自其他路由器的RIP请求或响应消息,接收到请求消息的邻居路由器则回复它们路由表中包含的路由表信息,以响应消息回应。
当路由器收到关于邻居的响应消息后,它会查看这个响应消息中包含的路由条目是否为最新,如果最新则放入路由表,如果响应消息中包含的路由存在于路由表中,则比较两者之间的hop(跳数),小的则进入路由表,替换掉原来的路由条目。

RIP的计时器和稳定性

无论是v1还是v2,在一个路由器上运行RIP后,每个30s更新周期就会从运行了RIP协议接口不断发送响应消息,当然,其中不包括水平分割原则在内的路由信息,这30s不是绝对的,为了防止同步存在,引用了一个随机变量值,这个变量值为15%,也就是说在25.5~30s之间变化。

无效计时器:当一个运行RIP的路由器,成功收到一条路由后,这条路由就会关联一个计时器,这个计时器初始化为180s,当每个更新周期内从邻居那再次收到这台路由后,则刷新计时器(还原180s),如果在6个更新周期,也就是180s后没有收到这条路由的信息,那么就进入possibly down状态,标记跳数为16跳。

刷新计时器(flush timer):这个计时器在240~60s,在Cisco中为60s,其实,这60s是为了让进入possibly down状态的路由,正确的通告给邻居,让它们知道这条路由已经失效了, 由于进入possibly down状态之前必须要经历180s,所以,flush timer的总时间为,invalid timer 180s +possibly down 60s=240s

抑制计时器(Holdwn timer):这个计时器在Cisco路由器上是存在的,虽然IETF的RFC中并没有介绍holdwns,它的作用是当一条路由更新的跳数大于现存在路由表中的跳数,那么这条路由则进入180s的抑制阶段,直到180s后如果还是从邻居收到同样的跳数,那么该路由的信息被更新。

RIP Version 1

一、RIP V1的消息格式
tcpip

1、命令:有1~2的取值,1代表请求信息,2代表响应消息
2、版本号:标示该rip的协议工作在哪个版本
3、地址族标示:对于IP来说为2
4、IP Address:路由的目标地址
5、度量:RIP以跳数为度量,取值1~16
6、无论是V1还是V2,RIP每个更新包中最多携带25个条目

可以看出来,关于RIP v1中许多字段没有比定义,都是为未使用,也同时说明ripv1工作在于有类路由协议的情况下,因为它在传递路由信息的时候 是不携带子网掩码信息的。

案例分析一:有类路由协议更新路由的过程

tcpip

地址信息如图标识,保证直连网络能通
R1(config)#router rip
R1(config-router)#network 12.0.0.0

R2(config)#router rip
R2(config-router)#network 12.0.0.0
R2(config-router)#network 172.17.0.0
R2(config-router)#network 172.16.0.0

R3(config)#router rip
R3(config-router)#network 172.16.0.0
可以看出来,RIP的宣告方式是直接宣告主类网络,由于RIP是早期的路由协议,所以,不能通过反掩码的方式来匹配宣告的范围。

Network的含义:匹配上network范围的网段都参路由协议,并且把这个网段宣告出去。

tcpip

可以看出来,RIP v1的更新方式非常简单,就是以广播形式,4个255,并且周期性的更新路由表的所有信息给邻居,也就是发送Response,关于Request的话,只有当RIP刚开始启用,或者通过人为的方式clear ip route * 它才会发送Request的信息,来请求邻居的路由。

tcpip

可以看出,抓包内容中,携带的内容与卷一给出的数据包格式是一样的,命令为2,也就是response, 版本为1, IP地址、地址族、度量值,并没有携带关于任何的子网掩码信息。

地址族:默认情况下,所有TCP/IP协议都工作在IPv4下,所以,不需要手工去输入关于地址族的信息,如果对于以后接触了MPLS VPN或者VRF,IPV6组播的话,那么都需要跟在特定的地址族中进行对应的操作。

tcpip

可以看出来关于172.17.1.1/24的路由条目,在R3收到以后是172.17.0.0/16了,而172.17.2.1/24,则不便,下面看下有类路由协议的更新规则和接收规则

R2发送更新规则

1、2向3广播的网络网络是否与源接口(发送路由更新的接口) 处于同一个主类网络
2、如果不是,则R1在主网络边界自动汇总网络或子网并广播该网络
3、如果是,则判断网络(所连接的掩码)与源接口是否有相同的子网掩码
4、如果是,则广播该路由
5、如果不是,则丢弃该路由。除非次路由是主机路由,并且路由器支持。

R3接受更新的规则
1、判断从更新接受的子网与接受的端口是否处于同一主类网络
2、如果是,则R3使用接受接口的掩码。如果是32位路由,则R3使用主机掩码
3、如果不是,则判断主网络中的任一子网是否已在路由表中,并且是从另外一个接口所学习到
4、如果是,则R3忽略更新
5、如果不是,则路由器R3用有类掩码。

1、关于172.17.1.1/24的路由,查看与更新源接口是否是同一主类网络,在这里172.17和172.16明显不处于同一主类网络,所以,则在边界执行自动汇总,以172.17.0.0/16广播该子网

2、关于172.16.2.1/24,它与更新源接口是处于同一主类网络,紧接着判断是否与源接口有相同的子网掩码,在这里都为24,所以,广播该路由信息。

3、假设这时候,把R2的172.16.2.1/24改成25的话,那么它还会收到路由么?

R2(config-if)#int lo 1
R2(config-if)#ip add 172.16.2.1 255.255.255.128
R3#clear ip route *

这里说下clear ip route *的作用,因为对于RIP来说,它是没有邻居的概念的,所有的路由都存放在database中,当执行了clear ip route *后,就是强制让RIP发送Request消息给邻居,重新获取路由条目。

tcpip

可以看到,关于172.16.2.0/24的路由信息,并没有收到,这是因为它跟源接口处于同一主类网络,但是子网掩码不匹配,所以,直接丢弃。

案例分析二:主机路由出现的原因

这是卷一中没有提到的,关于RIP v1来说,有时候我们在做实验的时候,莫名奇妙的就有条32位的主机路由,它是怎么出现的呢?

tcpip

关于12.1.5.0在R1上可是以24位的掩码出现的,并且,在R1上更新该路由的时候,与源接口处于同一主类网络和子网掩码也是相同的,那么它为什么会出现呢。很简单,关于有类路由协议除了在发送时有规则,而且在接收时候,同样有规则进行匹配,可以看之前提到过的有类协议接收时的规则, 2、如果是,则R2使用接受接口的掩码。如果是32位路由,则R2使用主机掩码。

这条32位路由出现的规则:路由表是用于存放网段信息的,所有因该都是网络地址,而不是主机地址,但是在RIPv1中,当收到一条路由的时候,如果是同一主类,那么该接口IP地址的掩码长度来检查,最后计算出是否为主机地址,如果是,就以32位的主机路由存放在路由表中。

当R2收到一条RIPv1更新过来的12.1.5.0的网段,会用自己接口的掩码长度来进行计算看是否属于主机路由,过程为23位掩码的长度为9位,那么就查看这条路由的后9位是否全为0,如果不是,则为主机路由,12.1.5.0 的5.0换算成二进制为0000 0101 0000 0000,第9位为1,不是全部为0,所有会以32位的主机路由存放在路由表中,而如果是12.1.6.1/24的话,那么 6.0 表示为 0000 01100 0000 0000 ,9位全部为0,所以会以接口的掩码存放在路由表中。

案例分析三:Secondary的应用

tcpip

这时候,R3的地址已经改为23.1.1.2了,那么在正常情况下 R2和R3是相互收不到对方的路由信息的。

tcpip

通过debug信息可以看出来,R3忽略了来自1726.1.1的跟新,原因是不在同一网段中

这时候,在R3上配置一个secondary的地址,与R2处于同一网段

R3(config)#int f0/1
R3(config-if)#ip address 172.16.1.2 255.255.255.0 secondary

tcpip

发现开始接收和发送跟新了,发送更新的时候,则以23.1.1.2主地址和辅助izhi 172.16.1.2同时发送更新。

tcpip

路由已经成功收到了,关于辅助地址还有很多的应用,比如不连续子网的解决方案,但是,对于现网中 已经不存在这样的环境了,所以,只需要了解有这么种情况存在即可, 我们学习网络知识,因该以实际环境的情况下进行学习,对于已经淘汰或者即将不用的技术,只需要做适当的了解。

RIP Version 2

RIP v2在v1的基础上增加了许多扩展性,同时v2作为无类路由协议的存在,因为它的字段中增加了子网掩码信息。

RIP Version 2的协议字段

tcpip

RIPv2的数据包字段:

可以看出,V2对于协议字段增加了,路由标记、下一跳、和子网掩码,这也使得v2更加适合当前的网络,路由标记在后续的路由协议中都会提到,它就是把另外一个路由协议的路由重分布进当前的路由协议中,打上一个烙印,发后续做策略或者过滤使用。

另外一个改变,就是RIP v2采用的是组播更新了,使用的地址是224.0.0.9,组播更新有什么好处? 先谈下广播更新,一个路由器收到一个广播的时候,先查看的是二层的封装信息,MAC地址在二层显示为全F,一个路由器收到一个关于全F的数据包,必须交给三层以上进行处理,再次看 组播更新,由于组播的地址是可以与二层MAC做映射关系的,224.0.0.9对应的MAC地址是0100.5e00.0009 ,至于怎么换算,在组播部分在讨论。一个路由器收到一个关于组播地址的MAC,它只会查看是否与监听这个MAC的进程存在,比如开启了RIP,那么除了监听RIP的UDP5 520端口以外,其实还会监听组播MAC地址的,相当来说组播更加节约资源和安全性。 对于,这类组播地址,称为本地链路地址,也就是说TTL=1,只能和相连的路由器进行路由协议数据包的交互。这点是卷一中没有提到过的。

案例分析一:与RIPv1的兼容性

对于RIPv2的新版本定义的时候,考虑到网络中可能有些主机或者路由器还处于v1的状态,RFC1723中定义了一个兼容性开关,允许v2与v1之间进行相互操作。

tcpip

地址信息如图,在R1上运行v1,而R2与R3则运行V2版本。

R1(config)#router rip
R1(config-router)#network 12.0.0.0

R2(config)#router rip
R2(config-router)#version 2
R2(config-router)#network 12.0.0.0
R2(config-router)#network 172.16.0.0

R3(config)#router rip
R3(config-router)#network 172.16.0.0
R3(config-router)#version 2

tcpip

可以看到 关于R1运行的是RIP v1,而它接收了来自R2的v2的路由更新

tcpip

而R2则忽略掉关于从12.1.1.1来的路由更新,不合法的版本

tcpip

从show ip protocols可以查看当前运行路由协议的情况,可以看到 当前RIP处于v1版本,发送的是send version 1,receie any version,也就是说接收任何版本的信息。

tcpip

所以,R1的路由表中有关于其他网络的路由信息

tcpip

R2没有收到任何的信息,因为它忽略了来自R1的更新

tcpip

可以看到关于R2是运行version 2的,所以它只send verison 2 , rcceive version 2 ,对于R1发送过来的RIP包携带的版本字段为1,所以,直接忽略了

解决办法

R2(config)#int f0/0
R2(config-if)#ip rip receive version 1 2

这时候,让R2在f0/0的接口行,能够接收v1的路由信息。

tcpip

路由已经收到了,32位主机路由已经介绍过股则了,那么为什么12.1.6.0是23位的,它从发送规则来看的话,因该是24位的,因为接口处于24位,但是,不要忽略了接收规则,它也会匹配是否主类网络,如果是,则以R2的接口地址掩码作为该路由的掩码,也就是12.1.6.0为23的原因。

案例分析二:自动汇总和手动汇总

tcpip

地址信息如图,所有路由器都运行RIP v2,查看路由的情况

tcpip

关于R1收到的路由信息都是主类边界的,这是为什么?

因为,无论是RIP还是EIGRP在默认情况下,都是开启了自动汇总的,自动汇总在某些环境下就不是那么好了,这样会造成路由不精确性,所以,我们必须在RIP上面关闭自动汇总。

在RIP进程中,输入 no auto-summary

tcpip
tcpip

每个路由器都以正常的掩码显示了。

手动汇总,对于12网段的路由来说,在R3中有4条信息,那么我们可以让它汇总成一条存在于路由表,这样能够加快查表速度,和路由器的资源。

R1(config)#int f0/0
R1(config-if)#ip summary-address rip 12.1.0.0 255.255.0.0

tcpip
tcpip

关于路由已经汇总了,这样有效的节约了路由表的资源。

案例分析三:被动接口和单播更新

    被动接口在实际应用中是非常广泛的,也是非常有必要的,在IGP协议中,包括RIP、EIGRP、OSPF、ISIS都支持被动接口的特性,被动接口就是让该接口不参与某个路由协议的进程,不同的协议实现不同,比如RIP实施被动接口,但是,它还是能接收更新,但是,在EIGRP或者OSPF中则不收也不发。
tcpip

在这个网络中,R1和R2需要进行正常的RIP路由更新,但是,为了安全起见,不向PC发送RIP的更新信息,防止让不合法的用户监听网络中的信息,通过注入恶意的路由,影响网络的正常。 这里R1有个loopback口 1.1.1.1/32

R1(config)#router rip
R1(config-router)#passive-interface f0/0

R2(config)#router rip
R2(config-router)#passive-interface f0/0

tcpip

这时候,R2和R1收不到任何的路由信息了,因为接口被抑制了。

R1(config)#router rip
R1(config-router)#neighbor 172.16.1.2

R2(config)#router rip
R2(config-router)#neighbor 172.16.1.1

tcpip

这时候,R2就能够收到关于R1的路由更新了。

主机是收不到关于这个的路由信息的,因为R1这时候是单播更新了。

案例分析四:认证

关于RIP的认证,支持MD5和明文认证,明文认证非常简单,通过配置一个共同的key,匹配了则认为路由正常,如果这时候非法者在中间进行抓包的话,那么这个密码是可见的,所以对于明文认证,不建议采用。

MD5的工作方式:也是双方配置一个key,但是在发送路由更新的时候,会把路由条目信息和这key做hash,得到的结果放入RIP的数据包中,当邻居收到以后,它会以同样的方法,路由条目信息+key做hash,与之前的做比对,如果匹配则认证通过,不匹配则不接收。这样,既保证了安全,又不让key在报文中出现。

R1(config)#key chain 1
R1(config-keychain)#key 1
R1(config-keychain-key)#key-string cisco
R1(config)#int f0/0
R1(config-if)#ip rip authentication mode md5
R1(config-if)#ip rip authentication key-chain 1

tcpip

提示无效的认证,则时候需要在R2上配置对应的Key才行

R2(config)#key chain 1
R2(config-keychain)#key 2
R2(config-keychain-key)#key-string cisco
R2(config)#int f0/0
R2(config-if)#ip rip authentication mode md5
R2(config-if)#ip rip authentication key-chain 1
注意,在RIP中是不需要匹配key id的,但是,在EIGRP中必须匹配,否则认为不无效。

tcpip

这时候,路由已经成功收到了。

总结:关于RIP协议在现网中应用不是很多了,可以说已经是淘汰的协议,所以,在学习的过程中,我们只需要了解这个协议的特性和工作过程即可。没有太多必要去深入学习该协议,对于后续的EIGRP和OSPF则因该多深入,因为在现网中应用是非常多的,特别是OSPF。

下载对应文档

百度盘下载博客资源汇总与学习思路
如果下载地址失效,请联系博主或者在下面留言,谢谢。下面也有其他您需要的资源推荐哦

关于博客资源下载说明

首先,感谢大家对网络之路博客的支持,本站所有资源都是开放下载,不做任何限制,资源都是上传在百度盘,分为两种类型:
(1)第一种是书籍PDF与视频类,全部放在博客分享,觉得对大家学习有帮助的博主会收集好、然后以博主的经验整理分类后排序好分享出来。
(2)第二种是技术性文章与视频,全部放在公众号(网络之路博客)/B站(网络之路Blog)发布,以博主原创为主,主要分享系列为主,由浅入深的带大家了解工作中常用到的一些网络技术,当然也会分享一些比较经典的案例。
(3)分享资源有涉及到您的利益以及版权问题,请联系博主,24小时候内删除。
想第一时间收到最新更新内容吗,点击获取~~~

点击查看详情

(广告)博主自主原创最新实战课程

点击查看详情


(广告)远程技术支持(设备调试),有搞不定的找我,价格实惠,为您解决实际工作上的问题

远程技术调试与技术支持,点击查看详情


原创与收集的内容,允许转载,转载时请务必以超链接形式标明文章原始出处,博客地址http://ccieh3c.com。

喜欢 (1)
[]
分享 (0)
公众号:网络之路博客(其他平台网络之路Blog)
分享一些自己懂的技术知识点,希望对大家有帮助。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址