计算机网络-网络层-内部网关协议RIP
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络-网络层-内部网关协议RIP相关的知识,希望对你有一定的参考价值。
参考技术A RIP (Routing Information Protocol))是内部网关协议IGP中最先得到广泛使用的协议,它的中文名称叫做 路由信息协议 ,但很少被使用。RIP是一种分布式的基于距离向量的路由选择协议,是互联网的标准协议,其最大优点就是简单。RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录(因此,这是一组距离,即“距离向量”)。RIP协议将“ 距离 ”定义如下:从一路由器到直接连接的网络的距离定义为1。从一路由器到非直接连接的网络的距离定义为所经过的路由器数加1。“加1”是因为到达目的网络后就进行直接交付,而到直接连接的网络的距离已经定义为1。例如路由器R1到网1或网2的距离都是1(直接连接),而到网3的距离是2,到网4的距离是3。
RIP协议的“距离”也称为“跳数”(hop count)吧,因为每经过一个路由器,跳数就加1。RP认为好的路由就是它通过的路由器的数目少,即“距离短”, RIP允许一条路径最多只能包含15个路由器 。因此“距离”等于16时即相当于不可达,可见RIP只适用于小型互联网。
"需要注意的是,到直接连接的网络的距离也可定义为0(采用这种定义的理由是:路由器在和直接连接在该网络上的主机通信时,不需要经过另外的路由器。既然每经过一个路由器要将距高加1,那么不再经过路由器的距离就应当为0)。但两种不同的定义对实现RIP协议并无影响,因为重要的是要找出最短距离,将所有的距离都加1或都减1,对迭择最佳路由其实是一样的。"
RIP不能在两个网格之间同时使用多条路由 ,RIP选择一条具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时廷)但路由器较多的路由。
RIP协议和OSPF协议,都是分布式路由选择协议。 它们的共同特点就是每一个路由器都要不新地和其他一些路由器交换路由信息。我们一定要弄清以下三个要点,即和哪些路由器交换信息?交换什么信息?在什么时候交换信息?
RIP协议的特点是:
(1) 仅和相邻路由器交换信息 。如果两个路由器之间的通信不需要经过另一个路由器,那么这两个路由器就是相邻的。RIP协议规定,不相邻的路由器不交换信息。
(2) 路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表。 也就是说,交换的信息是:“我到本自治系统中所有网络的(最短)距离,以及到每个网络应经过的下一跳路由器”。
(3) 按因定的时间间隔交换路由信息 ,例如,母隔30秒。然后路由器根据收到的路由信息更新路由表。当网路拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
路由器在刚刚开始工作时,它的路由表是空的,然后路由器就得出到直接相连的几个网络的距离(这些距离定义为1)。接着,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。但经过若干次的更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
看起来RIP协议有些奇怪,因为“我的路由表中的信息要依赖于你的,而你的信息又依赖于我的。”然而事实证明,通过这样的方式一“我告诉别人一些信息,而别人又告诉我一些信息。我再把我知道的更新后的信息告诉别人,别人也这样把更新后的信息再告诉我”,最后在自治系统中所有的结点都得到了正确的路由选择信息。在一般情况下,RIP协议可以收敛,并且过程也较快。 “收敛”就是在自治系统中所有的结点都得到正确的路由选信的过程。
路由表中最主要的信息就是: 到某个网铬的距离(即最短距离),以及应经过的下一跳地址 。路由表更新的原则是找出到每个目的网络的最短距离。这种 更新算法又称为距离向量算法 。
对每一个相邻路由器发送过来的RIP报文,进行以下步骤:
现在较新的RIP版本是1998年1I月公布的RIP2RFC2453](已成为互联网标准),新版本协议本身并无多大变化,但性能上有些改进。RIP2可以支持变长子网掩码和无分类域间路由选择CIDR。此外,RIP2还提供简单的鉴别过程支特多播。图4-32是RP2的报文格式,它和RIP1的首部相同,但后面的路由部分不一样。
RIP报文由首部和路由部分组成。
RIP的首部占4个字节,其中的命令字段指出报文的意义。例如,1 表示请求路由信息,2表示对请求路由信息的响应或未被请求而发出的路由更新报文,首部后而的“必为0”是为了4字节字的对齐。
RIP2报文中的路由部分由若干个路由信息组成,每个路由信息需要用20个字节。 地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。 如采用IP地址就令这个字段的值为2(原来考虑RIP也可用于其他非TCPP协议的情况), 路由标记填入自治系统号ASN (Autonomous System Number))( 自治系统号ASN原来规定为一个16位的号码(最大的号码是655),由1ANA分配.现在已经把ASN扩展到32位),这是考虑使RIP有可能收到本自治系统以外的路由选择信息。再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离,一个RIP报文最多可包括25个路由,因而RIP报文的最大长度是4+20×25=504字节。如超过,必须再用一个RIP报文来传送。
RIP2还具有简单的鉴别功能。若使用鉴别功能,则将原来写入第一个路由信息(20字节)的位置用作鉴别。这时应将地址族标识符置为全1(即0 xFFFF),而路由标记写入鉴别类型,剩下的16字节为鉴别数据。在鉴别数据之后才写入路由信息,但这时最多只能再放入24个路由信息。
优点: RIP协议最大的优点就是实现简单,开销较小;如果发现更短的路由,这种更新信息传播的很快。
缺点: 限制了网络的规模,它能使用的最大距离为15(16表示不可达);路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加; 当出现网络故障时,要经过比较长的时间才能将此信息传送到所有的路由器。
设三个网络通过两个路由器互连起来,并且都已建立了各自的路由表。图中路由器交换的信息只给出了我们感兴趣的一行内容。路由器R1中的“ 1,1,直接 ”表示“到网1的距离是1,直接交付”。路由器R2中的“ 1,2,R1 ”表示“到网1的距离是2,下一跳经过R1”。
现在假定路由器R1到网1的链路出了故障,R1无法到达网1。于是路由器R1把到网1的距离改为16(表示到网1不可达),因而在R1的路由表中的相应项目变为“ 1,16,直接 ”。但是,很可能要经过30秒钟后R1才把更新信息发送给R2。然而R2可能已经先把自己的路由表发送给了R1,其中有“1,2,R1”这一项。
RIP认证与版本兼容性问题
路由信息协议(Routing Information Protocol,缩写:RIP),是一种使用最广泛的内部网关协议(IGP),属于网络层,一种在网关与主机之间交换路由选择信息的标准。它可以通过不断的交换信息让路由器动态的适应网络连接的变化,这些信息包括每个路由器可以到达哪些网络,这些网络有多远等。RIP协议有以下特点:
(1)RIP是内部网关协议,使用的是距离矢量算法。
(2)RIP主要有三个版本:
RIPv1:RIPv1使用分类路由,在它的路由更新(Routing Updates)中并不带有子网的资讯,因此它无法支持可变长度子网掩码。这个限制造成在RIPv1的网络中,同级网络无法使用不同的子网掩码。
另外,它也不支持对路由过程的认证,使得RIPv1有一些轻微的弱点,有被***的可能。
RIPv2:因为RIPv1的缺陷,RIPv2在1994年被提出,将子网络的资讯包含在内,通过这样的方式提供无类别域间路由,不过对于最大节点数15的这个限制仍然被保留着。针对安全性的问题,RIPv2通过加密达到认证效果。
RIPng:主要是针对IPv6做一些延伸的规范。 RIPng 没有更新认证。
(3)RIP协议以跳数作为网络度量值。
(4)RIP协议采用广播或组播进行通信,其中RIPv1只支持广播,而RIPv2除支持广播外还支持组播。
(5)RIP协议支持主机被动模式,即RIP协议允许主机只接收和更新路由信息而不发送信息。(只收不发)
(6)RIP协议支持默认路由传播。
(7)RIP协议的网络直径不超过15跳,适合于中小型网络。16跳时认为网络不可达。
(8)RIPv1是有类路由协议,RIPv2是无类路由协议,即RIPv2的报文中含有掩码信息。
RIPv2的特性(实验)
上文我们提到,RIPv1无法支持可变长度子网掩码,也不支持认证。这种特性直接导致了RIPv2的提出,并且目前RIPv1几乎被完全淘汰而不再使用。RIPv2支持路由的自动汇总,支持可变长子网掩码与认证。下面我们通过模拟实验来熟悉一下RIPv2的相关特性。
假定有如上两台路由器,R1连接了三台PC(通过配置环回口来模拟)。
1. RIP自动汇总
R1
//配置环回口模拟PC
R1(config)#interface loopback 0
R1(config-if)#ip address 172.16.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#interface loopback 1
R1(config-if)#ip address 172.16.2.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#interface loopback 2
R1(config-if)#ip address 172.16.3.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
//运行RIP协议
R1(config)#router rip
R1(config-router)#version 2
//宣告网段。RIP宣告网段按照主类进行宣告
R1(config-router)#network 172.16.0.0
R1(config-router)#network 192.168.1.0
R1(config-router)#exit
R1(config)#interface f0/0
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R2
R2(config)#router rip
R2(config-router)#version 2
R2(config-router)#network 192.168.1.0
R2(config-router)#exit
R2(config)#interface f0/0
R2(config-if)#ip address 192.168.1.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#exit
此时,两台设备连通性良好。在R2上查看路由条目,可发现得到的路由条目是汇总后的。
R2(config)#do sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
R 172.16.0.0/16 [120/1] via 192.168.1.1, 00:00:24, FastEthernet0/0
C 192.168.1.0/24 is directly connected, FastEthernet0/0
自动汇总的路由条目可能会存在路由黑洞,这一点我们可以通过实验验证。
可以发现,我们用R2去ping 一个未曾声明但是包含在汇总条目里的IP地址时,会出现UUUUU的情况(UUUUU表示报文已发出,但下一跳不可达)。这样的情况会消耗两台路由器的资源。要解决这个问题,我们只需关闭关闭自动汇总即可。
R1(config)#router rip
R1(config-router)#no auto-summary
R1(config-router)#exit
现在我们再ping不存在的IP地址,会发现.....(表示报文未发出),这样便不会浪费资源了。
2. 手动汇总
为避免因自动汇总而出现的路由黑洞,多数情况下我们需要进行手动汇总。
//在接口下手动汇总
R1(config)#interface f0/0
R1(config-if)#ip summary-address rip 172.16.0.0 255.255.252.0
R1(config-if)#exit
手动汇总后,便不会出现路由黑洞了。
3. RIP认证
由于RIP没有邻居的概念,所以自己并不知道发出去的路由更新是不是有路由器收到,同样也不知道会被什么样的路由器收到,因为RIP的路由更新是明文的,网络中无论谁收到,都可以读取里面的信息,这就难免会有不怀好意者窃听RIP的路由信息。为了防止路由信息被非法窃取,RIP v2可以相互认证,只有能够通过认证的路由器,才能够获得路由更新。
除此之外,key chain名字KEYID可以不一样,钥匙名字不影响认证,但是钥匙编号和密码必须一样。
一个接口只能设置一个钥匙。
//定义钥匙名字
R1(config)#key chain R1
//定义钥匙编号
R1(config-keychain)#key 1
//定义钥匙密码
R1(config-keychain-key)#key-string cisco
R1(config-keychain-key)#exit
R1(config-keychain)#exit
R1(config)#interface f0/0
//定义认证模式为密文认证(text为明文认证)
R1(config-if)#ip rip authentication mode md5
//设置认证密码
R1(config-if)#ip rip authentication key-chain R1
R1(config-if)#exit
R2上同样也要做认证配置
R2(config)#key chain R2
R2(config-keychain)#key 1
R2(config-keychain-key)#key-string cisco
R2(config-keychain-key)#exit
R2(config-keychain)#exit
R2(config)#interface f0/0
//定义认证模式为密文认证(text为明文认证)
R2(config-if)#ip rip authentication mode md5
//设置认证密码
R2(config-if)#ip rip authentication key-chain R2
R2(config-if)#exit
配置完成后,因两台路由器的钥匙编号与密码相同,故可以相互更新路由条目。
4. RIP版本不兼容问题
RIPv1与RIPv2版本是不兼容的。假使一个网络内部的两台路由器一台运行版本1,而另一台运行版本2,正常情况下这两台设备将无法正常更新路由条目。要使他们能够正常更新路由条目,则需要配置版本兼容性。
以R2为例,在R2上做如下配置
R2(config)#interface f0/0
//允许R2接收版本1的报文
R2(config-if)#ip rip receive version 1
//允许R2发送版本2的报文
R2(config-if)#ip rip send version 1
现在R2可以更新从R1接收到的路由条目,同时R2发出的路由条目也能够被R1识别并更新。
5. RIP偏移列表策略
通过对路由条目属性的调整,从而影响数据的转发方向——策略。
当在网络中,去往一个目的IP存在多种路径的时候,报文发送的路径受度量值(即跳数)的大小影响。度量值越小,该路径越优。
RIP只能增大度量值,不能减小。当然增大的度量值可以no 掉。
上图所示的实验,R2的报文发送到192.168.1.1有两条路径,现在要求该报文优先通过R1发送出去,请配置。
R1
R1(config)#interface loopback 0
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#interface f0/0
R1(config-if)#ip address 12.1.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#no auto-summary
R1(config-router)#network 12.0.0.0
R1(config-router)#network 192.168.1.0
R1(config-router)#exit
R2
R2(config)#interface f0/0
R2(config-if)#ip address 12.1.1.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#interface f1/0
R2(config-if)#ip address 23.1.1.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#router rip
R2(config-router)#version 2
R2(config-router)#no auto-summary
R2(config-router)#network 12.0.0.0
R2(config-router)#network 23.0.0.0
R2(config-router)#exit
R3
R3(config)#interface loopback 0
R3(config-if)#ip address 192.168.1.1 255.255.255.0
R3(config-if)#no shutdown
R3(config-if)#exit
R3(config)#interface f0/0
R3(config-if)#ip address 23.1.1.1 255.255.255.0
R3(config-if)#no shutdown
R3(config-if)#exit
R3(config)#router rip
R3(config-router)#version 2
R3(config-router)#no auto-summary
R3(config-router)#network 23.0.0.0
R3(config-router)#network 192.168.1.0
R3(config-router)#exit
上图红色方框中的就是我们要修改的度量值。
R2上进一步的配置
R2(config)#access-list 1 permit 192.168.1.0
R2(config)#router rip
//将f1/0端口的度量值+1。in表示该端口接收并学习路由信息,out表示向外发送路由信息
R2(config-router)#offset-list 1 in 1 fastEthernet 1/0
R2(config-router)#exit
查看路由表可发现,现在最优的路由是12.1.1.1这条,即从R1发出。
除了在R2上增加23.1.1.0网段的度量值外,还可以在R3上进行配置,增加度量值。
R3(config)#access-list 1 permit 192.168.1.0
R3(config)#router rip
R3(config-router)#offset-list 1 out 1 fastEthernet 0/0
R3(config-router)#exit
//取消掉人为增加的度量值
R2(config-router)#no offset-list 1 in 1 fastEthernet 1/0
?
以上是关于计算机网络-网络层-内部网关协议RIP的主要内容,如果未能解决你的问题,请参考以下文章